<?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>222918</bug_id>
          
          <creation_ts>2021-03-08 09:49:25 -0800</creation_ts>
          <short_desc>Align internal methods of WindowProperties object with the spec</short_desc>
          <delta_ts>2021-05-20 15:14:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/27970</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737128</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-08 09:49:25 -0800</bug_when>
    <thetext>Align Window named properties object with the spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737174</commentid>
    <comment_count>1</comment_count>
      <attachid>422588</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-08 11:06:32 -0800</bug_when>
    <thetext>Created attachment 422588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737176</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-08 11:07:39 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737222</commentid>
    <comment_count>3</comment_count>
      <attachid>422588</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-08 12:30:39 -0800</bug_when>
    <thetext>Comment on attachment 422588
Patch

Removing r? since wpt/WebIDL/ecmascript-binding/class-string-named-properties-object.window.html depends on symbol properties being treated as ordinary by WindowProperties, which does contradict the current spec, but 1) feels like an expected behavior, 2) aligns with legacy platform objects, and 3) is implemented by Blink.

Let&apos;s align with Blink and change the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739524</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-15 10:50:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/75436364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755252</commentid>
    <comment_count>5</comment_count>
      <attachid>427313</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-28 17:20:15 -0700</bug_when>
    <thetext>Created attachment 427313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755406</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-29 09:02:11 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #3)
&gt; Let&apos;s align with Blink and change the spec.

Gecko team implements WindowProperties without underlying structure and rightfully doesn&apos;t want to add one just for symbols. Also, even with proposed change (https://github.com/heycam/webidl/pull/963), [[DefineOwnProperty]] would remain weird with supported properties and their current descriptors.

There is a consensus to align implementations with current spec, which is what new patch does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755413</commentid>
    <comment_count>7</comment_count>
      <attachid>427313</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-29 09:26:02 -0700</bug_when>
    <thetext>Comment on attachment 427313
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMWindowProperties.cpp:138
&gt; +    return typeError(lexicalGlobalObject, scope, shouldThrow, &quot;Unable to define a property on a WindowProperties object.&quot;_s);

This error message reads a little weird to me. Maybe, &quot;Defining a property on a WindowProperties is not allowed.&quot; or something like that to indicate it is not just failing because something went wrong, but we are actively preventing this on purpose?

&gt; LayoutTests/imported/w3c/ChangeLog:7
&gt; +

Are test changes here from upstream or do you plan to upstream them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755426</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-29 10:00:05 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)

Thank you for review!

&gt; &gt; Source/WebCore/bindings/js/JSDOMWindowProperties.cpp:138
&gt; &gt; +    return typeError(lexicalGlobalObject, scope, shouldThrow, &quot;Unable to define a property on a WindowProperties object.&quot;_s);
&gt; 
&gt; This error message reads a little weird to me. Maybe, &quot;Defining a property
&gt; on a WindowProperties is not allowed.&quot; or something like that to indicate it
&gt; is not just failing because something went wrong, but we are actively
&gt; preventing this on purpose?

Nicely noted, will change to &quot;is not allowed&quot;.

&gt; &gt; LayoutTests/imported/w3c/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Are test changes here from upstream or do you plan to upstream them?

Since test changes are rather substantial, I would rather have them reviewed by WPT people as well, before upstreaming (https://github.com/web-platform-tests/wpt/pull/27970).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757759</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-06 18:03:00 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #8)
&gt; (In reply to Sam Weinig from comment #7)
&gt; 
&gt; Thank you for review!
&gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/JSDOMWindowProperties.cpp:138
&gt; &gt; &gt; +    return typeError(lexicalGlobalObject, scope, shouldThrow, &quot;Unable to define a property on a WindowProperties object.&quot;_s);
&gt; &gt; 
&gt; &gt; This error message reads a little weird to me. Maybe, &quot;Defining a property
&gt; &gt; on a WindowProperties is not allowed.&quot; or something like that to indicate it
&gt; &gt; is not just failing because something went wrong, but we are actively
&gt; &gt; preventing this on purpose?
&gt; 
&gt; Nicely noted, will change to &quot;is not allowed&quot;.
&gt; 
&gt; &gt; &gt; LayoutTests/imported/w3c/ChangeLog:7
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Are test changes here from upstream or do you plan to upstream them?
&gt; 
&gt; Since test changes are rather substantial, I would rather have them reviewed
&gt; by WPT people as well, before upstreaming
&gt; (https://github.com/web-platform-tests/wpt/pull/27970).

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762087</commentid>
    <comment_count>10</comment_count>
      <attachid>429205</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-20 12:27:37 -0700</bug_when>
    <thetext>Created attachment 429205
Patch for landing

Reword error message and sync now reviewed WPT from upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762166</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-20 15:14:46 -0700</bug_when>
    <thetext>Committed r277829 (237975@main): &lt;https://commits.webkit.org/237975@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422588</attachid>
            <date>2021-03-08 11:06:32 -0800</date>
            <delta_ts>2021-04-28 17:20:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222918-20210308210630.patch</filename>
            <type>text/plain</type>
            <size>25961</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDAzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAzLTA4ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbGlnbiBXaW5kb3cg
bmFtZWQgcHJvcGVydGllcyBvYmplY3Qgd2l0aCB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaDoKKworICAgICAgICAxLiBG
aXhlcyBbW0dldE93blByb3BlcnR5XV0gb3ZlcnJpZGUgdG8gcmV0dXJuIGNvcnJlY3QgcHJvcGVy
dHkgYXR0cmlidXRlcywgYnJpbmdpbmcgV2luZG93UHJvcGVydGllcworICAgICAgICAgICBpbiBj
b21wbGlhbmNlIHdpdGggaW52YXJpYW50cyBvZiBpbnRlcm5hbCBtZXRob2RzIFsxXS4gQWxzbywg
Zml4ZXMgUmVmbGVjdC5zZXQgZm9yIHRhcmdldHMgdGhhdAorICAgICAgICAgICBpbmhlcml0IGZy
b20gV2luZG93UHJvcGVydGllcyBhbmQga2V5cyB0aGF0IGFyZSBpdHMgbmFtZWQgcHJvcGVydGll
cy4KKyAgICAgICAgMi4gSW1wbGVtZW50cyBbW0RlZmluZU93blByb3BlcnR5XV0sIFtbRGVsZXRl
XV0sIGFuZCBbW1ByZXZlbnRFeHRlbnNpb25zXV0gb3ZlcnJpZGVzIHRoYXQgZmFpbAorICAgICAg
ICAgICB1bmNvbmRpdGlvbmFsbHkgWzJdLCBtYWtpbmcgc3VyZSBbW1NldF1dIHdpdGggYWx0ZXJl
ZCByZWNlaXZlciBpcyBwYXNzZWQgdGhyb3VnaCwgaW5kZXhlZAorICAgICAgICAgICBwcm9wZXJ0
aWVzIGFyZSByZWplY3RlZCwgYW5kIGV4Y2VwdGlvbnMgYXJlIHRocm93biBpZiBuZWNjZXNzYXJ5
LgorICAgICAgICAzLiBGaXhlcyBjcm9zcy1vcmlnaW4gV2luZG93UHJveHkncyBbW0dldE93blBy
b3BlcnR5XV0gbWV0aG9kIHRvIHJldHVybiBjb25maWd1cmFibGUgZGVzY3JpcHRvciBmb3IKKyAg
ICAgICAgICAgaWZyYW1lcyBhcyBwZXIgc3BlYyBbM10uCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
ZnVsbHkgaW1wbGVtZW50cyB0aGUgY3VycmVudCBzcGVjLCBhbGlnbmluZyBXZWJLaXQgd2l0aCBH
ZWNrbyAoZXhjZXB0IGZvciBtaW5vciBpc3N1ZXMpLAorICAgICAgICBhbmQgQmxpbmsgKGV4Y2Vw
dCBmb3Igc3ltYm9sIHByb3BlcnRpZXMgKyBtaW5vciBpc3N1ZXMpLgorCisgICAgICAgIFsxXSBo
dHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWludmFyaWFudHMtb2YtdGhlLWVzc2VudGlhbC1p
bnRlcm5hbC1tZXRob2RzCisgICAgICAgIFsyXSBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNuYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC1kZWZpbmVvd25wcm9wZXJ0eQorICAgICAgICBb
M10gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2luZG93LW9iamVjdC5o
dG1sI3dpbmRvd3Byb3h5LWdldG93bnByb3BlcnR5IChzdGVwIDYuMikKKworICAgICAgICBUZXN0
czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC5odG1sCisgICAgICAgICAgICAgICBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLmh0bWwKKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRE9N
V2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
RE9NV2luZG93UHJvcGVydGllc0dldE93blByb3BlcnR5U2xvdE5hbWVkSXRlbUdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dQcm9wZXJ0aWVzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OnByZXZlbnRFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93UHJvcGVydGllczo6ZGVmaW5lT3duUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oOgor
CiAyMDIxLTAzLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIEltcGxlbWVudCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgc3VwcG9ydCBm
b3IgaW1hZ2Ugb3ZlcmxheXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI3NDAzMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA2LDcgKzIwNiw3IEBAIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmkK
ICAgICBhdXRvKiBmcmFtZSA9IHdpbmRvdy5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBpczxG
cmFtZT4oKmZyYW1lKSkgewogICAgICAgICBpZiAoYXV0byogc2NvcGVkQ2hpbGQgPSBkb3duY2Fz
dDxGcmFtZT4oKmZyYW1lKS50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9tU3Ry
aW5nKHByb3BlcnR5TmFtZSkpKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCB0b0pT
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZWRDaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCkpKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCB0b0pTKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZWRDaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3Bw
CShyZXZpc2lvbiAyNzQwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1Byb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorY29uc3QgQVNDSUlMaXRl
cmFsIFByb3BlcnR5RGVmaW5lRXJyb3IgeyAiVW5hYmxlIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBh
IFdpbmRvd1Byb3BlcnRpZXMgb2JqZWN0LiJfcyB9OworCiBjb25zdCBDbGFzc0luZm8gSlNET01X
aW5kb3dQcm9wZXJ0aWVzOjpzX2luZm8gPSB7ICJXaW5kb3dQcm9wZXJ0aWVzIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd1By
b3BlcnRpZXMpIH07CiAKIHN0YXRpYyBib29sIGpzRE9NV2luZG93UHJvcGVydGllc0dldE93blBy
b3BlcnR5U2xvdE5hbWVkSXRlbUdldHRlcihKU0RPTVdpbmRvd1Byb3BlcnRpZXMqIHRoaXNPYmpl
Y3QsIERPTVdpbmRvdyYgd2luZG93LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNTAs
NyArNTIsNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd1Byb3BlcnRpZXNHZXRPd25QCiAgICAg
Ly8gdGhlIE1veiB3YXkuCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gd2luZG93LmZyYW1lKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHNjb3BlZENoaWxkID0gZnJhbWUtPnRyZWUoKS5zY29wZWRDaGls
ZChwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKLSAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0sIHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGVkQ2hpbGQt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlZENoaWxkLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC03NCw3ICs3Niw3IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93UHJvcGVydGllc0dldE93
blAKICAgICAgICAgICAgICAgICBuYW1lZEl0ZW0gPSB0b0pTKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uKTsKICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIG5hbWVkSXRlbSA9IHRvSlMobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGh0bWxEb2N1bWVudC53aW5kb3dOYW1lZEl0
ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwg
bmFtZWRJdGVtKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIG5hbWVkSXRlbSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTExNiw2ICsx
MTgsNDQgQEAgYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcgogICAgIHJl
dHVybiBnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpbmRleCksIHNsb3QpOwogfQogCitib29sIEpTRE9NV2luZG93UHJv
cGVydGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NV2luZG93UHJvcGVydGllcyo+KGNlbGwpOworCisgICAgaWYgKFVOTElLRUxZKGlzVGhp
c1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RN
b2RlKCkpKTsKKworICAgIHJldHVybiB0eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFByb3BlcnR5RGVmaW5lRXJyb3IpOworfQorCitib29s
IEpTRE9NV2luZG93UHJvcGVydGllczo6cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSk7CisgICAgcmV0dXJuIHR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgc2hvdWxkVGhyb3csIFByb3BlcnR5RGVmaW5lRXJyb3IpOworfQorCitib29sIEpT
RE9NV2luZG93UHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEpTRE9NV2luZG93UHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEpTRE9NV2luZG93UHJvcGVydGllczo6cHJldmVudEV4dGVuc2lvbnMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEpTRE9NV2luZG93UHJvcGVydGllczo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KQoreworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJl
dHVybiB0eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93LCBQ
cm9wZXJ0eURlZmluZUVycm9yKTsKK30KKwogSlNDOjpJc29TdWJzcGFjZSogSlNET01XaW5kb3dQ
cm9wZXJ0aWVzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgcmV0dXJuICZz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5kb21XaW5kb3dQcm9w
ZXJ0aWVzU3BhY2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93UHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93UHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzQwMzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTksNiArNTksMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0
ZW5zaW9ucyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6CiAgICAgSlNET01XaW5kb3dQcm9wZXJ0aWVz
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc0MDc1
KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTA4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBBbGlnbiBXaW5kb3cgbmFtZWQgcHJvcGVydGllcyBvYmpl
Y3Qgd2l0aCB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy93
aW5kb3ctbmFtZWQtcHJvcGVydGllcy1vYmplY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy93aW5kb3ct
bmFtZWQtcHJvcGVydGllcy1vYmplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzLmh0bWw6CisKIDIwMjEtMDMtMDcgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29ycmVjdGx5IGhhbmRsZSAiYXV0byIgdmFsdWVz
IHdoZW4gYmxlbmRpbmcgei1pbmRleApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRvdy1uYW1lZC1w
cm9wZXJ0aWVzLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5n
L3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorCitQQVNTIE9iamVjdC5zZXRQ
cm90b3R5cGVPZiB0aHJvd3MgVHlwZUVycm9yCitQQVNTIFJlZmxlY3Quc2V0UHJvdG90eXBlT2Yg
cmV0dXJucyBgZmFsc2VgIHdpdGhvdXQgdGhyb3dpbmcKK1BBU1MgT2JqZWN0LnByZXZlbnRFeHRl
bnNpb25zIHRocm93cyBUeXBlRXJyb3IKK1BBU1MgUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyBy
ZXR1cm5zIGBmYWxzZWAgd2l0aG91dCB0aHJvd2luZworUEFTUyBbW0dldE93blByb3BlcnR5XV0K
K1BBU1MgW1tHZXRPd25Qcm9wZXJ0eV1dIHBlcmZvcm1zIG5hbWVkIHByb3BlcnR5IHZpc2liaWxp
dHkgYWxnb3JpdGhtCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0aHJvd3MgVHlwZUVycm9y
CitQQVNTIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmV0dXJucyBgZmFsc2VgIHdpdGhvdXQgdGhy
b3dpbmcKK1BBU1MgW1tIYXNQcm9wZXJ0eV1dCitQQVNTIFtbR2V0XV0KK1BBU1MgW1tHZXRdXSBw
ZXJmb3JtcyBuYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobQorUEFTUyBbW1NldF1d
IGZhaWxzIHNpbGVudGx5IGluIGxvb3NlIG1vZGUKK1BBU1MgW1tTZXRdXSB0aHJvd3MgVHlwZUVy
cm9yIGluIHN0cmljdCBtb2RlCitQQVNTIFtbU2V0XV0gaW4gcHJvdG90eXBlIGNoYWluIHBlcmZv
cm1zIE9yZGluYXJ5U2V0IChzdHJpY3QgbW9kZSkKK1BBU1MgUmVmbGVjdC5zZXQgcmV0dXJucyBg
ZmFsc2VgIHdpdGhvdXQgdGhyb3dpbmcKK1BBU1MgUmVmbGVjdC5zZXQgd2l0aCBhbHRlcmVkIHJl
Y2VpdmVyIHBlcmZvcm1zIE9yZGluYXJ5U2V0CitQQVNTIFtbRGVsZXRlXV0gdGhyb3dzIFR5cGVF
cnJvciBpbiBzdHJpY3QgbW9kZQorUEFTUyBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5IHJldHVybnMg
YGZhbHNlYCB3aXRob3V0IHRocm93aW5nCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy93aW5kb3ctbmFt
ZWQtcHJvcGVydGllcy1vYmplY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvd2lu
ZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzQxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT5JbnRlcm5hbCBtZXRob2RzIG9mIFdpbmRvdyBuYW1lZCBwcm9wZXJ0aWVzIG9i
amVjdDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI25hbWVkLXByb3BlcnRpZXMtb2JqZWN0Ij4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvb3NlTW9kZVNldChiYXNlLCBrZXksIHZhbHVlKSB7IGJhc2Vba2V5XSA9IHZhbHVlOyB9
Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2NvbnN0IHN1cHBvcnRlZE5v
bkluZGV4SWZyYW1lID0gInN1cHBvcnRlZCBub24taW5kZXggcHJvcGVydHkgbmFtZSAoaWZyYW1l
IHdpdGggbmFtZSkiOworY29uc3Qgc3VwcG9ydGVkTm9uSW5kZXhGb3JtID0gInN1cHBvcnRlZCBu
b24taW5kZXggcHJvcGVydHkgbmFtZSAoZm9ybSB3aXRoIG5hbWUpIjsKK2NvbnN0IHN1cHBvcnRl
ZE5vbkluZGV4SWQgPSAic3VwcG9ydGVkIG5vbi1pbmRleCBwcm9wZXJ0eSBuYW1lIChlbGVtZW50
IHdpdGggaWQpIjsKKworY29uc3Qgc3VwcG9ydGVkSW5kZXhJZnJhbWUgPSAic3VwcG9ydGVkIGlu
ZGV4ZWQgcHJvcGVydHkgbmFtZSAoaWZyYW1lIHdpdGggbmFtZSkiOworY29uc3Qgc3VwcG9ydGVk
SW5kZXhGb3JtID0gInN1cHBvcnRlZCBpbmRleGVkIHByb3BlcnR5IG5hbWUgKGZvcm0gd2l0aCBu
YW1lKSI7Citjb25zdCBzdXBwb3J0ZWRJbmRleElkID0gInN1cHBvcnRlZCBpbmRleGVkIHByb3Bl
cnR5IG5hbWUgKGVsZW1lbnQgd2l0aCBpZCkiOworCitjb25zdCB1bnN1cHBvcnRlZE5vbkluZGV4
ID0gInVuc3VwcG9ydGVkIG5vbi1pbmRleCBwcm9wZXJ0eSBuYW1lIjsKK2NvbnN0IHVuc3VwcG9y
dGVkSW5kZXggPSAidW5zdXBwb3J0ZWQgaW5kZXhlZCBwcm9wZXJ0eSBuYW1lIjsKKworY29uc3Qg
Y3JlYXRlV2luZG93UHJvcGVydGllcyA9IHQgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGlm
cmFtZSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFtZS5yZW1vdmUoKTsgfSk7CisK
KyAgICByZXR1cm4geworICAgICAgICB3OiBpZnJhbWUuY29udGVudFdpbmRvdywKKyAgICAgICAg
d3A6IE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoaWZyYW1lLmNv
bnRlbnRXaW5kb3cpKSwKKyAgICB9OworfTsKKworY29uc3QgYXBwZW5kSWZyYW1lV2l0aE5hbWUg
PSAodywgbmFtZSkgPT4geworICAgIGNvbnN0IGVsID0gdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgICBlbC5uYW1lID0gbmFtZTsKKyAgICB3LmRvY3VtZW50LmJvZHkuYXBw
ZW5kKGVsKTsKKyAgICByZXR1cm4gZWwuY29udGVudFdpbmRvdzsKK307CisKK2NvbnN0IGFwcGVu
ZEZvcm1XaXRoTmFtZSA9ICh3LCBuYW1lKSA9PiB7CisgICAgY29uc3QgZWwgPSB3LmRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBlbC5uYW1lID0gbmFtZTsKKyAgICB3LmRvY3Vt
ZW50LmJvZHkuYXBwZW5kKGVsKTsKKyAgICByZXR1cm4gZWw7Cit9OworCitjb25zdCBhcHBlbmRF
bGVtZW50V2l0aElkID0gKHcsIGlkKSA9PiB7CisgICAgY29uc3QgZWwgPSB3LmRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsLmlkID0gaWQ7CisgICAgdy5kb2N1bWVudC5ib2R5
LmFwcGVuZChlbCk7CisgICAgcmV0dXJuIGVsOworfTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25z
dCB7dywgd3B9ID0gY3JlYXRlV2luZG93UHJvcGVydGllcyh0KTsKKworICAgIE9iamVjdC5zZXRQ
cm90b3R5cGVPZih3cCwgdy5FdmVudFRhcmdldC5wcm90b3R5cGUpOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5zZXRQcm90b3R5cGVPZih3cCwgbnVsbCk7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5zZXRQ
cm90b3R5cGVPZih3cCwge30pOyB9KTsKKworICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFBy
b3RvdHlwZU9mKHdwKSwgdy5FdmVudFRhcmdldC5wcm90b3R5cGUpOworfSwgIk9iamVjdC5zZXRQ
cm90b3R5cGVPZiB0aHJvd3MgVHlwZUVycm9yIik7CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3Qg
e3csIHdwfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisKKyAgICBhc3NlcnRfdHJ1ZShS
ZWZsZWN0LnNldFByb3RvdHlwZU9mKHdwLCB3LkV2ZW50VGFyZ2V0LnByb3RvdHlwZSkpOworICAg
IGFzc2VydF9mYWxzZShSZWZsZWN0LnNldFByb3RvdHlwZU9mKHdwLCBudWxsKSk7CisgICAgYXNz
ZXJ0X2ZhbHNlKFJlZmxlY3Quc2V0UHJvdG90eXBlT2Yod3AsIHt9KSk7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yod3ApLCB3LkV2ZW50VGFyZ2V0LnByb3RvdHlw
ZSk7Cit9LCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXR1cm5zIGBmYWxzZWAgd2l0aG91dCB0
aHJvd2luZyIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHt3cH0gPSBjcmVhdGVXaW5kb3dQ
cm9wZXJ0aWVzKHQpOworCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsg
T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHdwKTsgfSk7CisgICAgYXNzZXJ0X3RydWUoT2JqZWN0
LmlzRXh0ZW5zaWJsZSh3cCkpOworfSwgIk9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyB0aHJvd3Mg
VHlwZUVycm9yIik7CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3Qge3dwfSA9IGNyZWF0ZVdpbmRv
d1Byb3BlcnRpZXModCk7CisKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyh3cCkpOworICAgIGFzc2VydF90cnVlKFJlZmxlY3QuaXNFeHRlbnNpYmxlKHdwKSk7Cit9
LCAiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyByZXR1cm5zIGBmYWxzZWAgd2l0aG91dCB0aHJv
d2luZyIpOworCitjb25zdCBhc3NlcnRfcHJvcF9kZXNjID0gKGRlc2MsIHZhbHVlLCB0ZXN0SW5m
bykgPT4geworICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgdmFsdWUsIGAke3Rlc3RJbmZv
fSBbW1ZhbHVlXV1gKTsKKyAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCBgJHt0ZXN0SW5m
b30gW1tXcml0YWJsZV1dYCk7CisgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgYCR7
dGVzdEluZm99IFtbRW51bWVyYWJsZV1dYCk7CisgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1
cmFibGUsIGAke3Rlc3RJbmZvfSBbW0NvbmZpZ3VyYWJsZV1dYCk7Cit9OworCit0ZXN0KHQgPT4g
eworICAgIGNvbnN0IHt3LCB3cH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworCisgICAg
Y29uc3QgZWxBID0gYXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImEiKTsKKyAgICBjb25zdCBlbEIg
PSBhcHBlbmRGb3JtV2l0aE5hbWUodywgImIiKTsKKyAgICBjb25zdCBlbEMgPSBhcHBlbmRFbGVt
ZW50V2l0aElkKHcsICJjIik7CisKKyAgICBhc3NlcnRfcHJvcF9kZXNjKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iod3AsICJhIiksIGVsQSwgc3VwcG9ydGVkTm9uSW5kZXhJZnJhbWUp
OworICAgIGFzc2VydF9wcm9wX2Rlc2MoUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
d3AsICJiIiksIGVsQiwgc3VwcG9ydGVkTm9uSW5kZXhGb3JtKTsKKyAgICBhc3NlcnRfcHJvcF9k
ZXNjKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3AsICJjIiksIGVsQywgc3VwcG9y
dGVkTm9uSW5kZXhJZCk7CisKKyAgICBjb25zdCBlbDAgPSBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3
LCAwKTsKKyAgICBjb25zdCBlbDEgPSBhcHBlbmRGb3JtV2l0aE5hbWUodywgMSk7CisgICAgY29u
c3QgZWwyID0gYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAyKTsKKworICAgIGFzc2VydF9wcm9wX2Rl
c2MoUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3AsIDApLCBlbDAsIHN1cHBvcnRl
ZEluZGV4SWZyYW1lKTsKKyAgICBhc3NlcnRfcHJvcF9kZXNjKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iod3AsIDEpLCBlbDEsIHN1cHBvcnRlZEluZGV4Rm9ybSk7CisgICAgYXNzZXJ0
X3Byb3BfZGVzYyhSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cCwgMiksIGVsMiwg
c3VwcG9ydGVkSW5kZXhJZCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHdwLCAiZCIpLCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkTm9uSW5kZXgp
OworICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cCwg
MyksIHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWRJbmRleCk7Cit9LCAiW1tHZXRPd25Qcm9wZXJ0eV1d
Iik7CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3Qge3csIHdwfSA9IGNyZWF0ZVdpbmRvd1Byb3Bl
cnRpZXModCk7CisKKyAgICBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3LCAiaGFzT3duUHJvcGVydHki
KTsKKyAgICBhcHBlbmRGb3JtV2l0aE5hbWUodywgImFkZEV2ZW50TGlzdGVuZXIiKTsKKyAgICBh
cHBlbmRFbGVtZW50V2l0aElkKHcsICJhIik7CisgICAgYXBwZW5kRm9ybVdpdGhOYW1lKHcsIDAp
OworCisgICAgdy5PYmplY3QucHJvdG90eXBlLmEgPSB7fTsKKyAgICB3LkV2ZW50VGFyZ2V0LnBy
b3RvdHlwZVswXSA9IHt9OworCisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHdwLCAiaGFzT3duUHJvcGVydHkiKSwgdW5kZWZpbmVkLCBzdXBwb3J0ZWRO
b25JbmRleElmcmFtZSk7CisgICAgYXNzZXJ0X2VxdWFscyhSZWZsZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3cCwgImFkZEV2ZW50TGlzdGVuZXIiKSwgdW5kZWZpbmVkLCBzdXBwb3J0ZWRO
b25JbmRleEZvcm0pOworICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3cCwgImEiKSwgdW5kZWZpbmVkLCBzdXBwb3J0ZWROb25JbmRleElkKTsKKyAgICBh
c3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdwLCAwKSwgdW5k
ZWZpbmVkLCBzdXBwb3J0ZWRJbmRleEZvcm0pOworfSwgIltbR2V0T3duUHJvcGVydHldXSBwZXJm
b3JtcyBuYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobSIpOworCit0ZXN0KHQgPT4g
eworICAgIGNvbnN0IHt3LCB3cH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworCisgICAg
YXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImEiKTsKKyAgICBhcHBlbmRGb3JtV2l0aE5hbWUodywg
MCk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBPYmplY3QuZGVm
aW5lUHJvcGVydHkod3AsICJhIiwge30pOyB9LCBzdXBwb3J0ZWROb25JbmRleElmcmFtZSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHdwLCAwLCB7fSk7IH0sIHN1cHBvcnRlZEluZGV4Rm9ybSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdwLCAiYiIsIHt9
KTsgfSwgdW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdwLCAxLCB7fSk7IH0sIHVuc3VwcG9y
dGVkSW5kZXgpOworfSwgIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0aHJvd3MgVHlwZUVycm9yIik7
CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3Qge3csIHdwfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRp
ZXModCk7CisKKyAgICBhcHBlbmRFbGVtZW50V2l0aElkKHcsICJhIik7CisgICAgYXBwZW5kSWZy
YW1lV2l0aE5hbWUodywgMCk7CisKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5kZWZpbmVQcm9w
ZXJ0eSh3cCwgImEiLCB7fSksIHN1cHBvcnRlZE5vbkluZGV4SWQpOworICAgIGFzc2VydF9mYWxz
ZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KHdwLCAwLCB7fSksIHN1cHBvcnRlZEluZGV4SWZyYW1l
KTsKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh3cCwgImIiLCB7fSks
IHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LmRlZmluZVBy
b3BlcnR5KHdwLCAxLCB7fSksIHVuc3VwcG9ydGVkSW5kZXgpOworfSwgIlJlZmxlY3QuZGVmaW5l
UHJvcGVydHkgcmV0dXJucyBgZmFsc2VgIHdpdGhvdXQgdGhyb3dpbmciKTsKKwordGVzdCh0ID0+
IHsKKyAgICBjb25zdCB7dywgd3B9ID0gY3JlYXRlV2luZG93UHJvcGVydGllcyh0KTsKKworICAg
IGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJhIik7CisgICAgYXBwZW5kRm9ybVdpdGhOYW1lKHcs
ICJiIik7CisgICAgYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAwKTsKKyAgICBhcHBlbmRGb3JtV2l0
aE5hbWUodywgMSk7CisKKyAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0Lmhhcyh3cCwgImEiKSwgc3Vw
cG9ydGVkTm9uSW5kZXhJZnJhbWUpOworICAgIGFzc2VydF90cnVlKCJiIiBpbiB3cCwgc3VwcG9y
dGVkTm9uSW5kZXhGb3JtKTsKKyAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0Lmhhcyh3cCwgMCksIHN1
cHBvcnRlZEluZGV4SWQpOworICAgIGFzc2VydF90cnVlKDEgaW4gd3AsIHN1cHBvcnRlZEluZGV4
Rm9ybSk7CisKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5oYXMod3AsICJjIiksIHVuc3VwcG9y
dGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9mYWxzZSgyIGluIHdwLCB1bnN1cHBvcnRlZEluZGV4
KTsKK30sICJbW0hhc1Byb3BlcnR5XV0iKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7dywg
d3B9ID0gY3JlYXRlV2luZG93UHJvcGVydGllcyh0KTsKKyAgICBjb25zdCBlbEEgPSBhcHBlbmRJ
ZnJhbWVXaXRoTmFtZSh3LCAiYSIpOworICAgIGNvbnN0IGVsQiA9IGFwcGVuZEZvcm1XaXRoTmFt
ZSh3LCAiYiIpOworICAgIGNvbnN0IGVsMCA9IGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsIDApOwor
CisgICAgYXNzZXJ0X2VxdWFscyh3cC5hLCBlbEEsIHN1cHBvcnRlZE5vbkluZGV4SWZyYW1lKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHdwLmIsIGVsQiwgc3VwcG9ydGVkTm9uSW5kZXhGb3JtKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHdwWzBdLCBlbDAsIHN1cHBvcnRlZEluZGV4SWZyYW1lKTsKKworICAg
IGFzc2VydF9lcXVhbHMod3AuYywgdW5kZWZpbmVkLCB1bnN1cHBvcnRlZE5vbkluZGV4KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHdwWzFdLCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkSW5kZXgpOworfSwg
IltbR2V0XV0iKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7dywgd3B9ID0gY3JlYXRlV2lu
ZG93UHJvcGVydGllcyh0KTsKKworICAgIGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJpc1Byb3Rv
dHlwZU9mIik7CisgICAgYXBwZW5kRm9ybVdpdGhOYW1lKHcsICJkaXNwYXRjaEV2ZW50Iik7Cisg
ICAgYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAiYSIpOworICAgIGFwcGVuZEVsZW1lbnRXaXRoSWQo
dywgMCk7CisKKyAgICB3LkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hID0gMTA7CisgICAgdy5PYmpl
Y3QucHJvdG90eXBlWzBdID0gMjA7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmlzUHJvdG90eXBl
T2YsIHcuT2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mLCBzdXBwb3J0ZWROb25JbmRleElm
cmFtZSk7CisgICAgYXNzZXJ0X2VxdWFscyh3cC5kaXNwYXRjaEV2ZW50LCB3LkV2ZW50VGFyZ2V0
LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50LCBzdXBwb3J0ZWROb25JbmRleEZvcm0pOworICAgIGFz
c2VydF9lcXVhbHMod3AuYSwgMTAsIHN1cHBvcnRlZE5vbkluZGV4SWQpOworICAgIGFzc2VydF9l
cXVhbHMod3BbMF0sIDIwLCBzdXBwb3J0ZWRJbmRleElkKTsKK30sICJbW0dldF1dIHBlcmZvcm1z
IG5hbWVkIHByb3BlcnR5IHZpc2liaWxpdHkgYWxnb3JpdGhtIik7CisKK3Rlc3QodCA9PiB7Cisg
ICAgY29uc3Qge3csIHdwfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisgICAgY29uc3Qg
ZWxBID0gYXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImEiKTsKKyAgICBjb25zdCBlbDAgPSBhcHBl
bmRJZnJhbWVXaXRoTmFtZSh3LCAwKTsKKworICAgIGxvb3NlTW9kZVNldCh3cCwgImEiLCB7fSk7
CisgICAgbG9vc2VNb2RlU2V0KHdwLCAiYiIsIHt9KTsKKyAgICBsb29zZU1vZGVTZXQod3AsIDAs
IHt9KTsKKyAgICBsb29zZU1vZGVTZXQod3AsIDEsIHt9KTsKKworICAgIGFzc2VydF9lcXVhbHMo
d3AuYSwgZWxBLCBzdXBwb3J0ZWROb25JbmRleElmcmFtZSk7CisgICAgYXNzZXJ0X2VxdWFscyh3
cFswXSwgZWwwLCBzdXBwb3J0ZWRJbmRleElmcmFtZSk7CisgICAgYXNzZXJ0X2VxdWFscyh3cC5i
LCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9lcXVhbHMod3Bb
MV0sIHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWRJbmRleCk7Cit9LCAiW1tTZXRdXSBmYWlscyBzaWxl
bnRseSBpbiBsb29zZSBtb2RlIik7CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3Qge3csIHdwfSA9
IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisgICAgY29uc3QgZWxBID0gYXBwZW5kRm9ybVdp
dGhOYW1lKHcsICJhIik7CisgICAgY29uc3QgZWwwID0gYXBwZW5kRm9ybVdpdGhOYW1lKHcsIDAp
OworCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgd3AuYSA9IHt9OyB9
LCBzdXBwb3J0ZWROb25JbmRleEZvcm0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiB7IHdwWzBdID0ge307IH0sIHN1cHBvcnRlZEluZGV4Rm9ybSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgd3AuYiA9IHt9OyB9LCB1bnN1cHBvcnRlZE5v
bkluZGV4KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyB3cFsxXSA9
IHt9OyB9LCB1bnN1cHBvcnRlZEluZGV4KTsKKworICAgIGFzc2VydF9lcXVhbHMod3AuYSwgZWxB
LCBzdXBwb3J0ZWROb25JbmRleEZvcm0pOworICAgIGFzc2VydF9lcXVhbHMod3BbMF0sIGVsMCwg
c3VwcG9ydGVkSW5kZXhGb3JtKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmIsIHVuZGVmaW5lZCwg
dW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFsxXSwgdW5kZWZpbmVk
LCB1bnN1cHBvcnRlZEluZGV4KTsKK30sICJbW1NldF1dIHRocm93cyBUeXBlRXJyb3IgaW4gc3Ry
aWN0IG1vZGUiKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7dywgd3B9ID0gY3JlYXRlV2lu
ZG93UHJvcGVydGllcyh0KTsKKyAgICBjb25zdCByZWNlaXZlciA9IE9iamVjdC5jcmVhdGUod3Ap
OworCisgICAgYXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImEiKTsKKyAgICBhcHBlbmRFbGVtZW50
V2l0aElkKHcsIDApOworCisgICAgbGV0IHNldHRlclRoaXNWYWx1ZTsKKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkody5PYmplY3QucHJvdG90eXBlLCAxLCB7CisgICAgICAgIHNldCgpIHsgc2V0
dGVyVGhpc1ZhbHVlID0gdGhpczsgfSwKKyAgICB9KTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh3LkV2ZW50VGFyZ2V0LnByb3RvdHlwZSwgImIiLCB7CisgICAgICAgIHdyaXRhYmxlOiBm
YWxzZSwKKyAgICB9KTsKKworICAgIHJlY2VpdmVyLmEgPSAxMDsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4geyByZWNlaXZlci5iID0ge307IH0sIHVuc3VwcG9ydGVkTm9u
SW5kZXgpOworICAgIHJlY2VpdmVyWzBdID0gMjA7CisgICAgcmVjZWl2ZXJbMV0gPSB7fTsKKwor
ICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZXIuYSwgMTAsIHN1cHBvcnRlZE5vbkluZGV4SWZyYW1l
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVyWzBdLCAyMCwgc3VwcG9ydGVkSW5kZXhJZCk7
CisgICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVyLmhhc093blByb3BlcnR5KCJiIiksIHVuc3VwcG9y
dGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9mYWxzZShyZWNlaXZlci5oYXNPd25Qcm9wZXJ0eSgx
KSwgdW5zdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyhzZXR0ZXJUaGlzVmFsdWUs
IHJlY2VpdmVyLCAic2V0dGVyIHx0aGlzfCB2YWx1ZSBpcyByZWNlaXZlciIpOworfSwgIltbU2V0
XV0gaW4gcHJvdG90eXBlIGNoYWluIHBlcmZvcm1zIE9yZGluYXJ5U2V0IChzdHJpY3QgbW9kZSki
KTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7dywgd3B9ID0gY3JlYXRlV2luZG93UHJvcGVy
dGllcyh0KTsKKyAgICBjb25zdCBlbEEgPSBhcHBlbmRFbGVtZW50V2l0aElkKHcsICJhIik7Cisg
ICAgY29uc3QgZWwwID0gYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAwKTsKKworICAgIGFzc2VydF9m
YWxzZShSZWZsZWN0LnNldCh3cCwgImEiLCB7fSksIHN1cHBvcnRlZE5vbkluZGV4SWQpOworICAg
IGFzc2VydF9mYWxzZShSZWZsZWN0LnNldCh3cCwgMCwge30pLCBzdXBwb3J0ZWRJbmRleElkKTsK
KyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5zZXQod3AsICJiIiwge30pLCB1bnN1cHBvcnRlZE5v
bkluZGV4KTsKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5zZXQod3AsIDEsIHt9KSwgdW5zdXBw
b3J0ZWRJbmRleCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmEsIGVsQSwgc3VwcG9ydGVkTm9u
SW5kZXhJZCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFswXSwgZWwwLCBzdXBwb3J0ZWRJbmRleElk
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmIsIHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWROb25JbmRl
eCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFsxXSwgdW5kZWZpbmVkLCB1bnN1cHBvcnRlZEluZGV4
KTsKK30sICJSZWZsZWN0LnNldCByZXR1cm5zIGBmYWxzZWAgd2l0aG91dCB0aHJvd2luZyIpOwor
Cit0ZXN0KHQgPT4geworICAgIGNvbnN0IHt3LCB3cH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVz
KHQpOworICAgIGNvbnN0IHJlY2VpdmVyID0ge307CisKKyAgICBhcHBlbmRGb3JtV2l0aE5hbWUo
dywgImEiKTsKKyAgICBhcHBlbmRGb3JtV2l0aE5hbWUodywgMCk7CisKKyAgICBsZXQgc2V0dGVy
VGhpc1ZhbHVlOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3Lk9iamVjdC5wcm90b3R5cGUs
ICJiIiwgeworICAgICAgICBzZXQoKSB7IHNldHRlclRoaXNWYWx1ZSA9IHRoaXM7IH0sCisgICAg
fSk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkody5FdmVudFRhcmdldC5wcm90b3R5cGUs
IDEsIHsKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAgIH0pOworCisgICAgYXNzZXJ0X3Ry
dWUoUmVmbGVjdC5zZXQod3AsICJhIiwgMTAsIHJlY2VpdmVyKSwgc3VwcG9ydGVkTm9uSW5kZXhG
b3JtKTsKKyAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0LnNldCh3cCwgMCwgMjAsIHJlY2VpdmVyKSwg
c3VwcG9ydGVkSW5kZXhGb3JtKTsKKyAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0LnNldCh3cCwgImIi
LCB7fSwgcmVjZWl2ZXIpLCB1bnN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZmFsc2Uo
UmVmbGVjdC5zZXQod3AsIDEsIHt9LCByZWNlaXZlciksIHVuc3VwcG9ydGVkSW5kZXgpOworCisg
ICAgYXNzZXJ0X2VxdWFscyhyZWNlaXZlci5hLCAxMCwgc3VwcG9ydGVkTm9uSW5kZXhGb3JtKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVyWzBdLCAyMCwgc3VwcG9ydGVkSW5kZXhGb3JtKTsK
KyAgICBhc3NlcnRfZmFsc2UocmVjZWl2ZXIuaGFzT3duUHJvcGVydHkoImIiKSwgdW5zdXBwb3J0
ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyhzZXR0ZXJUaGlzVmFsdWUsIHJlY2VpdmVy
LCAic2V0dGVyIHx0aGlzfCB2YWx1ZSBpcyByZWNlaXZlciIpOworICAgIGFzc2VydF9mYWxzZShy
ZWNlaXZlci5oYXNPd25Qcm9wZXJ0eSgxKSwgdW5zdXBwb3J0ZWRJbmRleCk7Cit9LCAiUmVmbGVj
dC5zZXQgd2l0aCBhbHRlcmVkIHJlY2VpdmVyIHBlcmZvcm1zIE9yZGluYXJ5U2V0Iik7CisKK3Rl
c3QodCA9PiB7CisgICAgY29uc3Qge3csIHdwfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7
CisgICAgY29uc3QgZWxBID0gYXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImEiKTsKKyAgICBjb25z
dCBlbDAgPSBhcHBlbmRGb3JtV2l0aE5hbWUodywgMCk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4geyBkZWxldGUgd3AuYTsgfSwgc3VwcG9ydGVkTm9uSW5kZXhJZnJh
bWUpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGRlbGV0ZSB3cFsw
XTsgfSwgc3VwcG9ydGVkSW5kZXhGb3JtKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBkZWxldGUgd3AuYjsgfSwgdW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZGVsZXRlIHdwWzFdOyB9LCB1bnN1cHBv
cnRlZEluZGV4KTsKKworICAgIGFzc2VydF9lcXVhbHMod3AuYSwgZWxBLCBzdXBwb3J0ZWROb25J
bmRleElmcmFtZSk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFswXSwgZWwwLCBzdXBwb3J0ZWRJbmRl
eEZvcm0pOworfSwgIltbRGVsZXRlXV0gdGhyb3dzIFR5cGVFcnJvciBpbiBzdHJpY3QgbW9kZSIp
OworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHt3LCB3cH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0
aWVzKHQpOworICAgIGNvbnN0IGVsQSA9IGFwcGVuZEVsZW1lbnRXaXRoSWQodywgImEiKTsKKyAg
ICBjb25zdCBlbDAgPSBhcHBlbmRFbGVtZW50V2l0aElkKHcsIDApOworCisgICAgYXNzZXJ0X2Zh
bHNlKFJlZmxlY3QuZGVsZXRlUHJvcGVydHkod3AsICJhIiksIHN1cHBvcnRlZE5vbkluZGV4SWQp
OworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHdwLCAwKSwgc3VwcG9y
dGVkSW5kZXhJZCk7CisgICAgYXNzZXJ0X2ZhbHNlKFJlZmxlY3QuZGVsZXRlUHJvcGVydHkod3As
ICJiIiksIHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LmRl
bGV0ZVByb3BlcnR5KHdwLCAxKSwgdW5zdXBwb3J0ZWRJbmRleCk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKHdwLmEsIGVsQSwgc3VwcG9ydGVkTm9uSW5kZXhJZCk7CisgICAgYXNzZXJ0X2VxdWFscyh3
cFswXSwgZWwwLCBzdXBwb3J0ZWRJbmRleElkKTsKK30sICJSZWZsZWN0LmRlbGV0ZVByb3BlcnR5
IHJldHVybnMgYGZhbHNlYCB3aXRob3V0IHRocm93aW5nIik7Cis8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9v
cmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzLmh0bWwJKHJldmlzaW9uIDI3NDAzMikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVj
dHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDcgKzIz
MiwxMCBAQCBhZGRUZXN0KGZ1bmN0aW9uKHdpbikgewogICB9CiAgIGZvciAodmFyIHByb3Agb2Yg
d2luZG93QWxsb3dsaXN0cy5uYW1lZEZyYW1lcykgewogICAgIHdpbltwcm9wXTsgLy8gU2hvdWxk
bid0IHRocm93LgotICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luLCBwcm9w
KTsgLy8gU2hvdWxkbid0IHRocm93LgorICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3aW4sIHByb3ApOworICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxl
LCAiW1tXcml0YWJsZV1dIGZvciBuYW1lZCBmcmFtZSAiICsgU3RyaW5nKHByb3ApKTsKKyAgICBh
c3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAiW1tFbnVtZXJhYmxlXV0gZm9yIG5hbWVkIGZy
YW1lICIgKyBTdHJpbmcocHJvcCkpOworICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxl
LCAiW1tDb25maWd1cmFibGVdXSBmb3IgbmFtZWQgZnJhbWUgIiArIFN0cmluZyhwcm9wKSk7CiAg
ICAgYXNzZXJ0X3RydWUoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdpbiwg
cHJvcCksICJoYXNPd25Qcm9wZXJ0eSBmb3IgIiArIFN0cmluZyhwcm9wKSk7CiAgIH0KICAgZm9y
ICh2YXIgcHJvcCBpbiBsb2NhdGlvbikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427313</attachid>
            <date>2021-04-28 17:20:15 -0700</date>
            <delta_ts>2021-05-20 12:27:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222918-20210429032014.patch</filename>
            <type>text/plain</type>
            <size>32388</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NjUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDIxLTA0LTI4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBBbGlnbiBpbnRlcm5hbCBtZXRob2RzIG9mIFdpbmRvd1Byb3BlcnRpZXMgb2JqZWN0
IHdpdGggdGhlIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZXMgcmVjZW50bHkgYWRkZWQgaW52YXJpYW50IHRoYXQgcHV0KCkgbWV0aG9k
IGlzIHJlcXVpcmVkIGlmIGRlZmluZU93blByb3BlcnR5KCkKKyAgICAgICAgaXMgb3ZlcnJpZGVu
LCB3aGljaCBmYWlscyBmb3IgV2luZG93UHJvcGVydGllcyBhbmQgaXMgb3V0IG9mIHNjb3BlIGZv
ciB2YWxpZGF0ZUZsYWdzKCkuCisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dmFsaWRhdGVGbGFncyk6CisKIDIwMjEtMDQtMjYgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5saW5rZWRD
b2RlQmxvY2sgc2hvdWxkIGhhdmUgYmV0dGVyIGFjY291bnRpbmcgZm9yIGV4dHJhIG1lbW9yeQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZp
c2lvbiAyNzY2NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMTMgKzIwOSw2IEBAIHZvaWQgU3RydWN0dXJlOjp2
YWxpZGF0ZUZsYWdzKCkKICAgICAgICAgbWV0aG9kVGFibGUucHV0ICE9IEpTT2JqZWN0OjpwdXQK
ICAgICAgICAgJiYgbWV0aG9kVGFibGUucHV0ICE9IEpTQ2VsbDo6cHV0OwogICAgIFJFTEVBU0Vf
QVNTRVJUKG92ZXJyaWRlc1B1dCA9PSB0eXBlSW5mbygpLm92ZXJyaWRlc1B1dCgpKTsKLQotICAg
IGJvb2wgb3ZlcnJpZGVzRGVmaW5lT3duUHJvcGVydHkgPQotICAgICAgICBtZXRob2RUYWJsZS5k
ZWZpbmVPd25Qcm9wZXJ0eSAhPSBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkKLSAgICAgICAg
JiYgbWV0aG9kVGFibGUuZGVmaW5lT3duUHJvcGVydHkgIT0gSlNDZWxsOjpkZWZpbmVPd25Qcm9w
ZXJ0eTsKLQotICAgIGlmIChvdmVycmlkZXNEZWZpbmVPd25Qcm9wZXJ0eSkKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQob3ZlcnJpZGVzUHV0KTsKIH0KICNlbHNlCiBpbmxpbmUgdm9pZCBTdHJ1Y3R1
cmU6OnZhbGlkYXRlRmxhZ3MoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NjY1NikK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUz
IEBACisyMDIxLTA0LTI4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
KworICAgICAgICBBbGlnbiBpbnRlcm5hbCBtZXRob2RzIG9mIFdpbmRvd1Byb3BlcnRpZXMgb2Jq
ZWN0IHdpdGggdGhlIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjkxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2g6CisKKyAgICAgICAgMS4gSW1wbGVtZW50cyBbW1ByZXZlbnRF
eHRlbnNpb25zXV0sIFtbRGVmaW5lT3duUHJvcGVydHldXSwgYW5kIFtbRGVsZXRlXV0gbWV0aG9k
cyB0aGF0IGFsd2F5cyBmYWlsIFsxXSwKKyAgICAgICAgICAgZW5zdXJpbmcgW1tTZXRdXSB3aXRo
IGFsdGVyZWQgcmVjZWl2ZXIgaXMgcGFzc2VkIHRocm91Z2gsIGluZGV4ZWQgcHJvcGVydGllcyBh
cmUgcmVqZWN0ZWQgYXMgd2VsbCwKKyAgICAgICAgICAgYW5kIGFuIGV4Y2VwdGlvbiBpcyB0aHJv
d24gaWYgbmVjY2Vzc2FyeS4KKworICAgICAgICAgICBBZGRpbmcgYSBwdXQoKSBvdmVycmlkZSB3
b3VsZCBhKSBzbG93IGRvd24gZ2xvYmFsIGB2YXJgIGNyZWF0aW9uIGFuZCBiKSByZXF1aXJlIGZh
Y3RvcmluZyBvdXQgbW9zdCBvZgorICAgICAgICAgICBKU09iamVjdDo6cHV0SW5saW5lU2xvdygp
LiBJbnN0ZWFkLCB3ZSBwcmV2ZW50IGV4dGVuc2lvbnMgb24gYSBzdHJ1Y3R1cmUgd2hpbGUgZGVm
aW5pbmcgaXNFeHRlbnNpYmxlKCkKKyAgICAgICAgICAgb3ZlcnJpZGUgdG8gY292ZXIgdGhhdCB1
cC4KKworICAgICAgICAyLiBDb3JyZWN0cyBwcm9wZXJ0eSBhdHRyaWJ1dGVzIHJlcG9ydGVkIGJ5
IFtbR2V0T3duUHJvcGVydHldXSBtZXRob2RzIG9mIGNyb3NzLW9yaWdpbiBXaW5kb3dQcm94eSBb
Ml0KKyAgICAgICAgICAgYW5kIFdpbmRvd1Byb3BlcnRpZXMsIGJyaW5naW5nIHRoZXNlIG9iamVj
dHMgaW4gY29tcGxpYW5jZSB3aXRoIGludmFyaWFudHMgb2YgaW50ZXJuYWwgbWV0aG9kcyBbM10u
CisKKyAgICAgICAgMy4gUmVtb3ZlcyBjb21tZW50cyBvbiBjcm9zcy1icm93c2VyIGRpZmZlcmVu
Y2VzIGFuZCBwcmlvcml0eSBvcmRlciBmcm9tIFtbR2V0T3duUHJvcGVydHldXSBiZWNhdXNlCisg
ICAgICAgICAgIGl0IGNvcnJlY3RseSBpbXBsZW1lbnRzIHRoZSBub3cgZGV0YWlsZWQgc3BlYyBb
NF0uIEJyb3dzaW5nIGNvbnRleHRzIHByZWNlZGVuY2UgaXMgY292ZXJlZCBieQorICAgICAgICAg
ICB3cHQvaHRtbC9icm93c2Vycy90aGUtd2luZG93LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhl
LXdpbmRvdy1vYmplY3QvbmFtZWQtb2JqZWN0cy5odG1sIHRlc3QuCisKKyAgICAgICAgNC4gQXNz
ZXJ0cyB0aGF0IFdpbmRvd1Byb3BlcnRpZXMgW1tQcm90b3R5cGVdXSBpcyBhbiBvYmplY3QsIGFz
IGd1YXJhbnRlZWQgYnkgaXRzIFtbU2V0UHJvdG90eXBlT2ZdXS4KKworICAgICAgICBUaGlzIGNo
YW5nZSBmdWxseSBpbXBsZW1lbnRzIHRoZSBjdXJyZW50IHNwZWMsIGFsaWduaW5nIFdlYktpdCB3
aXRoIEJsaW5rIGFuZCBHZWNrby4KKworICAgICAgICBbMV0gaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jbmFtZWQtcHJvcGVydGllcy1vYmplY3QtZGVmaW5lb3ducHJvcGVydHkKKyAg
ICAgICAgWzJdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dpbmRvdy1v
YmplY3QuaHRtbCN3aW5kb3dwcm94eS1nZXRvd25wcm9wZXJ0eSAoc3RlcCA2LjIpCisgICAgICAg
IFszXSBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWludmFyaWFudHMtb2YtdGhlLWVzc2Vu
dGlhbC1pbnRlcm5hbC1tZXRob2RzCisgICAgICAgIFs0XSBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS93aW5kb3ctb2JqZWN0Lmh0bWwjZG9tLXdpbmRvdy1uYW1lZGl0ZW0g
KHN0ZXAgMikKKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVj
dC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmpl
Y3RzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy90aGUtd2luZG93LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRv
dy1vYmplY3Qvd2luZG93LW5hbWVkLXByb3BlcnRpZXMuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5k
b3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01X
aW5kb3dQcm9wZXJ0aWVzR2V0T3duUHJvcGVydHlTbG90TmFtZWRJdGVtR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93UHJvcGVydGllczo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dQcm9wZXJ0aWVzOjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OnBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93UHJvcGVydGll
czo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93UHJvcGVydGll
czo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
UHJvcGVydGllcy5oOgorCiAyMDIxLTA0LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBgd2luZG93LkNTU2Agc2hvdWxkIGJlIG5v
bi1jYWxsYWJsZSBvYmplY3Qgd2l0aCBjb3JyZWN0IFN5bWJvbC50b1N0cmluZ1RhZwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMjc2NjUzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBqc0RP
TVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaQogICAgIGF1dG8qIGZyYW1lID0gd2luZG93
LmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGlzPEZyYW1lPigqZnJhbWUpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBzY29wZWRDaGlsZCA9IGRvd25jYXN0PEZyYW1lPigqZnJhbWUpLnRyZWUoKS5z
Y29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKLSAg
ICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlZENoaWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOworICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0sIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlZENo
aWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1Byb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI3NjY1MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDE1ICs0MiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBjb25z
dCBDbGFzc0luZm8gSlNET01XaW5kb3dQcm9wZXJ0aWVzOjpzX2luZm8gPSB7ICJXaW5kb3dQcm9w
ZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0RPTVdpbmRvd1Byb3BlcnRpZXMpIH07CiAKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL3dpbmRvdy1vYmplY3QuaHRtbCNkb20td2luZG93LW5hbWVkaXRl
bQogc3RhdGljIGJvb2wganNET01XaW5kb3dQcm9wZXJ0aWVzR2V0T3duUHJvcGVydHlTbG90TmFt
ZWRJdGVtR2V0dGVyKEpTRE9NV2luZG93UHJvcGVydGllcyogdGhpc09iamVjdCwgRE9NV2luZG93
JiB3aW5kb3csIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgLy8gQ2hlY2sgZm9y
IGNoaWxkIGZyYW1lcyBieSBuYW1lIGJlZm9yZSBidWlsdC1pbiBwcm9wZXJ0aWVzIHRvIG1hdGNo
IE1vemlsbGEuIFRoaXMgZG9lcwotICAgIC8vIG5vdCBtYXRjaCBJRSwgYnV0IHNvbWUgc2l0ZXMg
ZW5kIHVwIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cKLSAg
ICAvLyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZl
IHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8gaXQKLSAgICAvLyB0aGUgTW96IHdheS4KICAg
ICBpZiAoYXV0byogZnJhbWUgPSB3aW5kb3cuZnJhbWUoKSkgewogICAgICAgICBpZiAoYXV0byog
c2NvcGVkQ2hpbGQgPSBmcmFtZS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRv
bVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwg
dG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZWRDaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHRvSlMobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGVkQ2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTU4LDkgKzU1LDYgQEAg
c3RhdGljIGJvb2wganNET01XaW5kb3dQcm9wZXJ0aWVzR2V0T3duUAogICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHdpbmRvdywgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgLy8gRklYTUU6IFNlYXJjaCB0aGUgd2hvbGUgZnJhbWUgaGllcmFyY2h5IHNvbWV3aGVy
ZSBhcm91bmQgaGVyZS4KLSAgICAvLyBXZSBuZWVkIHRvIHRlc3QgdGhlIGNvcnJlY3QgcHJpb3Jp
dHkgb3JkZXIuCi0KICAgICAvLyBBbGxvdyBzaG9ydGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFk
IG9mIGRvY3VtZW50LmltYWdlcy5JbWFnZTEKICAgICBhdXRvKiBkb2N1bWVudCA9IHdpbmRvdy5k
b2N1bWVudCgpOwogICAgIGlmIChpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KSkgewpAQCAtNzQs
NyArNjgsNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd1Byb3BlcnRpZXNHZXRPd25QCiAgICAg
ICAgICAgICAgICAgbmFtZWRJdGVtID0gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICBuYW1lZEl0ZW0gPSB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QtPmdsb2JhbE9iamVjdCgpLCBodG1sRG9jdW1lbnQud2luZG93TmFtZWRJdGVtKCphdG9t
aWNQcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIG5hbWVkSXRl
bSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBuYW1lZEl0ZW0pOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC04MiwyNSArNzYsMjcgQEAg
c3RhdGljIGJvb2wganNET01XaW5kb3dQcm9wZXJ0aWVzR2V0T3duUAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3ZvaWQgSlNET01XaW5kb3dQcm9wZXJ0aWVzOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworICAg
IEpTT2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyh0aGlzLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAog
Ym9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TVdpbmRvd1Byb3BlcnRpZXMqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKwogICAgIGlmIChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgSlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICBpZiAocHJv
dG8uaXNPYmplY3QoKSAmJiBqc0Nhc3Q8SlNPYmplY3QqPihwcm90byktPmhhc1Byb3BlcnR5KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpCisgICAgSlNPYmplY3QqIHByb3RvID0g
YXNPYmplY3QodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7CisgICAgaWYgKHBy
b3RvLT5oYXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCk7Ci0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGFkZCBzdXBwb3J0IGZv
ciBKU1JlbW90ZURPTVdpbmRvd0Jhc2UgdG9vLgogICAgIGF1dG8qIGpzV2luZG93ID0ganNEeW5h
bWljQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPih2bSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
OwogICAgIGlmICghanNXaW5kb3cpCkBAIC0xMTYsNiArMTEyLDMyIEBAIGJvb2wgSlNET01XaW5k
b3dQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXIKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
LCBzbG90KTsKIH0KIAorYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXM6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXM6OnByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmlzRXh0ZW5z
aWJsZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAg
ICByZXR1cm4gdHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJv
dywgIlVuYWJsZSB0byBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBhIFdpbmRvd1Byb3BlcnRpZXMgb2Jq
ZWN0LiJfcyk7Cit9CisKIEpTQzo6SXNvU3Vic3BhY2UqIEpTRE9NV2luZG93UHJvcGVydGllczo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+ZG9tV2luZG93UHJvcGVydGllc1NwYWNl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaAkocmV2aXNpb24gMjc2NjUzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0RPTVdpbmRvd1Byb3BlcnRpZXMqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAgICAgewogICAgICAgICBKU0RPTVdpbmRvd1Byb3BlcnRpZXMqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01XaW5kb3dQcm9wZXJ0aWVzPihnbG9iYWxPYmpl
Y3Qudm0oKS5oZWFwKSkgSlNET01XaW5kb3dQcm9wZXJ0aWVzKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qudm0oKSk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CiAKQEAgLTU5LDYgKzU5LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
cHJldmVudEV4dGVuc2lvbnMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiBwcml2YXRlOgogICAg
IEpTRE9NV2luZG93UHJvcGVydGllcyhKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC02Niw3ICs3MSw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYpOwogfTsKIApJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzY3NDApCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjEtMDQtMjggIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisg
ICAgICAgIEFsaWduIGludGVybmFsIG1ldGhvZHMgb2YgV2luZG93UHJvcGVydGllcyBvYmplY3Qg
d2l0aCB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyOTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9jbGFz
cy1zdHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9jbGFz
cy1zdHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LmpzOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRvdy1uYW1lZC1w
cm9wZXJ0aWVzLW9iamVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRvdy1uYW1lZC1wcm9wZXJ0
aWVzLW9iamVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVj
dHMuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy90aGUt
d2luZG93LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRvdy1vYmplY3Qvd2luZG93LW5h
bWVkLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2lu
ZG93LW9iamVjdC93aW5kb3ctbmFtZWQtcHJvcGVydGllcy5odG1sOgorCiAyMDIxLTA0LTI4ICBa
aXJhbiBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBBY2N1cml6
ZSBleHBlY3RlZCByZXN1bHQgdG8gMC41IHBpeGVsIGZvciBzb21lIGNvbnRlbnRTcGFjZUFyb3Vu
ZCB0ZXN0cyBpbiBhYnNwb3MKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9jbGFzcy1zdHJpbmctbmFtZWQt
cHJvcGVydGllcy1vYmplY3Qud2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvY2xhc3Mtc3RyaW5nLW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0LndpbmRvdy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI3NjY1MykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9jbGFzcy1zdHJpbmct
bmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDQgQEAKIAogUEFTUyBAQHRvU3RyaW5nVGFnIGV4aXN0cyB3aXRoIHRoZSBh
cHByb3ByaWF0ZSBkZXNjcmlwdG9yCiBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcKLVBB
U1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBhcHBsaWVkIGFmdGVyIG1vZGlmeWluZyBAQHRv
U3RyaW5nVGFnCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9jbGFzcy1zdHJpbmctbmFtZWQtcHJvcGVy
dGllcy1vYmplY3Qud2luZG93LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9jbGFzcy1z
dHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LmpzCShyZXZpc2lvbiAyNzY2NTMp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvY2xhc3Mtc3RyaW5nLW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0Lndp
bmRvdy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUsMjAgKzE1LDMgQEAgdGVzdCgoKSA9PiB7CiB0
ZXN0KCgpID0+IHsKICAgYXNzZXJ0X2VxdWFscyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwobmFtZWRQcm9wZXJ0aWVzT2JqZWN0KSwgIltvYmplY3QgV2luZG93UHJvcGVydGllc10iKTsK
IH0sICJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIik7Ci0KLXRlc3QodCA9PiB7Ci0gIGFzc2Vy
dF9vd25fcHJvcGVydHkobmFtZWRQcm9wZXJ0aWVzT2JqZWN0LCBTeW1ib2wudG9TdHJpbmdUYWcs
ICJQcmVjb25kaXRpb24gZm9yIHRoaXMgdGVzdDogQEB0b1N0cmluZ1RhZyBleGlzdHMiKTsKLQot
ICB0LmFkZF9jbGVhbnVwKCgpID0+IHsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmFtZWRQ
cm9wZXJ0aWVzT2JqZWN0LCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICJXaW5kb3dQcm9w
ZXJ0aWVzIiB9KTsKLSAgfSk7Ci0KLSAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5hbWVkUHJvcGVy
dGllc09iamVjdCwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAiTm90V2luZG93UHJvcGVy
dGllcyIgfSk7Ci0gIGFzc2VydF9lcXVhbHMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
KG5hbWVkUHJvcGVydGllc09iamVjdCksICJbb2JqZWN0IE5vdFdpbmRvd1Byb3BlcnRpZXNdIik7
Ci19LCAiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBhcHBsaWVkIGFmdGVyIG1vZGlmeWluZyBA
QHRvU3RyaW5nVGFnIik7Ci0KLS8vIENocm9tZSBoYWQgYSBidWcgKGh0dHBzOi8vYnVncy5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTc5MzQwNikgd2hlcmUgaWYgdGhl
cmUKLS8vIHdhcyBubyBAQHRvU3RyaW5nVGFnLCBpdCB3b3VsZCBmYWxsIGJhY2sgdG8gYSBtYWdp
YyBjbGFzcyBzdHJpbmcuIFRlc3RzIGZvciB0aGlzIGFyZSBwcmVzZW50IGluCi0vLyB0aGUgc2li
bGluZyBjbGFzcy1zdHJpbmcqLmFueS5qcyB0ZXN0cy4gSG93ZXZlciwgdGhlIG5hbWVkIHByb3Bl
cnRpZXMgb2JqZWN0IGFsd2F5cyBmYWlscyBjYWxscwotLy8gdG8gW1tEZWZpbmVPd25Qcm9wZXJ0
eV1dIG9yIFtbU2V0UHJvdG90eXBlT2ZdXSBwZXIgdGhlIFdlYiBJREwgc3BlYywgc28gdGhlcmUg
aXMgbm8gd2F5IHRvCi0vLyB0cmlnZ2VyIHRoZSBidWdneSBiZWhhdmlvciBmb3IgaXQuCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvd2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvd2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2Jq
ZWN0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvd2luZG93LW5h
bWVkLXByb3BlcnRpZXMtb2JqZWN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE1IEBACisKK1BBU1MgW1tTZXRQcm90b3R5cGVPZl1dIGFuZCBbW0dldFByb3RvdHlwZU9m
XV0KK1BBU1MgW1tQcmV2ZW50RXh0ZW5zaW9uc11dIGFuZCBbW0lzRXh0ZW5zaWJsZV1dCitQQVNT
IFtbR2V0T3duUHJvcGVydHldXQorUEFTUyBbW0dldE93blByb3BlcnR5XV0gKG5hbWVkIHByb3Bl
cnR5IHZpc2liaWxpdHkgYWxnb3JpdGhtKQorUEFTUyBbW0RlZmluZU93blByb3BlcnR5XV0KK1BB
U1MgW1tIYXNQcm9wZXJ0eV1dCitQQVNTIFtbR2V0XV0KK1BBU1MgW1tHZXRdXSAobmFtZWQgcHJv
cGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0pCitQQVNTIFtbU2V0XV0gKGRpcmVjdCkKK1BBU1Mg
W1tTZXRdXSAocHJvdG90eXBlIGNoYWluKQorUEFTUyBbW1NldF1dIChSZWZsZWN0LnNldCkKK1BB
U1MgW1tEZWxldGVdXQorUEFTUyBbW093blByb3BlcnR5S2V5c11dCisKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1vYmplY3QuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvd2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0Lmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjgyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5JbnRlcm5hbCBtZXRob2RzIG9mIFdpbmRvdydzIG5h
bWVkIHByb3BlcnRpZXMgb2JqZWN0PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbmFtZWQtcHJvcGVydGllcy1vYmplY3QiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGJvZHk+
Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9vc2VNb2RlU2V0KGJhc2UsIGtleSwgdmFsdWUpIHsgYmFz
ZVtrZXldID0gdmFsdWU7IH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwor
Y29uc3Qgc3VwcG9ydGVkTm9uSW5kZXggPSAic3VwcG9ydGVkIG5vbi1pbmRleCBwcm9wZXJ0eSBu
YW1lIjsKK2NvbnN0IHN1cHBvcnRlZEluZGV4ID0gInN1cHBvcnRlZCBpbmRleGVkIHByb3BlcnR5
IG5hbWUiOworY29uc3QgdW5zdXBwb3J0ZWROb25JbmRleCA9ICJ1bnN1cHBvcnRlZCBub24taW5k
ZXggcHJvcGVydHkgbmFtZSI7Citjb25zdCB1bnN1cHBvcnRlZEluZGV4ID0gInVuc3VwcG9ydGVk
IGluZGV4ZWQgcHJvcGVydHkgbmFtZSI7Citjb25zdCBleGlzdGluZ1N5bWJvbCA9ICJleGlzdGlu
ZyBzeW1ib2wgcHJvcGVydHkgbmFtZSI7Citjb25zdCBub25FeGlzdGluZ1N5bWJvbCA9ICJub24t
ZXhpc3Rpbmcgc3ltYm9sIHByb3BlcnR5IG5hbWUiOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0
IHsgdywgd3AgfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisKKyAgICBPYmplY3Quc2V0
UHJvdG90eXBlT2Yod3AsIHcuRXZlbnRUYXJnZXQucHJvdG90eXBlKTsKKworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5zZXRQcm90b3R5cGVPZih3cCwge30p
OyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKHcuVHlwZUVycm9yLCAoKSA9PiB7IHdwLl9fcHJv
dG9fXyA9IG51bGw7IH0pOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LnNldFByb3RvdHlwZU9m
KHdwLCB3Lk9iamVjdC5wcm90b3R5cGUpKTsKKworICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHdwKSwgdy5FdmVudFRhcmdldC5wcm90b3R5cGUpOworfSwgIltbU2V0UHJv
dG90eXBlT2ZdXSBhbmQgW1tHZXRQcm90b3R5cGVPZl1dIik7CisKK3Rlc3QodCA9PiB7CisgICAg
Y29uc3QgeyB3cCB9ID0gY3JlYXRlV2luZG93UHJvcGVydGllcyh0KTsKKworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh3cCk7
IH0pOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zKHdwKSk7CisK
KyAgICBhc3NlcnRfdHJ1ZShPYmplY3QuaXNFeHRlbnNpYmxlKHdwKSk7Cit9LCAiW1tQcmV2ZW50
RXh0ZW5zaW9uc11dIGFuZCBbW0lzRXh0ZW5zaWJsZV1dIik7CisKK3Rlc3QodCA9PiB7CisgICAg
Y29uc3QgeyB3LCB3cCB9ID0gY3JlYXRlV2luZG93UHJvcGVydGllcyh0KTsKKworICAgIGNvbnN0
IGVsQSA9IGFwcGVuZEVsZW1lbnRXaXRoSWQodywgImEiKTsKKyAgICBjb25zdCBlbDAgPSBhcHBl
bmRJZnJhbWVXaXRoTmFtZSh3LCAwKTsKKworICAgIGFzc2VydF9wcm9wX2Rlc2MoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih3cCwgImEiKSwgZWxBLCBzdXBwb3J0ZWROb25JbmRleCk7
CisgICAgYXNzZXJ0X3Byb3BfZGVzYyhSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
cCwgMCksIGVsMCwgc3VwcG9ydGVkSW5kZXgpOworICAgIGFzc2VydF9lcXVhbHMoUmVmbGVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3AsICJiIiksIHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWRO
b25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHdwLCAxKSwgdW5kZWZpbmVkLCB1bnN1cHBvcnRlZEluZGV4KTsKK30sICJbW0dldE93blBy
b3BlcnR5XV0iKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7IHcsIHdwIH0gPSBjcmVhdGVX
aW5kb3dQcm9wZXJ0aWVzKHQpOworCisgICAgYXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImhhc093
blByb3BlcnR5Iik7CisgICAgYXBwZW5kRm9ybVdpdGhOYW1lKHcsICJhZGRFdmVudExpc3RlbmVy
Iik7CisgICAgYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAiYSIpOworICAgIGFwcGVuZElmcmFtZVdp
dGhOYW1lKHcsIDApOworCisgICAgdy5PYmplY3QucHJvdG90eXBlLmEgPSB7fTsKKyAgICB3LkV2
ZW50VGFyZ2V0LnByb3RvdHlwZVswXSA9IHt9OworCisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdwLCAiaGFzT3duUHJvcGVydHkiKSwgdW5kZWZpbmVk
LCBzdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyhSZWZsZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih3cCwgImFkZEV2ZW50TGlzdGVuZXIiKSwgdW5kZWZpbmVkLCBzdXBw
b3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHdwLCAiYSIpLCB1bmRlZmluZWQsIHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBh
c3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdwLCAwKSwgdW5k
ZWZpbmVkLCBzdXBwb3J0ZWRJbmRleCk7Cit9LCAiW1tHZXRPd25Qcm9wZXJ0eV1dIChuYW1lZCBw
cm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobSkiKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25z
dCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworCisgICAgYXBwZW5kRWxl
bWVudFdpdGhJZCh3LCAiYSIpOworICAgIGFwcGVuZEZvcm1XaXRoTmFtZSh3LCAwKTsKKworICAg
IGFzc2VydF9kZWZpbmVfb3duX3Byb3BlcnR5X2ZhaWxzKHdwLCAiYSIsIHt9LCBzdXBwb3J0ZWRO
b25JbmRleCk7CisgICAgYXNzZXJ0X2RlZmluZV9vd25fcHJvcGVydHlfZmFpbHMod3AsIDAsIHt9
LCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X2RlZmluZV9vd25fcHJvcGVydHlfZmFpbHMo
d3AsICJiIiwge30sIHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9kZWZpbmVfb3du
X3Byb3BlcnR5X2ZhaWxzKHdwLCAxLCB7fSwgdW5zdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0
X2RlZmluZV9vd25fcHJvcGVydHlfZmFpbHMod3AsIFN5bWJvbC50b1N0cmluZ1RhZywge30sIGV4
aXN0aW5nU3ltYm9sKTsKKyAgICBhc3NlcnRfZGVmaW5lX293bl9wcm9wZXJ0eV9mYWlscyh3cCwg
U3ltYm9sKCksIHt9LCBub25FeGlzdGluZ1N5bWJvbCk7Cit9LCAiW1tEZWZpbmVPd25Qcm9wZXJ0
eV1dIik7CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3QgeyB3LCB3cCB9ID0gY3JlYXRlV2luZG93
UHJvcGVydGllcyh0KTsKKworICAgIGFwcGVuZEZvcm1XaXRoTmFtZSh3LCAiYSIpOworICAgIGFw
cGVuZEVsZW1lbnRXaXRoSWQodywgMCk7CisKKyAgICBhc3NlcnRfdHJ1ZSgiYSIgaW4gd3AsIHN1
cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0Lmhhcyh3cCwgImEiKSwg
c3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF90cnVlKDAgaW4gd3AsIHN1cHBvcnRlZElu
ZGV4KTsKKyAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0Lmhhcyh3cCwgMCksIHN1cHBvcnRlZEluZGV4
KTsKKworICAgIGFzc2VydF9mYWxzZSgiYiIgaW4gd3AsIHVuc3VwcG9ydGVkTm9uSW5kZXgpOwor
ICAgIGFzc2VydF9mYWxzZShSZWZsZWN0Lmhhcyh3cCwgMSksIHVuc3VwcG9ydGVkSW5kZXgpOwor
fSwgIltbSGFzUHJvcGVydHldXSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsgdywgd3Ag
fSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisgICAgY29uc3QgZWxBID0gYXBwZW5kRm9y
bVdpdGhOYW1lKHcsICJhIik7CisgICAgY29uc3QgZWwwID0gYXBwZW5kSWZyYW1lV2l0aE5hbWUo
dywgMCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmEsIGVsQSwgc3VwcG9ydGVkTm9uSW5kZXgp
OworICAgIGFzc2VydF9lcXVhbHMod3BbMF0sIGVsMCwgc3VwcG9ydGVkSW5kZXgpOworICAgIGFz
c2VydF9lcXVhbHMod3BbU3ltYm9sLnRvU3RyaW5nVGFnXSwgIldpbmRvd1Byb3BlcnRpZXMiLCBl
eGlzdGluZ1N5bWJvbCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmIsIHVuZGVmaW5lZCwgdW5z
dXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFsxXSwgdW5kZWZpbmVkLCB1
bnN1cHBvcnRlZEluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwW1N5bWJvbC5pdGVyYXRvcl0s
IHVuZGVmaW5lZCwgbm9uRXhpc3RpbmdTeW1ib2wpOworfSwgIltbR2V0XV0iKTsKKwordGVzdCh0
ID0+IHsKKyAgICBjb25zdCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOwor
CisgICAgYXBwZW5kSWZyYW1lV2l0aE5hbWUodywgImlzUHJvdG90eXBlT2YiKTsKKyAgICBhcHBl
bmRGb3JtV2l0aE5hbWUodywgImRpc3BhdGNoRXZlbnQiKTsKKyAgICBhcHBlbmRFbGVtZW50V2l0
aElkKHcsICJhIik7CisgICAgYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAwKTsKKworICAgIHcuRXZl
bnRUYXJnZXQucHJvdG90eXBlLmEgPSAxMDsKKyAgICB3Lk9iamVjdC5wcm90b3R5cGVbMF0gPSAy
MDsKKworICAgIGFzc2VydF9lcXVhbHMod3AuaXNQcm90b3R5cGVPZiwgdy5PYmplY3QucHJvdG90
eXBlLmlzUHJvdG90eXBlT2YsIHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxz
KHdwLmRpc3BhdGNoRXZlbnQsIHcuRXZlbnRUYXJnZXQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQs
IHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmEsIDEwLCBzdXBwb3J0
ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFswXSwgMjAsIHN1cHBvcnRlZEluZGV4
KTsKK30sICJbW0dldF1dIChuYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobSkiKTsK
KwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0
aWVzKHQpOworICAgIGNvbnN0IGVsQSA9IGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJhIik7Cisg
ICAgY29uc3QgZWwwID0gYXBwZW5kRm9ybVdpdGhOYW1lKHcsIDApOworCisgICAgYXNzZXJ0X3Nl
dF9mYWlscyh3cCwgImEiLCBzdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X3NldF9mYWls
cyh3cCwgImIiLCB1bnN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfc2V0X2ZhaWxzKHdw
LCAwLCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgMSwgdW5zdXBw
b3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgU3ltYm9sLnRvU3RyaW5nVGFn
LCBleGlzdGluZ1N5bWJvbCk7CisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgU3ltYm9sKCksIG5v
bkV4aXN0aW5nU3ltYm9sKTsKKworICAgIGFzc2VydF9lcXVhbHMod3AuYSwgZWxBLCBzdXBwb3J0
ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFswXSwgZWwwLCBzdXBwb3J0ZWRJbmRl
eCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cC5iLCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkTm9uSW5k
ZXgpOworICAgIGFzc2VydF9lcXVhbHMod3BbMV0sIHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWRJbmRl
eCk7Cit9LCAiW1tTZXRdXSAoZGlyZWN0KSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsg
dywgd3AgfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisgICAgY29uc3QgcmVjZWl2ZXIg
PSBPYmplY3QuY3JlYXRlKHdwKTsKKworICAgIGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJhIik7
CisgICAgYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAwKTsKKworICAgIGxldCBzZXR0ZXJUaGlzVmFs
dWU7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuT2JqZWN0LnByb3RvdHlwZSwgMSwgeyBz
ZXQoKSB7IHNldHRlclRoaXNWYWx1ZSA9IHRoaXM7IH0gfSk7CisgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHcuRXZlbnRUYXJnZXQucHJvdG90eXBlLCAiYiIsIHsgd3JpdGFibGU6IGZhbHNlIH0p
OworCisgICAgcmVjZWl2ZXIuYSA9IDEwOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiB7IHJlY2VpdmVyLmIgPSB7fTsgfSwgdW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAg
cmVjZWl2ZXJbMF0gPSAyMDsKKyAgICByZWNlaXZlclsxXSA9IHt9OworCisgICAgYXNzZXJ0X2Vx
dWFscyhyZWNlaXZlci5hLCAxMCwgc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9lcXVh
bHMocmVjZWl2ZXJbMF0sIDIwLCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X2ZhbHNlKHJl
Y2VpdmVyLmhhc093blByb3BlcnR5KCJiIiksIHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFz
c2VydF9mYWxzZShyZWNlaXZlci5oYXNPd25Qcm9wZXJ0eSgxKSwgdW5zdXBwb3J0ZWRJbmRleCk7
CisgICAgYXNzZXJ0X2VxdWFscyhzZXR0ZXJUaGlzVmFsdWUsIHJlY2VpdmVyLCAic2V0dGVyIHx0
aGlzfCB2YWx1ZSBpcyByZWNlaXZlciIpOworfSwgIltbU2V0XV0gKHByb3RvdHlwZSBjaGFpbiki
KTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9w
ZXJ0aWVzKHQpOworICAgIGNvbnN0IHJlY2VpdmVyID0ge307CisKKyAgICBhcHBlbmRGb3JtV2l0
aE5hbWUodywgImEiKTsKKyAgICBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3LCAwKTsKKworICAgIGxl
dCBzZXR0ZXJUaGlzVmFsdWU7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuT2JqZWN0LnBy
b3RvdHlwZSwgImIiLCB7IHNldCgpIHsgc2V0dGVyVGhpc1ZhbHVlID0gdGhpczsgfSB9KTsKKyAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkody5FdmVudFRhcmdldC5wcm90b3R5cGUsIDEsIHsgd3Jp
dGFibGU6IGZhbHNlIH0pOworCisgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQod3AsICJhIiwg
MTAsIHJlY2VpdmVyKSwgc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF90cnVlKFJlZmxl
Y3Quc2V0KHdwLCAwLCAyMCwgcmVjZWl2ZXIpLCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0
X3RydWUoUmVmbGVjdC5zZXQod3AsICJiIiwge30sIHJlY2VpdmVyKSwgdW5zdXBwb3J0ZWROb25J
bmRleCk7CisgICAgYXNzZXJ0X2ZhbHNlKFJlZmxlY3Quc2V0KHdwLCAxLCB7fSwgcmVjZWl2ZXIp
LCB1bnN1cHBvcnRlZEluZGV4KTsKKworICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZXIuYSwgMTAs
IHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVyWzBdLCAyMCwg
c3VwcG9ydGVkSW5kZXgpOworICAgIGFzc2VydF9mYWxzZShyZWNlaXZlci5oYXNPd25Qcm9wZXJ0
eSgiYiIpLCB1bnN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNldHRlclRo
aXNWYWx1ZSwgcmVjZWl2ZXIsICJzZXR0ZXIgfHRoaXN8IHZhbHVlIGlzIHJlY2VpdmVyIik7Cisg
ICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVyLmhhc093blByb3BlcnR5KDEpLCB1bnN1cHBvcnRlZElu
ZGV4KTsKK30sICJbW1NldF1dIChSZWZsZWN0LnNldCkiKTsKKwordGVzdCh0ID0+IHsKKyAgICBj
b25zdCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworICAgIGNvbnN0IGVs
QSA9IGFwcGVuZEZvcm1XaXRoTmFtZSh3LCAiYSIpOworICAgIGNvbnN0IGVsMCA9IGFwcGVuZEVs
ZW1lbnRXaXRoSWQodywgMCk7CisKKyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCAiYSIsIHN1
cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCAwLCBzdXBwb3J0
ZWRJbmRleCk7CisgICAgYXNzZXJ0X2RlbGV0ZV9mYWlscyh3cCwgImIiLCB1bnN1cHBvcnRlZE5v
bkluZGV4KTsKKyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCAxLCB1bnN1cHBvcnRlZEluZGV4
KTsKKyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCBTeW1ib2wudG9TdHJpbmdUYWcsIGV4aXN0
aW5nU3ltYm9sKTsKKyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCBTeW1ib2woImZvbyIpLCBu
b25FeGlzdGluZ1N5bWJvbCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmEsIGVsQSwgc3VwcG9y
dGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9lcXVhbHMod3BbMF0sIGVsMCwgc3VwcG9ydGVkSW5k
ZXgpOworICAgIGFzc2VydF9lcXVhbHMod3BbU3ltYm9sLnRvU3RyaW5nVGFnXSwgIldpbmRvd1By
b3BlcnRpZXMiLCBleGlzdGluZ1N5bWJvbCk7Cit9LCAiW1tEZWxldGVdXSIpOworCit0ZXN0KHQg
PT4geworICAgIGNvbnN0IHsgdywgd3AgfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisK
KyAgICBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3LCAiYSIpOworICAgIGFwcGVuZEVsZW1lbnRXaXRo
SWQodywgMCk7CisgICAgYXBwZW5kRm9ybVdpdGhOYW1lKHcsICJiIik7CisKKyAgICBjb25zdCBm
b3JJbktleXMgPSBbXTsKKyAgICBmb3IgKGNvbnN0IGtleSBpbiB3cCkKKyAgICAgICAgZm9ySW5L
ZXlzLnB1c2goa2V5KTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZm9ySW5LZXlzLCBPYmpl
Y3Qua2V5cyh3LkV2ZW50VGFyZ2V0LnByb3RvdHlwZSkpOworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod3ApLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhSZWZsZWN0Lm93bktleXMod3ApLCBbU3ltYm9sLnRvU3RyaW5nVGFnXSk7Cit9LCAi
W1tPd25Qcm9wZXJ0eUtleXNdXSIpOworCitmdW5jdGlvbiBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVz
KHQpIHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgIHQuYWRkX2NsZWFudXAo
KCkgPT4geyBpZnJhbWUucmVtb3ZlKCk7IH0pOworCisgICAgY29uc3QgdyA9IGlmcmFtZS5jb250
ZW50V2luZG93OworICAgIGNvbnN0IHdwID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHcuV2luZG93
LnByb3RvdHlwZSk7CisgICAgcmV0dXJuIHsgdywgd3AgfTsKK30KKworZnVuY3Rpb24gYXBwZW5k
SWZyYW1lV2l0aE5hbWUodywgbmFtZSkgeworICAgIGNvbnN0IGVsID0gdy5kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBlbC5uYW1lID0gbmFtZTsKKyAgICB3LmRvY3VtZW50
LmJvZHkuYXBwZW5kKGVsKTsKKyAgICByZXR1cm4gZWwuY29udGVudFdpbmRvdzsKK30KKworZnVu
Y3Rpb24gYXBwZW5kRm9ybVdpdGhOYW1lKHcsIG5hbWUpIHsKKyAgICBjb25zdCBlbCA9IHcuZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOworICAgIGVsLm5hbWUgPSBuYW1lOworICAgIHcu
ZG9jdW1lbnQuYm9keS5hcHBlbmQoZWwpOworICAgIHJldHVybiBlbDsKK30KKworZnVuY3Rpb24g
YXBwZW5kRWxlbWVudFdpdGhJZCh3LCBpZCkgeworICAgIGNvbnN0IGVsID0gdy5kb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbC5pZCA9IGlkOworICAgIHcuZG9jdW1lbnQuYm9k
eS5hcHBlbmQoZWwpOworICAgIHJldHVybiBlbDsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Byb3Bf
ZGVzYyhkZXNjLCB2YWx1ZSwgdGVzdEluZm8pIHsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBk
ZXNjLCAib2JqZWN0IiwgYCR7dGVzdEluZm99IHR5cGVvZiBkZXNjYCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhkZXNjLnZhbHVlLCB2YWx1ZSwgYCR7dGVzdEluZm99IFtbVmFsdWVdXWApOworICAgIGFz
c2VydF90cnVlKGRlc2Mud3JpdGFibGUsIGAke3Rlc3RJbmZvfSBbW1dyaXRhYmxlXV1gKTsKKyAg
ICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCBgJHt0ZXN0SW5mb30gW1tFbnVtZXJhYmxl
XV1gKTsKKyAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgYCR7dGVzdEluZm99IFtb
Q29uZmlndXJhYmxlXV1gKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2RlZmluZV9vd25fcHJvcGVy
dHlfZmFpbHMob2JqZWN0LCBrZXksIGRlc2MsIHRlc3RJbmZvKSB7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5
LCBkZXNjKTsgfSwgdGVzdEluZm8pOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LmRlZmluZVBy
b3BlcnR5KG9iamVjdCwga2V5LCBkZXNjKSwgdGVzdEluZm8pOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfc2V0X2ZhaWxzKG9iamVjdCwga2V5LCB2YWx1ZSwgdGVzdEluZm8pIHsKKyAgICBsb29zZU1v
ZGVTZXQob2JqZWN0LCBrZXksIHZhbHVlKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBvYmplY3Rba2V5XSA9IHZhbHVlOyB9LCB0ZXN0SW5mbyk7CisgICAgYXNzZXJ0
X2ZhbHNlKFJlZmxlY3Quc2V0KG9iamVjdCwga2V5LCB2YWx1ZSksIHRlc3RJbmZvKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X2RlbGV0ZV9mYWlscyhvYmplY3QsIGtleSwgdGVzdEluZm8pIHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBkZWxldGUgb2JqZWN0W2tleV07
IH0sIHRlc3RJbmZvKTsKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShv
YmplY3QsIGtleSksIHRlc3RJbmZvKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9z
cy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbAko
cmV2aXNpb24gMjc2NjUzKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1v
cmlnaW4tb2JqZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDEwIEBAIGFk
ZFRlc3QoZnVuY3Rpb24od2luKSB7CiAgIH0KICAgZm9yICh2YXIgcHJvcCBvZiB3aW5kb3dBbGxv
d2xpc3RzLm5hbWVkRnJhbWVzKSB7CiAgICAgd2luW3Byb3BdOyAvLyBTaG91bGRuJ3QgdGhyb3cu
Ci0gICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW4sIHByb3ApOyAvLyBTaG91
bGRuJ3QgdGhyb3cuCisgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHdpbiwgcHJvcCk7CisgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJbW1dyaXRh
YmxlXV0gZm9yIG5hbWVkIGZyYW1lICIgKyBTdHJpbmcocHJvcCkpOworICAgIGFzc2VydF9mYWxz
ZShkZXNjLmVudW1lcmFibGUsICJbW0VudW1lcmFibGVdXSBmb3IgbmFtZWQgZnJhbWUgIiArIFN0
cmluZyhwcm9wKSk7CisgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsICJbW0NvbmZp
Z3VyYWJsZV1dIGZvciBuYW1lZCBmcmFtZSAiICsgU3RyaW5nKHByb3ApKTsKICAgICBhc3NlcnRf
dHJ1ZShPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2luLCBwcm9wKSwgImhh
c093blByb3BlcnR5IGZvciAiICsgU3RyaW5nKHByb3ApKTsKICAgfQogICBmb3IgKHZhciBwcm9w
IGluIGxvY2F0aW9uKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvdGhlLXdpbmRvdy1vYmplY3QvbmFtZWQtYWNjZXNzLW9u
LXRoZS13aW5kb3ctb2JqZWN0L3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvdGhlLXdpbmRvdy1vYmplY3QvbmFtZWQtYWNjZXNzLW9uLXRoZS13aW5k
b3ctb2JqZWN0L3dpbmRvdy1uYW1lZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc2NjUzKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2luZG93
LW9iamVjdC93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOSArMSw4IEBACiAKIFBBU1MgU3RhdGljIG5hbWUKIFBBU1MgU3RhdGljIGlkCi1G
QUlMIFN0YXRpYyBuYW1lIG9uIHRoZSBwcm90b3R5cGUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
dHJ1ZSBidXQgZ290IGZhbHNlCitQQVNTIFN0YXRpYyBuYW1lIG9uIHRoZSBwcm90b3R5cGUKIFBB
U1MgY29uc3RydWN0b3IKLUZBSUwgZHVwbGljYXRlIHByb3BlcnR5IG5hbWVzIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDEgYnV0IGdvdCAwCiBQQVNTIER5bmFtaWMgbmFtZQogUEFTUyBHaG9zdCBu
YW1lCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy90aGUtd2luZG93LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRv
dy1vYmplY3Qvd2luZG93LW5hbWVkLXByb3BlcnRpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvdGhl
LXdpbmRvdy1vYmplY3QvbmFtZWQtYWNjZXNzLW9uLXRoZS13aW5kb3ctb2JqZWN0L3dpbmRvdy1u
YW1lZC1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDI3NjY1MykKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy90aGUtd2luZG93LW9i
amVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRvdy1vYmplY3Qvd2luZG93LW5hbWVkLXByb3Bl
cnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsNiBAQAogPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogPGRpdiBpZD1sb2c+
PC9kaXY+CiA8aWZyYW1lIG5hbWU9ImJhciI+PC9pZnJhbWU+Ci08aWZyYW1lIG5hbWU9ImJheiI+
PC9pZnJhbWU+Ci08aWZyYW1lIG5hbWU9ImJheiI+PC9pZnJhbWU+CiA8aWZyYW1lIG5hbWU9ImNv
bnN0cnVjdG9yIj48L2lmcmFtZT4KIDxpZnJhbWUgaWQ9InF1dXgiPjwvaWZyYW1lPgogPHNjcmlw
dD4KQEAgLTMwLDcgKzI4LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKIHRlc3QoZnVuY3Rpb24oKSB7
CiAgIGFzc2VydF90cnVlKCJxdXV4IiBpbiB3aW5kb3csICJxdXV4IG5vdCBpbiB3aW5kb3ciKTsK
ICAgYXNzZXJ0X2VxdWFscyh3aW5kb3dbInF1dXgiXSwKLSAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbNF0pOworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVsyXSk7CiB9LCAiU3RhdGljIGlk
Iik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC01OCwxMiArNTYsNiBAQCB0ZXN0KGZ1bmN0aW9u
KCkgewogICBhc3NlcnRfZmFsc2UoZ3NwLmhhc093blByb3BlcnR5KCJjb25zdHJ1Y3RvciIpLCAi
Z3NwLmhhc093blByb3BlcnR5KFwiY29uc3RydWN0b3JcIikiKTsKICAgYXNzZXJ0X2VxdWFscyhP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdzcCwgImNvbnN0cnVjdG9yIiksIHVuZGVm
aW5lZCk7CiB9LCAiY29uc3RydWN0b3IiKTsKLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIHZhciBnc3Ag
PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKHdpbmRvdykpOwot
ICB2YXIgbmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnc3ApOwotICBhc3NlcnRf
ZXF1YWxzKG5hbWVzLmZpbHRlcigobmFtZSkgPT4gbmFtZSA9PSAiYmF6IikubGVuZ3RoLCAxKTsK
LQotfSwgImR1cGxpY2F0ZSBwcm9wZXJ0eSBuYW1lcyIpCiB2YXIgdCA9IGFzeW5jX3Rlc3QoIkR5
bmFtaWMgbmFtZSIpCiB2YXIgdDIgPSBhc3luY190ZXN0KCJHaG9zdCBuYW1lIikKIHQuc3RlcChm
dW5jdGlvbigpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429205</attachid>
            <date>2021-05-20 12:27:37 -0700</date>
            <delta_ts>2021-05-20 14:02:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222918-20210520222735.patch</filename>
            <type>text/plain</type>
            <size>30227</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzgwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTIwICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbGlnbiBpbnRlcm5h
bCBtZXRob2RzIG9mIFdpbmRvd1Byb3BlcnRpZXMgb2JqZWN0IHdpdGggdGhlIHNwZWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjkxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgVGhpcyBwYXRjaDoKKworICAg
ICAgICAxLiBJbXBsZW1lbnRzIFtbUHJldmVudEV4dGVuc2lvbnNdXSwgW1tEZWZpbmVPd25Qcm9w
ZXJ0eV1dLCBhbmQgW1tEZWxldGVdXSBtZXRob2RzIHRoYXQgYWx3YXlzIGZhaWwgWzFdLAorICAg
ICAgICAgICBlbnN1cmluZyBbW1NldF1dIHdpdGggYWx0ZXJlZCByZWNlaXZlciBpcyBwYXNzZWQg
dGhyb3VnaCwgaW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSByZWplY3RlZCBhcyB3ZWxsLAorICAgICAg
ICAgICBhbmQgYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBuZWNjZXNzYXJ5LgorCisgICAgICAg
ICAgIEFkZGluZyBhIHB1dCgpIG92ZXJyaWRlIHdvdWxkIGEpIHNsb3cgZG93biBnbG9iYWwgYHZh
cmAgY3JlYXRpb24gYW5kIGIpIHJlcXVpcmUgZmFjdG9yaW5nIG91dCBtb3N0IG9mCisgICAgICAg
ICAgIEpTT2JqZWN0OjpwdXRJbmxpbmVTbG93KCkuIEluc3RlYWQsIHdlIHByZXZlbnQgZXh0ZW5z
aW9ucyBvbiBhIHN0cnVjdHVyZSB3aGlsZSBkZWZpbmluZyBpc0V4dGVuc2libGUoKQorICAgICAg
ICAgICBvdmVycmlkZSB0byBjb3ZlciB0aGF0IHVwLgorCisgICAgICAgIDIuIENvcnJlY3RzIHBy
b3BlcnR5IGF0dHJpYnV0ZXMgcmVwb3J0ZWQgYnkgW1tHZXRPd25Qcm9wZXJ0eV1dIG1ldGhvZHMg
b2YgY3Jvc3Mtb3JpZ2luIFdpbmRvd1Byb3h5IFsyXQorICAgICAgICAgICBhbmQgV2luZG93UHJv
cGVydGllcywgYnJpbmdpbmcgdGhlc2Ugb2JqZWN0cyBpbiBjb21wbGlhbmNlIHdpdGggaW52YXJp
YW50cyBvZiBpbnRlcm5hbCBtZXRob2RzIFszXS4KKworICAgICAgICAzLiBSZW1vdmVzIGNvbW1l
bnRzIG9uIGNyb3NzLWJyb3dzZXIgZGlmZmVyZW5jZXMgYW5kIHByaW9yaXR5IG9yZGVyIGZyb20g
W1tHZXRPd25Qcm9wZXJ0eV1dIGJlY2F1c2UKKyAgICAgICAgICAgaXQgY29ycmVjdGx5IGltcGxl
bWVudHMgdGhlIG5vdyBkZXRhaWxlZCBzcGVjIFs0XS4gQnJvd3NpbmcgY29udGV4dHMgcHJlY2Vk
ZW5jZSBpcyBjb3ZlcmVkIGJ5CisgICAgICAgICAgIHdwdC9odG1sL2Jyb3dzZXJzL3RoZS13aW5k
b3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2luZG93LW9iamVjdC9uYW1lZC1vYmplY3Rz
Lmh0bWwgdGVzdC4KKworICAgICAgICA0LiBBc3NlcnRzIHRoYXQgV2luZG93UHJvcGVydGllcyBb
W1Byb3RvdHlwZV1dIGlzIGFuIG9iamVjdCwgYXMgZ3VhcmFudGVlZCBieSBpdHMgW1tTZXRQcm90
b3R5cGVPZl1dLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGZ1bGx5IGltcGxlbWVudHMgdGhlIGN1
cnJlbnQgc3BlYywgYWxpZ25pbmcgV2ViS2l0IHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAg
ICAgIFsxXSBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNuYW1lZC1wcm9wZXJ0aWVz
LW9iamVjdC1kZWZpbmVvd25wcm9wZXJ0eQorICAgICAgICBbMl0gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2luZG93LW9iamVjdC5odG1sI3dpbmRvd3Byb3h5LWdldG93
bnByb3BlcnR5IChzdGVwIDYuMikKKyAgICAgICAgWzNdIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYy
LyNzZWMtaW52YXJpYW50cy1vZi10aGUtZXNzZW50aWFsLWludGVybmFsLW1ldGhvZHMKKyAgICAg
ICAgWzRdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dpbmRvdy1vYmpl
Y3QuaHRtbCNkb20td2luZG93LW5hbWVkaXRlbSAoc3RlcCAyKQorCisgICAgICAgIFRlc3RzOiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
d2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3Jp
Z2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbAorICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2Jq
ZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2luZG93LW9iamVjdC93aW5kb3ctbmFtZWQtcHJvcGVy
dGllcy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaWN0
ZWRBY2Nlc3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd1Byb3BlcnRpZXNHZXRPd25Qcm9wZXJ0
eVNsb3ROYW1lZEl0ZW1HZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dQcm9w
ZXJ0aWVzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1By
b3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd1Byb3BlcnRpZXM6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93UHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93UHJvcGVydGllczo6cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dQcm9wZXJ0aWVzOjppc0V4dGVuc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dQcm9wZXJ0aWVzOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmg6CisKIDIwMjEtMDUtMjAg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQ2hlY2tlZExv
Y2sgbW9yZSBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNzc4MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCw3ICsxNDAsNyBAQCBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJp
CiAgICAgYXV0byogZnJhbWUgPSB3aW5kb3cuZnJhbWUoKTsKICAgICBpZiAoZnJhbWUgJiYgaXM8
RnJhbWU+KCpmcmFtZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjb3BlZENoaWxkID0gZG93bmNh
c3Q8RnJhbWU+KCpmcmFtZSkudHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbVN0
cmluZyhwcm9wZXJ0eU5hbWUpKSkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgdG9K
UygmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGVkQ2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgdG9KUygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGVkQ2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNw
cAkocmV2aXNpb24gMjc3ODA2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDEyIEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXM6OnNfaW5mbyA9IHsgIldpbmRvd1Byb3BlcnRpZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93UHJvcGVydGllcykgfTsK
IAorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2luZG93LW9iamVj
dC5odG1sI2RvbS13aW5kb3ctbmFtZWRpdGVtCiBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd1Byb3Bl
cnRpZXNHZXRPd25Qcm9wZXJ0eVNsb3ROYW1lZEl0ZW1HZXR0ZXIoSlNET01XaW5kb3dQcm9wZXJ0
aWVzKiB0aGlzT2JqZWN0LCBET01XaW5kb3cmIHdpbmRvdywgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICAvLyBDaGVjayBmb3IgY2hpbGQgZnJhbWVzIGJ5IG5hbWUgYmVmb3JlIGJ1
aWx0LWluIHByb3BlcnRpZXMgdG8gbWF0Y2ggTW96aWxsYS4gVGhpcyBkb2VzCi0gICAgLy8gbm90
IG1hdGNoIElFLCBidXQgc29tZSBzaXRlcyBlbmQgdXAgbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhh
dCBjb25mbGljdCB3aXRoIHdpbmRvdwotICAgIC8vIHByb3BlcnRpZXMgdGhhdCBhcmUgaW4gTW96
IGJ1dCBub3QgSUUuIFNpbmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbyBp
dAotICAgIC8vIHRoZSBNb3ogd2F5LgogICAgIGlmIChhdXRvKiBmcmFtZSA9IHdpbmRvdy5mcmFt
ZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY29wZWRDaGlsZCA9IGZyYW1lLT50cmVlKCkuc2Nv
cGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7Ci0gICAg
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
ZENoaWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOworICAgICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZWRDaGlsZC0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtNTgsOSArNTUsNiBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd1Byb3BlcnRp
ZXNHZXRPd25QCiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgd2luZG93LCBUaHJvd1NlY3VyaXR5RXJyb3Ip
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogU2VhcmNoIHRoZSB3aG9s
ZSBmcmFtZSBoaWVyYXJjaHkgc29tZXdoZXJlIGFyb3VuZCBoZXJlLgotICAgIC8vIFdlIG5lZWQg
dG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4KLQogICAgIC8vIEFsbG93IHNob3J0
Y3V0cyBsaWtlICdJbWFnZTEnIGluc3RlYWQgb2YgZG9jdW1lbnQuaW1hZ2VzLkltYWdlMQogICAg
IGF1dG8qIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxEb2N1
bWVudD4oZG9jdW1lbnQpKSB7CkBAIC03NCw3ICs2OCw3IEBAIHN0YXRpYyBib29sIGpzRE9NV2lu
ZG93UHJvcGVydGllc0dldE93blAKICAgICAgICAgICAgICAgICBuYW1lZEl0ZW0gPSB0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9u
KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5hbWVkSXRlbSA9IHRvSlMo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGh0bWxEb2N1
bWVudC53aW5kb3dOYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSwgbmFtZWRJdGVtKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIG5hbWVkSXRlbSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTgyLDI1ICs3NiwyNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd1Byb3BlcnRp
ZXNHZXRPd25QCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTRE9NV2luZG93UHJvcGVy
dGllczo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6
OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7CisgICAgSlNPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKHRo
aXMsICZnbG9iYWxPYmplY3QpOwogfQogCiBib29sIEpTRE9NV2luZG93UHJvcGVydGllczo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93UHJvcGVydGllcyo+KG9iamVjdCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCiAgICAg
aWYgKEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1Zh
bHVlIHByb3RvID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkpOwotICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIGpzQ2FzdDxKU09iamVj
dCo+KHByb3RvKS0+aGFzUHJvcGVydHkobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KSkKKyAgICBKU09iamVjdCogcHJvdG8gPSBhc09iamVjdCh0aGlzT2JqZWN0LT5nZXRQcm90b3R5
cGVEaXJlY3Qodm0pKTsKKyAgICBpZiAocHJvdG8tPmhhc1Byb3BlcnR5KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKLQogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcHJvYmFibHkgYWRkIHN1cHBvcnQgZm9yIEpTUmVtb3RlRE9NV2luZG93QmFzZSB0b28uCiAg
ICAgYXV0byoganNXaW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHZtLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFqc1dpbmRvdykKQEAgLTExNiw2
ICsxMTIsMzIgQEAgYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcgogICAg
IHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCksIHNsb3QpOwogfQogCitib29sIEpTRE9NV2luZG93
UHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEpTRE9NV2luZG93UHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEpTRE9NV2luZG93UHJvcGVydGllczo6cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCopCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEpTRE9N
V2luZG93UHJvcGVydGllczo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEpTRE9NV2luZG93UHJvcGVydGllczo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJldHVybiB0eXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93LCAiRGVmaW5pbmcgYSBwcm9wZXJ0eSBvbiBhIFdp
bmRvd1Byb3BlcnRpZXMgb2JqZWN0IGlzIG5vdCBhbGxvd2VkLiJfcyk7Cit9CisKIEpTQzo6SXNv
U3Vic3BhY2UqIEpTRE9NV2luZG93UHJvcGVydGllczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQogewogICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+ZG9tV2luZG93UHJvcGVydGllc1NwYWNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAkocmV2aXNpb24g
Mjc3ODA2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0
aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0RPTVdpbmRvd1Byb3BlcnRpZXMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNET01XaW5kb3dQcm9wZXJ0aWVzPihnbG9iYWxPYmplY3Qudm0oKS5oZWFwKSkgSlNET01XaW5k
b3dQcm9wZXJ0aWVzKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKQEAgLTU5LDYg
KzU5LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBpc0V4dGVu
c2libGUoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogCiBwcml2YXRlOgogICAgIEpTRE9NV2luZG93UHJvcGVydGllcyhK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCkBAIC02Niw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYpOwogfTsKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzc4MDYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjAgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIEFsaWduIGludGVybmFsIG1l
dGhvZHMgb2YgV2luZG93UHJvcGVydGllcyBvYmplY3Qgd2l0aCB0aGUgc3BlYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTE4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2NsYXNzLXN0cmluZy1uYW1lZC1wcm9wZXJ0aWVzLW9i
amVjdC53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2NsYXNzLXN0cmluZy1uYW1lZC1wcm9wZXJ0aWVzLW9i
amVjdC53aW5kb3cuanM6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvd2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0
LWJpbmRpbmcvd2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmln
aW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1v
bi10aGUtd2luZG93LW9iamVjdC93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvdGhlLXdpbmRvdy1v
YmplY3QvbmFtZWQtYWNjZXNzLW9uLXRoZS13aW5kb3ctb2JqZWN0L3dpbmRvdy1uYW1lZC1wcm9w
ZXJ0aWVzLmh0bWw6CisKIDIwMjEtMDUtMjAgIEZlbGlwZSBFcmlhcyAgPGZlbGlwZWVyaWFzQGln
YWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBXcm9uZyBoZWlnaHQgb2YgYW4gZW1w
dHkgdGFibGUgaW5zaWRlIGFuIG9ydGhvZ29uYWwgZmxleCBwYXJlbnQKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy9jbGFzcy1zdHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvY2xhc3Mtc3RyaW5nLW5hbWVkLXByb3Bl
cnRpZXMtb2JqZWN0LndpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzgwNikKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9jbGFzcy1zdHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDQgQEAKIAogUEFTUyBAQHRvU3Ry
aW5nVGFnIGV4aXN0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBkZXNjcmlwdG9yCiBQQVNTIE9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmcKLVBBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBhcHBs
aWVkIGFmdGVyIG1vZGlmeWluZyBAQHRvU3RyaW5nVGFnCiAKSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9j
bGFzcy1zdHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2luZG93LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9jbGFzcy1zdHJpbmctbmFtZWQtcHJvcGVydGllcy1vYmplY3Qud2lu
ZG93LmpzCShyZXZpc2lvbiAyNzc4MDYpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvY2xhc3Mtc3RyaW5nLW5h
bWVkLXByb3BlcnRpZXMtb2JqZWN0LndpbmRvdy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYsMTcg
KzE2LDYgQEAgdGVzdCgoKSA9PiB7CiAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKG5hbWVkUHJvcGVydGllc09iamVjdCksICJbb2JqZWN0IFdpbmRvd1Byb3Bl
cnRpZXNdIik7CiB9LCAiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyIpOwogCi10ZXN0KHQgPT4g
ewotICBhc3NlcnRfb3duX3Byb3BlcnR5KG5hbWVkUHJvcGVydGllc09iamVjdCwgU3ltYm9sLnRv
U3RyaW5nVGFnLCAiUHJlY29uZGl0aW9uIGZvciB0aGlzIHRlc3Q6IEBAdG9TdHJpbmdUYWcgZXhp
c3RzIik7Ci0KLSAgdC5hZGRfY2xlYW51cCgoKSA9PiB7Ci0gICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KG5hbWVkUHJvcGVydGllc09iamVjdCwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAi
V2luZG93UHJvcGVydGllcyIgfSk7Ci0gIH0pOwotCi0gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShu
YW1lZFByb3BlcnRpZXNPYmplY3QsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogIk5vdFdp
bmRvd1Byb3BlcnRpZXMiIH0pOwotICBhc3NlcnRfZXF1YWxzKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChuYW1lZFByb3BlcnRpZXNPYmplY3QpLCAiW29iamVjdCBOb3RXaW5kb3dQcm9w
ZXJ0aWVzXSIpOwotfSwgIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgYXBwbGllZCBhZnRlciBt
b2RpZnlpbmcgQEB0b1N0cmluZ1RhZyIpOwotCiAvLyBDaHJvbWUgaGFkIGEgYnVnIChodHRwczov
L2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD03OTM0MDYpIHdo
ZXJlIGlmIHRoZXJlCiAvLyB3YXMgbm8gQEB0b1N0cmluZ1RhZywgaXQgd291bGQgZmFsbCBiYWNr
IHRvIGEgbWFnaWMgY2xhc3Mgc3RyaW5nLiBUZXN0cyBmb3IgdGhpcyBhcmUgcHJlc2VudCBpbgog
Ly8gdGhlIHNpYmxpbmcgY2xhc3Mtc3RyaW5nKi5hbnkuanMgdGVzdHMuIEhvd2V2ZXIsIHRoZSBu
YW1lZCBwcm9wZXJ0aWVzIG9iamVjdCBhbHdheXMgZmFpbHMgY2FsbHMKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmlu
ZGluZy93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1vYmplY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURM
L2VjbWFzY3JpcHQtYmluZGluZy93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1vYmplY3QtZXhwZWN0
ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy93aW5kb3ctbmFtZWQtcHJvcGVy
dGllcy1vYmplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAK
KworUEFTUyBbW1NldFByb3RvdHlwZU9mXV0gYW5kIFtbR2V0UHJvdG90eXBlT2ZdXQorUEFTUyBb
W1ByZXZlbnRFeHRlbnNpb25zXV0gYW5kIFtbSXNFeHRlbnNpYmxlXV0KK1BBU1MgW1tHZXRPd25Q
cm9wZXJ0eV1dCitQQVNTIFtbR2V0T3duUHJvcGVydHldXSAobmFtZWQgcHJvcGVydHkgdmlzaWJp
bGl0eSBhbGdvcml0aG0pCitQQVNTIFtbRGVmaW5lT3duUHJvcGVydHldXQorUEFTUyBbW0hhc1By
b3BlcnR5XV0KK1BBU1MgW1tHZXRdXQorUEFTUyBbW0dldF1dIChuYW1lZCBwcm9wZXJ0eSB2aXNp
YmlsaXR5IGFsZ29yaXRobSkKK1BBU1MgW1tTZXRdXSAoZGlyZWN0KQorUEFTUyBbW1NldF1dIChw
cm90b3R5cGUgY2hhaW4pCitQQVNTIFtbU2V0XV0gKFJlZmxlY3Quc2V0KQorUEFTUyBbW0RlbGV0
ZV1dCitQQVNTIFtbT3duUHJvcGVydHlLZXlzXV0KKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL3dpbmRv
dy1uYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1vYmplY3QuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvd2luZG93LW5hbWVkLXByb3BlcnRpZXMtb2JqZWN0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyODQgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPkludGVybmFsIG1ldGhvZHMgb2YgV2luZG93J3MgbmFtZWQgcHJvcGVy
dGllcyBvYmplY3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNuYW1lZC1wcm9wZXJ0aWVzLW9iamVjdCI+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBzbG9wcHlNb2RlU2V0KGJhc2UsIGtleSwgdmFsdWUpIHsgYmFzZVtrZXldID0g
dmFsdWU7IH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKworY29uc3Qgc3Vw
cG9ydGVkTm9uSW5kZXggPSAic3VwcG9ydGVkIG5vbi1pbmRleCBwcm9wZXJ0eSBuYW1lIjsKK2Nv
bnN0IHN1cHBvcnRlZEluZGV4ID0gInN1cHBvcnRlZCBpbmRleGVkIHByb3BlcnR5IG5hbWUiOwor
Y29uc3QgdW5zdXBwb3J0ZWROb25JbmRleCA9ICJ1bnN1cHBvcnRlZCBub24taW5kZXggcHJvcGVy
dHkgbmFtZSI7Citjb25zdCB1bnN1cHBvcnRlZEluZGV4ID0gInVuc3VwcG9ydGVkIGluZGV4ZWQg
cHJvcGVydHkgbmFtZSI7Citjb25zdCBleGlzdGluZ1N5bWJvbCA9ICJleGlzdGluZyBzeW1ib2wg
cHJvcGVydHkgbmFtZSI7Citjb25zdCBub25FeGlzdGluZ1N5bWJvbCA9ICJub24tZXhpc3Rpbmcg
c3ltYm9sIHByb3BlcnR5IG5hbWUiOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsgdywgd3Ag
fSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisKKyAgICBPYmplY3Quc2V0UHJvdG90eXBl
T2Yod3AsIHcuRXZlbnRUYXJnZXQucHJvdG90eXBlKTsgLy8gU2V0dGluZyBjdXJyZW50IFtbUHJv
dG90eXBlXV0gdmFsdWUgc2hvdWxkbid0IHRocm93CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3Quc2V0UHJvdG90eXBlT2Yod3AsIHt9KTsgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyh3LlR5cGVFcnJvciwgKCkgPT4geyB3cC5fX3Byb3RvX18gPSBudWxs
OyB9KTsKKyAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5zZXRQcm90b3R5cGVPZih3cCwgdy5PYmpl
Y3QucHJvdG90eXBlKSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVP
Zih3cCksIHcuRXZlbnRUYXJnZXQucHJvdG90eXBlKTsKK30sICJbW1NldFByb3RvdHlwZU9mXV0g
YW5kIFtbR2V0UHJvdG90eXBlT2ZdXSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsgd3Ag
fSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4geyBPYmplY3QucHJldmVudEV4dGVuc2lvbnMod3ApOyB9KTsKKyAgICBh
c3NlcnRfZmFsc2UoUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh3cCkpOworCisgICAgYXNzZXJ0
X3RydWUoT2JqZWN0LmlzRXh0ZW5zaWJsZSh3cCkpOworfSwgIltbUHJldmVudEV4dGVuc2lvbnNd
XSBhbmQgW1tJc0V4dGVuc2libGVdXSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsgdywg
d3AgfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisKKyAgICBjb25zdCBlbEEgPSBhcHBl
bmRFbGVtZW50V2l0aElkKHcsICJhIik7CisgICAgY29uc3QgZWwwID0gYXBwZW5kSWZyYW1lV2l0
aE5hbWUodywgMCk7CisKKyAgICBhc3NlcnRfcHJvcF9kZXNjKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Iod3AsICJhIiksIGVsQSwgc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2Vy
dF9wcm9wX2Rlc2MoUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3AsIDApLCBlbDAs
IHN1cHBvcnRlZEluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKFJlZmxlY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHdwLCAiYiIpLCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkTm9uSW5kZXgpOwor
ICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cCwgMSks
IHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWRJbmRleCk7Cit9LCAiW1tHZXRPd25Qcm9wZXJ0eV1dIik7
CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3QgeyB3LCB3cCB9ID0gY3JlYXRlV2luZG93UHJvcGVy
dGllcyh0KTsKKworICAgIGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJoYXNPd25Qcm9wZXJ0eSIp
OworICAgIGFwcGVuZEZvcm1XaXRoTmFtZSh3LCAiYWRkRXZlbnRMaXN0ZW5lciIpOworICAgIGFw
cGVuZEVsZW1lbnRXaXRoSWQodywgImEiKTsKKyAgICBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3LCAw
KTsKKworICAgIHcuT2JqZWN0LnByb3RvdHlwZS5hID0ge307CisgICAgdy5FdmVudFRhcmdldC5w
cm90b3R5cGVbMF0gPSB7fTsKKworICAgIC8vIFRoZXNlIGFyZSBzaGFkb3dlZCBieSBwcm9wZXJ0
aWVzIGhpZ2hlciBpbiBbW1Byb3RvdHlwZV1dIGNoYWluLiBTZWUgaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jZGZuLW5hbWVkLXByb3BlcnR5LXZpc2liaWxpdHkKKyAgICBhc3NlcnRf
ZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3AsICJoYXNPd25Qcm9wZXJ0
eSIpLCB1bmRlZmluZWQsIHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKFJl
ZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdwLCAiYWRkRXZlbnRMaXN0ZW5lciIpLCB1
bmRlZmluZWQsIHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod3AsICJhIiksIHVuZGVmaW5lZCwgc3VwcG9ydGVkTm9u
SW5kZXgpOworICAgIGFzc2VydF9lcXVhbHMoUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iod3AsIDApLCB1bmRlZmluZWQsIHN1cHBvcnRlZEluZGV4KTsKK30sICJbW0dldE93blByb3Bl
cnR5XV0gKG5hbWVkIHByb3BlcnR5IHZpc2liaWxpdHkgYWxnb3JpdGhtKSIpOworCit0ZXN0KHQg
PT4geworICAgIGNvbnN0IHsgdywgd3AgfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisK
KyAgICBhcHBlbmRFbGVtZW50V2l0aElkKHcsICJhIik7CisgICAgYXBwZW5kRm9ybVdpdGhOYW1l
KHcsIDApOworCisgICAgYXNzZXJ0X2RlZmluZV9vd25fcHJvcGVydHlfZmFpbHMod3AsICJhIiwg
e30sIHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZGVmaW5lX293bl9wcm9wZXJ0eV9m
YWlscyh3cCwgMCwge30sIHN1cHBvcnRlZEluZGV4KTsKKyAgICBhc3NlcnRfZGVmaW5lX293bl9w
cm9wZXJ0eV9mYWlscyh3cCwgImIiLCB7fSwgdW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNz
ZXJ0X2RlZmluZV9vd25fcHJvcGVydHlfZmFpbHMod3AsIDEsIHt9LCB1bnN1cHBvcnRlZEluZGV4
KTsKKyAgICBhc3NlcnRfZGVmaW5lX293bl9wcm9wZXJ0eV9mYWlscyh3cCwgU3ltYm9sLnRvU3Ry
aW5nVGFnLCB7fSwgZXhpc3RpbmdTeW1ib2wpOworICAgIGFzc2VydF9kZWZpbmVfb3duX3Byb3Bl
cnR5X2ZhaWxzKHdwLCBTeW1ib2woKSwge30sIG5vbkV4aXN0aW5nU3ltYm9sKTsKK30sICJbW0Rl
ZmluZU93blByb3BlcnR5XV0iKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7IHcsIHdwIH0g
PSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworCisgICAgYXBwZW5kRm9ybVdpdGhOYW1lKHcs
ICJhIik7CisgICAgYXBwZW5kRWxlbWVudFdpdGhJZCh3LCAwKTsKKworICAgIGFzc2VydF90cnVl
KCJhIiBpbiB3cCwgc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF90cnVlKFJlZmxlY3Qu
aGFzKHdwLCAiYSIpLCBzdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X3RydWUoMCBpbiB3
cCwgc3VwcG9ydGVkSW5kZXgpOworICAgIGFzc2VydF90cnVlKFJlZmxlY3QuaGFzKHdwLCAwKSwg
c3VwcG9ydGVkSW5kZXgpOworCisgICAgYXNzZXJ0X2ZhbHNlKCJiIiBpbiB3cCwgdW5zdXBwb3J0
ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2ZhbHNlKFJlZmxlY3QuaGFzKHdwLCAxKSwgdW5zdXBw
b3J0ZWRJbmRleCk7Cit9LCAiW1tIYXNQcm9wZXJ0eV1dIik7CisKK3Rlc3QodCA9PiB7CisgICAg
Y29uc3QgeyB3LCB3cCB9ID0gY3JlYXRlV2luZG93UHJvcGVydGllcyh0KTsKKyAgICBjb25zdCBl
bEEgPSBhcHBlbmRGb3JtV2l0aE5hbWUodywgImEiKTsKKyAgICBjb25zdCBlbDAgPSBhcHBlbmRJ
ZnJhbWVXaXRoTmFtZSh3LCAwKTsKKworICAgIGFzc2VydF9lcXVhbHMod3AuYSwgZWxBLCBzdXBw
b3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFswXSwgZWwwLCBzdXBwb3J0ZWRJ
bmRleCk7CisgICAgYXNzZXJ0X2VxdWFscyh3cFtTeW1ib2wudG9TdHJpbmdUYWddLCAiV2luZG93
UHJvcGVydGllcyIsIGV4aXN0aW5nU3ltYm9sKTsKKworICAgIGFzc2VydF9lcXVhbHMod3AuYiwg
dW5kZWZpbmVkLCB1bnN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwWzFd
LCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkSW5kZXgpOworICAgIGFzc2VydF9lcXVhbHMod3BbU3lt
Ym9sLml0ZXJhdG9yXSwgdW5kZWZpbmVkLCBub25FeGlzdGluZ1N5bWJvbCk7Cit9LCAiW1tHZXRd
XSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsgdywgd3AgfSA9IGNyZWF0ZVdpbmRvd1By
b3BlcnRpZXModCk7CisKKyAgICBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3LCAiaXNQcm90b3R5cGVP
ZiIpOworICAgIGFwcGVuZEZvcm1XaXRoTmFtZSh3LCAiZGlzcGF0Y2hFdmVudCIpOworICAgIGFw
cGVuZEVsZW1lbnRXaXRoSWQodywgImEiKTsKKyAgICBhcHBlbmRFbGVtZW50V2l0aElkKHcsIDAp
OworCisgICAgdy5FdmVudFRhcmdldC5wcm90b3R5cGUuYSA9IDEwOworICAgIHcuT2JqZWN0LnBy
b3RvdHlwZVswXSA9IDIwOworCisgICAgLy8gVGhlc2UgYXJlIHNoYWRvd2VkIGJ5IHByb3BlcnRp
ZXMgaGlnaGVyIGluIFtbUHJvdG90eXBlXV0gY2hhaW4uIFNlZSBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNkZm4tbmFtZWQtcHJvcGVydHktdmlzaWJpbGl0eQorICAgIGFzc2VydF9l
cXVhbHMod3AuaXNQcm90b3R5cGVPZiwgdy5PYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2Ys
IHN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmRpc3BhdGNoRXZlbnQs
IHcuRXZlbnRUYXJnZXQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQsIHN1cHBvcnRlZE5vbkluZGV4
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmEsIDEwLCBzdXBwb3J0ZWROb25JbmRleCk7CisgICAg
YXNzZXJ0X2VxdWFscyh3cFswXSwgMjAsIHN1cHBvcnRlZEluZGV4KTsKK30sICJbW0dldF1dIChu
YW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobSkiKTsKKwordGVzdCh0ID0+IHsKKyAg
ICBjb25zdCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworICAgIGNvbnN0
IGVsQSA9IGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJhIik7CisgICAgY29uc3QgZWwwID0gYXBw
ZW5kRm9ybVdpdGhOYW1lKHcsIDApOworCisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgImEiLCBz
dXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgImIiLCB1bnN1cHBv
cnRlZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfc2V0X2ZhaWxzKHdwLCAwLCBzdXBwb3J0ZWRJbmRl
eCk7CisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgMSwgdW5zdXBwb3J0ZWRJbmRleCk7CisgICAg
YXNzZXJ0X3NldF9mYWlscyh3cCwgU3ltYm9sLnRvU3RyaW5nVGFnLCBleGlzdGluZ1N5bWJvbCk7
CisgICAgYXNzZXJ0X3NldF9mYWlscyh3cCwgU3ltYm9sKCksIG5vbkV4aXN0aW5nU3ltYm9sKTsK
KworICAgIGFzc2VydF9lcXVhbHMod3AuYSwgZWxBLCBzdXBwb3J0ZWROb25JbmRleCk7CisgICAg
YXNzZXJ0X2VxdWFscyh3cFswXSwgZWwwLCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X2Vx
dWFscyh3cC5iLCB1bmRlZmluZWQsIHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9l
cXVhbHMod3BbMV0sIHVuZGVmaW5lZCwgdW5zdXBwb3J0ZWRJbmRleCk7Cit9LCAiW1tTZXRdXSAo
ZGlyZWN0KSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsgdywgd3AgfSA9IGNyZWF0ZVdp
bmRvd1Byb3BlcnRpZXModCk7CisgICAgY29uc3QgcmVjZWl2ZXIgPSBPYmplY3QuY3JlYXRlKHdw
KTsKKworICAgIGFwcGVuZElmcmFtZVdpdGhOYW1lKHcsICJhIik7CisgICAgYXBwZW5kRWxlbWVu
dFdpdGhJZCh3LCAwKTsKKworICAgIGxldCBzZXR0ZXJUaGlzVmFsdWU7CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHcuT2JqZWN0LnByb3RvdHlwZSwgMSwgeyBzZXQoKSB7IHNldHRlclRoaXNW
YWx1ZSA9IHRoaXM7IH0gfSk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuRXZlbnRUYXJn
ZXQucHJvdG90eXBlLCAiYiIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOworCisgICAgcmVjZWl2ZXIu
YSA9IDEwOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IHJlY2VpdmVy
LmIgPSB7fTsgfSwgdW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAgcmVjZWl2ZXJbMF0gPSAyMDsK
KyAgICByZWNlaXZlclsxXSA9IHt9OworCisgICAgYXNzZXJ0X2VxdWFscyhyZWNlaXZlci5hLCAx
MCwgc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZXJbMF0sIDIw
LCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVyLmhhc093blByb3Bl
cnR5KCJiIiksIHVuc3VwcG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF9mYWxzZShyZWNlaXZl
ci5oYXNPd25Qcm9wZXJ0eSgxKSwgdW5zdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhzZXR0ZXJUaGlzVmFsdWUsIHJlY2VpdmVyLCAic2V0dGVyIHx0aGlzfCB2YWx1ZSBpcyByZWNl
aXZlciIpOworfSwgIltbU2V0XV0gKHByb3RvdHlwZSBjaGFpbikiKTsKKwordGVzdCh0ID0+IHsK
KyAgICBjb25zdCB7IHcsIHdwIH0gPSBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworICAgIGNv
bnN0IHJlY2VpdmVyID0ge307CisKKyAgICBhcHBlbmRGb3JtV2l0aE5hbWUodywgImEiKTsKKyAg
ICBhcHBlbmRJZnJhbWVXaXRoTmFtZSh3LCAwKTsKKworICAgIGxldCBzZXR0ZXJUaGlzVmFsdWU7
CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuT2JqZWN0LnByb3RvdHlwZSwgImIiLCB7IHNl
dCgpIHsgc2V0dGVyVGhpc1ZhbHVlID0gdGhpczsgfSB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkody5FdmVudFRhcmdldC5wcm90b3R5cGUsIDEsIHsgd3JpdGFibGU6IGZhbHNlIH0pOwor
CisgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQod3AsICJhIiwgMTAsIHJlY2VpdmVyKSwgc3Vw
cG9ydGVkTm9uSW5kZXgpOworICAgIGFzc2VydF90cnVlKFJlZmxlY3Quc2V0KHdwLCAwLCAyMCwg
cmVjZWl2ZXIpLCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXQo
d3AsICJiIiwge30sIHJlY2VpdmVyKSwgdW5zdXBwb3J0ZWROb25JbmRleCk7CisgICAgYXNzZXJ0
X2ZhbHNlKFJlZmxlY3Quc2V0KHdwLCAxLCB7fSwgcmVjZWl2ZXIpLCB1bnN1cHBvcnRlZEluZGV4
KTsKKworICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZXIuYSwgMTAsIHN1cHBvcnRlZE5vbkluZGV4
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVyWzBdLCAyMCwgc3VwcG9ydGVkSW5kZXgpOwor
ICAgIGFzc2VydF9mYWxzZShyZWNlaXZlci5oYXNPd25Qcm9wZXJ0eSgiYiIpLCB1bnN1cHBvcnRl
ZE5vbkluZGV4KTsKKyAgICBhc3NlcnRfZXF1YWxzKHNldHRlclRoaXNWYWx1ZSwgcmVjZWl2ZXIs
ICJzZXR0ZXIgfHRoaXN8IHZhbHVlIGlzIHJlY2VpdmVyIik7CisgICAgYXNzZXJ0X2ZhbHNlKHJl
Y2VpdmVyLmhhc093blByb3BlcnR5KDEpLCB1bnN1cHBvcnRlZEluZGV4KTsKK30sICJbW1NldF1d
IChSZWZsZWN0LnNldCkiKTsKKwordGVzdCh0ID0+IHsKKyAgICBjb25zdCB7IHcsIHdwIH0gPSBj
cmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpOworICAgIGNvbnN0IGVsQSA9IGFwcGVuZEZvcm1XaXRo
TmFtZSh3LCAiYSIpOworICAgIGNvbnN0IGVsMCA9IGFwcGVuZEVsZW1lbnRXaXRoSWQodywgMCk7
CisKKyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCAiYSIsIHN1cHBvcnRlZE5vbkluZGV4KTsK
KyAgICBhc3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCAwLCBzdXBwb3J0ZWRJbmRleCk7CisgICAgYXNz
ZXJ0X2RlbGV0ZV9mYWlscyh3cCwgImIiLCB1bnN1cHBvcnRlZE5vbkluZGV4KTsKKyAgICBhc3Nl
cnRfZGVsZXRlX2ZhaWxzKHdwLCAxLCB1bnN1cHBvcnRlZEluZGV4KTsKKyAgICBhc3NlcnRfZGVs
ZXRlX2ZhaWxzKHdwLCBTeW1ib2wudG9TdHJpbmdUYWcsIGV4aXN0aW5nU3ltYm9sKTsKKyAgICBh
c3NlcnRfZGVsZXRlX2ZhaWxzKHdwLCBTeW1ib2woImZvbyIpLCBub25FeGlzdGluZ1N5bWJvbCk7
CisKKyAgICBhc3NlcnRfZXF1YWxzKHdwLmEsIGVsQSwgc3VwcG9ydGVkTm9uSW5kZXgpOworICAg
IGFzc2VydF9lcXVhbHMod3BbMF0sIGVsMCwgc3VwcG9ydGVkSW5kZXgpOworICAgIGFzc2VydF9l
cXVhbHMod3BbU3ltYm9sLnRvU3RyaW5nVGFnXSwgIldpbmRvd1Byb3BlcnRpZXMiLCBleGlzdGlu
Z1N5bWJvbCk7Cit9LCAiW1tEZWxldGVdXSIpOworCit0ZXN0KHQgPT4geworICAgIGNvbnN0IHsg
dywgd3AgfSA9IGNyZWF0ZVdpbmRvd1Byb3BlcnRpZXModCk7CisKKyAgICBhcHBlbmRJZnJhbWVX
aXRoTmFtZSh3LCAiYSIpOworICAgIGFwcGVuZEVsZW1lbnRXaXRoSWQodywgMCk7CisgICAgYXBw
ZW5kRm9ybVdpdGhOYW1lKHcsICJiIik7CisKKyAgICBjb25zdCBmb3JJbktleXMgPSBbXTsKKyAg
ICBmb3IgKGNvbnN0IGtleSBpbiB3cCkKKyAgICAgICAgZm9ySW5LZXlzLnB1c2goa2V5KTsKKwor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZm9ySW5LZXlzLCBPYmplY3Qua2V5cyh3LkV2ZW50VGFy
Z2V0LnByb3RvdHlwZSkpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMod3ApLCBbXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhSZWZsZWN0Lm93
bktleXMod3ApLCBbU3ltYm9sLnRvU3RyaW5nVGFnXSk7Cit9LCAiW1tPd25Qcm9wZXJ0eUtleXNd
XSIpOworCitmdW5jdGlvbiBjcmVhdGVXaW5kb3dQcm9wZXJ0aWVzKHQpIHsKKyAgICBjb25zdCBp
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZChpZnJhbWUpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBpZnJhbWUucmVt
b3ZlKCk7IH0pOworCisgICAgY29uc3QgdyA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIGNv
bnN0IHdwID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHcuV2luZG93LnByb3RvdHlwZSk7CisgICAg
cmV0dXJuIHsgdywgd3AgfTsKK30KKworZnVuY3Rpb24gYXBwZW5kSWZyYW1lV2l0aE5hbWUodywg
bmFtZSkgeworICAgIGNvbnN0IGVsID0gdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICBlbC5uYW1lID0gbmFtZTsKKyAgICB3LmRvY3VtZW50LmJvZHkuYXBwZW5kKGVsKTsK
KyAgICByZXR1cm4gZWwuY29udGVudFdpbmRvdzsKK30KKworZnVuY3Rpb24gYXBwZW5kRm9ybVdp
dGhOYW1lKHcsIG5hbWUpIHsKKyAgICBjb25zdCBlbCA9IHcuZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZm9ybSIpOworICAgIGVsLm5hbWUgPSBuYW1lOworICAgIHcuZG9jdW1lbnQuYm9keS5hcHBl
bmQoZWwpOworICAgIHJldHVybiBlbDsKK30KKworZnVuY3Rpb24gYXBwZW5kRWxlbWVudFdpdGhJ
ZCh3LCBpZCkgeworICAgIGNvbnN0IGVsID0gdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICBlbC5pZCA9IGlkOworICAgIHcuZG9jdW1lbnQuYm9keS5hcHBlbmQoZWwpOworICAg
IHJldHVybiBlbDsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Byb3BfZGVzYyhkZXNjLCB2YWx1ZSwg
dGVzdEluZm8pIHsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNjLCAib2JqZWN0IiwgYCR7
dGVzdEluZm99IHR5cGVvZiBkZXNjYCk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCB2
YWx1ZSwgYCR7dGVzdEluZm99IFtbVmFsdWVdXWApOworICAgIGFzc2VydF90cnVlKGRlc2Mud3Jp
dGFibGUsIGAke3Rlc3RJbmZvfSBbW1dyaXRhYmxlXV1gKTsKKyAgICBhc3NlcnRfZmFsc2UoZGVz
Yy5lbnVtZXJhYmxlLCBgJHt0ZXN0SW5mb30gW1tFbnVtZXJhYmxlXV1gKTsKKyAgICBhc3NlcnRf
dHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgYCR7dGVzdEluZm99IFtbQ29uZmlndXJhYmxlXV1gKTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0X2RlZmluZV9vd25fcHJvcGVydHlfZmFpbHMob2JqZWN0LCBr
ZXksIGRlc2MsIHRlc3RJbmZvKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCBkZXNjKTsgfSwgdGVzdElu
Zm8pOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5
LCBkZXNjKSwgdGVzdEluZm8pOworfQorCitmdW5jdGlvbiBhc3NlcnRfc2V0X2ZhaWxzKG9iamVj
dCwga2V5LCB2YWx1ZSwgdGVzdEluZm8pIHsKKyAgICBzbG9wcHlNb2RlU2V0KG9iamVjdCwga2V5
LCB2YWx1ZSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgb2JqZWN0
W2tleV0gPSB2YWx1ZTsgfSwgdGVzdEluZm8pOworICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LnNl
dChvYmplY3QsIGtleSwgdmFsdWUpLCB0ZXN0SW5mbyk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9k
ZWxldGVfZmFpbHMob2JqZWN0LCBrZXksIHRlc3RJbmZvKSB7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IHsgZGVsZXRlIG9iamVjdFtrZXldOyB9LCB0ZXN0SW5mbyk7Cisg
ICAgYXNzZXJ0X2ZhbHNlKFJlZmxlY3QuZGVsZXRlUHJvcGVydHkob2JqZWN0LCBrZXkpLCB0ZXN0
SW5mbyk7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMv
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLmh0bWwJKHJldmlzaW9uIDI3NzgwNikK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDcgKzIzMiwxMCBAQCBhZGRUZXN0KGZ1bmN0aW9uKHdp
bikgewogICB9CiAgIGZvciAodmFyIHByb3Agb2Ygd2luZG93QWxsb3dsaXN0cy5uYW1lZEZyYW1l
cykgewogICAgIHdpbltwcm9wXTsgLy8gU2hvdWxkbid0IHRocm93LgotICAgIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luLCBwcm9wKTsgLy8gU2hvdWxkbid0IHRocm93LgorICAg
IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW4sIHByb3ApOwor
ICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAiW1tXcml0YWJsZV1dIGZvciBuYW1lZCBm
cmFtZSAiICsgU3RyaW5nKHByb3ApKTsKKyAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxl
LCAiW1tFbnVtZXJhYmxlXV0gZm9yIG5hbWVkIGZyYW1lICIgKyBTdHJpbmcocHJvcCkpOworICAg
IGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAiW1tDb25maWd1cmFibGVdXSBmb3IgbmFt
ZWQgZnJhbWUgIiArIFN0cmluZyhwcm9wKSk7CiAgICAgYXNzZXJ0X3RydWUoT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdpbiwgcHJvcCksICJoYXNPd25Qcm9wZXJ0eSBmb3Ig
IiArIFN0cmluZyhwcm9wKSk7CiAgIH0KICAgZm9yICh2YXIgcHJvcCBpbiBsb2NhdGlvbikgewpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2luZG93LW9iamVj
dC93aW5kb3ctbmFtZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3Ro
ZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2luZG93LW9iamVjdC93aW5kb3ct
bmFtZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzgwNikKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy90aGUt
d2luZG93LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRvdy1vYmplY3Qvd2luZG93LW5h
bWVkLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBA
QAogCiBQQVNTIFN0YXRpYyBuYW1lCiBQQVNTIFN0YXRpYyBpZAotRkFJTCBTdGF0aWMgbmFtZSBv
biB0aGUgcHJvdG90eXBlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxz
ZQorUEFTUyBTdGF0aWMgbmFtZSBvbiB0aGUgcHJvdG90eXBlCiBQQVNTIGNvbnN0cnVjdG9yCi1G
QUlMIGR1cGxpY2F0ZSBwcm9wZXJ0eSBuYW1lcyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxIGJ1
dCBnb3QgMAorUEFTUyBkdXBsaWNhdGUgcHJvcGVydHkgbmFtZXMKIFBBU1MgRHluYW1pYyBuYW1l
CiBQQVNTIEdob3N0IG5hbWUKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vz
cy1vbi10aGUtd2luZG93LW9iamVjdC93aW5kb3ctbmFtZWQtcHJvcGVydGllcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy90aGUtd2luZG93LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRvdy1v
YmplY3Qvd2luZG93LW5hbWVkLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMjc3ODA2KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L3RoZS13aW5kb3ctb2JqZWN0L25hbWVkLWFjY2Vzcy1vbi10aGUtd2luZG93LW9iamVjdC93aW5k
b3ctbmFtZWQtcHJvcGVydGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2MCw3IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAiY29uc3RydWN0b3IiKTsKIHRlc3QoZnVuY3Rpb24oKSB7
CiAgIHZhciBnc3AgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9m
KHdpbmRvdykpOwotICB2YXIgbmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnc3Ap
OwotICBhc3NlcnRfZXF1YWxzKG5hbWVzLmZpbHRlcigobmFtZSkgPT4gbmFtZSA9PSAiYmF6Iiku
bGVuZ3RoLCAxKTsKLQorICBhc3NlcnRfZXF1YWxzKGdzcC5iYXosIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJpZnJhbWUiKVsxXSk7CiB9LCAiZHVwbGljYXRlIHByb3BlcnR5IG5hbWVz
IikKIHZhciB0ID0gYXN5bmNfdGVzdCgiRHluYW1pYyBuYW1lIikKIHZhciB0MiA9IGFzeW5jX3Rl
c3QoIkdob3N0IG5hbWUiKQo=
</data>
<flag name="commit-queue"
          id="450332"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>