<?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>155711</bug_id>
          
          <creation_ts>2016-03-20 21:47:06 -0700</creation_ts>
          <short_desc>[ES6] Implement RegExp.prototype[@@match]</short_desc>
          <delta_ts>2016-03-23 14:13:08 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>155784</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ossy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176670</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-20 21:47:06 -0700</bug_when>
    <thetext>Implement RegExp.prototype[@@match] and have String.prototype.match per sections 21.1.3.11 and 21.2.5.6 of the ECMAScript 2016 standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176671</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-20 21:47:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/25263672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177054</commentid>
    <comment_count>2</comment_count>
      <attachid>274668</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-22 11:24:02 -0700</bug_when>
    <thetext>Created attachment 274668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177098</commentid>
    <comment_count>3</comment_count>
      <attachid>274678</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-22 13:22:16 -0700</bug_when>
    <thetext>Created attachment 274678
Updated patch - relaxed the |this| check in RegExp.prototype[@@match] to only check that it is an object, per spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177135</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-22 14:42:06 -0700</bug_when>
    <thetext>Committed r198554: &lt;http://trac.webkit.org/changeset/198554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177139</commentid>
    <comment_count>5</comment_count>
      <attachid>274678</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-22 14:45:25 -0700</bug_when>
    <thetext>Comment on attachment 274678
Updated patch - relaxed the |this| check in RegExp.prototype[@@match] to only check that it is an object, per spec.

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

r=me with the noted suggestions.
I think it&apos;s also worth adding a test or two that uses Proxy to verify that operations are performed only the number of needed times, in the right order, etc.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:59
&gt; +    if (regexp.exec !== @RegExp.prototype.@exec &amp;&amp; typeof(regexp.exec) === &quot;function&quot;) {

Style: I think our &quot;typeof&quot; style is usually this: typeof regex.exec === &quot;function&quot;
Also, I&apos;m not sure this is correct. You&apos;re calling &quot;get&quot; twice here. That is an observable
operation. It looks like RegExpExec only does this get once in the spec.

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:40
&gt; +        var matcher = regexp[@symbolMatch];

This isn&apos;t correct w.r.t to the spec.
It looks like the spec calls GetMethod here. GetMethod will throw if the result isn&apos;t undefined or null.
So if this returned something like 42, then we should throw. If it returned undefined or null,
we shouldn&apos;t throw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177293</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-23 00:00:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r198554: &lt;http://trac.webkit.org/changeset/198554&gt;

It caused a serious regression on ARMv7 Thumb2 platforms: bug155784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177296</commentid>
    <comment_count>7</comment_count>
      <attachid>274678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-23 00:20:02 -0700</bug_when>
    <thetext>Comment on attachment 274678
Updated patch - relaxed the |this| check in RegExp.prototype[@@match] to only check that it is an object, per spec.

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

&gt;&gt; Source/JavaScriptCore/builtins/StringPrototype.js:40
&gt;&gt; +        var matcher = regexp[@symbolMatch];
&gt; 
&gt; This isn&apos;t correct w.r.t to the spec.
&gt; It looks like the spec calls GetMethod here. GetMethod will throw if the result isn&apos;t undefined or null.
&gt; So if this returned something like 42, then we should throw. If it returned undefined or null,
&gt; we shouldn&apos;t throw.

Ah, oops! I missed that when implementing String.prototype.search, nice!
I think `if (searcher !== @undefined)` to `if (searcher != @undefined)` will solve the issue.
If the returned value is non undefined/null and non-function value (like 42), `searcher.@call(regexp, this);` will throw an exception, &quot;Exception: TypeError: 42 is not a function&quot;.


I&apos;ll upload the patch fixing the issues in String.prototype.match and String.prototype.search :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177467</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-23 14:13:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 274678 [details]
&gt; Updated patch - relaxed the |this| check in RegExp.prototype[@@match] to
&gt; only check that it is an object, per spec.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274678&amp;action=review
&gt; 
&gt; r=me with the noted suggestions.
&gt; I think it&apos;s also worth adding a test or two that uses Proxy to verify that
&gt; operations are performed only the number of needed times, in the right
&gt; order, etc.
&gt;
&gt; &gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:59
&gt; &gt; +    if (regexp.exec !== @RegExp.prototype.@exec &amp;&amp; typeof(regexp.exec) === &quot;function&quot;) {
&gt; 
&gt; Style: I think our &quot;typeof&quot; style is usually this: typeof regex.exec ===
&gt; &quot;function&quot;
&gt; Also, I&apos;m not sure this is correct. You&apos;re calling &quot;get&quot; twice here. That is
&gt; an observable
&gt; operation. It looks like RegExpExec only does this get once in the spec.

Going to handle this issue as well as adding Proxy based tests in a new patch.  Tracked with &lt;https://bugs.webkit.org/show_bug.cgi?id=155807&gt;
 
&gt; &gt; Source/JavaScriptCore/builtins/StringPrototype.js:40
&gt; &gt; +        var matcher = regexp[@symbolMatch];
&gt; 
&gt; This isn&apos;t correct w.r.t to the spec.
&gt; It looks like the spec calls GetMethod here. GetMethod will throw if the
&gt; result isn&apos;t undefined or null.
&gt; So if this returned something like 42, then we should throw. If it returned
&gt; undefined or null,
&gt; we shouldn&apos;t throw.

This was handled in &lt;https://bugs.webkit.org/show_bug.cgi?id=155785&gt; and landed in change set &lt;http://trac.webkit.org/changeset/198581&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274668</attachid>
            <date>2016-03-22 11:24:02 -0700</date>
            <delta_ts>2016-03-22 13:22:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>155711.patch</filename>
            <type>text/plain</type>
            <size>45599</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NTMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE2LTAzLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBFUzYgc3Bl
YyBmb3IgU3RyaW5nLnByb3RvdHlwZS5tYXRjaCBhbmQgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNo
XS4KKyAgICAgICAgSW1wbGVtZW50ZWQgYm90aCBhcyBidWlsdGlucywgd2l0aCBTdHJpbmcucHJv
dG90eXBlLm1hdGNoIGNhbGxpbmcgCisgICAgICAgIFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0u
CisKKyAgICAgICAgRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIFJlZ0V4cC5wcm90b3R5cGVbQEBt
YXRjaF0gaGFzIGEgQysrIGZhc3QgcGF0aCB3aGVuCisgICAgICAgIFJlZ0V4cC5wcm90b3R5cGUu
ZXhlYyBoYXMgbm90IGJlZW4gb3ZlcnJpZGRlbi4gIFRoaXMgZmFzdCBwYXRoLAorICAgICAgICBS
ZWdFeHBPYmplY3Q6Om1hdGNoR2xvYmFsLCB3YXMgdGFrZW4gZnJvbSB0aGUgcHJpb3IgU3RyaW5n
UHJvdG90eXBlOjptYXRjaC4KKyAgICAgICAgSXQgb25seSBoYW5kbGVzIGdsb2JhbCBtYXRjaGVz
LgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0LCBzdHJlc3MvcmVnZXhwLW1hdGNoLmpzLgorCisg
ICAgICAgIFVwZGF0ZWQgdmFyaW91cyB0ZXN0cyBmb3IgY2hhbmdlcyBleGNlcHRpb24gc3RyaW5n
IGFuZCBub3cgcGFzc2luZyBFUzYgYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBidWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMgYW5kIGVsaW1pbmF0ZWQgUmVnRXhwUHJvdG90eXBlLmx1dC5oLgor
CisgICAgICAgICogYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAg
KG1hdGNoLmFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUpOiBIZWxwZXIuCisgICAgICAgIChtYXRj
aCk6IEltcGxlbWVudHMgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXS4KKyAgICAgICAgKiBidWls
dGlucy9TdHJpbmdQcm90b3R5cGUuanM6CisgICAgICAgIChtYXRjaCk6IEltcGxlbWVudHMgU3Ry
aW5nLnByb3RvdHlwZS5tYXRjaC4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6bG9va3VwKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICBBZGRlZCBTeW1ib2wubWF0Y2ggYW5kIGJ1aWx0aW5zIEBtYXRjaCBhbmQgQGV4ZWMu
CisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaEdsb2JhbCk6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmFkdmFuY2VTdHJpbmdVbmljb2RlKTogQWRkZWQgaGVs
cGVyLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlw
ZTo6UmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY01hdGNoUHJpdmF0ZSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICBSZXN0cnVjdHVy
ZWQgdG8gY3JlYXRlIHByb3BlcnRpZXMgZXhwbGljaXRseSBkdWUgdG8gaGF2aW5nIHR3byBuYW1l
cyBmb3IgbmF0aXZlIHJlZ0V4cFByb3RvRnVuY0V4ZWMuCisKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICBNYWRlIG1hdGNoIGEgYnVpbHRpbi4KKyAgICAgICAgUmVtb3Zl
ZCB1bnVzZWQgZGVjbGFyYXRpb24gb2Ygc3RyaW5nUHJvdG9GdW5jU2VhcmNoKCkgc2luY2UgaXQg
d2FzIG1hZGUgYSBidWlsdGluLgorCisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChlcnJvcktleS50b1N0cmluZyk6
CisgICAgICAgIChwcmltaXRpdmUub2YucHJpbWl0aXZlcy5zaG91bGRUaHJvdyk6CisgICAgICAg
ICh0ZXN0UmVnRXhwTWF0Y2gpOgorICAgICAgICAodGVzdE1hdGNoKToKKyAgICAgICAgKHRlc3RC
b3RoKToKKyAgICAgICAgKGFsd2F5c1VubWF0Y2gpOgorCiAyMDE2LTAzLTIyICBDYWl0bGluIFBv
dHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gYWxsb3cgZHVwbGljYXRl
IHByb3BlcnR5IG5hbWVzIHJldHVybmVkIGZyb20gUHJveHkgb3duS2V5cygpIHRyYXAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5ODUwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIx
OSw2ICsxMjE5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzCisgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTg1MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5
KQpAQCAtOTksNiArOTksNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzIFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzIFwKKyAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlw
dENvcmUpL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzIFwKQEAgLTE0Nyw3ICsxNDgsNiBAQCBP
QkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXAogICAg
IFJlZmxlY3RPYmplY3QubHV0LmggXAogICAgIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKLSAg
ICBSZWdFeHBQcm90b3R5cGUubHV0LmggXAogICAgIFNldFByb3RvdHlwZS5sdXQuaCBcCiAgICAg
U3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1
dC5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg1MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2NCw3ICsxNDY0LDYgQEAKIAkJOTk2Qjcz
MjExQkRBMDhFRjAwMzMxQjg0IC8qIE51bWJlclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzBEMUJEOUZBMkMwMDMzMUI4
NCAvKiBOdW1iZXJQcm90b3R5cGUubHV0LmggKi87IH07CiAJCTk5NkI3MzIyMUJEQTA4RUYwMDMz
MUI4NCAvKiBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzBFMUJEOUZBMkMwMDMzMUI4NCAvKiBPYmplY3RD
b25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJOTk2QjczMjMxQkRBMDhFRjAwMzMxQjg0IC8qIFJl
ZmxlY3RPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTZCNzMwRjFCRDlGQTJDMDAzMzFCODQgLyogUmVmbGVjdE9iamVjdC5sdXQuaCAq
LzsgfTsKLQkJOTk2QjczMjQxQkRBMDhFRjAwMzMxQjg0IC8qIFJlZ0V4cFByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzEw
MUJEOUZBMkMwMDMzMUI4NCAvKiBSZWdFeHBQcm90b3R5cGUubHV0LmggKi87IH07CiAJCTk5NkI3
MzI1MUJEQTA4RUYwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzExMUJEOUZBMkMwMDMz
MUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJOTk2QjczMjYxQkRBMDhF
RjAwMzMxQjg0IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjczMTIxQkQ5RkEyQzAwMzMxQjg0
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQk5OTZCNzMyNzFCREEw
OEVGMDAzMzFCODQgLyogU3ltYm9sQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQgLyog
U3ltYm9sQ29uc3RydWN0b3IubHV0LmggKi87IH07CkBAIC0zMzU1LDYgKzMzNTQsNyBAQAogCQk2
NTQwQzc5RjFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVu
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsg
cGF0aCA9IE51bGxHZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhj
TGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk2
NTQ2RjUyMDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bGxHZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2NTQ3ODg0MjFDOTM3RDJDMDAwNzgxQTAgLyogUmVnRXhwUHJv
dG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVnRXhw
UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTUyNUZDMzFBNkRE
M0IzMDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE51bGxTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1NTI1RkM0MUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVsbFNldHRlckZ1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTNBMzJGMTdBMUYxRUUwMDhD
RjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY2OSw3ICszNjY5LDYgQEAKIAkJOTk2QjczMEQxQkQ5
RkEyQzAwMzMxQjg0IC8qIE51bWJlclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTnVtYmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTZCNzMwRTFCRDlGQTJDMDAzMzFCODQgLyogT2JqZWN0Q29uc3RydWN0b3Iu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdENvbnN0cnVjdG9y
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMwRjFCRDlGQTJDMDAz
MzFCODQgLyogUmVmbGVjdE9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVmbGVjdE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTk2QjczMTAxQkQ5RkEyQzAwMzMxQjg0IC8qIFJlZ0V4cFByb3RvdHlwZS5sdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMxMTFCRDlGQTJDMDAzMzFCODQgLyogU3RyaW5n
Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z0NvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMx
MjFCRDlGQTJDMDAzMzFCODQgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQg
LyogU3ltYm9sQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTM3MCw3ICs1MzY5LDYgQEAKIAkJCQk5OTZCNzMwRjFCRDlGQTJDMDAzMzFCODQgLyogUmVm
bGVjdE9iamVjdC5sdXQuaCAqLywKIAkJCQlCQ0QyMDJENTBFMTcwNzA4MDAyQzdFODIgLyogUmVn
RXhwQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8q
IFJlZ0V4cEppdFRhYmxlcy5oICovLAotCQkJCTk5NkI3MzEwMUJEOUZBMkMwMDMzMUI4NCAvKiBS
ZWdFeHBQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNzAzNTU4N0YxQzQxODQ1ODAwNEJEN0JGIC8q
IFNldFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk5OTZCNzMxMTFCRDlGQTJDMDAzMzFCODQgLyog
U3RyaW5nQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJOTk2QjczMTIxQkQ5RkEyQzAwMzMxQjg0
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLApAQCAtNjg0Myw2ICs2ODQxLDcg
QEAKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3NTAgLyogUHJvbWlzZVByb3RvdHlwZS5qcyAq
LywKIAkJCQk3Q0Y5QkM1RTFCNjVEOUIxMDA5REIxRUYgLyogUHJvbWlzZUNvbnN0cnVjdG9yLmpz
ICovLAogCQkJCTdDRjlCQzVGMUI2NUQ5QjEwMDlEQjFFRiAvKiBSZWZsZWN0T2JqZWN0LmpzICov
LAorCQkJCTY1NDc4ODQyMUM5MzdEMkMwMDA3ODFBMCAvKiBSZWdFeHBQcm90b3R5cGUuanMgKi8s
CiAJCQkJNzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLywKIAkJ
CQk3Q0Y5QkM2MDFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5nQ29uc3RydWN0b3IuanMgKi8sCiAJ
CQkJN0NGOUJDNjExQjY1RDlCMTAwOURCMUVGIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpz
ICovLApAQCAtNzg5Nyw3ICs3ODk2LDYgQEAKIAkJCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QjBFMTZGNUNEMDBCMzQ0
NjAgLyogUmVnRXhwT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDJDNDBFMTcwNkE3
MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk5OTZCNzMy
NDFCREEwOEVGMDAzMzFCODQgLyogUmVnRXhwUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjIzQTM3RUMxQjg3QTdDMDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFwLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQ
cm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1JlZ0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitmdW5j
dGlvbiBtYXRjaChzdHIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gYWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZShzdHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCisgICAg
eworICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybiBpbmRleCArIDE7CisKKyAgICAgICAgbGV0IGZpcnN0ID0gc3RyaW5nLkBjaGFyQ29kZUF0
KGluZGV4KTsKKyAgICAgICAgaWYgKGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGKQor
ICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgICAgICBsZXQgc2Vjb25kID0gc3Ry
aW5nLkBjaGFyQ29kZUF0KGluZGV4ICsgMSk7CisgICAgICAgIGlmIChzZWNvbmQgPCAweERDMDAg
fHwgc2Vjb25kID4gMHhERkZGKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAg
ICAgICByZXR1cm4gaW5kZXggKyAyOworICAgIH0KKworICAgIGlmICghKHRoaXMgaW5zdGFuY2Vv
ZiBAUmVnRXhwKSkgeworICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAbWF0Y2ggcmVxdWlyZXMgdGhh
dCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAgICAgaWYgKHRoaXMgPT09IEB1bmRlZmluZWQp
CisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQG1h
dGNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBtYXRjaCByZXF1aXJlcyB0aGF0
IHx0aGlzfCBiZSBhIFJlZ0V4cCBvYmplY3QiKTsKKyAgICB9CisKKyAgICBsZXQgcmVnZXhwID0g
QE9iamVjdCh0aGlzKTsKKyAgICBsZXQgc3RyaW5nQXJnID0gQHRvU3RyaW5nKHN0cik7CisKKyAg
ICBpZiAoIXJlZ2V4cC5nbG9iYWwpCisgICAgICAgIHJldHVybiByZWdleHAuZXhlYyhzdHJpbmdB
cmcpOworCisgICAgcmVnZXhwLmxhc3RJbmRleCA9IDA7CisKKyAgICBsZXQgcmVzdWx0TGlzdCA9
IFtdOworCisgICAgaWYgKHJlZ2V4cC5leGVjICE9PSBAUmVnRXhwLnByb3RvdHlwZS5AZXhlYyAm
JiB0eXBlb2YocmVnZXhwLmV4ZWMpID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIC8vIE1hdGNo
IHVzaW5nIHRoZSBvdmVycmlkZGVuIGV4ZWMuCisgICAgICAgIGxldCB1bmljb2RlID0gcmVnZXhw
LnVuaWNvZGU7CisgICAgICAgIGxldCBzdHJpbmdMZW5ndGggPSBzdHIubGVuZ3RoOworCisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVnZXhwLmV4ZWMo
c3RyaW5nQXJnKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVs
bCkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHRMaXN0Lmxlbmd0aCA9PT0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dExpc3Q7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFAaXNPYmplY3QocmVzdWx0KSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQG1hdGNo
IGNhbGwgdG8gUmVnRXhwLmV4ZWMgZGlkbid0IHJldHVybiBudWxsIG9yIGFuIG9iamVjdCIpOwor
CisgICAgICAgICAgICBsZXQgcmVzdWx0U3RyaW5nID0gQHRvU3RyaW5nKHJlc3VsdFswXSk7CisK
KyAgICAgICAgICAgIGlmICghcmVzdWx0U3RyaW5nLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
IGlmICh1bmljb2RlKQorICAgICAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4ID0gYWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZShzdHJpbmdBcmcsIHN0cmluZ0xlbmd0aCwgcmVnZXhwLmxh
c3RJbmRleCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWdl
eHAubGFzdEluZGV4Kys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlc3VsdExpc3Qu
QHB1c2gocmVzdWx0U3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZWdl
eHAuQG1hdGNoKHN0cmluZ0FyZyk7Cit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24gMTk4NTA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsMjcgQEAKIAogLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShJTlRM
KQogCitmdW5jdGlvbiBtYXRjaChyZWdleHApCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKHRoaXMgPT0gbnVsbCkgeworICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLm1hdGNoIHJlcXVpcmVz
IHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJTdHJpbmcucHJvdG90eXBlLm1hdGNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRl
ZmluZWQiKTsKKyAgICB9CisKKyAgICBpZiAocmVnZXhwICE9IG51bGwpIHsKKyAgICAgICAgdmFy
IG1hdGNoZXIgPSByZWdleHBbQHN5bWJvbE1hdGNoXTsKKyAgICAgICAgaWYgKG1hdGNoZXIgIT09
IEB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlci5AY2FsbChyZWdleHAsIHRo
aXMpOworICAgIH0KKworICAgIGxldCB0aGlzU3RyaW5nID0gQHRvU3RyaW5nKHRoaXMpOworICAg
IGxldCBjcmVhdGVkUmVnRXhwID0gbmV3IEBSZWdFeHAocmVnZXhwLCBAdW5kZWZpbmVkKTsKKyAg
ICByZXR1cm4gY3JlYXRlZFJlZ0V4cFtAc3ltYm9sTWF0Y2hdKHRoaXNTdHJpbmcpOworfQorCiBm
dW5jdGlvbiBzZWFyY2gocmVnZXhwKQogewogICAgICJ1c2Ugc3RyaWN0IjsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE5ODUwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNiArNTEsNyBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUlu
dHJpCiAgICAgbV9wcm9taXNlU3RhdGVGdWxmaWxsZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OlN0YXR1czo6RnVsZmlsbGVkKSkpOwogICAgIG1f
cHJvbWlzZVN0YXRlUmVqZWN0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpKSk7CiAgICAgbV9zeW1ib2xJdGVyYXRv
ci5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+
KCptX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLmltcGwoKSkpKTsKKyAgICBtX3N5
bWJvbE1hdGNoLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1i
b2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+bWF0Y2hTeW1ib2wuaW1wbCgpKSkpOwogICAg
IG1fc3ltYm9sU2VhcmNoLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2Fz
dDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+c2VhcmNoU3ltYm9sLmltcGwoKSkp
KTsKICAgICBtX3N5bWJvbFNwZWNpZXMuc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0
YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9s
LmltcGwoKSkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkocmV2aXNpb24gMTk4NTA1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBJZGVudGlmaWVy
OwogICAgIG1hY3JvKHByb21pc2VTdGF0ZUZ1bGZpbGxlZCkgXAogICAgIG1hY3JvKHByb21pc2VT
dGF0ZVJlamVjdGVkKSBcCiAgICAgbWFjcm8oc3ltYm9sSXRlcmF0b3IpIFwKKyAgICBtYWNybyhz
eW1ib2xNYXRjaCkgXAogICAgIG1hY3JvKHN5bWJvbFNlYXJjaCkgXAogICAgIG1hY3JvKHN5bWJv
bFNwZWNpZXMpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTk4NTA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0
LDEzICsyNzQsMTMgQEAKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTF9OT1RfSU1QTEVNRU5URURfWUVUKG1hY3JvKVwKICAgICBt
YWNybyhpc0NvbmNhdFNwcmVhZGFibGUpIFwKLSAgICBtYWNybyhtYXRjaCkgXAogICAgIG1hY3Jv
KHJlcGxhY2UpIFwKLSAgICBtYWNybyhzcGxpdCkgXAorICAgIG1hY3JvKHNwbGl0KQogCiAjZGVm
aW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KG1hY3JvKSBcCiAgICAgbWFjcm8oaGFzSW5zdGFuY2UpIFwKICAgICBtYWNybyhpdGVyYXRvcikg
XAorICAgIG1hY3JvKG1hdGNoKSBcCiAgICAgbWFjcm8oc2VhcmNoKSBcCiAgICAgbWFjcm8oc3Bl
Y2llcykgXAogICAgIG1hY3JvKHRvUHJpbWl0aXZlKSBcCkBAIC0zNTIsNiArMzUyLDcgQEAKICAg
ICBtYWNybyhVaW50MzJBcnJheSkgXAogICAgIG1hY3JvKEZsb2F0MzJBcnJheSkgXAogICAgIG1h
Y3JvKEZsb2F0NjRBcnJheSkgXAorICAgIG1hY3JvKGV4ZWMpIFwKICAgICBtYWNybyhnZW5lcmF0
b3IpIFwKICAgICBtYWNybyhnZW5lcmF0b3JOZXh0KSBcCiAgICAgbWFjcm8oZ2VuZXJhdG9yU3Rh
dGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTk4NTA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDQgKzE2OSw2NSBAQCBN
YXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0CiAgICAgcmV0dXJuIG1hdGNo
SW5saW5lKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nKTsKIH0KIAorSlNWYWx1ZSBSZWdFeHBP
YmplY3Q6Om1hdGNoR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMt
PnJlZ0V4cCgpOworCisgICAgQVNTRVJUKHJlZ0V4cC0+Z2xvYmFsKCkpOworCisgICAgVk0qIHZt
ID0gJmdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIHNldExhc3RJbmRleChleGVjLCAwKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworCisgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFJlZ0V4cENvbnN0
cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0
b3IoKTsKKyAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9y
bU1hdGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMsIDApOworCisgICAgLy8gcmV0dXJuIGFycmF5
IG9mIG1hdGNoZXMKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OworICAgIC8vIFdlIGRl
ZmVuZCBvdXJzZWx2ZXMgZnJvbSBjcmF6eS4KKyAgICBjb25zdCBzaXplX3QgbWF4aW11bVJlYXNv
bmFibGVNYXRjaFNpemUgPSAxMDAwMDAwMDAwOworCisgICAgaWYgKHJlZ0V4cC0+dW5pY29kZSgp
KSB7CisgICAgICAgIHdoaWxlIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChsaXN0LnNpemUo
KSA+IG1heGltdW1SZWFzb25hYmxlTWF0Y2hTaXplKSB7CisgICAgICAgICAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaXplX3QgZW5kID0gcmVzdWx0LmVu
ZDsKKyAgICAgICAgICAgIHNpemVfdCBsZW5ndGggPSBlbmQgLSByZXN1bHQuc3RhcnQ7CisgICAg
ICAgICAgICBsaXN0LmFwcGVuZChqc1N1YnN0cmluZyhleGVjLCBzLCByZXN1bHQuc3RhcnQsIGxl
bmd0aCkpOworICAgICAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICAgICAgZW5kID0g
YWR2YW5jZVN0cmluZ1VuaWNvZGUocywgbGVuZ3RoLCBlbmQpOworICAgICAgICAgICAgcmVzdWx0
ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5nLCBz
LCBlbmQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2hpbGUgKHJlc3VsdCkg
eworICAgICAgICAgICAgaWYgKGxpc3Quc2l6ZSgpID4gbWF4aW11bVJlYXNvbmFibGVNYXRjaFNp
emUpIHsKKyAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHNpemVfdCBlbmQgPSByZXN1bHQuZW5kOworICAgICAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IGVuZCAtIHJlc3VsdC5zdGFydDsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3Vic3Ry
aW5nKGV4ZWMsIHMsIHJlc3VsdC5zdGFydCwgbGVuZ3RoKSk7CisgICAgICAgICAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgICAgICAgICArK2VuZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlZ0V4
cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywgcywgZW5kKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAv
LyBpZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcyBhdCBhbGwsIGl0J3MgaW1wb3J0YW50IHRvIHJldHVy
bgorICAgICAgICAvLyBOdWxsIGluc3RlYWQgb2YgYW4gZW1wdHkgYXJyYXksIGJlY2F1c2UgdGhp
cyBtYXRjaGVzCisgICAgICAgIC8vIG90aGVyIGJyb3dzZXJzIGFuZCBiZWNhdXNlIE51bGwgaXMg
YSBmYWxzZSB2YWx1ZS4KKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIH0KKworICAgIHJl
dHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBzdGF0aWNfY2FzdDxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKj4oMCksIGxpc3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxOTg1MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0ZXN0SW5saW5lKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0
cmluZykgeyByZXR1cm4gISFtYXRjaElubGluZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZyk7
IH0KICAgICBKU1ZhbHVlIGV4ZWMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmlu
ZyopOwogICAgIEpTVmFsdWUgZXhlY0lubGluZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IEpTU3RyaW5nKik7CisgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBKU1N0cmluZyopOworICAgIEpTVmFsdWUgbWF0Y2hHbG9iYWwoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKQEAgLTEwMiw5ICsxMDQsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgdW5zaWduZWQgYWR2YW5jZVN0
cmluZ1VuaWNvZGUoU3RyaW5nLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogCiBwcml2YXRlOgotICAg
IE1hdGNoUmVzdWx0IG1hdGNoKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcq
KTsKICAgICBNYXRjaFJlc3VsdCBtYXRjaElubGluZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTU3RyaW5nKik7CiAKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwPiBtX3JlZ0V4cDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJ
bmxpbmVzLmgJKHJldmlzaW9uIDE5ODUwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCwy
MiBAQCBNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoSW5saW5lKAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3Vuc2lnbmVkIFJlZ0V4cE9iamVjdDo6YWR2YW5jZVN0cmluZ1VuaWNvZGUo
U3RyaW5nIHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgY3VycmVudEluZGV4KQoreworICAg
IGlmIChjdXJyZW50SW5kZXggKyAxID49IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRJ
bmRleCArIDE7CisKKyAgICBVQ2hhciBmaXJzdCA9IHNbY3VycmVudEluZGV4XTsKKyAgICBpZiAo
Zmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYpCisgICAgICAgIHJldHVybiBjdXJyZW50
SW5kZXggKyAxOworCisgICAgVUNoYXIgc2Vjb25kID0gc1tjdXJyZW50SW5kZXhdOworICAgIGlm
IChzZWNvbmQgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGKQorICAgICAgICByZXR1cm4gY3Vy
cmVudEluZGV4ICsgMTsKKworICAgIHJldHVybiBjdXJyZW50SW5kZXggKyAyOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cE9iamVjdElubGluZXNfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxOTg1MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiwxMCBAQAogI2luY2x1
ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKQEAgLTM2
LDEyICszOCwxNCBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hl
LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJSZWdFeHBNYXRj
aGVzQXJyYXkuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNUZXN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoUHJpdmF0ZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0Nv
bXBpbGUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NlYXJjaChFeGVjU3RhdGUqKTsKQEAgLTUz
LDI5ICs1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0UKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNl
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJGbGFncyhFeGVjU3RhdGUqKTsKIAotfQotCi0jaW5jbHVkZSAiUmVnRXhwUHJv
dG90eXBlLmx1dC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIFJlZ0V4
cFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJnJlZ0V4cFBy
b3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cFByb3RvdHlwZSkgfTsKLQot
LyogU291cmNlIGZvciBSZWdFeHBQcm90b3R5cGUubHV0LmgKLUBiZWdpbiByZWdFeHBQcm90b3R5
cGVUYWJsZQotICBjb21waWxlICAgICAgIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCi0gIGV4ZWMgICAgICAgICAgcmVnRXhwUHJvdG9GdW5jRXhlYyAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgdGVzdCAgICAgICAgICByZWdFeHBQcm90b0Z1bmNU
ZXN0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICB0b1N0cmluZyAgICAgIHJlZ0V4cFBy
b3RvRnVuY1RvU3RyaW5nICAgICBEb250RW51bXxGdW5jdGlvbiAwCi0gIGdsb2JhbCAgICAgICAg
cmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwgICAgIERvbnRFbnVtfEFjY2Vzc29yCi0gIGlnbm9yZUNh
c2UgICAgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlIERvbnRFbnVtfEFjY2Vzc29yCi0gIG11
bHRpbGluZSAgICAgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUgIERvbnRFbnVtfEFjY2Vzc29y
Ci0gIHN0aWNreSAgICAgICAgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kgICAgIERvbnRFbnVtfEFj
Y2Vzc29yCi0gIHVuaWNvZGUgICAgICAgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlICAgIERvbnRF
bnVtfEFjY2Vzc29yCi0gIHNvdXJjZSAgICAgICAgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UgICAg
IERvbnRFbnVtfEFjY2Vzc29yCi0gIGZsYWdzICAgICAgICAgcmVnRXhwUHJvdG9HZXR0ZXJGbGFn
cyAgICAgIERvbnRFbnVtfEFjY2Vzc29yCi1AZW5kCi0qLworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4
cFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShSZWdFeHBQcm90b3R5cGUpIH07CiAKIFJlZ0V4cFByb3RvdHlwZTo6UmVn
RXhwUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBKU05vbkZp
bmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCkBAIC04NiwxNiArNjgsMjcgQEAgdm9pZCBSZWdFeHBQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1ib2wsIHJlZ0V4cFByb3RvRnVuY1NlYXJj
aCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmNvbXBpbGUsIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIERv
bnRFbnVtLCAyKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT50ZXN0LCByZWdFeHBQcm90b0Z1bmNUZXN0LCBEb250RW51bSwgMSk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmcsIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nLCBEb250RW51bSwgMCk7Cisg
ICAgSlNDX05BVElWRV9HRVRURVIodm0ucHJvcGVydHlOYW1lcy0+Z2xvYmFsLCByZWdFeHBQcm90
b0dldHRlckdsb2JhbCwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgSlNDX05BVElWRV9HRVRU
RVIodm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVD
YXNlLCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICBKU0NfTkFUSVZFX0dFVFRFUih2bS5wcm9w
ZXJ0eU5hbWVzLT5tdWx0aWxpbmUsIHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lLCBEb250RW51
bSB8IEFjY2Vzc29yKTsKKyAgICBKU0NfTkFUSVZFX0dFVFRFUih2bS5wcm9wZXJ0eU5hbWVzLT5z
dGlja3ksIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5LCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAg
ICBKU0NfTkFUSVZFX0dFVFRFUih2bS5wcm9wZXJ0eU5hbWVzLT51bmljb2RlLCByZWdFeHBQcm90
b0dldHRlclVuaWNvZGUsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VU
VEVSKHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UsIERv
bnRFbnVtIHwgQWNjZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VUVEVSKHZtLnByb3BlcnR5TmFt
ZXMtPmZsYWdzLCByZWdFeHBQcm90b0dldHRlckZsYWdzLCBEb250RW51bSB8IEFjY2Vzc29yKTsK
KyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5tYXRjaFByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvRnVuY01h
dGNoUHJpdmF0ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIDEpOworICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5t
YXRjaFN5bWJvbCwgcmVnRXhwUHJvdG90eXBlTWF0Y2hDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+c2VhcmNoU3ltYm9sLCByZWdFeHBQcm90b0Z1bmNTZWFyY2gsIERvbnRFbnVtLCAxKTsK
KworICAgIEpTRnVuY3Rpb24qIGV4ZWNGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjLnN0cmluZygpLCByZWdFeHBQ
cm90b0Z1bmNFeGVjLCBSZWdFeHBFeGVjSW50cmluc2ljKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlY1ByaXZhdGVOYW1lLCBleGVjRnVu
Y3Rpb24sIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYywgZXhlY0Z1bmN0aW9u
LCBEb250RW51bSk7CiAKICAgICBtX2VtcHR5UmVnRXhwLnNldCh2bSwgdGhpcywgUmVnRXhwOjpj
cmVhdGUodm0sICIiLCBOb0ZsYWdzKSk7CiB9CiAKLWJvb2wgUmVnRXhwUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCi17Ci0gICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCByZWdFeHBQcm90b3R5cGVUYWJsZSwganND
YXN0PFJlZ0V4cFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0K
IHZvaWQgUmVnRXhwUHJvdG90eXBlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgUmVnRXhwUHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganND
YXN0PFJlZ0V4cFByb3RvdHlwZSo+KGNlbGwpOwpAQCAtMTI5LDYgKzEyMiwxNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5leGVjKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc3RyaW5nKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hQcml2YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOworICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+bWF0Y2hHbG9iYWwoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDE5ODUw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVn
RXhwUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewpAQCAtNTQsNyArNTQsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgIFdyaXRlQmFycmllcjxSZWdFeHA+IG1fZW1wdHlSZWdF
eHA7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTg1MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMCAr
NjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUqKTsK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVj
U3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFz
dEluZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY01hdGNoKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNSZXBlYXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NlYXJjaChFeGVjU3RhdGUqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRl
Kik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4
ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
dWJzdHIoRXhlY1N0YXRlKik7CkBAIC0xMTEsNiArMTA5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0
cmluZ1Byb3RvdHlwZTo6c19pbmZvIAogCiAvKiBTb3VyY2UgZm9yIFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oCiBAYmVnaW4gc3RyaW5nUHJvdG90eXBlVGFibGUKKyAgICBtYXRjaCAgICAgSlNCdWls
dGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBzZWFyY2ggICAgSlNCdWlsdGluICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKICovCkBAIC0xMzQsNyArMTMzLDYgQEAgdm9pZCBTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJjb25jYXQiLCBzdHJpbmdQcm90b0Z1bmNDb25jYXQsIERvbnRF
bnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiaW5k
ZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigibGFzdEluZGV4T2YiLCBzdHJpbmdQcm90
b0Z1bmNMYXN0SW5kZXhPZiwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJtYXRjaCIsIHN0cmluZ1Byb3RvRnVuY01hdGNoLCBEb250RW51
bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInJlcGVh
dCIsIHN0cmluZ1Byb3RvRnVuY1JlcGVhdCwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigicmVwbGFjZSIsIHN0cmluZ1By
b3RvRnVuY1JlcGxhY2UsIERvbnRFbnVtLCAyLCBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmlu
c2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic2xpY2Ui
LCBzdHJpbmdQcm90b0Z1bmNTbGljZSwgRG9udEVudW0sIDIpOwpAQCAtMTAzMCwxMDcgKzEwMjgs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1bHQpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNNYXRjaChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwotICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
Yyk7Ci0gICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgVk0q
IHZtID0gJmdsb2JhbE9iamVjdC0+dm0oKTsKLQotICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1
bWVudCgwKTsKLQotICAgIFJlZ0V4cCogcmVnRXhwOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gMDsKLSAgICBib29sIGdsb2JhbCA9IGZhbHNlOwotICAgIGJvb2wgc3RpY2t5ID0gZmFsc2U7
Ci0gICAgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSBudWxscHRyOwotICAgIGlmIChhMC5p
bmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAgICAgcmVnRXhwT2JqZWN0ID0g
YXNSZWdFeHBPYmplY3QoYTApOwotICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4
cCgpOwotICAgICAgICBpZiAoKGdsb2JhbCA9IHJlZ0V4cC0+Z2xvYmFsKCkpKSB7Ci0gICAgICAg
ICAgICAvLyBFUzYgMjEuMi41LjYgc3RlcCA2LmIuCi0gICAgICAgICAgICByZWdFeHBPYmplY3Qt
PnNldExhc3RJbmRleChleGVjLCAwKTsKLSAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHN0aWNreSA9IHJlZ0V4cC0+c3RpY2t5KCk7Ci0gICAg
ICAgIGlmICghZ2xvYmFsICYmIHN0aWNreSkgewotICAgICAgICAgICAgSlNWYWx1ZSBqc0xhc3RJ
bmRleCA9IHJlZ0V4cE9iamVjdC0+Z2V0TGFzdEluZGV4KCk7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBsYXN0SW5kZXg7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKGpzTGFzdEluZGV4LmlzVUludDMy
KCkpKSB7Ci0gICAgICAgICAgICAgICAgbGFzdEluZGV4ID0ganNMYXN0SW5kZXguYXNVSW50MzIo
KTsKLSAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4ID4gcy5sZW5ndGgoKSkgewotICAgICAg
ICAgICAgICAgICAgICByZWdFeHBPYmplY3QtPnNldExhc3RJbmRleChleGVjLCAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRv
dWJsZSBkb3VibGVMYXN0SW5kZXggPSBqc0xhc3RJbmRleC50b0ludGVnZXIoZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGRvdWJsZUxhc3RJbmRleCA8IDAgfHwgZG91YmxlTGFzdEluZGV4ID4g
cy5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAgICByZWdFeHBPYmplY3QtPnNldExhc3RJ
bmRleChleGVjLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbGFz
dEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZUxhc3RJbmRleCk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gbGFzdEluZGV4OwotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogIEVDTUEgMTUuNS40LjEyIFN0
cmluZy5wcm90b3R5cGUuc2VhcmNoIChyZWdleHApCi0gICAgICAgICAqICBJZiByZWdleHAgaXMg
bm90IGFuIG9iamVjdCB3aG9zZSBbW0NsYXNzXV0gcHJvcGVydHkgaXMgIlJlZ0V4cCIsIGl0IGlz
Ci0gICAgICAgICAqICByZXBsYWNlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24g
bmV3IFJlZ0V4cChyZWdleHApLgotICAgICAgICAgKiAgUGVyIEVDTUEgMTUuMTAuNC4xLCBpZiBh
MCBpcyB1bmRlZmluZWQgc3Vic3RpdHV0ZSB0aGUgZW1wdHkgc3RyaW5nLgotICAgICAgICAgKi8K
LSAgICAgICAgU3RyaW5nIHBhdHRlcm5TdHJpbmcgPSBlbXB0eVN0cmluZygpOwotICAgICAgICBp
ZiAoIWEwLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHBhdHRlcm5TdHJpbmcgPSBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZShleGVj
LT52bSgpLCBwYXR0ZXJuU3RyaW5nLCBOb0ZsYWdzKTsKLSAgICAgICAgaWYgKCFyZWdFeHAtPmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwotICAgIH0KLSAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENv
bnN0cnVjdG9yKCk7Ci0gICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0b3It
PnBlcmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCBzdGFydE9mZnNldCk7Ci0gICAg
Ly8gY2FzZSB3aXRob3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlrZSBSZWdFeHAucHJvdG90eXBl
LmV4ZWMKLSAgICBpZiAoIWdsb2JhbCkgewotICAgICAgICBpZiAoc3RpY2t5KQotICAgICAgICAg
ICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgoZXhlYywgcmVzdWx0ID8gcmVzdWx0LmVuZCA6
IDApOwotCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3Vs
dC5zdGFydCkgOiBqc051bGwoKSk7Ci0gICAgfQotCi0gICAgLy8gcmV0dXJuIGFycmF5IG9mIG1h
dGNoZXMKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwotICAgIHdoaWxlIChyZXN1bHQp
IHsKLSAgICAgICAgLy8gV2UgZGVmZW5kIG91cnNlbHZlcyBmcm9tIGNyYXp5LgotICAgICAgICBj
b25zdCBzaXplX3QgbWF4aW11bVJlYXNvbmFibGVNYXRjaFNpemUgPSAxMDAwMDAwMDAwOwotICAg
ICAgICBpZiAobGlzdC5zaXplKCkgPiBtYXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSkgewotICAg
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgc2l6ZV90IGVuZCA9IHJlc3VsdC5lbmQ7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBl
bmQgLSByZXN1bHQuc3RhcnQ7Ci0gICAgICAgIGxpc3QuYXBwZW5kKGpzU3Vic3RyaW5nKGV4ZWMs
IHMsIHJlc3VsdC5zdGFydCwgbGVuZ3RoKSk7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICAgICAgKytlbmQ7Ci0gICAgICAgIHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3Jt
TWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywgcywgZW5kKTsKLSAgICB9Ci0gICAgaWYgKGxpc3Qu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzIGF0IGFsbCwg
aXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuCi0gICAgICAgIC8vIE51bGwgaW5zdGVhZCBvZiBhbiBl
bXB0eSBhcnJheSwgYmVjYXVzZSB0aGlzIG1hdGNoZXMKLSAgICAgICAgLy8gb3RoZXIgYnJvd3Nl
cnMgYW5kIGJlY2F1c2UgTnVsbCBpcyBhIGZhbHNlIHZhbHVlLgotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlvblByb2Zp
bGUqPigwKSwgbGlzdCkpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbAkocmV2aXNpb24gMTk4NTA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA3LDcgKzEwMDcsNyBAQAogLSBwYXRoOiBlczYv
UHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cF9jb25zdHJ1Y3Rvci5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0cmluZy5w
cm90b3R5cGUubWF0Y2guanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0cmluZy5wcm90b3R5
cGUucmVwbGFjZS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvUHJveHlfaW50
ZXJuYWxfZ2V0X2NhbGxzX1N0cmluZy5wcm90b3R5cGUuc2VhcmNoLmpzCkBAIC0xMDgxLDcgKzEw
ODEsNyBAQAogLSBwYXRoOiBlczYvUmVmbGVjdF9SZWZsZWN0LnNldC5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhw
LnByb3RvdHlwZVtTeW1ib2wubWF0Y2hdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGllc19S
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5yZXBsYWNlXS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAog
LSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVb
U3ltYm9sLnNlYXJjaF0uanMKQEAgLTExOTEsNyArMTE5MSw3IEBACiAtIHBhdGg6IGVzNi93ZWxs
LWtub3duX3N5bWJvbHNfU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZS5qcwogICBjbWQ6IHJ1bkVT
NiA6ZmFpbAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaC5qcwot
ICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93
ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLnJlcGxhY2UuanMKICAgY21kOiBydW5FUzYgOmZhaWwK
IC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wuc2VhcmNoLmpzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaC5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVn
ZXhwLW1hdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAyIEBACisKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCAmJiAhKGFjdHVhbCAhPT0gbnVsbCAmJiB0eXBlb2YoZXhwZWN0ZWQpID09PSAic3RyaW5nIiAm
JiBhY3R1YWwudG9TdHJpbmcoKSA9PSBleHBlY3RlZCkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCArICcsIGJhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGV4cGVjdGVkKSB7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciksIGV4
cGVjdGVkKTsKK30KKwordmFyIGVycm9yS2V5ID0geworICAgIHRvU3RyaW5nKCkgeworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ291dCcpOworICAgIH0KK307Cit2YXIgc3RyaW5nID0gJ0NvY29h
LCBDYXBwdWNjaW5vLCBSaXplLCBNYXRjaGEsIEtpbGltYW5qYXJvJzsKKworc2hvdWxkVGhyb3co
ZnVuY3Rpb24gKCkgeworICAgIFN0cmluZy5wcm90b3R5cGUubWF0Y2guY2FsbChudWxsLCAvQ29j
b2EvKTsKK30sICJUeXBlRXJyb3I6IFN0cmluZy5wcm90b3R5cGUubWF0Y2ggcmVxdWlyZXMgdGhh
dCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAg
IFN0cmluZy5wcm90b3R5cGUubWF0Y2guY2FsbCh1bmRlZmluZWQsIC9Db2NvYS8pOworfSwgIlR5
cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5tYXRjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgdW5kZWZpbmVkIik7CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBzdHJpbmcu
bWF0Y2goZXJyb3JLZXkpOworfSwgIkVycm9yOiBvdXQiKTsKKworc2hvdWxkQmUoJ0NvY29hJy5t
YXRjaCgvQ29jb2EvKSwgIkNvY29hIik7CisKK3Nob3VsZEJlKHN0cmluZy5tYXRjaCgvUml6ZS8p
LCAiUml6ZSIpOworc2hvdWxkQmUoc3RyaW5nLm1hdGNoKCdSaXplJyksICJSaXplIik7CitzaG91
bGRCZShzdHJpbmcubWF0Y2goL01hdGNoYS8pLCAiTWF0Y2hhIik7CitzaG91bGRCZShzdHJpbmcu
bWF0Y2goJ01hdGNoYScpLCAiTWF0Y2hhIik7CisKK3Nob3VsZEJlKCcgICAgdW5kZWZpbmVkJy5t
YXRjaCgpLCAiIik7CitzaG91bGRCZSgnICAgIHVuZGVmaW5lZCcubWF0Y2goJ3VuZGVmaW5lZCcp
LCAidW5kZWZpbmVkIik7CisKK3Nob3VsZEJlKCgvQ29jb2EvKVtTeW1ib2wubWF0Y2hdKCdDb2Nv
YScpLCAiQ29jb2EiKTsKKwordmFyIHByaW1pdGl2ZXMgPSBbCisgICAgJycsCisgICAgJ3N0cmlu
ZycsCisgICAgNDIsCisgICAgU3ltYm9sKCdDb2NvYScpLAorXTsKKworZm9yICh2YXIgcHJpbWl0
aXZlIG9mIHByaW1pdGl2ZXMpIHsKKyAgICBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAg
ICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLm1hdGNoXS5jYWxsKHByaW1pdGl2ZSkKKyAgICB9
LCAnVHlwZUVycm9yOiBSZWdFeHAucHJvdG90eXBlLkBAbWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhp
c3wgYmUgYSBSZWdFeHAgb2JqZWN0Jyk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsK
KyAgICAvQ29jb2EvW1N5bWJvbC5tYXRjaF0oZXJyb3JLZXkpOworfSwgIkVycm9yOiBvdXQiKTsK
KworCitmdW5jdGlvbiB0ZXN0UmVnRXhwTWF0Y2gocmVnZXhwLCBzdHJpbmcsIHJlc3VsdCwgbGFz
dEluZGV4KSB7CisgICAgc2hvdWxkQmUocmVnZXhwW1N5bWJvbC5tYXRjaF0oc3RyaW5nKSwgcmVz
dWx0KTsKKyAgICBzaG91bGRCZShyZWdleHAubGFzdEluZGV4LCBsYXN0SW5kZXgpOworfQorCitm
dW5jdGlvbiB0ZXN0TWF0Y2gocmVnZXhwLCBzdHJpbmcsIHJlc3VsdCwgbGFzdEluZGV4KSB7Cisg
ICAgc2hvdWxkQmUoc3RyaW5nLm1hdGNoKHJlZ2V4cCksIHJlc3VsdCk7CisgICAgc2hvdWxkQmUo
cmVnZXhwLmxhc3RJbmRleCwgbGFzdEluZGV4KTsKK30KKworZnVuY3Rpb24gdGVzdEJvdGgocmVn
ZXhwLCBzdHJpbmcsIHJlc3VsdCwgbGFzdEluZGV4KSB7CisgICAgdGVzdE1hdGNoKHJlZ2V4cCwg
c3RyaW5nLCByZXN1bHQsIGxhc3RJbmRleCk7CisgICAgdGVzdFJlZ0V4cE1hdGNoKHJlZ2V4cCwg
c3RyaW5nLCByZXN1bHQsIGxhc3RJbmRleCk7Cit9CisKK3ZhciBjb2NvYSA9IC9Db2NvYS87Citj
b2NvYS5sYXN0SW5kZXggPSAyMDsKK3Rlc3RCb3RoKGNvY29hLCAnQ29jb2EnLCAiQ29jb2EiLCAy
MCk7Cit0ZXN0Qm90aChjb2NvYSwgJyAgQ29jb2EnLCAiQ29jb2EiLCAyMCk7Cit0ZXN0Qm90aChj
b2NvYSwgJyAgJywgbnVsbCwgMjApOworCit2YXIgbXVsdGlieXRlID0gL+OCs+OCs+OCoi87Citt
dWx0aWJ5dGUubGFzdEluZGV4ID0gMjA7Cit0ZXN0Qm90aChtdWx0aWJ5dGUsICfjgrPjgrPjgqIn
LCAn44Kz44Kz44KiJywgMjApOwordGVzdEJvdGgobXVsdGlieXRlLCAnICBDb2NvYScsIG51bGws
IDIwKTsKK3Rlc3RCb3RoKG11bHRpYnl0ZSwgJ+OCq+ODl+ODgeODvOODjicsIG51bGwsIDIwKTsK
KworZnVuY3Rpb24gYWx3YXlzVW5tYXRjaChzdHJpbmcpIHsKKyAgICByZXR1cm4gbnVsbDsKK30K
KwordmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAoJ+OCs+OCs+OCoicpOworcmVnZXhwW1N5bWJvbC5t
YXRjaF0gPSBhbHdheXNVbm1hdGNoOworc2hvdWxkQmUocmVnZXhwW1N5bWJvbC5tYXRjaF0sIGFs
d2F5c1VubWF0Y2gpOwordGVzdEJvdGgocmVnZXhwLCAn44Kz44Kz44KiJywgbnVsbCwgMCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTg1MDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wMy0yMiAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVnRXhwLnByb3Rv
dHlwZVtAQG1hdGNoXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1NzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlZCB0ZXN0cyBmb3IgZXhjZXB0aW9uIHN0cmluZyBjaGFuZ2VzIGFuZCBhZGRl
ZCBTeW1ib2wubWF0Y2guCisKKyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1l
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRP
d25Qcm9wZXJ0eU5hbWVzLmpzOgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0
aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJvdG90eXBl
Lm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTAzLTIxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBzdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGVkYXRhYmFzZS1kZWxheWVkLWJ5LW9wZW4tYW5kLXZlcnNpb25jaGFuZ2UuaHRtbCBm
bGFreSBvbiBtYWMtd2syLgpJbmRleDogTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk4NTA1KQorKysg
TGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhFcnJvcikgaXMKIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90
b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10K
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4y
JywnTE9HMTBFJywnTE9HMkUnLCdQSScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdh
Y29zaCcsJ2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwn
LCdjbHozMicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlw
b3QnLCdpbXVsJywnbG9nJywnbG9nMTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cn
LCdyYW5kb20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3Rhbmgn
LCd0cnVuYyddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoSlNPTikgaXMgWydwYXJz
ZScsICdzdHJpbmdpZnknXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkg
aXMgWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcs
ICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycsICd0b1ByaW1pdGl2ZScs
ICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMoU3ltYm9sKSBpcyBbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlG
b3InLCAnbGVuZ3RoJywgJ21hdGNoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdz
cGVjaWVzJywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10KIFBB
U1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTeW1ib2wucHJvdG90eXBlKSBpcyBbJ2NvbnN0
cnVjdG9yJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0
eU5hbWVzKE1hcCkgaXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpIGlzIFsnY2xlYXInLCAnY29uc3Ry
dWN0b3InLCAnZGVsZXRlJywgJ2VudHJpZXMnLCAnZm9yRWFjaCcsICdnZXQnLCAnaGFzJywgJ2tl
eXMnLCAnc2V0JywgJ3NpemUnLCAndmFsdWVzJ10KSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9z
dHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL2RvbS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxOTg1MDUpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vc3RyaW5nLXByb3RvdHlw
ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBA
QCBQQVNTIFN0cmluZy5wcm90b3R5cGUuY2hhckNvZGVBdC5jYWxsKHVuCiBQQVNTIFN0cmluZy5w
cm90b3R5cGUuY29uY2F0LmNhbGwodW5kZWZpbmVkLCAnZml2ZScpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZi5jYWxs
KHVuZGVmaW5lZCwgJzInKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgog
UEFTUyBTdHJpbmcucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwodW5kZWZpbmVkLCAnMicpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFN0cmluZy5wcm90b3R5
cGUubWF0Y2guY2FsbCh1bmRlZmluZWQsIC8yKy8pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUubWF0Y2guY2FsbCh1bmRlZmluZWQs
IC8yKy8pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFN0cmluZy5wcm90b3R5cGUubWF0Y2gg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgU3RyaW5nLnByb3Rv
dHlwZS5yZXBsYWNlLmNhbGwodW5kZWZpbmVkLCAvMisvLCAnLScpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc2VhcmNoLmNhbGwo
dW5kZWZpbmVkLCAnNCcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFN0cmluZy5wcm90b3R5
cGUuc2VhcmNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIFN0
cmluZy5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lv
biAxOTg1MDUpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdmFyIGV4cGVj
dGVkUHJvcGVydHlOYW1lc1NldCA9IHsKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3Ry
dWN0b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsn
RScsJ0xOMTAnLCdMTjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywn
YWJzJywnYWNvcycsJ2Fjb3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgn
LCdjYnJ0JywnY2VpbCcsJ2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3In
LCdmcm91bmQnLCdoeXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21h
eCcsJ21pbicsJ3BvdycsJ3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0
JywndGFuJywndGFuaCcsJ3RydW5jJ10iLAogICAgICJKU09OIjogIlsncGFyc2UnLCAnc3RyaW5n
aWZ5J10iLAotICAgICJTeW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3In
LCAna2V5Rm9yJywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3Bl
Y2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddIiwKKyAg
ICAiU3ltYm9sIjogIlsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcics
ICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNp
ZXMnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMnXSIsCiAgICAg
IlN5bWJvbC5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICd0b1N0cmluZycsICd2YWx1ZU9m
J10iLAogICAgICJNYXAiOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAg
Ik1hcC5wcm90b3R5cGUiOiAiWydjbGVhcicsICdjb25zdHJ1Y3RvcicsICdkZWxldGUnLCAnZW50
cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycsICdzZXQnLCAnc2l6ZScsICd2
YWx1ZXMnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2
ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5t
YXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTk4NTA1KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEwX1N0
cmluZy5wcm90b3R5cGUubWF0Y2gvUzE1LjUuNC4xMF9BMV9UMy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjEwX0ExX1QzCiAKLUZBSUwgVHlwZUVy
cm9yOiBUeXBlIGVycm9yCitGQUlMIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5tYXRjaCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkCiAKIFRFU1QgQ09NUExFVEUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274678</attachid>
            <date>2016-03-22 13:22:16 -0700</date>
            <delta_ts>2016-03-22 14:36:54 -0700</delta_ts>
            <desc>Updated patch - relaxed the |this| check in RegExp.prototype[@@match] to only check that it is an object, per spec.</desc>
            <filename>155711-2.patch</filename>
            <type>text/plain</type>
            <size>45319</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NTMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE2LTAzLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFtFUzZdIEltcGxlbWVudCBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBFUzYgc3Bl
YyBmb3IgU3RyaW5nLnByb3RvdHlwZS5tYXRjaCBhbmQgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNo
XS4KKyAgICAgICAgSW1wbGVtZW50ZWQgYm90aCBhcyBidWlsdGlucywgd2l0aCBTdHJpbmcucHJv
dG90eXBlLm1hdGNoIGNhbGxpbmcgCisgICAgICAgIFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0u
CisKKyAgICAgICAgRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIFJlZ0V4cC5wcm90b3R5cGVbQEBt
YXRjaF0gaGFzIGEgQysrIGZhc3QgcGF0aCB3aGVuCisgICAgICAgIFJlZ0V4cC5wcm90b3R5cGUu
ZXhlYyBoYXMgbm90IGJlZW4gb3ZlcnJpZGRlbi4gIFRoaXMgZmFzdCBwYXRoLAorICAgICAgICBS
ZWdFeHBPYmplY3Q6Om1hdGNoR2xvYmFsLCB3YXMgdGFrZW4gZnJvbSB0aGUgcHJpb3IgU3RyaW5n
UHJvdG90eXBlOjptYXRjaC4KKyAgICAgICAgSXQgb25seSBoYW5kbGVzIGdsb2JhbCBtYXRjaGVz
LgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0LCBzdHJlc3MvcmVnZXhwLW1hdGNoLmpzLgorCisg
ICAgICAgIFVwZGF0ZWQgdmFyaW91cyB0ZXN0cyBmb3IgY2hhbmdlcyBleGNlcHRpb24gc3RyaW5n
IGFuZCBub3cgcGFzc2luZyBFUzYgYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBidWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMgYW5kIGVsaW1pbmF0ZWQgUmVnRXhwUHJvdG90eXBlLmx1dC5oLgor
CisgICAgICAgICogYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAg
KG1hdGNoLmFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUpOiBIZWxwZXIuCisgICAgICAgIChtYXRj
aCk6IEltcGxlbWVudHMgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXS4KKyAgICAgICAgKiBidWls
dGlucy9TdHJpbmdQcm90b3R5cGUuanM6CisgICAgICAgIChtYXRjaCk6IEltcGxlbWVudHMgU3Ry
aW5nLnByb3RvdHlwZS5tYXRjaC4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6bG9va3VwKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICBBZGRlZCBTeW1ib2wubWF0Y2ggYW5kIGJ1aWx0aW5zIEBtYXRjaCBhbmQgQGV4ZWMu
CisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaEdsb2JhbCk6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmFkdmFuY2VTdHJpbmdVbmljb2RlKTogQWRkZWQgaGVs
cGVyLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlw
ZTo6UmVnRXhwUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY01hdGNoUHJpdmF0ZSk6CisgICAgICAg
IChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICBSZXN0cnVjdHVy
ZWQgdG8gY3JlYXRlIHByb3BlcnRpZXMgZXhwbGljaXRseSBkdWUgdG8gaGF2aW5nIHR3byBuYW1l
cyBmb3IgbmF0aXZlIHJlZ0V4cFByb3RvRnVuY0V4ZWMuCisKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICBNYWRlIG1hdGNoIGEgYnVpbHRpbi4KKyAgICAgICAgUmVtb3Zl
ZCB1bnVzZWQgZGVjbGFyYXRpb24gb2Ygc3RyaW5nUHJvdG9GdW5jU2VhcmNoKCkgc2luY2UgaXQg
d2FzIG1hZGUgYSBidWlsdGluLgorCisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChlcnJvcktleS50b1N0cmluZyk6
CisgICAgICAgIChwcmltaXRpdmUub2YucHJpbWl0aXZlcy5zaG91bGRUaHJvdyk6CisgICAgICAg
ICh0ZXN0UmVnRXhwTWF0Y2gpOgorICAgICAgICAodGVzdE1hdGNoKToKKyAgICAgICAgKHRlc3RC
b3RoKToKKyAgICAgICAgKGFsd2F5c1VubWF0Y2gpOgorCiAyMDE2LTAzLTIyICBDYWl0bGluIFBv
dHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gYWxsb3cgZHVwbGljYXRl
IHByb3BlcnR5IG5hbWVzIHJldHVybmVkIGZyb20gUHJveHkgb3duS2V5cygpIHRyYXAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5ODUwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIx
OSw2ICsxMjE5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzCisgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTg1MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5
KQpAQCAtOTksNiArOTksNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzIFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzIFwKKyAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlw
dENvcmUpL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzIFwKQEAgLTE0Nyw3ICsxNDgsNiBAQCBP
QkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXAogICAg
IFJlZmxlY3RPYmplY3QubHV0LmggXAogICAgIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKLSAg
ICBSZWdFeHBQcm90b3R5cGUubHV0LmggXAogICAgIFNldFByb3RvdHlwZS5sdXQuaCBcCiAgICAg
U3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1
dC5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg1MDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2NCw3ICsxNDY0LDYgQEAKIAkJOTk2Qjcz
MjExQkRBMDhFRjAwMzMxQjg0IC8qIE51bWJlclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzBEMUJEOUZBMkMwMDMzMUI4
NCAvKiBOdW1iZXJQcm90b3R5cGUubHV0LmggKi87IH07CiAJCTk5NkI3MzIyMUJEQTA4RUYwMDMz
MUI4NCAvKiBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzBFMUJEOUZBMkMwMDMzMUI4NCAvKiBPYmplY3RD
b25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJOTk2QjczMjMxQkRBMDhFRjAwMzMxQjg0IC8qIFJl
ZmxlY3RPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTZCNzMwRjFCRDlGQTJDMDAzMzFCODQgLyogUmVmbGVjdE9iamVjdC5sdXQuaCAq
LzsgfTsKLQkJOTk2QjczMjQxQkRBMDhFRjAwMzMxQjg0IC8qIFJlZ0V4cFByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzEw
MUJEOUZBMkMwMDMzMUI4NCAvKiBSZWdFeHBQcm90b3R5cGUubHV0LmggKi87IH07CiAJCTk5NkI3
MzI1MUJEQTA4RUYwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzExMUJEOUZBMkMwMDMz
MUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJOTk2QjczMjYxQkRBMDhF
RjAwMzMxQjg0IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjczMTIxQkQ5RkEyQzAwMzMxQjg0
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQk5OTZCNzMyNzFCREEw
OEVGMDAzMzFCODQgLyogU3ltYm9sQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQgLyog
U3ltYm9sQ29uc3RydWN0b3IubHV0LmggKi87IH07CkBAIC0zMzU1LDYgKzMzNTQsNyBAQAogCQk2
NTQwQzc5RjFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVu
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsg
cGF0aCA9IE51bGxHZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhj
TGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk2
NTQ2RjUyMDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bGxHZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2NTQ3ODg0MjFDOTM3RDJDMDAwNzgxQTAgLyogUmVnRXhwUHJv
dG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVnRXhw
UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTUyNUZDMzFBNkRE
M0IzMDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE51bGxTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1NTI1RkM0MUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVsbFNldHRlckZ1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTNBMzJGMTdBMUYxRUUwMDhD
RjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY2OSw3ICszNjY5LDYgQEAKIAkJOTk2QjczMEQxQkQ5
RkEyQzAwMzMxQjg0IC8qIE51bWJlclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTnVtYmVyUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTZCNzMwRTFCRDlGQTJDMDAzMzFCODQgLyogT2JqZWN0Q29uc3RydWN0b3Iu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdENvbnN0cnVjdG9y
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMwRjFCRDlGQTJDMDAz
MzFCODQgLyogUmVmbGVjdE9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVmbGVjdE9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTk2QjczMTAxQkQ5RkEyQzAwMzMxQjg0IC8qIFJlZ0V4cFByb3RvdHlwZS5sdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMxMTFCRDlGQTJDMDAzMzFCODQgLyogU3RyaW5n
Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z0NvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMx
MjFCRDlGQTJDMDAzMzFCODQgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTZCNzMxMzFCRDlGQTJDMDAzMzFCODQg
LyogU3ltYm9sQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTM3MCw3ICs1MzY5LDYgQEAKIAkJCQk5OTZCNzMwRjFCRDlGQTJDMDAzMzFCODQgLyogUmVm
bGVjdE9iamVjdC5sdXQuaCAqLywKIAkJCQlCQ0QyMDJENTBFMTcwNzA4MDAyQzdFODIgLyogUmVn
RXhwQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8q
IFJlZ0V4cEppdFRhYmxlcy5oICovLAotCQkJCTk5NkI3MzEwMUJEOUZBMkMwMDMzMUI4NCAvKiBS
ZWdFeHBQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJNzAzNTU4N0YxQzQxODQ1ODAwNEJEN0JGIC8q
IFNldFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQk5OTZCNzMxMTFCRDlGQTJDMDAzMzFCODQgLyog
U3RyaW5nQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJOTk2QjczMTIxQkQ5RkEyQzAwMzMxQjg0
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovLApAQCAtNjg0Myw2ICs2ODQxLDcg
QEAKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3NTAgLyogUHJvbWlzZVByb3RvdHlwZS5qcyAq
LywKIAkJCQk3Q0Y5QkM1RTFCNjVEOUIxMDA5REIxRUYgLyogUHJvbWlzZUNvbnN0cnVjdG9yLmpz
ICovLAogCQkJCTdDRjlCQzVGMUI2NUQ5QjEwMDlEQjFFRiAvKiBSZWZsZWN0T2JqZWN0LmpzICov
LAorCQkJCTY1NDc4ODQyMUM5MzdEMkMwMDA3ODFBMCAvKiBSZWdFeHBQcm90b3R5cGUuanMgKi8s
CiAJCQkJNzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLywKIAkJ
CQk3Q0Y5QkM2MDFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5nQ29uc3RydWN0b3IuanMgKi8sCiAJ
CQkJN0NGOUJDNjExQjY1RDlCMTAwOURCMUVGIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpz
ICovLApAQCAtNzg5Nyw3ICs3ODk2LDYgQEAKIAkJCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1QjBFMTZGNUNEMDBCMzQ0
NjAgLyogUmVnRXhwT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDJDNDBFMTcwNkE3
MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk5OTZCNzMy
NDFCREEwOEVGMDAzMzFCODQgLyogUmVnRXhwUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjIzQTM3RUMxQjg3QTdDMDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFwLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQ
cm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1JlZ0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitmdW5j
dGlvbiBtYXRjaChzdHIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gYWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZShzdHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCisgICAg
eworICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybiBpbmRleCArIDE7CisKKyAgICAgICAgbGV0IGZpcnN0ID0gc3RyaW5nLkBjaGFyQ29kZUF0
KGluZGV4KTsKKyAgICAgICAgaWYgKGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGKQor
ICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgICAgICBsZXQgc2Vjb25kID0gc3Ry
aW5nLkBjaGFyQ29kZUF0KGluZGV4ICsgMSk7CisgICAgICAgIGlmIChzZWNvbmQgPCAweERDMDAg
fHwgc2Vjb25kID4gMHhERkZGKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAg
ICAgICByZXR1cm4gaW5kZXggKyAyOworICAgIH0KKworICAgIGlmICghKHRoaXMgaW5zdGFuY2Vv
ZiBAT2JqZWN0KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5
cGUuQEBtYXRjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBPYmplY3QiKTsKKworICAgIGxl
dCByZWdleHAgPSBAT2JqZWN0KHRoaXMpOworICAgIGxldCBzdHJpbmdBcmcgPSBAdG9TdHJpbmco
c3RyKTsKKworICAgIGlmICghcmVnZXhwLmdsb2JhbCkKKyAgICAgICAgcmV0dXJuIHJlZ2V4cC5l
eGVjKHN0cmluZ0FyZyk7CisKKyAgICByZWdleHAubGFzdEluZGV4ID0gMDsKKworICAgIGxldCBy
ZXN1bHRMaXN0ID0gW107CisKKyAgICBpZiAocmVnZXhwLmV4ZWMgIT09IEBSZWdFeHAucHJvdG90
eXBlLkBleGVjICYmIHR5cGVvZihyZWdleHAuZXhlYykgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAg
ICAgLy8gTWF0Y2ggdXNpbmcgdGhlIG92ZXJyaWRkZW4gZXhlYy4KKyAgICAgICAgbGV0IHVuaWNv
ZGUgPSByZWdleHAudW5pY29kZTsKKyAgICAgICAgbGV0IHN0cmluZ0xlbmd0aCA9IHN0ci5sZW5n
dGg7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBy
ZWdleHAuZXhlYyhzdHJpbmdBcmcpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocmVz
dWx0ID09PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdExpc3QubGVuZ3RoID09
PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0TGlzdDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIUBpc09iamVjdChyZXN1
bHQpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90
eXBlLkBAbWF0Y2ggY2FsbCB0byBSZWdFeHAuZXhlYyBkaWRuJ3QgcmV0dXJuIG51bGwgb3IgYW4g
b2JqZWN0Iik7CisKKyAgICAgICAgICAgIGxldCByZXN1bHRTdHJpbmcgPSBAdG9TdHJpbmcocmVz
dWx0WzBdKTsKKworICAgICAgICAgICAgaWYgKCFyZXN1bHRTdHJpbmcubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgIHJlZ2V4cC5sYXN0
SW5kZXggPSBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlKHN0cmluZ0FyZywgc3RyaW5nTGVuZ3Ro
LCByZWdleHAubGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHJlZ2V4cC5sYXN0SW5kZXgrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmVzdWx0TGlzdC5AcHVzaChyZXN1bHRTdHJpbmcpOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHJlZ2V4cC5AbWF0Y2goc3RyaW5nQXJnKTsKK30KKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCShyZXZpc2lvbiAx
OTg1MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwyNyBAQAogCiAvLyBAY29uZGl0aW9uYWw9
RU5BQkxFKElOVEwpCiAKK2Z1bmN0aW9uIG1hdGNoKHJlZ2V4cCkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAodGhpcyA9PSBudWxsKSB7CisgICAgICAgIGlmICh0aGlzID09PSBudWxs
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUubWF0
Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUubWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIHVuZGVmaW5lZCIpOworICAgIH0KKworICAgIGlmIChyZWdleHAgIT0gbnVsbCkgewor
ICAgICAgICB2YXIgbWF0Y2hlciA9IHJlZ2V4cFtAc3ltYm9sTWF0Y2hdOworICAgICAgICBpZiAo
bWF0Y2hlciAhPT0gQHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVyLkBjYWxs
KHJlZ2V4cCwgdGhpcyk7CisgICAgfQorCisgICAgbGV0IHRoaXNTdHJpbmcgPSBAdG9TdHJpbmco
dGhpcyk7CisgICAgbGV0IGNyZWF0ZWRSZWdFeHAgPSBuZXcgQFJlZ0V4cChyZWdleHAsIEB1bmRl
ZmluZWQpOworICAgIHJldHVybiBjcmVhdGVkUmVnRXhwW0BzeW1ib2xNYXRjaF0odGhpc1N0cmlu
Zyk7Cit9CisKIGZ1bmN0aW9uIHNlYXJjaChyZWdleHApCiB7CiAgICAgInVzZSBzdHJpY3QiOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMTk4NTA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkJ5dGVjb2RlSW50cmkKICAgICBtX3Byb21pc2VTdGF0ZUZ1bGZpbGxlZC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpGdWxmaWxsZWQp
KSk7CiAgICAgbV9wcm9taXNlU3RhdGVSZWplY3RlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpSZWplY3RlZCkpKTsKICAgICBtX3N5
bWJvbEl0ZXJhdG9yLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wuaW1wbCgpKSkp
OworICAgIG1fc3ltYm9sTWF0Y2guc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRp
Y19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5tYXRjaFN5bWJvbC5pbXBs
KCkpKSk7CiAgICAgbV9zeW1ib2xTZWFyY2guc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0s
IHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1i
b2wuaW1wbCgpKSkpOwogICAgIG1fc3ltYm9sU3BlY2llcy5zZXQobV92bSwgU3ltYm9sOjpjcmVh
dGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNw
ZWNpZXNTeW1ib2wuaW1wbCgpKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCShyZXZp
c2lvbiAxOTg1MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNz
IElkZW50aWZpZXI7CiAgICAgbWFjcm8ocHJvbWlzZVN0YXRlRnVsZmlsbGVkKSBcCiAgICAgbWFj
cm8ocHJvbWlzZVN0YXRlUmVqZWN0ZWQpIFwKICAgICBtYWNybyhzeW1ib2xJdGVyYXRvcikgXAor
ICAgIG1hY3JvKHN5bWJvbE1hdGNoKSBcCiAgICAgbWFjcm8oc3ltYm9sU2VhcmNoKSBcCiAgICAg
bWFjcm8oc3ltYm9sU3BlY2llcykKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAxOTg1MDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzQsMTMgKzI3NCwxMyBAQAogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9J
REVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MX05PVF9JTVBMRU1FTlRFRF9ZRVQobWFj
cm8pXAogICAgIG1hY3JvKGlzQ29uY2F0U3ByZWFkYWJsZSkgXAotICAgIG1hY3JvKG1hdGNoKSBc
CiAgICAgbWFjcm8ocmVwbGFjZSkgXAotICAgIG1hY3JvKHNwbGl0KSBcCisgICAgbWFjcm8oc3Bs
aXQpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9L
Tk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNybyhoYXNJbnN0YW5jZSkgXAogICAgIG1hY3Jv
KGl0ZXJhdG9yKSBcCisgICAgbWFjcm8obWF0Y2gpIFwKICAgICBtYWNybyhzZWFyY2gpIFwKICAg
ICBtYWNybyhzcGVjaWVzKSBcCiAgICAgbWFjcm8odG9QcmltaXRpdmUpIFwKQEAgLTM1Miw2ICsz
NTIsNyBAQAogICAgIG1hY3JvKFVpbnQzMkFycmF5KSBcCiAgICAgbWFjcm8oRmxvYXQzMkFycmF5
KSBcCiAgICAgbWFjcm8oRmxvYXQ2NEFycmF5KSBcCisgICAgbWFjcm8oZXhlYykgXAogICAgIG1h
Y3JvKGdlbmVyYXRvcikgXAogICAgIG1hY3JvKGdlbmVyYXRvck5leHQpIFwKICAgICBtYWNybyhn
ZW5lcmF0b3JTdGF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAxOTg1MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNCAr
MTY5LDY1IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXQKICAgICBy
ZXR1cm4gbWF0Y2hJbmxpbmUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpOwogfQogCitKU1Zh
bHVlIFJlZ0V4cE9iamVjdDo6bWF0Y2hHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQoreworICAgIFJlZ0V4cCogcmVn
RXhwID0gdGhpcy0+cmVnRXhwKCk7CisKKyAgICBBU1NFUlQocmVnRXhwLT5nbG9iYWwoKSk7CisK
KyAgICBWTSogdm0gPSAmZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgc2V0TGFzdEluZGV4KGV4
ZWMsIDApOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAg
UmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5yZWdF
eHBDb25zdHJ1Y3RvcigpOworICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVj
dG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CisKKyAgICAvLyBy
ZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Cisg
ICAgLy8gV2UgZGVmZW5kIG91cnNlbHZlcyBmcm9tIGNyYXp5LgorICAgIGNvbnN0IHNpemVfdCBt
YXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSA9IDEwMDAwMDAwMDA7CisKKyAgICBpZiAocmVnRXhw
LT51bmljb2RlKCkpIHsKKyAgICAgICAgd2hpbGUgKHJlc3VsdCkgeworICAgICAgICAgICAgaWYg
KGxpc3Quc2l6ZSgpID4gbWF4aW11bVJlYXNvbmFibGVNYXRjaFNpemUpIHsKKyAgICAgICAgICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBlbmQg
PSByZXN1bHQuZW5kOworICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGVuZCAtIHJlc3VsdC5z
dGFydDsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHJlc3Vs
dC5zdGFydCwgbGVuZ3RoKSk7CisgICAgICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAg
ICAgICBlbmQgPSBhZHZhbmNlU3RyaW5nVW5pY29kZShzLCBsZW5ndGgsIGVuZCk7CisgICAgICAg
ICAgICByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVnRXhw
LCBzdHJpbmcsIHMsIGVuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGls
ZSAocmVzdWx0KSB7CisgICAgICAgICAgICBpZiAobGlzdC5zaXplKCkgPiBtYXhpbXVtUmVhc29u
YWJsZU1hdGNoU2l6ZSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc2l6ZV90IGVuZCA9IHJlc3VsdC5lbmQ7CisgICAgICAgICAgICBz
aXplX3QgbGVuZ3RoID0gZW5kIC0gcmVzdWx0LnN0YXJ0OworICAgICAgICAgICAgbGlzdC5hcHBl
bmQoanNTdWJzdHJpbmcoZXhlYywgcywgcmVzdWx0LnN0YXJ0LCBsZW5ndGgpKTsKKyAgICAgICAg
ICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgICAgICsrZW5kOworICAgICAgICAgICAgcmVz
dWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5n
LCBzLCBlbmQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGxpc3QuaXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzIGF0IGFsbCwgaXQncyBpbXBvcnRh
bnQgdG8gcmV0dXJuCisgICAgICAgIC8vIE51bGwgaW5zdGVhZCBvZiBhbiBlbXB0eSBhcnJheSwg
YmVjYXVzZSB0aGlzIG1hdGNoZXMKKyAgICAgICAgLy8gb3RoZXIgYnJvd3NlcnMgYW5kIGJlY2F1
c2UgTnVsbCBpcyBhIGZhbHNlIHZhbHVlLgorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAg
fQorCisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5QWxs
b2NhdGlvblByb2ZpbGUqPigwKSwgbGlzdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlz
aW9uIDE5ODUwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBib29sIHRl
c3RJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cmluZyogc3RyaW5nKSB7IHJldHVybiAhIW1hdGNoSW5saW5lKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RyaW5nKTsgfQogICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTU3RyaW5nKik7CiAgICAgSlNWYWx1ZSBleGVjSW5saW5lKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKKyAgICBNYXRjaFJlc3VsdCBtYXRjaChFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CisgICAgSlNWYWx1ZSBtYXRjaEdsb2JhbChF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpAQCAtMTAyLDkgKzEw
NCw5IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdl
bmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICB1bnNpZ25l
ZCBhZHZhbmNlU3RyaW5nVW5pY29kZShTdHJpbmcsIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAKIHBy
aXZhdGU6Ci0gICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1N0cmluZyopOwogICAgIE1hdGNoUmVzdWx0IG1hdGNoSW5saW5lKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAgIFdyaXRlQmFycmllcjxSZWdFeHA+IG1f
cmVnRXhwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdElubGluZXMuaAkocmV2aXNpb24gMTk4NTA1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDgsNiArMTA4LDIyIEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2hJbmxpbmUoCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordW5zaWduZWQgUmVnRXhwT2JqZWN0OjphZHZhbmNlU3Ry
aW5nVW5pY29kZShTdHJpbmcgcywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBjdXJyZW50SW5k
ZXgpCit7CisgICAgaWYgKGN1cnJlbnRJbmRleCArIDEgPj0gbGVuZ3RoKQorICAgICAgICByZXR1
cm4gY3VycmVudEluZGV4ICsgMTsKKworICAgIFVDaGFyIGZpcnN0ID0gc1tjdXJyZW50SW5kZXhd
OworICAgIGlmIChmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRikKKyAgICAgICAgcmV0
dXJuIGN1cnJlbnRJbmRleCArIDE7CisKKyAgICBVQ2hhciBzZWNvbmQgPSBzW2N1cnJlbnRJbmRl
eF07CisgICAgaWYgKHNlY29uZCA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkYpCisgICAgICAg
IHJldHVybiBjdXJyZW50SW5kZXggKyAxOworCisgICAgcmV0dXJuIGN1cnJlbnRJbmRleCArIDI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gUmVnRXhwT2JqZWN0SW5saW5l
c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5ODUwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDEw
IEBACiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJBcnJheVByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgpAQCAtMzYsMTIgKzM4LDE0IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAi
UmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IlJlZ0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hQcml2YXRl
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoKEV4ZWNTdGF0
ZSopOwpAQCAtNTMsMjkgKzU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9H
ZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNTdGF0ZSopOwogCi19Ci0KLSNpbmNsdWRl
ICJSZWdFeHBQcm90b3R5cGUubHV0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFz
c0luZm8gUmVnRXhwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZv
LCAmcmVnRXhwUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwUHJvdG90
eXBlKSB9OwotCi0vKiBTb3VyY2UgZm9yIFJlZ0V4cFByb3RvdHlwZS5sdXQuaAotQGJlZ2luIHJl
Z0V4cFByb3RvdHlwZVRhYmxlCi0gIGNvbXBpbGUgICAgICAgcmVnRXhwUHJvdG9GdW5jQ29tcGls
ZSAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgZXhlYyAgICAgICAgICByZWdFeHBQcm90b0Z1
bmNFeGVjICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICB0ZXN0ICAgICAgICAgIHJlZ0V4
cFByb3RvRnVuY1Rlc3QgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIHRvU3RyaW5nICAg
ICAgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKLSAgZ2xv
YmFsICAgICAgICByZWdFeHBQcm90b0dldHRlckdsb2JhbCAgICAgRG9udEVudW18QWNjZXNzb3IK
LSAgaWdub3JlQ2FzZSAgICByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UgRG9udEVudW18QWNj
ZXNzb3IKLSAgbXVsdGlsaW5lICAgICByZWdFeHBQcm90b0dldHRlck11bHRpbGluZSAgRG9udEVu
dW18QWNjZXNzb3IKLSAgc3RpY2t5ICAgICAgICByZWdFeHBQcm90b0dldHRlclN0aWNreSAgICAg
RG9udEVudW18QWNjZXNzb3IKLSAgdW5pY29kZSAgICAgICByZWdFeHBQcm90b0dldHRlclVuaWNv
ZGUgICAgRG9udEVudW18QWNjZXNzb3IKLSAgc291cmNlICAgICAgICByZWdFeHBQcm90b0dldHRl
clNvdXJjZSAgICAgRG9udEVudW18QWNjZXNzb3IKLSAgZmxhZ3MgICAgICAgICByZWdFeHBQcm90
b0dldHRlckZsYWdzICAgICAgRG9udEVudW18QWNjZXNzb3IKLUBlbmQKLSovCitjb25zdCBDbGFz
c0luZm8gUmVnRXhwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cFByb3RvdHlwZSkgfTsKIAogUmVnRXhwUHJv
dG90eXBlOjpSZWdFeHBQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKQEAgLTg2LDE2ICs2OCwyNyBAQCB2
b2lkIFJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNlYXJjaFN5bWJvbCwgcmVnRXhwUHJv
dG9GdW5jU2VhcmNoLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Y29tcGlsZSwgcmVnRXhwUHJvdG9GdW5j
Q29tcGlsZSwgRG9udEVudW0sIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QsIERv
bnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcsIERvbnRF
bnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0dFVFRFUih2bS5wcm9wZXJ0eU5hbWVzLT5nbG9iYWws
IHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsLCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICBKU0Nf
TkFUSVZFX0dFVFRFUih2bS5wcm9wZXJ0eU5hbWVzLT5pZ25vcmVDYXNlLCByZWdFeHBQcm90b0dl
dHRlcklnbm9yZUNhc2UsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VU
VEVSKHZtLnByb3BlcnR5TmFtZXMtPm11bHRpbGluZSwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxp
bmUsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VUVEVSKHZtLnByb3Bl
cnR5TmFtZXMtPnN0aWNreSwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3ksIERvbnRFbnVtIHwgQWNj
ZXNzb3IpOworICAgIEpTQ19OQVRJVkVfR0VUVEVSKHZtLnByb3BlcnR5TmFtZXMtPnVuaWNvZGUs
IHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgSlND
X05BVElWRV9HRVRURVIodm0ucHJvcGVydHlOYW1lcy0+c291cmNlLCByZWdFeHBQcm90b0dldHRl
clNvdXJjZSwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgSlNDX05BVElWRV9HRVRURVIodm0u
cHJvcGVydHlOYW1lcy0+ZmxhZ3MsIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MsIERvbnRFbnVtIHwg
QWNjZXNzb3IpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hdGNoUHJpdmF0ZU5hbWUoKSwgcmVnRXhw
UHJvdG9GdW5jTWF0Y2hQcml2YXRlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwg
MSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPm1hdGNoU3ltYm9sLCByZWdFeHBQcm90b3R5cGVNYXRjaENvZGVHZW5lcmF0b3Is
IERvbnRFbnVtKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1ib2wsIHJlZ0V4cFByb3RvRnVuY1NlYXJjaCwgRG9u
dEVudW0sIDEpOworCisgICAgSlNGdW5jdGlvbiogZXhlY0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWMuc3RyaW5n
KCksIHJlZ0V4cFByb3RvRnVuY0V4ZWMsIFJlZ0V4cEV4ZWNJbnRyaW5zaWMpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjUHJpdmF0ZU5h
bWUsIGV4ZWNGdW5jdGlvbiwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjLCBl
eGVjRnVuY3Rpb24sIERvbnRFbnVtKTsKIAogICAgIG1fZW1wdHlSZWdFeHAuc2V0KHZtLCB0aGlz
LCBSZWdFeHA6OmNyZWF0ZSh2bSwgIiIsIE5vRmxhZ3MpKTsKIH0KIAotYm9vbCBSZWdFeHBQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKLXsKLSAg
ICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIHJlZ0V4cFByb3RvdHlw
ZVRhYmxlLCBqc0Nhc3Q8UmVnRXhwUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKLX0KLQogdm9pZCBSZWdFeHBQcm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBSZWdFeHBQcm90b3R5cGUqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UmVnRXhwUHJvdG90eXBlKj4oY2VsbCk7CkBAIC0xMjksNiArMTIyLDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPmV4ZWMoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaFByaXZhdGUoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CisgICAgaWYgKCFzdHJpbmcpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5tYXRjaEdsb2JhbChleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpOworfQorCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2
aXNpb24gMTk4NTA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBSZWdFeHBQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgUmVnRXhwUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC01NCw3ICs1NCw2IEBAIHByb3RlY3RlZDoKIAogcHJp
dmF0ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLSAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4g
bV9lbXB0eVJlZ0V4cDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5ODUwNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDEwICs2Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29uY2F0KEV4
ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJ
bmRleE9mKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jTWF0Y2goRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdChFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZShFeGVjU3RhdGUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2VhcmNoKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGlj
ZShFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3BsaXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKQEAgLTExMSw2ICsxMDksNyBAQCBjb25zdCBD
bGFzc0luZm8gU3RyaW5nUHJvdG90eXBlOjpzX2luZm8gCiAKIC8qIFNvdXJjZSBmb3IgU3RyaW5n
Q29uc3RydWN0b3IubHV0LmgKIEBiZWdpbiBzdHJpbmdQcm90b3R5cGVUYWJsZQorICAgIG1hdGNo
ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHNlYXJjaCAgICBKU0J1
aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogQGVuZAogKi8KQEAgLTEzNCw3ICsxMzMsNiBA
QCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNvbmNhdCIsIHN0cmluZ1Byb3RvRnVuY0Nv
bmNhdCwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKCJpbmRleE9mIiwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZiwgRG9udEVudW0sIDEpOwog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIs
IHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mLCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oIm1hdGNoIiwgc3RyaW5nUHJvdG9GdW5jTWF0
Y2gsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigicmVwZWF0Iiwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0LCBEb250RW51bSwgMSk7CiAgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJyZXBsYWNl
Iiwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZSwgRG9udEVudW0sIDIsIFN0cmluZ1Byb3RvdHlwZVJl
cGxhY2VJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJzbGljZSIsIHN0cmluZ1Byb3RvRnVuY1NsaWNlLCBEb250RW51bSwgMik7CkBAIC0xMDMw
LDEwNyArMTAyOCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY01hdGNoKEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAg
IGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKTsKLSAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7Ci0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKLSAgICBWTSogdm0gPSAmZ2xvYmFsT2JqZWN0LT52bSgpOwotCi0gICAgSlNWYWx1ZSBhMCA9
IGV4ZWMtPmFyZ3VtZW50KDApOwotCi0gICAgUmVnRXhwKiByZWdFeHA7Ci0gICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSAwOwotICAgIGJvb2wgZ2xvYmFsID0gZmFsc2U7Ci0gICAgYm9vbCBzdGlj
a3kgPSBmYWxzZTsKLSAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IG51bGxwdHI7Ci0g
ICAgaWYgKGEwLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgewotICAgICAgICByZWdF
eHBPYmplY3QgPSBhc1JlZ0V4cE9iamVjdChhMCk7Ci0gICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9i
amVjdC0+cmVnRXhwKCk7Ci0gICAgICAgIGlmICgoZ2xvYmFsID0gcmVnRXhwLT5nbG9iYWwoKSkp
IHsKLSAgICAgICAgICAgIC8vIEVTNiAyMS4yLjUuNiBzdGVwIDYuYi4KLSAgICAgICAgICAgIHJl
Z0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwotICAgICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RpY2t5ID0gcmVnRXhwLT5zdGlj
a3koKTsKLSAgICAgICAgaWYgKCFnbG9iYWwgJiYgc3RpY2t5KSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlIGpzTGFzdEluZGV4ID0gcmVnRXhwT2JqZWN0LT5nZXRMYXN0SW5kZXgoKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKLSAgICAgICAgICAgIGlmIChMSUtFTFkoanNMYXN0SW5k
ZXguaXNVSW50MzIoKSkpIHsKLSAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBqc0xhc3RJbmRl
eC5hc1VJbnQzMigpOwotICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPiBzLmxlbmd0aCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlZ0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMs
IDApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZG91YmxlIGRvdWJsZUxhc3RJbmRleCA9IGpzTGFzdEluZGV4LnRvSW50ZWdlcihl
eGVjKTsKLSAgICAgICAgICAgICAgICBpZiAoZG91YmxlTGFzdEluZGV4IDwgMCB8fCBkb3VibGVM
YXN0SW5kZXggPiBzLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlZ0V4cE9iamVj
dC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZG91YmxlTGFzdEluZGV4
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBsYXN0SW5kZXg7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKgotICAgICAgICAgKiAgRUNNQSAx
NS41LjQuMTIgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2ggKHJlZ2V4cCkKLSAgICAgICAgICogIElm
IHJlZ2V4cCBpcyBub3QgYW4gb2JqZWN0IHdob3NlIFtbQ2xhc3NdXSBwcm9wZXJ0eSBpcyAiUmVn
RXhwIiwgaXQgaXMKLSAgICAgICAgICogIHJlcGxhY2VkIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUg
ZXhwcmVzc2lvbiBuZXcgUmVnRXhwKHJlZ2V4cCkuCi0gICAgICAgICAqICBQZXIgRUNNQSAxNS4x
MC40LjEsIGlmIGEwIGlzIHVuZGVmaW5lZCBzdWJzdGl0dXRlIHRoZSBlbXB0eSBzdHJpbmcuCi0g
ICAgICAgICAqLwotICAgICAgICBTdHJpbmcgcGF0dGVyblN0cmluZyA9IGVtcHR5U3RyaW5nKCk7
Ci0gICAgICAgIGlmICghYTAuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgcGF0dGVyblN0
cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIHBhdHRlcm5TdHJpbmcsIE5vRmxhZ3MpOwotICAgICAgICBpZiAo
IXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7Ci0gICAg
fQotICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVj
dC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKLSAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBD
b25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMsIHN0YXJ0T2Zm
c2V0KTsKLSAgICAvLyBjYXNlIHdpdGhvdXQgJ2cnIGZsYWcgaXMgaGFuZGxlZCBsaWtlIFJlZ0V4
cC5wcm90b3R5cGUuZXhlYwotICAgIGlmICghZ2xvYmFsKSB7Ci0gICAgICAgIGlmIChzdGlja3kp
Ci0gICAgICAgICAgICByZWdFeHBPYmplY3QtPnNldExhc3RJbmRleChleGVjLCByZXN1bHQgPyBy
ZXN1bHQuZW5kIDogMCk7Ci0KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQg
PyBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHJl
Z0V4cCwgcmVzdWx0LnN0YXJ0KSA6IGpzTnVsbCgpKTsKLSAgICB9Ci0KLSAgICAvLyByZXR1cm4g
YXJyYXkgb2YgbWF0Y2hlcwotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Ci0gICAgd2hp
bGUgKHJlc3VsdCkgewotICAgICAgICAvLyBXZSBkZWZlbmQgb3Vyc2VsdmVzIGZyb20gY3Jhenku
Ci0gICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVhc29uYWJsZU1hdGNoU2l6ZSA9IDEwMDAw
MDAwMDA7Ci0gICAgICAgIGlmIChsaXN0LnNpemUoKSA+IG1heGltdW1SZWFzb25hYmxlTWF0Y2hT
aXplKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBzaXplX3QgZW5kID0gcmVzdWx0LmVuZDsKLSAgICAgICAgc2l6ZV90
IGxlbmd0aCA9IGVuZCAtIHJlc3VsdC5zdGFydDsKLSAgICAgICAgbGlzdC5hcHBlbmQoanNTdWJz
dHJpbmcoZXhlYywgcywgcmVzdWx0LnN0YXJ0LCBsZW5ndGgpKTsKLSAgICAgICAgaWYgKCFsZW5n
dGgpCi0gICAgICAgICAgICArK2VuZDsKLSAgICAgICAgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0
b3ItPnBlcmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCBlbmQpOwotICAgIH0KLSAg
ICBpZiAobGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1hdGNo
ZXMgYXQgYWxsLCBpdCdzIGltcG9ydGFudCB0byByZXR1cm4KLSAgICAgICAgLy8gTnVsbCBpbnN0
ZWFkIG9mIGFuIGVtcHR5IGFycmF5LCBiZWNhdXNlIHRoaXMgbWF0Y2hlcwotICAgICAgICAvLyBv
dGhlciBicm93c2VycyBhbmQgYmVjYXVzZSBOdWxsIGlzIGEgZmFsc2UgdmFsdWUuCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwotICAgIH0KLQotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXkoZXhlYywgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KDApLCBsaXN0KSk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTg1MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEwMDcsNyArMTAwNyw3IEBACiAt
IHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfUmVnRXhwX2NvbnN0cnVjdG9yLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2Fs
bHNfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3Ry
aW5nLnByb3RvdHlwZS5yZXBsYWNlLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2guanMKQEAg
LTEwODEsNyArMTA4MSw3IEBACiAtIHBhdGg6IGVzNi9SZWZsZWN0X1JlZmxlY3Quc2V0LmpzCiAg
IGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVy
dGllc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5tYXRjaF0uanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9w
cm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnJlcGxhY2VdLmpzCiAgIGNtZDogcnVu
RVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhw
LnByb3RvdHlwZVtTeW1ib2wuc2VhcmNoXS5qcwpAQCAtMTE5MSw3ICsxMTkxLDcgQEAKIC0gcGF0
aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9s
Lm1hdGNoLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wucmVwbGFjZS5qcwogICBjbWQ6IHJ1
bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zZWFyY2gu
anMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNo
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVn
ZXhwLW1hdGNoLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9yZWdleHAtbWF0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAK
KworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkICYmICEoYWN0dWFsICE9PSBudWxsICYmIHR5cGVvZihleHBlY3RlZCkgPT09
ICJzdHJpbmciICYmIGFjdHVhbC50b1N0cmluZygpID09IGV4cGVjdGVkKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdleHBlY3RlZDogJyArIGV4cGVjdGVkICsgJywgYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXhwZWN0ZWQpIHsKKyAg
ICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgc2hvdWxkQmUoU3RyaW5n
KGVycm9yKSwgZXhwZWN0ZWQpOworfQorCit2YXIgZXJyb3JLZXkgPSB7CisgICAgdG9TdHJpbmco
KSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignb3V0Jyk7CisgICAgfQorfTsKK3ZhciBzdHJp
bmcgPSAnQ29jb2EsIENhcHB1Y2Npbm8sIFJpemUsIE1hdGNoYSwgS2lsaW1hbmphcm8nOworCitz
aG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5jYWxs
KG51bGwsIC9Db2NvYS8pOworfSwgIlR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5tYXRjaCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworCitzaG91bGRUaHJvdyhmdW5jdGlv
biAoKSB7CisgICAgU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5jYWxsKHVuZGVmaW5lZCwgL0NvY29h
Lyk7Cit9LCAiVHlwZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLm1hdGNoIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewor
ICAgIHN0cmluZy5tYXRjaChlcnJvcktleSk7Cit9LCAiRXJyb3I6IG91dCIpOworCitzaG91bGRC
ZSgnQ29jb2EnLm1hdGNoKC9Db2NvYS8pLCAiQ29jb2EiKTsKKworc2hvdWxkQmUoc3RyaW5nLm1h
dGNoKC9SaXplLyksICJSaXplIik7CitzaG91bGRCZShzdHJpbmcubWF0Y2goJ1JpemUnKSwgIlJp
emUiKTsKK3Nob3VsZEJlKHN0cmluZy5tYXRjaCgvTWF0Y2hhLyksICJNYXRjaGEiKTsKK3Nob3Vs
ZEJlKHN0cmluZy5tYXRjaCgnTWF0Y2hhJyksICJNYXRjaGEiKTsKKworc2hvdWxkQmUoJyAgICB1
bmRlZmluZWQnLm1hdGNoKCksICIiKTsKK3Nob3VsZEJlKCcgICAgdW5kZWZpbmVkJy5tYXRjaCgn
dW5kZWZpbmVkJyksICJ1bmRlZmluZWQiKTsKKworc2hvdWxkQmUoKC9Db2NvYS8pW1N5bWJvbC5t
YXRjaF0oJ0NvY29hJyksICJDb2NvYSIpOworCit2YXIgcHJpbWl0aXZlcyA9IFsKKyAgICAnJywK
KyAgICAnc3RyaW5nJywKKyAgICA0MiwKKyAgICBTeW1ib2woJ0NvY29hJyksCitdOworCitmb3Ig
KHZhciBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgeworICAgIHNob3VsZFRocm93KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wubWF0Y2hdLmNhbGwocHJpbWl0
aXZlKQorICAgIH0sICdUeXBlRXJyb3I6IFJlZ0V4cC5wcm90b3R5cGUuQEBtYXRjaCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBiZSBhbiBPYmplY3QnKTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24g
KCkgeworICAgIC9Db2NvYS9bU3ltYm9sLm1hdGNoXShlcnJvcktleSk7Cit9LCAiRXJyb3I6IG91
dCIpOworCisKK2Z1bmN0aW9uIHRlc3RSZWdFeHBNYXRjaChyZWdleHAsIHN0cmluZywgcmVzdWx0
LCBsYXN0SW5kZXgpIHsKKyAgICBzaG91bGRCZShyZWdleHBbU3ltYm9sLm1hdGNoXShzdHJpbmcp
LCByZXN1bHQpOworICAgIHNob3VsZEJlKHJlZ2V4cC5sYXN0SW5kZXgsIGxhc3RJbmRleCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RNYXRjaChyZWdleHAsIHN0cmluZywgcmVzdWx0LCBsYXN0SW5kZXgp
IHsKKyAgICBzaG91bGRCZShzdHJpbmcubWF0Y2gocmVnZXhwKSwgcmVzdWx0KTsKKyAgICBzaG91
bGRCZShyZWdleHAubGFzdEluZGV4LCBsYXN0SW5kZXgpOworfQorCitmdW5jdGlvbiB0ZXN0Qm90
aChyZWdleHAsIHN0cmluZywgcmVzdWx0LCBsYXN0SW5kZXgpIHsKKyAgICB0ZXN0TWF0Y2gocmVn
ZXhwLCBzdHJpbmcsIHJlc3VsdCwgbGFzdEluZGV4KTsKKyAgICB0ZXN0UmVnRXhwTWF0Y2gocmVn
ZXhwLCBzdHJpbmcsIHJlc3VsdCwgbGFzdEluZGV4KTsKK30KKwordmFyIGNvY29hID0gL0NvY29h
LzsKK2NvY29hLmxhc3RJbmRleCA9IDIwOwordGVzdEJvdGgoY29jb2EsICdDb2NvYScsICJDb2Nv
YSIsIDIwKTsKK3Rlc3RCb3RoKGNvY29hLCAnICBDb2NvYScsICJDb2NvYSIsIDIwKTsKK3Rlc3RC
b3RoKGNvY29hLCAnICAnLCBudWxsLCAyMCk7CisKK3ZhciBtdWx0aWJ5dGUgPSAv44Kz44Kz44Ki
LzsKK211bHRpYnl0ZS5sYXN0SW5kZXggPSAyMDsKK3Rlc3RCb3RoKG11bHRpYnl0ZSwgJ+OCs+OC
s+OCoicsICfjgrPjgrPjgqInLCAyMCk7Cit0ZXN0Qm90aChtdWx0aWJ5dGUsICcgIENvY29hJywg
bnVsbCwgMjApOwordGVzdEJvdGgobXVsdGlieXRlLCAn44Kr44OX44OB44O844OOJywgbnVsbCwg
MjApOworCitmdW5jdGlvbiBhbHdheXNVbm1hdGNoKHN0cmluZykgeworICAgIHJldHVybiBudWxs
OworfQorCit2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgn44Kz44Kz44KiJyk7CityZWdleHBbU3lt
Ym9sLm1hdGNoXSA9IGFsd2F5c1VubWF0Y2g7CitzaG91bGRCZShyZWdleHBbU3ltYm9sLm1hdGNo
XSwgYWx3YXlzVW5tYXRjaCk7Cit0ZXN0Qm90aChyZWdleHAsICfjgrPjgrPjgqInLCBudWxsLCAw
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODUwNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTIyICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBSZWdFeHAu
cHJvdG90eXBlW0BAbWF0Y2hdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTU3MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGVkIHRlc3RzIGZvciBleGNlcHRpb24gc3RyaW5nIGNoYW5nZXMgYW5k
IGFkZGVkIFN5bWJvbC5tYXRjaC4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vc3RyaW5nLXByb3RvdHlwZS1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanM6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8x
NV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEwX1N0cmluZy5wcm90
b3R5cGUubWF0Y2gvUzE1LjUuNC4xMF9BMV9UMy1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDMtMjEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHN0b3JhZ2UvaW5k
ZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLWRlbGF5ZWQtYnktb3Blbi1hbmQtdmVyc2lvbmNoYW5nZS5o
dG1sIGZsYWt5IG9uIG1hYy13azIuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3du
UHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTg1MDUp
CisrKyBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKEVycm9yKSBpcwogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9y
LnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAndG9TdHJp
bmcnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE1hdGgpIGlzIFsnRScsJ0xOMTAn
LCdMTjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNv
cycsJ2Fjb3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0Jywn
Y2VpbCcsJ2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQn
LCdoeXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbics
J3BvdycsJ3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywn
dGFuaCcsJ3RydW5jJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhKU09OKSBpcyBb
J3BhcnNlJywgJ3N0cmluZ2lmeSddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3lt
Ym9sKSBpcyBbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVu
Z3RoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3RvUHJpbWl0
aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhTeW1ib2wpIGlzIFsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywg
J2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNo
JywgJ3NwZWNpZXMnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMn
XQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbC5wcm90b3R5cGUpIGlzIFsn
Y29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoTWFwKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSkgaXMgWydjbGVhcicsICdj
b25zdHJ1Y3RvcicsICdkZWxldGUnLCAnZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMn
LCAna2V5cycsICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXQpJbmRleDogTGF5b3V0VGVzdHMvanMv
ZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE5ODUwNSkKKysrIExheW91dFRlc3RzL2pzL2RvbS9zdHJpbmctcHJv
dG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsx
MCw3IEBAIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5jaGFyQ29kZUF0LmNhbGwodW4KIFBBU1MgU3Ry
aW5nLnByb3RvdHlwZS5jb25jYXQuY2FsbCh1bmRlZmluZWQsICdmaXZlJykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5pbmRleE9m
LmNhbGwodW5kZWZpbmVkLCAnMicpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbCh1bmRlZmluZWQsICcy
JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgU3RyaW5nLnBy
b3RvdHlwZS5tYXRjaC5jYWxsKHVuZGVmaW5lZCwgLzIrLykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5jYWxsKHVuZGVm
aW5lZCwgLzIrLykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5t
YXRjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBTdHJpbmcu
cHJvdG90eXBlLnJlcGxhY2UuY2FsbCh1bmRlZmluZWQsIC8yKy8sICctJykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2gu
Y2FsbCh1bmRlZmluZWQsICc0JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU3RyaW5nLnBy
b3RvdHlwZS5zZWFyY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBB
U1MgU3RyaW5nLnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KSW5kZXg6IExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMJKHJl
dmlzaW9uIDE5ODUwNSkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2YXIg
ZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAgICJFcnJvci5wcm90b3R5cGUiOiAiWydj
b25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCiAgICAgIk1hdGgi
OiAiWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FS
VDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdh
dGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdm
bG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cy
JywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcs
J3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXSIsCiAgICAgIkpTT04iOiAiWydwYXJzZScsICdz
dHJpbmdpZnknXSIsCi0gICAgIlN5bWJvbCI6ICJbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVy
YXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcs
ICdzcGVjaWVzJywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10i
LAorICAgICJTeW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5
Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAn
c3BlY2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddIiwK
ICAgICAiU3ltYm9sLnByb3RvdHlwZSI6ICJbJ2NvbnN0cnVjdG9yJywgJ3RvU3RyaW5nJywgJ3Zh
bHVlT2YnXSIsCiAgICAgIk1hcCI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwK
ICAgICAiTWFwLnByb3RvdHlwZSI6ICJbJ2NsZWFyJywgJ2NvbnN0cnVjdG9yJywgJ2RlbGV0ZScs
ICdlbnRyaWVzJywgJ2ZvckVhY2gnLCAnZ2V0JywgJ2hhcycsICdrZXlzJywgJ3NldCcsICdzaXpl
JywgJ3ZhbHVlcyddIiwKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJvdG90
eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJp
bmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJvdG90eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFf
VDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTg1MDUpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlr
L0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQu
MTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuMTBfQTFfVDMKIAotRkFJTCBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IKK0ZBSUwgVHlwZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLm1h
dGNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQKIAogVEVTVCBDT01QTEVU
RQogCg==
</data>
<flag name="review"
          id="299094"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>