<?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>187971</bug_id>
          
          <creation_ts>2018-07-24 13:43:55 -0700</creation_ts>
          <short_desc>Move-constructing NeverDestroyed should move construct underlying object instead of copy constructing it</short_desc>
          <delta_ts>2018-08-01 17:46:10 -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>Web Template Framework</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://bugs.webkit.org/show_bug.cgi?id=188244</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444819</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 13:43:55 -0700</bug_when>
    <thetext>Consider the following code taken from attachment #336064 (bug #175784):

static const RenderStyle&amp; hackedDefaultStyle()
{
    static auto defaultStyle = makeNeverDestroyed([] {
        auto style = RenderStyle::create();
        style.setColor(Color { });
        style.setTextFillColor(Color { });
        style.setTextStrokeColor(Color { });
        style.setBackgroundColor(Color { });
        style.setTextEmphasisColor(Color { });
        return style;
    }());
    return defaultStyle;
}

This fails to compile on Mac, GTK, and WPE with an error of the form:

[[
/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/NeverDestroyed.h:55:46: error: call to implicitly-deleted copy constructor of &apos;WebCore::RenderStyle&apos;
        MaybeRelax&lt;T&gt;(new (storagePointer()) T(WTFMove(other)));
                                             ^ ~~~~~~~~~~~~~~
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource411.cpp:7:
./rendering/InlineTextBox.cpp:773:32: note: in instantiation of member function &apos;WTF::NeverDestroyed&lt;WebCore::RenderStyle&gt;::NeverDestroyed&apos; requested here
    static auto defaultStyle = makeNeverDestroyed([] {
                               ^
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource411.cpp:2:
In file included from ./rendering/ImageQualityController.cpp:32:
In file included from ./rendering/RenderBoxModelObject.h:28:
In file included from ./rendering/RenderLayerModelObject.h:25:
In file included from ./rendering/RenderElement.h:26:
In file included from ./rendering/RenderObject.h:35:
/Volumes/Data/EWS/WebKit/Source/WebCore/rendering/style/RenderStyle.h:134:5: note: copy constructor is implicitly deleted because &apos;RenderStyle&apos; has a user-declared move constructor
    RenderStyle(RenderStyle&amp;&amp;);
...
]]
&lt;https://webkit-queues.webkit.org/results/7027403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444820</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 13:45:51 -0700</bug_when>
    <thetext>The issue is that the NeverDestroyed move constructor is moving the passed NeverDestroyed object instead of the underlying storage when placement-newing T. As a result, the compiler implicitly converts the to-be-moved-from NeverDestroyed to const T&amp; and invokes T&apos;s copy constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444821</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 13:48:42 -0700</bug_when>
    <thetext>I suspect the reason this does not effect Windows is because MS Visual Studio has a more aggressive optimizer that elides the call to the NeverDestroyed move constructor. Such aggressive eliding is allowed to be performed even if the move constructor has side effects in C++14, but not required. As of C++17 such an optimization is required by all compiler writers and is consistent with my observation that I do not get a compile-time error when compiling the code in comment #0 with clang using C++17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444823</commentid>
    <comment_count>3</comment_count>
      <attachid>345709</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 13:51:30 -0700</bug_when>
    <thetext>Created attachment 345709
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444824</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-24 13:54:07 -0700</bug_when>
    <thetext>Attachment 345709 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:77:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:80:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444825</commentid>
    <comment_count>5</comment_count>
      <attachid>345710</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 13:56:59 -0700</bug_when>
    <thetext>Created attachment 345710
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444828</commentid>
    <comment_count>6</comment_count>
      <attachid>345712</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 14:03:33 -0700</bug_when>
    <thetext>Created attachment 345712
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444831</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-24 14:06:27 -0700</bug_when>
    <thetext>Attachment 345712 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:77:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:80:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444841</commentid>
    <comment_count>8</comment_count>
      <attachid>345715</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 14:47:29 -0700</bug_when>
    <thetext>Created attachment 345715
Patch and tests

Make move constructing NeverDestroyed&lt;const T&gt; work and add a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444844</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-24 14:49:47 -0700</bug_when>
    <thetext>Attachment 345715 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:77:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:80:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:81:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444845</commentid>
    <comment_count>10</comment_count>
      <attachid>345715</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-24 14:51:30 -0700</bug_when>
    <thetext>Comment on attachment 345715
Patch and tests

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

r=me

&gt; Tools/ChangeLog:9
&gt; +        Fixes an issue where move constructing a NeverDestroyed&lt;T&gt; would always copy construct T into
&gt; +        the destination storage buffer regardless of whether T is move constructable. For example:

Do we really need this changelog copied here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444846</commentid>
    <comment_count>11</comment_count>
      <attachid>345716</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 14:52:47 -0700</bug_when>
    <thetext>Created attachment 345716
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444847</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-24 14:55:05 -0700</bug_when>
    <thetext>Attachment 345716 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:74:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:77:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/MoveOnlyLifecycleLogger.cpp:80:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:54:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/NeverDestroyed.cpp:81:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444849</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 15:01:29 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        Fixes an issue where move constructing a NeverDestroyed&lt;T&gt; would always copy construct T into
&gt; &gt; +        the destination storage buffer regardless of whether T is move constructable. For example:
&gt; 
&gt; Do we really need this changelog copied here too?

Will consider writing a more specific description for Tools/ChangeLog. I do not see an issue with duplicating the ChangeLog description in multiple ChangeLog files so long as it is descriptive. I use script commit-log-editor as my Git editor (this is part of the standard WebKit OpenSource Project setup). So, the commit message when I land the change will not contain duplication as commit-log-editor automatically collapses duplicate ChangeLog descriptions to create the commit message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444876</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-24 16:30:08 -0700</bug_when>
    <thetext>Committed r234179: &lt;https://trac.webkit.org/changeset/234179&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444878</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-24 16:31:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/42561513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447025</commentid>
    <comment_count>16</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-01 15:27:26 -0700</bug_when>
    <thetext>It turns out that the two tests checking for...
&gt; &quot;construct(name) set-name(x) move-construct(x) destruct(&lt;default&gt;) &quot;

...are failed by MSVC in Debug mode, where &quot;move-construct(x) destruct(&lt;default&gt;) &quot; appears an extra time.
(https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Debug%20%28Tests%29/builds/703/steps/run-api-tests/logs/stdio)

This seems like a valid thing for a compiler to do when optimizations are off though, given that there&apos;s an immediately-invoked lambda followed by a makeNeverDestroyed call.

What do you think we should do about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447050</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-01 17:26:50 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #16)
&gt; It turns out that the two tests checking for...
&gt; &gt; &quot;construct(name) set-name(x) move-construct(x) destruct(&lt;default&gt;) &quot;
&gt; 
&gt; ...are failed by MSVC in Debug mode, where &quot;move-construct(x)
&gt; destruct(&lt;default&gt;) &quot; appears an extra time.
&gt; (https://build.webkit.org/builders/WinCairo%2064-
&gt; bit%20WKL%20Debug%20%28Tests%29/builds/703/steps/run-api-tests/logs/stdio)
&gt; 
&gt; This seems like a valid thing for a compiler to do when optimizations are
&gt; off though, given that there&apos;s an immediately-invoked lambda followed by a
&gt; makeNeverDestroyed call.
&gt; 
&gt; What do you think we should do about this?

Can we add a compiler-specific result for this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447064</commentid>
    <comment_count>18</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-01 17:46:10 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #17)
&gt; (In reply to Ross Kirsling from comment #16)
&gt; &gt; It turns out that the two tests checking for...
&gt; &gt; &gt; &quot;construct(name) set-name(x) move-construct(x) destruct(&lt;default&gt;) &quot;
&gt; &gt; 
&gt; &gt; ...are failed by MSVC in Debug mode, where &quot;move-construct(x)
&gt; &gt; destruct(&lt;default&gt;) &quot; appears an extra time.
&gt; &gt; (https://build.webkit.org/builders/WinCairo%2064-
&gt; &gt; bit%20WKL%20Debug%20%28Tests%29/builds/703/steps/run-api-tests/logs/stdio)
&gt; &gt; 
&gt; &gt; This seems like a valid thing for a compiler to do when optimizations are
&gt; &gt; off though, given that there&apos;s an immediately-invoked lambda followed by a
&gt; &gt; makeNeverDestroyed call.
&gt; &gt; 
&gt; &gt; What do you think we should do about this?
&gt; 
&gt; Can we add a compiler-specific result for this test?

Works for me! Patch submitted: https://bugs.webkit.org/show_bug.cgi?id=188244</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345709</attachid>
            <date>2018-07-24 13:51:30 -0700</date>
            <delta_ts>2018-07-24 13:56:57 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-187971-20180724135129.patch</filename>
            <type>text/plain</type>
            <size>16963</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjZDZkNTNmOTY0OWUzZmZlNTI4ZGI4
OGMyY2U2ODMxNDM3NjJkNDMuLmI1Nzc4NjI0ZGYzZDRkZDA4MGQzYzY1OTZjZmM5NzZhNGFlMDcy
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVk
IHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkg
Y29uc3RydWN0aW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODc5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVz
dHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBjb3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1v
dmUgY29uc3RydWN0YWJsZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkgfTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4
J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBjb25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAg
ICBDdXJyZW50bHkgdGhlIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUg
TmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBpdCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNv
bnN0IFQmIGJ5IHdheSBvZiBjb25zdCBUJiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBB
cyBhIHJlc3VsdCB0aGUgY29tcGlsZXIgcGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQg
dG8gaW52b2tlIGluc3RlYWQgb2YgZXZhbHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJl
IG1vdmUgY29uc3RydWN0ZWQuIEluc3RlYWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgp
IHRoZSB1bmRlcmx5aW5nIFQgc28gdGhhdAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29z
ZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAg
ICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8g
aW52b2tlIG1ha2VOZXZlckRlc3Ryb3llZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxl
KToKKworICAgICAgICBzdGF0aWMgYXV0byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChbXSB7CisgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7
CisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJE
ZXN0cm95ZWQ6Ok5ldmVyRGVzdHJveWVkKToKKwogMjAxOC0wNi0wNiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlIHNob3VsZCBzdXBwb3J0IENyZWF0ZVRoaXMg
aW4gdGhlIEZUTApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBi
L1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggYjIzYWYwMDA4YjU1NmMxOGMy
YWNlYmFlNDk4YTJmODg0NjJhOGQxZC4uODYxMTBhMThiODIzMjYxNGQ3MDA2NmJkNGExYzg1MDRl
ZjJkMDhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIE5ldmVyRGVzdHJveWVkKE5ldmVyRGVzdHJveWVkJiYgb3RoZXIpCiAgICAgewot
ICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZNb3ZlKG90
aGVyKSkpOworICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChX
VEZNb3ZlKG90aGVyLmdldCgpKSkpOwogICAgIH0KIAogICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1
cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA1NjVhYzgzZDZhNzNlOGQ5MmNlZGZhYWVjZTBmYmM5NzhmNjU2
N2YzLi5iZTVhMWU1MzhiMzQ0MTEwOTAzYzg4NTM5ZDQ5MDA0NWM3YzUyYmNlIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVkIHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1
bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkgY29uc3RydWN0aW5nIGl0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3
aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVzdHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBj
b3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVm
ZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1vdmUgY29uc3RydWN0YWJsZS4gRm9yIGV4
YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+
IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkg
fTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBj
b25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAgICBDdXJyZW50bHkgdGhlIE5ldmVyRGVz
dHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVm
ZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUgTmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBp
dCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNvbnN0IFQmIGJ5IHdheSBvZiBjb25zdCBU
JiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBBcyBhIHJlc3VsdCB0aGUgY29tcGlsZXIg
cGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQgdG8gaW52b2tlIGluc3RlYWQgb2YgZXZh
bHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJlIG1vdmUgY29uc3RydWN0ZWQuIEluc3Rl
YWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgpIHRoZSB1bmRlcmx5aW5nIFQgc28gdGhh
dAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29zZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1
Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAgICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0
aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8gaW52b2tlIG1ha2VOZXZlckRlc3Ryb3ll
ZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBh
IG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxlKToKKworICAgICAgICBzdGF0aWMgYXV0
byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgICAgICBhdXRv
IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7CisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHA6IEFkZGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Ok1vdmVP
bmx5TGlmZWN5Y2xlTG9nZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1vdmVPbmx5TGlm
ZWN5Y2xlTG9nZ2VyOjp+TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6c2V0TmFtZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAxOC0wNy0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggbGxkYiBzdW1tYXJpemVycyBmb3IgSGFzaE1hcHMgYW5kIEhh
c2hTZXRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAyNDk3ZjhiZjU1ODM0NzAyOGI1Mzg0
Nzc3YmZmOTQ2NmRiZjk5MTUuLmYyMjBkMzI4ZjQxMjAyOTEwYTQ0ODg2MmVlNTQyMmE3ZTJkODFj
NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDcsNiArNzQ3LDcgQEAKIAkJQ0U0RDVE
RTcxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0RDVERTUxRjY3NDNCQTAwNzJD
RkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovOyB9OwogCQlDRTZFODFBMDIwQTY5MzVG
MDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxOUYyMEE2OTM1RjAwRTJDODBGIC8qIFNldFRp
bWVvdXRGdW5jdGlvbi5tbSAqLzsgfTsKIAkJQ0U2RTgxQTQyMEE5MzNENTAwRTJDODBGIC8qIHNl
dC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxQTMyMEE5MzNCODAwRTJDODBGIC8qIHNldC10aW1l
b3V0LWZ1bmN0aW9uLmh0bWwgKi87IH07CisJCUNFNzg3MDVGMjEwN0FCOTgwMDUzQUM2NyAvKiBN
b3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTc4NzA1RDIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXIuY3BwICovOyB9OwogCQlDRUE2Q0YyODE5Q0NGNjlEMDA2NEY1QTcgLyogb3Bl
bi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBNkNGMjcxOUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5k
LWNsb3NlLXdpbmRvdy5odG1sICovOyB9OwogCQlDRUE3RjU3RDIwODk2MjRCMDA3OEVGNkUgLyog
RGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBN0Y1N0IyMDg5NUY1QjAw
NzhFRjZFIC8qIERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZS5t
bSAqLzsgfTsKIAkJQ0VCQUJENDkxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3VsZC1vcGVuLWV4dGVy
bmFsLXNjaGVtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRUJBQkQ0ODFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0
ZXJuYWwtc2NoZW1lcy5odG1sICovOyB9OwpAQCAtMTk0Miw2ICsxOTQzLDggQEAKIAkJQ0U1MEQ4
QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPcHRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2V0VGltZW91dEZ1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQt
ZnVuY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJzZXQtdGltZW91dC1m
dW5jdGlvbi5odG1sIjsgcGF0aCA9ICJpb3Mvc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCI7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0U3ODcwNUMyMTA3QUI4QzAwNTNBQzY3IC8q
IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3ZlT25seUxpZmVjeWNs
ZUxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTZDRjIyMTlDQ0Y1
QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBPcGVuQW5kQ2xvc2VXaW5kb3cubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFQTZDRjI3MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9z
ZS13aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTdGNTdCMjA4OTVGNUIwMDc4RUY2RSAvKiBE
aWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFu
Y2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTIwLDYgKzI5MjMsOCBAQAog
CQkJCTUzMUMxRDhEMURGOEVGNzIwMDZFOTc5RiAvKiBMRUJEZWNvZGVyLmNwcCAqLywKIAkJCQlB
NTdENTRGNzFGMzM5N0I0MDBBOTdBQTcgLyogTGlmZWN5Y2xlTG9nZ2VyLmNwcCAqLywKIAkJCQlB
NTdENTRGODFGMzM5N0I0MDBBOTdBQTcgLyogTGlmZWN5Y2xlTG9nZ2VyLmggKi8sCisJCQkJQ0U3
ODcwNUQyMTA3QUI4QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCAqLywK
KwkJCQlDRTc4NzA1QzIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIu
aCAqLywKIAkJCQk5M0UyQzU1NDFGRDMyMDQxMDBFMURGNkEgLyogTGluZUVuZGluZy5jcHAgKi8s
CiAJCQkJMjYzMDBCMTcxNjc1NUNEOTAwNjY4ODZEIC8qIExpc3RIYXNoU2V0LmNwcCAqLywKIAkJ
CQkwRkZDNDVBNDFCNzNFQkUyMDA4NUJENjIgLyogTG9jay5jcHAgKi8sCkBAIC0zNTA5LDYgKzM1
MTQsNyBAQAogCQkJCTdDODNERjAxMUQwQTU5MEMwMEZFQkNGMyAvKiBPcHRpb25hbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTc3QkFBMzFEOUFGRkZDMDA1RkM1NjggLyogT3B0aW9uU2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09iamVj
dFB0ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRTc4NzA1RjIxMDdBQjk4MDA1M0FDNjcgLyog
TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNTkx
RDBBNTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUw
NUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFMDVGQUVDMUZEQjUxMEEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlm
ZWN5Y2xlTG9nZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5
TGlmZWN5Y2xlTG9nZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWNjMjk5MzliNzA1ZGQ5OTAxYTk5OWI2
MzM5NDkxY2EwMTZhYWVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlci5oIgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK01vdmVPbmx5
TGlmZWN5Y2xlTG9nZ2VyOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcigpCit7CisgICAgbG9nKCkg
PDwgImNvbnN0cnVjdCgiIDw8IG5hbWUgPDwgIikgIjsKK30KKworTW92ZU9ubHlMaWZlY3ljbGVM
b2dnZXI6Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBu
YW1lIHsgbmFtZSB9Cit7CisgICAgbG9nKCkgPDwgImNvbnN0cnVjdCgiIDw8IG5hbWUgPDwgIikg
IjsKK30KKworTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6On5Nb3ZlT25seUxpZmVjeWNsZUxvZ2dl
cigpCit7CisgICAgbG9nKCkgPDwgImRlc3RydWN0KCIgPDwgbmFtZSA8PCAiKSAiOworfQorCitN
b3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoTW92ZU9ubHlM
aWZlY3ljbGVMb2dnZXImJiBvdGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobmFtZSwgb3RoZXIubmFt
ZSk7CisgICAgbG9nKCkgPDwgIm1vdmUtY29uc3RydWN0KCIgPDwgbmFtZSA8PCAiKSAiOworfQor
CitNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciYgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Om9wZXJh
dG9yPShNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciYmIG90aGVyKQoreworICAgIHN0ZDo6c3dhcChu
YW1lLCBvdGhlci5uYW1lKTsKKyAgICBsb2coKSA8PCAibW92ZS1hc3NpZ24oIiA8PCBuYW1lIDw8
ICIpICI7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIE1vdmVPbmx5TGlmZWN5Y2xlTG9n
Z2VyOjpzZXROYW1lKGNvbnN0IGNoYXIqIG5ld05hbWUpCit7CisgICAgbmFtZSA9IG5ld05hbWU7
CisgICAgbG9nKCkgPDwgInNldC1uYW1lKCIgPDwgbmFtZSA8PCAiKSAiOworfQorCitURVNUKE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLCBCYXNpYykKK3sKKyAgICB7IE1vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyIGw7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdCg8ZGVmYXVsdD4pIGRlc3Ry
dWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeyBNb3ZlT25s
eUxpZmVjeWNsZUxvZ2dlciBsKCJhIik7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChh
KSBkZXN0cnVjdChhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7IE1vdmVPbmx5
TGlmZWN5Y2xlTG9nZ2VyIGwoImQiKTsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbDIoV1RGTW92
ZShsKSk7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChkKSBtb3ZlLWNvbnN0cnVjdChk
KSBkZXN0cnVjdChkKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgiZSIpOyBNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlciBsMjsgbDIgPSBXVEZNb3ZlKGwpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25z
dHJ1Y3QoZSkgY29uc3RydWN0KDxkZWZhdWx0PikgbW92ZS1hc3NpZ24oZSkgZGVzdHJ1Y3QoZSkg
ZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7IE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwoImYiKTsgbC5zZXROYW1lKCJ4Iik7IH0KKyAgICBBU1NF
UlRfU1RSRVEoImNvbnN0cnVjdChmKSBzZXQtbmFtZSh4KSBkZXN0cnVjdCh4KSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7IHN0YXRpYyBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBs
KCJnIik7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChnKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwY2FjMTM4MmFlOTZh
NjA0MDk5ZjlmYTZjNWM0NjBhOWQ0ZWYwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTG9nZ2Vy
LmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RydWN0IE1vdmVPbmx5TGlmZWN5
Y2xlTG9nZ2VyIHsKKyAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcigpOworICAgIE1vdmVPbmx5
TGlmZWN5Y2xlTG9nZ2VyKGNvbnN0IGNoYXIqKTsKKworICAgIH5Nb3ZlT25seUxpZmVjeWNsZUxv
Z2dlcigpOworCisgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoTW92ZU9ubHlMaWZlY3ljbGVM
b2dnZXImJik7CisgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXImIG9wZXJhdG9yPShNb3ZlT25s
eUxpZmVjeWNsZUxvZ2dlciYmKTsKKworICAgIHZvaWQgc2V0TmFtZShjb25zdCBjaGFyKik7CisK
KyAgICBjb25zdCBjaGFyKiBuYW1lIHsgIjxkZWZhdWx0PiIgfTsKK307CisKK30KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcAppbmRleCA3MDI5
NTNkYTFjMzA1MzNkMTk3M2ViZDAwYmZjZGE2NGE4MzNlYWE4Li40MDQ5MzgzZjUxOWM2NjEyZTky
ODhhODk3ZTRhNWU4MTUwMjI2ZDAxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKICNpbmNsdWRlICJMaWZlY3ljbGVMb2dnZXIuaCIKKyNpbmNsdWRlICJNb3ZlT25s
eUxpZmVjeWNsZUxvZ2dlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDksNiArNTAsMzkgQEAgVEVTVChXVEZfTmV2ZXJE
ZXN0cm95ZWQsIENvbnN0cnVjdCkKICAgICAgICAgQVNTRVJUX1NUUkVRKHguZ2V0KCkubmFtZSwg
Im5hbWUiKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgY29weS1j
b25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUoeCkgZGVzdHJ1Y3QoeCkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4
IHsgW10geyByZXR1cm4gTGlmZWN5Y2xlTG9nZ2VyIHsgIm5hbWUiIH07IH0oKSB9OyBVTlVTRURf
UEFSQU0oeCk7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1lKSBtb3ZlLWNvbnN0
cnVjdChuYW1lKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsKKyAgICAgICAgc3RhdGljIGF1dG8geCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgICAgICAgICBMaWZlY3ljbGVMb2dnZXIgbCB7ICJuYW1lIiB9OworICAgICAgICAgICAg
bC5zZXROYW1lKCJ4Iik7CisgICAgICAgICAgICByZXR1cm4gbDsKKyAgICAgICAgfSgpKTsKKyAg
ICAgICAgQVNTRVJUX1NUUkVRKHguZ2V0KCkubmFtZSwgIngiKTsKKyAgICB9CisgICAgQVNTRVJU
X1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUoeCkgbW92ZS1jb25zdHJ1Y3QoeCkgZGVz
dHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHg7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHkgeyBXVEZNb3ZlKHgpIH07Cisg
ICAgICAgIFVOVVNFRF9QQVJBTSh5KTsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1
Y3QoPGRlZmF1bHQ+KSBtb3ZlLWNvbnN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKKworICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyPiB4IHsgW10geyByZXR1cm4gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIg
fTsgfSgpIH07IFVOVVNFRF9QQVJBTSh4KTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0
KG5hbWUpIG1vdmUtY29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwg
eyAibmFtZSIgfTsKKyAgICAgICAgICAgIGwuc2V0TmFtZSgieCIpOworICAgICAgICAgICAgcmV0
dXJuIGw7CisgICAgICAgIH0oKSk7CisgICAgICAgIFVOVVNFRF9QQVJBTSh4KTsKKyAgICB9Cisg
ICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUoeCkgbW92ZS1jb25zdHJ1
Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAK
IHN0YXRpYyBjb25zdCBWZWN0b3I8aW50PiYgbGlzdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345710</attachid>
            <date>2018-07-24 13:56:59 -0700</date>
            <delta_ts>2018-07-24 14:03:31 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-187971-20180724135658.patch</filename>
            <type>text/plain</type>
            <size>19355</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjZDZkNTNmOTY0OWUzZmZlNTI4ZGI4
OGMyY2U2ODMxNDM3NjJkNDMuLmI1Nzc4NjI0ZGYzZDRkZDA4MGQzYzY1OTZjZmM5NzZhNGFlMDcy
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVk
IHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkg
Y29uc3RydWN0aW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODc5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVz
dHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBjb3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1v
dmUgY29uc3RydWN0YWJsZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkgfTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4
J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBjb25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAg
ICBDdXJyZW50bHkgdGhlIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUg
TmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBpdCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNv
bnN0IFQmIGJ5IHdheSBvZiBjb25zdCBUJiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBB
cyBhIHJlc3VsdCB0aGUgY29tcGlsZXIgcGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQg
dG8gaW52b2tlIGluc3RlYWQgb2YgZXZhbHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJl
IG1vdmUgY29uc3RydWN0ZWQuIEluc3RlYWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgp
IHRoZSB1bmRlcmx5aW5nIFQgc28gdGhhdAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29z
ZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAg
ICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8g
aW52b2tlIG1ha2VOZXZlckRlc3Ryb3llZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxl
KToKKworICAgICAgICBzdGF0aWMgYXV0byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChbXSB7CisgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7
CisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJE
ZXN0cm95ZWQ6Ok5ldmVyRGVzdHJveWVkKToKKwogMjAxOC0wNi0wNiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlIHNob3VsZCBzdXBwb3J0IENyZWF0ZVRoaXMg
aW4gdGhlIEZUTApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBi
L1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggYjIzYWYwMDA4YjU1NmMxOGMy
YWNlYmFlNDk4YTJmODg0NjJhOGQxZC4uODYxMTBhMThiODIzMjYxNGQ3MDA2NmJkNGExYzg1MDRl
ZjJkMDhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIE5ldmVyRGVzdHJveWVkKE5ldmVyRGVzdHJveWVkJiYgb3RoZXIpCiAgICAgewot
ICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZNb3ZlKG90
aGVyKSkpOworICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChX
VEZNb3ZlKG90aGVyLmdldCgpKSkpOwogICAgIH0KIAogICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1
cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA1NjVhYzgzZDZhNzNlOGQ5MmNlZGZhYWVjZTBmYmM5NzhmNjU2
N2YzLi4xMjJlZjA4ZWJlNzY0NWIxZGJhNjM2ZTgyYTk0OTc4ZmQ3NjhmZmM2IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVkIHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1
bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkgY29uc3RydWN0aW5nIGl0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3
aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVzdHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBj
b3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVm
ZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1vdmUgY29uc3RydWN0YWJsZS4gRm9yIGV4
YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+
IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkg
fTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBj
b25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAgICBDdXJyZW50bHkgdGhlIE5ldmVyRGVz
dHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVm
ZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUgTmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBp
dCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNvbnN0IFQmIGJ5IHdheSBvZiBjb25zdCBU
JiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBBcyBhIHJlc3VsdCB0aGUgY29tcGlsZXIg
cGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQgdG8gaW52b2tlIGluc3RlYWQgb2YgZXZh
bHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJlIG1vdmUgY29uc3RydWN0ZWQuIEluc3Rl
YWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgpIHRoZSB1bmRlcmx5aW5nIFQgc28gdGhh
dAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29zZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1
Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAgICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0
aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8gaW52b2tlIG1ha2VOZXZlckRlc3Ryb3ll
ZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBh
IG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxlKToKKworICAgICAgICBzdGF0aWMgYXV0
byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgICAgICBhdXRv
IHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7CisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6On5N
b3ZlT25seUxpZmVjeWNsZUxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNb3ZlT25s
eUxpZmVjeWNsZUxvZ2dlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpzZXROYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5
Y2xlTG9nZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05l
dmVyRGVzdHJveWVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4
LTA3LTIxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBsbGRiIHN1bW1hcml6ZXJzIGZvciBIYXNoTWFwcyBhbmQgSGFzaFNldHMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDJlN2QxYzNkODlhMzI1ZWI1ZDlhZWY5NWU4MWZkZmM3
MjMzYWMwZDcuLjc1NmY0M2M2OTc3ZDNkNjVmMTZmNWFjM2FjMTkxZjYyYjBjMjgyNDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTE3LDYgKzExNyw3IEBAIHNldChUZXN0V1RG
X1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9NZXRhQWxsb2NhdG9yLmNwcAorICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDI0OTdmOGJmNTU4MzQ3MDI4YjUzODQ3NzdiZmY5NDY2ZGJmOTkxNS4uOTIxNTY5
N2U3YzI0ZGYwOTZhNDU4MWI3OWYzODI0MGUxYmZlM2U0MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTc0Nyw2ICs3NDcsNyBAQAogCQlDRTRENURFNzFGNjc0M0JBMDA3MkNGQzYgLyogU3Ry
aW5nV2l0aERpcmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTRENURFNTFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlv
bi5jcHAgKi87IH07CiAJCUNFNkU4MUEwMjBBNjkzNUYwMEUyQzgwRiAvKiBTZXRUaW1lb3V0RnVu
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tICovOyB9Owog
CQlDRTZFODFBNDIwQTkzM0Q1MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZF
ODFBMzIwQTkzM0I4MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLzsgfTsK
KwkJQ0U3ODcwNUYyMTA3QUI5ODAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzg3MDVE
MjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgKi87IH07CiAJ
CUNFQTZDRjI4MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUE2
Q0YyNzE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgKi87IH07
CiAJCUNFQTdGNTdEMjA4OTYyNEIwMDc4RUY2RSAvKiBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJv
bmdQYXNzd29yZEFwcGVhcmFuY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRUE3RjU3QjIwODk1RjVCMDA3OEVGNkUgLyogRGlkUmVzaWduSW5wdXRF
bGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlLm1tICovOyB9OwogCQlDRUJBQkQ0OTFCNzE2
ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkFCRDQ4MUI3
MTY4N0MwMDUxMjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgKi87IH07
CkBAIC0xOTQyLDYgKzE5NDMsOCBAQAogCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0
aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvblNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MTlGMjBBNjkzNUYwMEUy
QzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXRU
aW1lb3V0RnVuY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MUEz
MjBBOTMzQjgwMEUyQzgwRiAvKiBzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBuYW1lID0gInNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwiOyBwYXRoID0gImlv
cy9zZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQlDRTc4NzA1QzIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3ODcwNUQyMTA3QUI4QzAwNTNB
QzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9z
ZVdpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9wZW5B
bmRDbG9zZVdpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBNkNGMjcx
OUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
Im9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VBN0Y1N0IyMDg5NUY1QjAwNzhFRjZFIC8qIERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9u
Z1Bhc3N3b3JkQXBwZWFyYW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpZFJlc2lnbklu
cHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI1NzQsOSArMjU3Nyw5IEBACiAJCQkJOTk4NEZBQ0QxQ0ZGQjAzODAwOEQx
OThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLywKIAkJCQlGNDREMDY0NDFGMzk1QzBEMDAxQTBF
MjkgLyogZWRpdG9yLXN0YXRlLXRlc3QtaGFybmVzcy5odG1sICovLAogCQkJCTUxQzhFMUE4MUYy
N0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LnBsaXN0ICovLAotCQkJCUNEQTI5QjJBMjBGRDM0NEUwMEYxNUNFRCAvKiBFeGl0RnVsbHNjcmVl
bk9uRW50ZXJQaVAuaHRtbCAqLywKIAkJCQlGNEMyQUIyMTFERDZEOTQxMDBFMDZENUIgLyogZW5v
cm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovLAogCQkJCUY0MDdGRTM4MUYxRDBERTYwMDE3
Q0YyNSAvKiBlbm9ybW91cy5zdmcgKi8sCisJCQkJQ0RBMjlCMkEyMEZEMzQ0RTAwRjE1Q0VEIC8q
IEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5odG1sICovLAogCQkJCUY0MUFCOTlCMUVGNDY5MkMw
MDgzRkEwOCAvKiBmaWxlLXVwbG9hZGluZy5odG1sICovLAogCQkJCUExN0VBQzU0MjA4MzA1NkUw
MDg0QjQxQiAvKiBmaW5kLnBkZiAqLywKIAkJCQlGNDNFM0JDMDIwREFEQjgwMDBBNEU3RUQgLyog
Zml4ZWQtbmF2LWJhci5odG1sICovLApAQCAtMjkzMCw2ICsyOTMzLDggQEAKIAkJCQlDRDU0OTdC
MzE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0MTAz
NEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJOTNBNDI3QUMxODBEQTYw
RjAwQ0QyNEQ3IC8qIE1vdmVPbmx5LmggKi8sCisJCQkJQ0U3ODcwNUQyMTA3QUI4QzAwNTNBQzY3
IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCAqLywKKwkJCQlDRTc4NzA1QzIxMDdBQjhD
MDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCAqLywKIAkJCQlGRUI2Rjc0RTFC
MkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovLAogCQkJCUE1N0Q1NEYyMUYzMzhDMzYw
MEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgKi8sCiAJCQkJMUFGREU2NTQxOTUzQjJDMDAw
QzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKQEAgLTM1MDQsNiArMzUwOSw3IEBACiAJCQkJN0M4
M0RFRUYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REVGMTFEMEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNFNzg3MDVGMjEwN0FCOTgwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxv
Z2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGRTFEMEE1OTBDMDBGRUJDRjMgLyog
TmFrZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDU0RjMxRjMzOEMzNjAwQTk3QUE3
IC8qIE5ldmVyRGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjAxMUQwQTU5
MEMwMEZFQkNGMyAvKiBPcHRpb25hbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NjcsNiArMzY3
Myw3IEBACiAJCQkJN0NDRTdFRUYxQTQxMUFFNjAwNDQ3QzRDIC8qIEVwaGVtZXJhbFNlc3Npb25Q
dXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VG
MDFBNDExQUU2MDA0NDdDNEMgLyogRXZhbHVhdGVKYXZhU2NyaXB0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDNzk2NDEwMUVCMDI3OEQwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREEyOUIyOTIwRkQyQTk5MDBGMTVDRUQgLyogRXhpdEZ1bGxzY3Jl
ZW5PbkVudGVyUGlQLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1MTE4MTAxREIxQUU0MDAwMTc2
MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjExQTQx
MUFFNjAwNDQ3QzRDIC8qIEZhaWxlZExvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EzMkQ3
NEExRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzgxNCw3ICszODIxLDYgQEAKIAkJCQk1MThDMTE1MzIwNUIwNTA0MDAxRkY0QUUgLyogUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDMTFEMEE2NTJG
MDBGRUJDRjMgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VDODFBNDExQTdFMDA0NDdDNEMgLyogUHVibGljU3VmZml4Lm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQ0RBMjlCMjkyMEZEMkE5OTAwRjE1Q0VEIC8qIEV4aXRGdWxsc2NyZWVuT25FbnRl
clBpUC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEMyMUQwQTY1MzUwMEZFQkNGMyAvKiBR
dWlja0xvb2subW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMg
LyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzMx
RDBBNjUzQTAwRkVCQ0YzIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVj
eWNsZUxvZ2dlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVjYzI5OTM5YjcwNWRkOTkwMWE5OTliNjMz
OTQ5MWNhMDE2YWFlZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitNb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoKQoreworICAgIGxvZygpIDw8
ICJjb25zdHJ1Y3QoIiA8PCBuYW1lIDw8ICIpICI7Cit9CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9n
Z2VyOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKQorICAgIDogbmFt
ZSB7IG5hbWUgfQoreworICAgIGxvZygpIDw8ICJjb25zdHJ1Y3QoIiA8PCBuYW1lIDw8ICIpICI7
Cit9CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjp+TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIo
KQoreworICAgIGxvZygpIDw8ICJkZXN0cnVjdCgiIDw8IG5hbWUgPDwgIikgIjsKK30KKworTW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKE1vdmVPbmx5TGlm
ZWN5Y2xlTG9nZ2VyJiYgb3RoZXIpCit7CisgICAgc3RkOjpzd2FwKG5hbWUsIG90aGVyLm5hbWUp
OworICAgIGxvZygpIDw8ICJtb3ZlLWNvbnN0cnVjdCgiIDw8IG5hbWUgPDwgIikgIjsKK30KKwor
TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXImIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpvcGVyYXRv
cj0oTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXImJiBvdGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobmFt
ZSwgb3RoZXIubmFtZSk7CisgICAgbG9nKCkgPDwgIm1vdmUtYXNzaWduKCIgPDwgbmFtZSA8PCAi
KSAiOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBNb3ZlT25seUxpZmVjeWNsZUxvZ2dl
cjo6c2V0TmFtZShjb25zdCBjaGFyKiBuZXdOYW1lKQoreworICAgIG5hbWUgPSBuZXdOYW1lOwor
ICAgIGxvZygpIDw8ICJzZXQtbmFtZSgiIDw8IG5hbWUgPDwgIikgIjsKK30KKworVEVTVChNb3Zl
T25seUxpZmVjeWNsZUxvZ2dlciwgQmFzaWMpCit7CisgICAgeyBNb3ZlT25seUxpZmVjeWNsZUxv
Z2dlciBsOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoPGRlZmF1bHQ+KSBkZXN0cnVj
dCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsgTW92ZU9ubHlM
aWZlY3ljbGVMb2dnZXIgbCgiYSIpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoYSkg
ZGVzdHJ1Y3QoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeyBNb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlciBsKCJkIik7IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwyKFdURk1vdmUo
bCkpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoZCkgbW92ZS1jb25zdHJ1Y3QoZCkg
ZGVzdHJ1Y3QoZCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwoImUiKTsgTW92ZU9ubHlMaWZlY3lj
bGVMb2dnZXIgbDI7IGwyID0gV1RGTW92ZShsKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3Ry
dWN0KGUpIGNvbnN0cnVjdCg8ZGVmYXVsdD4pIG1vdmUtYXNzaWduKGUpIGRlc3RydWN0KGUpIGRl
c3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeyBNb3Zl
T25seUxpZmVjeWNsZUxvZ2dlciBsKCJmIik7IGwuc2V0TmFtZSgieCIpOyB9CisgICAgQVNTRVJU
X1NUUkVRKCJjb25zdHJ1Y3QoZikgc2V0LW5hbWUoeCkgZGVzdHJ1Y3QoeCkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeyBzdGF0aWMgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgi
ZyIpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoZykgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGNhYzEzODJhZTk2YTYw
NDA5OWY5ZmE2YzVjNDYwYTlkNGVmMDJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxvZ2dlci5o
IgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0cnVjdCBNb3ZlT25seUxpZmVjeWNs
ZUxvZ2dlciB7CisgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoKTsKKyAgICBNb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlcihjb25zdCBjaGFyKik7CisKKyAgICB+TW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIoKTsKKworICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKE1vdmVPbmx5TGlmZWN5Y2xlTG9n
Z2VyJiYpOworICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiBvcGVyYXRvcj0oTW92ZU9ubHlM
aWZlY3ljbGVMb2dnZXImJik7CisKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgY2hhciopOworCisg
ICAgY29uc3QgY2hhciogbmFtZSB7ICI8ZGVmYXVsdD4iIH07Cit9OworCit9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAKaW5kZXggNzAyOTUz
ZGExYzMwNTMzZDE5NzNlYmQwMGJmY2RhNjRhODMzZWFhOC4uNDA0OTM4M2Y1MTljNjYxMmU5Mjg4
YTg5N2U0YTVlODE1MDIyNmQwMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL05ldmVyRGVzdHJveWVkLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCiAjaW5jbHVkZSAiTGlmZWN5Y2xlTG9nZ2VyLmgiCisjaW5jbHVkZSAiTW92ZU9ubHlM
aWZlY3ljbGVMb2dnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ5LDYgKzUwLDM5IEBAIFRFU1QoV1RGX05ldmVyRGVz
dHJveWVkLCBDb25zdHJ1Y3QpCiAgICAgICAgIEFTU0VSVF9TVFJFUSh4LmdldCgpLm5hbWUsICJu
YW1lIik7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIGNvcHktY29u
c3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIGRlc3RydWN0KHgpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dlcj4geCB7
IFtdIHsgcmV0dXJuIExpZmVjeWNsZUxvZ2dlciB7ICJuYW1lIiB9OyB9KCkgfTsgVU5VU0VEX1BB
UkFNKHgpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgbW92ZS1jb25zdHJ1
Y3QobmFtZSkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIHN0YXRpYyBhdXRvIHggPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICAgICAgTGlmZWN5Y2xlTG9nZ2VyIGwgeyAibmFtZSIgfTsKKyAgICAgICAgICAgIGwu
c2V0TmFtZSgieCIpOworICAgICAgICAgICAgcmV0dXJuIGw7CisgICAgICAgIH0oKSk7CisgICAg
ICAgIEFTU0VSVF9TVFJFUSh4LmdldCgpLm5hbWUsICJ4Iik7CisgICAgfQorICAgIEFTU0VSVF9T
VFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3Ry
dWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4OworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB5IHsgV1RGTW92ZSh4KSB9OworICAg
ICAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0
KDxkZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CisKKyAgICB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb3ZlT25seUxpZmVjeWNsZUxv
Z2dlcj4geCB7IFtdIHsgcmV0dXJuIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIHsgIm5hbWUiIH07
IH0oKSB9OyBVTlVTRURfUEFSQU0oeCk7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChu
YW1lKSBtb3ZlLWNvbnN0cnVjdChuYW1lKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgc3RhdGljIGF1dG8geCA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7CisgICAgICAgICAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsIHsg
Im5hbWUiIH07CisgICAgICAgICAgICBsLnNldE5hbWUoIngiKTsKKyAgICAgICAgICAgIHJldHVy
biBsOworICAgICAgICB9KCkpOworICAgICAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgfQorICAg
IEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0
KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCiBz
dGF0aWMgY29uc3QgVmVjdG9yPGludD4mIGxpc3QoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345712</attachid>
            <date>2018-07-24 14:03:33 -0700</date>
            <delta_ts>2018-07-24 14:47:27 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-187971-20180724140332.patch</filename>
            <type>text/plain</type>
            <size>17652</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjMzk0YmViZTk5YWFjN2VlOGNhNDMw
ZDdmZmNlZWJiYjA5MWFiM2QuLjc0MjY5ODdhNWE1NjQyNGVkNDA0ZDVlOTRkYThhYTVjNTI5MmI5
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVk
IHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkg
Y29uc3RydWN0aW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODc5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVz
dHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBjb3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1v
dmUgY29uc3RydWN0YWJsZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkgfTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4
J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBjb25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAg
ICBDdXJyZW50bHkgdGhlIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUg
TmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBpdCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNv
bnN0IFQmIGJ5IHdheSBvZiBjb25zdCBUJiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBB
cyBhIHJlc3VsdCB0aGUgY29tcGlsZXIgcGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQg
dG8gaW52b2tlIGluc3RlYWQgb2YgZXZhbHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJl
IG1vdmUgY29uc3RydWN0ZWQuIEluc3RlYWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgp
IHRoZSB1bmRlcmx5aW5nIFQgc28gdGhhdAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29z
ZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAg
ICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8g
aW52b2tlIG1ha2VOZXZlckRlc3Ryb3llZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxl
KToKKworICAgICAgICBzdGF0aWMgYXV0byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChbXSB7CisgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7
CisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJE
ZXN0cm95ZWQ6Ok5ldmVyRGVzdHJveWVkKToKKwogMjAxOC0wNy0yNCAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjM0MTIxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1Nv
dXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggYjIzYWYwMDA4YjU1NmMxOGMyYWNl
YmFlNDk4YTJmODg0NjJhOGQxZC4uODYxMTBhMThiODIzMjYxNGQ3MDA2NmJkNGExYzg1MDRlZjJk
MDhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
IAogICAgIE5ldmVyRGVzdHJveWVkKE5ldmVyRGVzdHJveWVkJiYgb3RoZXIpCiAgICAgewotICAg
ICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZNb3ZlKG90aGVy
KSkpOworICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZN
b3ZlKG90aGVyLmdldCgpKSkpOwogICAgIH0KIAogICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4g
KnN0b3JhZ2VQb2ludGVyKCk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA1YjRhODk1NGViZDcxMTUwOTZlMDAyMzUwODAzZDFkMGI0NmUwMjM1
Li5kOTNkMTRkMzg5NGM2MTViZGJkNDUwYjlhZDNjYmNlYmUxMGU1ZmI3IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIw
MTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVkIHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1bmRl
cmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkgY29uc3RydWN0aW5nIGl0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVy
ZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVzdHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBjb3B5
IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVy
IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1vdmUgY29uc3RydWN0YWJsZS4gRm9yIGV4YW1w
bGU6CisKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IHg7
CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkgfTsg
Ly8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBjb25z
dHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAgICBDdXJyZW50bHkgdGhlIE5ldmVyRGVzdHJv
eWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVy
IGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUgTmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBpdCwg
aW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNvbnN0IFQmIGJ5IHdheSBvZiBjb25zdCBUJiBj
b252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBBcyBhIHJlc3VsdCB0aGUgY29tcGlsZXIgcGlj
a3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQgdG8gaW52b2tlIGluc3RlYWQgb2YgZXZhbHVh
dGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJlIG1vdmUgY29uc3RydWN0ZWQuIEluc3RlYWQg
d2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgpIHRoZSB1bmRlcmx5aW5nIFQgc28gdGhhdAor
ICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29zZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1Y3Qg
VCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAgICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0aGlz
IGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8gaW52b2tlIG1ha2VOZXZlckRlc3Ryb3llZCgp
IHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1v
dmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxlKToKKworICAgICAgICBzdGF0aWMgYXV0byBz
aGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgICAgICBhdXRvIHN0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6On5Nb3Zl
T25seUxpZmVjeWNsZUxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1vdmVP
bmx5TGlmZWN5Y2xlTG9nZ2VyOjpzZXROYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVy
RGVzdHJveWVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA3
LTI0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzQxMjEuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApp
bmRleCAyZTdkMWMzZDg5YTMyNWViNWQ5YWVmOTVlODFmZGZjNzIzM2FjMGQ3Li43NTZmNDNjNjk3
N2QzZDY1ZjE2ZjVhYzNhYzE5MWY2MmIwYzI4MjQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01hdGhFeHRyYXMuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvTWV0YUFsbG9jYXRvci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL05ha2VkUHRyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvT3B0aW9uYWwuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5MTkxODM2YmVj
YmViNmZhMjVlMTJkZmE4ZWZiYjc3OGZhNTA1ZTMuLjI5ZDk0MmIxZTc5MTI0YmEwMDliZjdmZTJh
ZTVlZTM0OWMyZmRlYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDgsNiArNzQ4LDcg
QEAKIAkJQ0U0RDVERTcxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0RDVERTUx
RjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovOyB9OwogCQlDRTZF
ODFBMDIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxOUYyMEE2OTM1RjAwRTJD
ODBGIC8qIFNldFRpbWVvdXRGdW5jdGlvbi5tbSAqLzsgfTsKIAkJQ0U2RTgxQTQyMEE5MzNENTAw
RTJDODBGIC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxQTMyMEE5MzNCODAwRTJDODBG
IC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgKi87IH07CisJCUNFNzg3MDVGMjEwN0FCOTgw
MDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc4NzA1RDIxMDdBQjhDMDA1M0FDNjcgLyog
TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwICovOyB9OwogCQlDRUE2Q0YyODE5Q0NGNjlEMDA2
NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBNkNGMjcxOUNDRjY5RDAwNjRGNUE3
IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sICovOyB9OwogCQlDRUE3RjU3RDIwODk2MjRC
MDA3OEVGNkUgLyogRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBN0Y1
N0IyMDg5NUY1QjAwNzhFRjZFIC8qIERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3Jk
QXBwZWFyYW5jZS5tbSAqLzsgfTsKIAkJQ0VCQUJENDkxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3Vs
ZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUJBQkQ0ODFCNzE2ODdDMDA1MTIxMEEgLyogc2hv
dWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sICovOyB9OwpAQCAtMTk0NSw2ICsxOTQ2LDgg
QEAKIAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1
bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2V0VGltZW91dEZ1bmN0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZFODFBMzIwQTkzM0I4MDBFMkM4MEYgLyog
c2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJz
ZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgcGF0aCA9ICJpb3Mvc2V0LXRpbWVvdXQtZnVuY3Rp
b24uaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0U3ODcwNUMyMTA3QUI4
QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3Zl
T25seUxpZmVjeWNsZUxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPcGVuQW5kQ2xvc2VXaW5kb3cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTZDRjI3MTlDQ0Y2OUQwMDY0RjVBNyAvKiBv
cGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLWFuZC1jbG9zZS13aW5k
b3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTdGNTdCMjA4OTVGNUIw
MDc4RUY2RSAvKiBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNz
d29yZEFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTM0LDYg
KzI5MzcsOCBAQAogCQkJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3Bw
ICovLAogCQkJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNwcCAq
LywKIAkJCQk5M0E0MjdBQzE4MERBNjBGMDBDRDI0RDcgLyogTW92ZU9ubHkuaCAqLywKKwkJCQlD
RTc4NzA1RDIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwICov
LAorCQkJCUNFNzg3MDVDMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dl
ci5oICovLAogCQkJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8s
CiAJCQkJQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLywK
IAkJCQkxQUZERTY1NDE5NTNCMkMwMDBDNDhGRkEgLyogT3B0aW9uYWwuY3BwICovLApAQCAtMzUw
OCw2ICszNTEzLDcgQEAKIAkJCQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERUYxMUQwQTU5MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFB
bGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0U3ODcwNUYyMTA3QUI5ODAwNTNBQzY3
IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RUZFMUQwQTU5MEMwMEZFQkNGMyAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RGMDExRDBBNTkwQzAwRkVCQ0YzIC8qIE9wdGlvbmFsLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTW92ZU9u
bHlMaWZlY3ljbGVMb2dnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1Y2MyOTkzOWI3MDVkZDk5MDFh
OTk5YjYzMzk0OTFjYTAxNmFhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vdmVP
bmx5TGlmZWN5Y2xlTG9nZ2VyLmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworTW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKCkKK3sKKyAgICBs
b2coKSA8PCAiY29uc3RydWN0KCIgPDwgbmFtZSA8PCAiKSAiOworfQorCitNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoY29uc3QgY2hhciogbmFtZSkKKyAg
ICA6IG5hbWUgeyBuYW1lIH0KK3sKKyAgICBsb2coKSA8PCAiY29uc3RydWN0KCIgPDwgbmFtZSA8
PCAiKSAiOworfQorCitNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6fk1vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyKCkKK3sKKyAgICBsb2coKSA8PCAiZGVzdHJ1Y3QoIiA8PCBuYW1lIDw8ICIpICI7Cit9
CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcihNb3Zl
T25seUxpZmVjeWNsZUxvZ2dlciYmIG90aGVyKQoreworICAgIHN0ZDo6c3dhcChuYW1lLCBvdGhl
ci5uYW1lKTsKKyAgICBsb2coKSA8PCAibW92ZS1jb25zdHJ1Y3QoIiA8PCBuYW1lIDw8ICIpICI7
Cit9CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6
b3BlcmF0b3I9KE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiYgb3RoZXIpCit7CisgICAgc3RkOjpz
d2FwKG5hbWUsIG90aGVyLm5hbWUpOworICAgIGxvZygpIDw8ICJtb3ZlLWFzc2lnbigiIDw8IG5h
bWUgPDwgIikgIjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgTW92ZU9ubHlMaWZlY3lj
bGVMb2dnZXI6OnNldE5hbWUoY29uc3QgY2hhciogbmV3TmFtZSkKK3sKKyAgICBuYW1lID0gbmV3
TmFtZTsKKyAgICBsb2coKSA8PCAic2V0LW5hbWUoIiA8PCBuYW1lIDw8ICIpICI7Cit9CisKK1RF
U1QoTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIsIEJhc2ljKQoreworICAgIHsgTW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXIgbDsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KDxkZWZhdWx0Pikg
ZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7IE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwoImEiKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3Ry
dWN0KGEpIGRlc3RydWN0KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsgTW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgiZCIpOyBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsMihX
VEZNb3ZlKGwpKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KGQpIG1vdmUtY29uc3Ry
dWN0KGQpIGRlc3RydWN0KGQpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOworCisgICAgeyBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsKCJlIik7IE1vdmVPbmx5
TGlmZWN5Y2xlTG9nZ2VyIGwyOyBsMiA9IFdURk1vdmUobCk7IH0KKyAgICBBU1NFUlRfU1RSRVEo
ImNvbnN0cnVjdChlKSBjb25zdHJ1Y3QoPGRlZmF1bHQ+KSBtb3ZlLWFzc2lnbihlKSBkZXN0cnVj
dChlKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAg
IHsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgiZiIpOyBsLnNldE5hbWUoIngiKTsgfQorICAg
IEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KGYpIHNldC1uYW1lKHgpIGRlc3RydWN0KHgpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsgc3RhdGljIE1vdmVPbmx5TGlmZWN5Y2xlTG9n
Z2VyIGwoImciKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KGcpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBjYWMxMzgy
YWU5NmE2MDQwOTlmOWZhNmM1YzQ2MGE5ZDRlZjAyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmgKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJM
b2dnZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdHJ1Y3QgTW92ZU9ubHlM
aWZlY3ljbGVMb2dnZXIgeworICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKCk7CisgICAgTW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXIoY29uc3QgY2hhciopOworCisgICAgfk1vdmVPbmx5TGlmZWN5
Y2xlTG9nZ2VyKCk7CisKKyAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcihNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlciYmKTsKKyAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciYgb3BlcmF0b3I9KE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiYpOworCisgICAgdm9pZCBzZXROYW1lKGNvbnN0IGNoYXIq
KTsKKworICAgIGNvbnN0IGNoYXIqIG5hbWUgeyAiPGRlZmF1bHQ+IiB9OworfTsKKworfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwCmluZGV4
IDcwMjk1M2RhMWMzMDUzM2QxOTczZWJkMDBiZmNkYTY0YTgzM2VhYTguLjQwNDkzODNmNTE5YzY2
MTJlOTI4OGE4OTdlNGE1ZTgxNTAyMjZkMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkxpZmVjeWNsZUxvZ2dlci5oIgorI2luY2x1ZGUgIk1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OSw2ICs1MCwzOSBAQCBURVNUKFdURl9O
ZXZlckRlc3Ryb3llZCwgQ29uc3RydWN0KQogICAgICAgICBBU1NFUlRfU1RSRVEoeC5nZXQoKS5u
YW1lLCAibmFtZSIpOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1lKSBj
b3B5LWNvbnN0cnVjdChuYW1lKSBzZXQtbmFtZSh4KSBkZXN0cnVjdCh4KSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CisKKyAgICB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dn
ZXI+IHggeyBbXSB7IHJldHVybiBMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfTsgfSgpIH07IFVO
VVNFRF9QQVJBTSh4KTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUt
Y29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeworICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKKyAgICAgICAgICAgIExpZmVjeWNsZUxvZ2dlciBsIHsgIm5hbWUiIH07CisgICAgICAg
ICAgICBsLnNldE5hbWUoIngiKTsKKyAgICAgICAgICAgIHJldHVybiBsOworICAgICAgICB9KCkp
OworICAgICAgICBBU1NFUlRfU1RSRVEoeC5nZXQoKS5uYW1lLCAieCIpOworICAgIH0KKyAgICBB
U1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1lKSBzZXQtbmFtZSh4KSBtb3ZlLWNvbnN0cnVjdCh4
KSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dlcj4geDsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dlcj4geSB7IFdURk1vdmUoeCkg
fTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHkpOworICAgIH0KKyAgICBBU1NFUlRfU1RSRVEoImNv
bnN0cnVjdCg8ZGVmYXVsdD4pIG1vdmUtY29uc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOworCisgICAgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXI+IHggeyBbXSB7IHJldHVybiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciB7ICJu
YW1lIiB9OyB9KCkgfTsgVU5VU0VEX1BBUkFNKHgpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25z
dHJ1Y3QobmFtZSkgbW92ZS1jb25zdHJ1Y3QobmFtZSkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIHN0YXRpYyBhdXRvIHggPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICAgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIgbCB7ICJuYW1lIiB9OworICAgICAgICAgICAgbC5zZXROYW1lKCJ4Iik7CisgICAgICAgICAg
ICByZXR1cm4gbDsKKyAgICAgICAgfSgpKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHgpOworICAg
IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1lKSBzZXQtbmFtZSh4KSBtb3ZlLWNv
bnN0cnVjdCh4KSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IH0KIAogc3RhdGljIGNvbnN0IFZlY3RvcjxpbnQ+JiBsaXN0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345715</attachid>
            <date>2018-07-24 14:47:29 -0700</date>
            <delta_ts>2018-07-24 14:52:45 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-187971-20180724144728.patch</filename>
            <type>text/plain</type>
            <size>17926</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjMzk0YmViZTk5YWFjN2VlOGNhNDMw
ZDdmZmNlZWJiYjA5MWFiM2QuLjc0MjY5ODdhNWE1NjQyNGVkNDA0ZDVlOTRkYThhYTVjNTI5MmI5
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVk
IHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkg
Y29uc3RydWN0aW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODc5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVz
dHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBjb3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1v
dmUgY29uc3RydWN0YWJsZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkgfTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4
J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBjb25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAg
ICBDdXJyZW50bHkgdGhlIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUg
TmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBpdCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNv
bnN0IFQmIGJ5IHdheSBvZiBjb25zdCBUJiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBB
cyBhIHJlc3VsdCB0aGUgY29tcGlsZXIgcGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQg
dG8gaW52b2tlIGluc3RlYWQgb2YgZXZhbHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJl
IG1vdmUgY29uc3RydWN0ZWQuIEluc3RlYWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgp
IHRoZSB1bmRlcmx5aW5nIFQgc28gdGhhdAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29z
ZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAg
ICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8g
aW52b2tlIG1ha2VOZXZlckRlc3Ryb3llZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxl
KToKKworICAgICAgICBzdGF0aWMgYXV0byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChbXSB7CisgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7
CisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJE
ZXN0cm95ZWQ6Ok5ldmVyRGVzdHJveWVkKToKKwogMjAxOC0wNy0yNCAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjM0MTIxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1Nv
dXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggYjIzYWYwMDA4YjU1NmMxOGMyYWNl
YmFlNDk4YTJmODg0NjJhOGQxZC4uNTc2YjM5Zjg4ZDgxMjkxZDEzNTFlMjA0MTBiMmM3ZTE5ODg1
MWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
IAogICAgIE5ldmVyRGVzdHJveWVkKE5ldmVyRGVzdHJveWVkJiYgb3RoZXIpCiAgICAgewotICAg
ICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZNb3ZlKG90aGVy
KSkpOworICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZN
b3ZlKCpvdGhlci5zdG9yYWdlUG9pbnRlcigpKSk7CiAgICAgfQogCiAgICAgb3BlcmF0b3IgVCYo
KSB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViNGE4OTU0ZWJkNzExNTA5NmUwMDIzNTA4MDNk
MWQwYjQ2ZTAyMzUuLmQ5M2QxNGQzODk0YzYxNWJkYmQ0NTBiOWFkM2NiY2ViZTEwZTVmYjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NSBAQAorMjAxOC0wNy0yNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZS1jb25zdHJ1Y3RpbmcgTmV2ZXJEZXN0cm95ZWQgc2hvdWxkIG1vdmUgY29u
c3RydWN0IHVuZGVybHlpbmcgb2JqZWN0IGluc3RlYWQgb2YgY29weSBjb25zdHJ1Y3RpbmcgaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIGFu
IGlzc3VlIHdoZXJlIG1vdmUgY29uc3RydWN0aW5nIGEgTmV2ZXJEZXN0cm95ZWQ8VD4gd291bGQg
YWx3YXlzIGNvcHkgY29uc3RydWN0IFQgaW50bworICAgICAgICB0aGUgZGVzdGluYXRpb24gc3Rv
cmFnZSBidWZmZXIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFQgaXMgbW92ZSBjb25zdHJ1Y3RhYmxl
LiBGb3IgZXhhbXBsZToKKworICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4geDsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUPiB5IHsgV1RG
TW92ZSh4KSB9OyAvLyBjdXJyZW50bHkgbWFrZXMgYSBjb3B5IG9mIHgncyBUIGV2ZW4gaWYgVCBp
cyBtb3ZlIGNvbnN0cnVjdGFibGUKKyAgICAgICAgfQorCisgICAgICAgIEN1cnJlbnRseSB0aGUg
TmV2ZXJEZXN0cm95ZWQ8VD4gaW5zdGFudGlhdGVzIFQgaW50byB0aGUgZGVzdGluYXRpb24gc3Rv
cmFnZSBidWZmZXIgYnkgV1RGTW92ZSgpaW5nCisgICAgICAgIHRoZSBOZXZlckRlc3Ryb3llZDxU
PiBpbnRvIGl0LCBpbXBsaWNpdGx5IGNvbnZlcnRpbmcgaXQgdG8gY29uc3QgVCYgYnkgd2F5IG9m
IGNvbnN0IFQmIGNvbnZlcnNpb24KKyAgICAgICAgb3BlcmF0b3IuIEFzIGEgcmVzdWx0IHRoZSBj
b21waWxlciBwaWNrcyB0aGUgY29weSBjb25zdHJ1Y3RvciBmb3IgVCB0byBpbnZva2UgaW5zdGVh
ZCBvZiBldmFsdWF0aW5nCisgICAgICAgIHdoZXRoZXIgVCBjYW4gYmUgbW92ZSBjb25zdHJ1Y3Rl
ZC4gSW5zdGVhZCB3ZSBzaG91bGQgZXhwbGljaXRseSBXVEZNb3ZlKCkgdGhlIHVuZGVybHlpbmcg
VCBzbyB0aGF0CisgICAgICAgIHRoZSBjb21waWxlciBjYW4gY2hvb3NlIHRvIGVpdGhlciBtb3Zl
LWNvbnN0cnVjdCBUIG9yIGNvcHkgY29uc3RydWN0IGl0LgorCisgICAgICAgIEEgc2lkZSBiZW5l
Zml0IG9mIHRoaXMgY2hhbmdlIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnZva2UgbWFrZU5ldmVy
RGVzdHJveWVkKCkgd2l0aCB0aGUgcmVzdWx0CisgICAgICAgIG9mIGEgZnVuY3Rpb24gdGhhdCBy
ZXR1cm5zIGEgbW92ZS1vbmx5IHR5cGUgKGUuZy4gUmVuZGVyU3R5bGUpOgorCisgICAgICAgIHN0
YXRpYyBhdXRvIHNoYXJlZFN0eWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAg
ICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgICAgICAuLi4K
KyAgICAgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgfSgpKTsKKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNb3ZlT25seUxpZmVjeWNsZUxv
Z2dlcjo6fk1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpvcGVyYXRvcj0pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6OnNldE5hbWUpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTW92ZU9u
bHlMaWZlY3ljbGVMb2dnZXIuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMTgtMDctMjQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDEyMS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CmluZGV4IDJlN2QxYzNkODlhMzI1ZWI1ZDlhZWY5NWU4MWZkZmM3MjMzYWMwZDcu
Ljc1NmY0M2M2OTc3ZDNkNjVmMTZmNWFjM2FjMTkxZjYyYjBjMjgyNDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dApAQCAtMTE3LDYgKzExNyw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWVkaWFUaW1lLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9NZXRhQWxsb2NhdG9yLmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OTkxOTE4MzZiZWNiZWI2ZmEyNWUxMmRmYThlZmJiNzc4ZmE1MDVlMy4uMjlkOTQyYjFlNzkxMjRi
YTAwOWJmN2ZlMmFlNWVlMzQ5YzJmZGViNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0
OCw2ICs3NDgsNyBAQAogCQlDRTRENURFNzFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERp
cmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTRENURFNTFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAgKi87
IH07CiAJCUNFNkU4MUEwMjBBNjkzNUYwMEUyQzgwRiAvKiBTZXRUaW1lb3V0RnVuY3Rpb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODE5RjIw
QTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1tICovOyB9OwogCQlDRTZFODFB
NDIwQTkzM0Q1MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZFODFBMzIwQTkz
M0I4MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLzsgfTsKKwkJQ0U3ODcw
NUYyMTA3QUI5ODAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzg3MDVEMjEwN0FCOEMw
MDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgKi87IH07CiAJCUNFQTZDRjI4
MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUE2Q0YyNzE5Q0NG
NjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgKi87IH07CiAJCUNFQTdG
NTdEMjA4OTYyNEIwMDc4RUY2RSAvKiBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29y
ZEFwcGVhcmFuY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRUE3RjU3QjIwODk1RjVCMDA3OEVGNkUgLyogRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ry
b25nUGFzc3dvcmRBcHBlYXJhbmNlLm1tICovOyB9OwogCQlDRUJBQkQ0OTFCNzE2ODdDMDA1MTIx
MEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkFCRDQ4MUI3MTY4N0MwMDUx
MjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgKi87IH07CkBAIC0xOTQ1
LDYgKzE5NDYsOCBAQAogCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvblNldC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MTlGMjBBNjkzNUYwMEUyQzgwRiAvKiBT
ZXRUaW1lb3V0RnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXRUaW1lb3V0RnVu
Y3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkU4MUEzMjBBOTMzQjgw
MEUyQzgwRiAvKiBzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBuYW1lID0gInNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwiOyBwYXRoID0gImlvcy9zZXQtdGlt
ZW91dC1mdW5jdGlvbi5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRTc4
NzA1QzIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3ODcwNUQyMTA3QUI4QzAwNTNBQzY3IC8qIE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9wZW5BbmRDbG9zZVdp
bmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBNkNGMjcxOUNDRjY5RDAw
NjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW4tYW5k
LWNsb3NlLXdpbmRvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBN0Y1
N0IyMDg5NUY1QjAwNzhFRjZFIC8qIERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3Jk
QXBwZWFyYW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpZFJlc2lnbklucHV0RWxlbWVu
dFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI5MzQsNiArMjkzNyw4IEBACiAJCQkJQ0Q1NDk3QjMxNTg1N0YwQzAwQjVCQzMwIC8qIE1l
ZGlhVGltZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0UxNDEwMzRBRDAwNUI3RjBDIC8qIE1ldGFBbGxv
Y2F0b3IuY3BwICovLAogCQkJCTkzQTQyN0FDMTgwREE2MEYwMENEMjRENyAvKiBNb3ZlT25seS5o
ICovLAorCQkJCUNFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxv
Z2dlci5jcHAgKi8sCisJCQkJQ0U3ODcwNUMyMTA3QUI4QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlm
ZWN5Y2xlTG9nZ2VyLmggKi8sCiAJCQkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2Vk
UHRyLmNwcCAqLywKIAkJCQlBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95
ZWQuY3BwICovLAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAg
Ki8sCkBAIC0zNTA4LDYgKzM1MTMsNyBAQAogCQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8q
IE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJD
RjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRTc4NzA1RjIxMDdB
Qjk4MDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRkUxRDBBNTkwQzAwRkVCQ0YzIC8qIE5ha2VkUHRyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYwMTFEMEE1OTBDMDBGRUJDRjMgLyogT3B0aW9uYWwu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVjYzI5OTM5
YjcwNWRkOTkwMWE5OTliNjMzOTQ5MWNhMDE2YWFlZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcApAQCAt
MCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIo
KQoreworICAgIGxvZygpIDw8ICJjb25zdHJ1Y3QoIiA8PCBuYW1lIDw8ICIpICI7Cit9CisKK01v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcihjb25zdCBjaGFy
KiBuYW1lKQorICAgIDogbmFtZSB7IG5hbWUgfQoreworICAgIGxvZygpIDw8ICJjb25zdHJ1Y3Qo
IiA8PCBuYW1lIDw8ICIpICI7Cit9CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjp+TW92ZU9u
bHlMaWZlY3ljbGVMb2dnZXIoKQoreworICAgIGxvZygpIDw8ICJkZXN0cnVjdCgiIDw8IG5hbWUg
PDwgIikgIjsKK30KKworTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Ok1vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyKE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiYgb3RoZXIpCit7CisgICAgc3RkOjpzd2Fw
KG5hbWUsIG90aGVyLm5hbWUpOworICAgIGxvZygpIDw8ICJtb3ZlLWNvbnN0cnVjdCgiIDw8IG5h
bWUgPDwgIikgIjsKK30KKworTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXImIE1vdmVPbmx5TGlmZWN5
Y2xlTG9nZ2VyOjpvcGVyYXRvcj0oTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXImJiBvdGhlcikKK3sK
KyAgICBzdGQ6OnN3YXAobmFtZSwgb3RoZXIubmFtZSk7CisgICAgbG9nKCkgPDwgIm1vdmUtYXNz
aWduKCIgPDwgbmFtZSA8PCAiKSAiOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBNb3Zl
T25seUxpZmVjeWNsZUxvZ2dlcjo6c2V0TmFtZShjb25zdCBjaGFyKiBuZXdOYW1lKQoreworICAg
IG5hbWUgPSBuZXdOYW1lOworICAgIGxvZygpIDw8ICJzZXQtbmFtZSgiIDw8IG5hbWUgPDwgIikg
IjsKK30KKworVEVTVChNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciwgQmFzaWMpCit7CisgICAgeyBN
b3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3Qo
PGRlZmF1bHQ+KSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgiYSIpOyB9CisgICAgQVNTRVJUX1NU
UkVRKCJjb25zdHJ1Y3QoYSkgZGVzdHJ1Y3QoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwor
CisgICAgeyBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsKCJkIik7IE1vdmVPbmx5TGlmZWN5Y2xl
TG9nZ2VyIGwyKFdURk1vdmUobCkpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoZCkg
bW92ZS1jb25zdHJ1Y3QoZCkgZGVzdHJ1Y3QoZCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwoImUi
KTsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbDI7IGwyID0gV1RGTW92ZShsKTsgfQorICAgIEFT
U0VSVF9TVFJFUSgiY29uc3RydWN0KGUpIGNvbnN0cnVjdCg8ZGVmYXVsdD4pIG1vdmUtYXNzaWdu
KGUpIGRlc3RydWN0KGUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOworCisgICAgeyBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsKCJmIik7IGwuc2V0TmFtZSgi
eCIpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoZikgc2V0LW5hbWUoeCkgZGVzdHJ1
Y3QoeCkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeyBzdGF0aWMgTW92ZU9ubHlM
aWZlY3ljbGVMb2dnZXIgbCgiZyIpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoZykg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MGNhYzEzODJhZTk2YTYwNDA5OWY5ZmE2YzVjNDYwYTlkNGVmMDJmCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkxvZ2dlci5oIgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0cnVj
dCBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciB7CisgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIo
KTsKKyAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcihjb25zdCBjaGFyKik7CisKKyAgICB+TW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXIoKTsKKworICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKE1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiYpOworICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiBv
cGVyYXRvcj0oTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXImJik7CisKKyAgICB2b2lkIHNldE5hbWUo
Y29uc3QgY2hhciopOworCisgICAgY29uc3QgY2hhciogbmFtZSB7ICI8ZGVmYXVsdD4iIH07Cit9
OworCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRl
c3Ryb3llZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3ll
ZC5jcHAKaW5kZXggNzAyOTUzZGExYzMwNTMzZDE5NzNlYmQwMGJmY2RhNjRhODMzZWFhOC4uMWVk
OWQyZmJiNTUwZjcxYzBjOTBkZjIxNWM2NWE0M2M3OGEyNTY3YiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTGlmZWN5Y2xlTG9nZ2VyLmgiCisj
aW5jbHVkZSAiTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ5LDYgKzUwLDQ2IEBA
IFRFU1QoV1RGX05ldmVyRGVzdHJveWVkLCBDb25zdHJ1Y3QpCiAgICAgICAgIEFTU0VSVF9TVFJF
USh4LmdldCgpLm5hbWUsICJuYW1lIik7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3Ry
dWN0KG5hbWUpIGNvcHktY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIGRlc3RydWN0KHgpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPExp
ZmVjeWNsZUxvZ2dlcj4geCB7IFtdIHsgcmV0dXJuIExpZmVjeWNsZUxvZ2dlciB7ICJuYW1lIiB9
OyB9KCkgfTsgVU5VU0VEX1BBUkFNKHgpOyB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3Qo
bmFtZSkgbW92ZS1jb25zdHJ1Y3QobmFtZSkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIHN0YXRpYyBhdXRvIHggPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgICAgICAgICAgTGlmZWN5Y2xlTG9nZ2VyIGwgeyAibmFtZSIg
fTsKKyAgICAgICAgICAgIGwuc2V0TmFtZSgieCIpOworICAgICAgICAgICAgcmV0dXJuIGw7Cisg
ICAgICAgIH0oKSk7CisgICAgICAgIEFTU0VSVF9TVFJFUSh4LmdldCgpLm5hbWUsICJ4Iik7Cisg
ICAgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUt
Y29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OworCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2Vy
PiB4OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB5IHsg
V1RGTW92ZSh4KSB9OworICAgICAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgfQorICAgIEFTU0VS
VF9TVFJFUSgiY29uc3RydWN0KDxkZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoPGRlZmF1bHQ+KSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBMaWZlY3ljbGVMb2dnZXI+IHg7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBMaWZlY3ljbGVMb2dnZXI+IHkgeyBXVEZNb3ZlKHgpIH07CisgICAgICAg
IFVOVVNFRF9QQVJBTSh5KTsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QoPGRl
ZmF1bHQ+KSBtb3ZlLWNvbnN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2Vy
PiB4IHsgW10geyByZXR1cm4gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfTsgfSgp
IH07IFVOVVNFRF9QQVJBTSh4KTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUp
IG1vdmUtY29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFrZU5ldmVyRGVz
dHJveWVkKFtdIHsKKyAgICAgICAgICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwgeyAibmFt
ZSIgfTsKKyAgICAgICAgICAgIGwuc2V0TmFtZSgieCIpOworICAgICAgICAgICAgcmV0dXJuIGw7
CisgICAgICAgIH0oKSk7CisgICAgICAgIFVOVVNFRF9QQVJBTSh4KTsKKyAgICB9CisgICAgQVNT
RVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUoeCkgbW92ZS1jb25zdHJ1Y3QoeCkg
ZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBWZWN0b3I8aW50PiYgbGlzdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345716</attachid>
            <date>2018-07-24 14:52:47 -0700</date>
            <delta_ts>2018-07-24 16:27:57 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-187971-20180724145246.patch</filename>
            <type>text/plain</type>
            <size>17927</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNjMzk0YmViZTk5YWFjN2VlOGNhNDMw
ZDdmZmNlZWJiYjA5MWFiM2QuLjc0MjY5ODdhNWE1NjQyNGVkNDA0ZDVlOTRkYThhYTVjNTI5MmI5
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVk
IHNob3VsZCBtb3ZlIGNvbnN0cnVjdCB1bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkg
Y29uc3RydWN0aW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODc5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVz
dHJveWVkPFQ+IHdvdWxkIGFsd2F5cyBjb3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1v
dmUgY29uc3RydWN0YWJsZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VD4geSB7IFdURk1vdmUoeCkgfTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4
J3MgVCBldmVuIGlmIFQgaXMgbW92ZSBjb25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAg
ICBDdXJyZW50bHkgdGhlIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhl
IGRlc3RpbmF0aW9uIHN0b3JhZ2UgYnVmZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUg
TmV2ZXJEZXN0cm95ZWQ8VD4gaW50byBpdCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNv
bnN0IFQmIGJ5IHdheSBvZiBjb25zdCBUJiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBB
cyBhIHJlc3VsdCB0aGUgY29tcGlsZXIgcGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQg
dG8gaW52b2tlIGluc3RlYWQgb2YgZXZhbHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJl
IG1vdmUgY29uc3RydWN0ZWQuIEluc3RlYWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgp
IHRoZSB1bmRlcmx5aW5nIFQgc28gdGhhdAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29z
ZSB0byBlaXRoZXIgbW92ZS1jb25zdHJ1Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAg
ICAgICBBIHNpZGUgYmVuZWZpdCBvZiB0aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8g
aW52b2tlIG1ha2VOZXZlckRlc3Ryb3llZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxl
KToKKworICAgICAgICBzdGF0aWMgYXV0byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChbXSB7CisgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7
CisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95ZWQuaDoKKyAgICAgICAgKFdURjo6TmV2ZXJE
ZXN0cm95ZWQ6Ok5ldmVyRGVzdHJveWVkKToKKwogMjAxOC0wNy0yNCAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjM0MTIxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1Nv
dXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5kZXggYjIzYWYwMDA4YjU1NmMxOGMyYWNl
YmFlNDk4YTJmODg0NjJhOGQxZC4uYzMxMWYxMzZmZjVlNTg0MGVlNWY0OWVlNWY3MTg2ODYxODdk
NjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
IAogICAgIE5ldmVyRGVzdHJveWVkKE5ldmVyRGVzdHJveWVkJiYgb3RoZXIpCiAgICAgewotICAg
ICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZNb3ZlKG90aGVy
KSkpOworICAgICAgICBNYXliZVJlbGF4PFQ+KG5ldyAoc3RvcmFnZVBvaW50ZXIoKSkgVChXVEZN
b3ZlKCpvdGhlci5zdG9yYWdlUG9pbnRlcigpKSkpOwogICAgIH0KIAogICAgIG9wZXJhdG9yIFQm
KCkgeyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjRhODk1NGViZDcxMTUwOTZlMDAyMzUwODAz
ZDFkMGI0NmUwMjM1Li5kOTNkMTRkMzg5NGM2MTViZGJkNDUwYjlhZDNjYmNlYmUxMGU1ZmI3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDUgQEAKKzIwMTgtMDctMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUtY29uc3RydWN0aW5nIE5ldmVyRGVzdHJveWVkIHNob3VsZCBtb3ZlIGNv
bnN0cnVjdCB1bmRlcmx5aW5nIG9iamVjdCBpbnN0ZWFkIG9mIGNvcHkgY29uc3RydWN0aW5nIGl0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBh
biBpc3N1ZSB3aGVyZSBtb3ZlIGNvbnN0cnVjdGluZyBhIE5ldmVyRGVzdHJveWVkPFQ+IHdvdWxk
IGFsd2F5cyBjb3B5IGNvbnN0cnVjdCBUIGludG8KKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHN0
b3JhZ2UgYnVmZmVyIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBUIGlzIG1vdmUgY29uc3RydWN0YWJs
ZS4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFQ+IHg7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4geSB7IFdU
Rk1vdmUoeCkgfTsgLy8gY3VycmVudGx5IG1ha2VzIGEgY29weSBvZiB4J3MgVCBldmVuIGlmIFQg
aXMgbW92ZSBjb25zdHJ1Y3RhYmxlCisgICAgICAgIH0KKworICAgICAgICBDdXJyZW50bHkgdGhl
IE5ldmVyRGVzdHJveWVkPFQ+IGluc3RhbnRpYXRlcyBUIGludG8gdGhlIGRlc3RpbmF0aW9uIHN0
b3JhZ2UgYnVmZmVyIGJ5IFdURk1vdmUoKWluZworICAgICAgICB0aGUgTmV2ZXJEZXN0cm95ZWQ8
VD4gaW50byBpdCwgaW1wbGljaXRseSBjb252ZXJ0aW5nIGl0IHRvIGNvbnN0IFQmIGJ5IHdheSBv
ZiBjb25zdCBUJiBjb252ZXJzaW9uCisgICAgICAgIG9wZXJhdG9yLiBBcyBhIHJlc3VsdCB0aGUg
Y29tcGlsZXIgcGlja3MgdGhlIGNvcHkgY29uc3RydWN0b3IgZm9yIFQgdG8gaW52b2tlIGluc3Rl
YWQgb2YgZXZhbHVhdGluZworICAgICAgICB3aGV0aGVyIFQgY2FuIGJlIG1vdmUgY29uc3RydWN0
ZWQuIEluc3RlYWQgd2Ugc2hvdWxkIGV4cGxpY2l0bHkgV1RGTW92ZSgpIHRoZSB1bmRlcmx5aW5n
IFQgc28gdGhhdAorICAgICAgICB0aGUgY29tcGlsZXIgY2FuIGNob29zZSB0byBlaXRoZXIgbW92
ZS1jb25zdHJ1Y3QgVCBvciBjb3B5IGNvbnN0cnVjdCBpdC4KKworICAgICAgICBBIHNpZGUgYmVu
ZWZpdCBvZiB0aGlzIGNoYW5nZSBpdCBpcyBub3cgcG9zc2libGUgdG8gaW52b2tlIG1ha2VOZXZl
ckRlc3Ryb3llZCgpIHdpdGggdGhlIHJlc3VsdAorICAgICAgICBvZiBhIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyBhIG1vdmUtb25seSB0eXBlIChlLmcuIFJlbmRlclN0eWxlKToKKworICAgICAgICBz
dGF0aWMgYXV0byBzaGFyZWRTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
ICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0oKSk7CisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TW92ZU9ubHlMaWZlY3ljbGVM
b2dnZXI6On5Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpzZXROYW1lKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVP
bmx5TGlmZWN5Y2xlTG9nZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDE4LTA3LTI0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzQxMjEuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAyZTdkMWMzZDg5YTMyNWViNWQ5YWVmOTVlODFmZGZjNzIzM2FjMGQ3
Li43NTZmNDNjNjk3N2QzZDY1ZjE2ZjVhYzNhYzE5MWY2MmIwYzI4MjQ3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQKQEAgLTExNyw2ICsxMTcsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VT
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01hdGhFeHRyYXMuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWV0YUFsbG9jYXRvci5jcHAKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL05ha2VkUHRyLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk5MTkxODM2YmVjYmViNmZhMjVlMTJkZmE4ZWZiYjc3OGZhNTA1ZTMuLjI5ZDk0MmIxZTc5MTI0
YmEwMDliZjdmZTJhZTVlZTM0OWMyZmRlYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03
NDgsNiArNzQ4LDcgQEAKIAkJQ0U0RDVERTcxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhE
aXJlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICov
OyB9OwogCQlDRTZFODFBMDIwQTY5MzVGMDBFMkM4MEYgLyogU2V0VGltZW91dEZ1bmN0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxOUYy
MEE2OTM1RjAwRTJDODBGIC8qIFNldFRpbWVvdXRGdW5jdGlvbi5tbSAqLzsgfTsKIAkJQ0U2RTgx
QTQyMEE5MzNENTAwRTJDODBGIC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2RTgxQTMyMEE5
MzNCODAwRTJDODBGIC8qIHNldC10aW1lb3V0LWZ1bmN0aW9uLmh0bWwgKi87IH07CisJCUNFNzg3
MDVGMjEwN0FCOTgwMDUzQUM2NyAvKiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc4NzA1RDIxMDdBQjhD
MDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwICovOyB9OwogCQlDRUE2Q0Yy
ODE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBNkNGMjcxOUND
RjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sICovOyB9OwogCQlDRUE3
RjU3RDIwODk2MjRCMDA3OEVGNkUgLyogRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dv
cmRBcHBlYXJhbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0VBN0Y1N0IyMDg5NUY1QjAwNzhFRjZFIC8qIERpZFJlc2lnbklucHV0RWxlbWVudFN0
cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZS5tbSAqLzsgfTsKIAkJQ0VCQUJENDkxQjcxNjg3QzAwNTEy
MTBBIC8qIHNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUJBQkQ0ODFCNzE2ODdDMDA1
MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sICovOyB9OwpAQCAtMTk0
NSw2ICsxOTQ2LDggQEAKIAkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25TZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZFODE5RjIwQTY5MzVGMDBFMkM4MEYgLyog
U2V0VGltZW91dEZ1bmN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2V0VGltZW91dEZ1
bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZFODFBMzIwQTkzM0I4
MDBFMkM4MEYgLyogc2V0LXRpbWVvdXQtZnVuY3Rpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgbmFtZSA9ICJzZXQtdGltZW91dC1mdW5jdGlvbi5odG1sIjsgcGF0aCA9ICJpb3Mvc2V0LXRp
bWVvdXQtZnVuY3Rpb24uaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0U3
ODcwNUMyMTA3QUI4QzAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFNzg3MDVEMjEwN0FCOEMwMDUzQUM2NyAvKiBN
b3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPcGVuQW5kQ2xvc2VX
aW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTZDRjI3MTlDQ0Y2OUQw
MDY0RjVBNyAvKiBvcGVuLWFuZC1jbG9zZS13aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLWFu
ZC1jbG9zZS13aW5kb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTdG
NTdCMjA4OTVGNUIwMDc4RUY2RSAvKiBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29y
ZEFwcGVhcmFuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yOTM0LDYgKzI5MzcsOCBAQAogCQkJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovLAogCQkJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxs
b2NhdG9yLmNwcCAqLywKIAkJCQk5M0E0MjdBQzE4MERBNjBGMDBDRDI0RDcgLyogTW92ZU9ubHku
aCAqLywKKwkJCQlDRTc4NzA1RDIxMDdBQjhDMDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVM
b2dnZXIuY3BwICovLAorCQkJCUNFNzg3MDVDMjEwN0FCOEMwMDUzQUM2NyAvKiBNb3ZlT25seUxp
ZmVjeWNsZUxvZ2dlci5oICovLAogCQkJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtl
ZFB0ci5jcHAgKi8sCiAJCQkJQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJv
eWVkLmNwcCAqLywKIAkJCQkxQUZERTY1NDE5NTNCMkMwMDBDNDhGRkEgLyogT3B0aW9uYWwuY3Bw
ICovLApAQCAtMzUwOCw2ICszNTEzLDcgQEAKIAkJCQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMg
LyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUYxMUQwQTU5MEMwMEZFQkNGMyAv
KiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVC
Q0YzIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0U3ODcwNUYyMTA3
QUI5ODAwNTNBQzY3IC8qIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUZFMUQwQTU5MEMwMEZFQkNGMyAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDExRDBBNTkwQzAwRkVCQ0YzIC8qIE9wdGlvbmFs
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1Y2MyOTkz
OWI3MDVkZDk5MDFhOTk5YjYzMzk0OTFjYTAxNmFhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Nb3ZlT25seUxpZmVjeWNsZUxvZ2dlci5jcHAKQEAg
LTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXI6Ok1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2Vy
KCkKK3sKKyAgICBsb2coKSA8PCAiY29uc3RydWN0KCIgPDwgbmFtZSA8PCAiKSAiOworfQorCitN
b3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoY29uc3QgY2hh
ciogbmFtZSkKKyAgICA6IG5hbWUgeyBuYW1lIH0KK3sKKyAgICBsb2coKSA8PCAiY29uc3RydWN0
KCIgPDwgbmFtZSA8PCAiKSAiOworfQorCitNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcjo6fk1vdmVP
bmx5TGlmZWN5Y2xlTG9nZ2VyKCkKK3sKKyAgICBsb2coKSA8PCAiZGVzdHJ1Y3QoIiA8PCBuYW1l
IDw8ICIpICI7Cit9CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyOjpNb3ZlT25seUxpZmVjeWNs
ZUxvZ2dlcihNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciYmIG90aGVyKQoreworICAgIHN0ZDo6c3dh
cChuYW1lLCBvdGhlci5uYW1lKTsKKyAgICBsb2coKSA8PCAibW92ZS1jb25zdHJ1Y3QoIiA8PCBu
YW1lIDw8ICIpICI7Cit9CisKK01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiBNb3ZlT25seUxpZmVj
eWNsZUxvZ2dlcjo6b3BlcmF0b3I9KE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiYgb3RoZXIpCit7
CisgICAgc3RkOjpzd2FwKG5hbWUsIG90aGVyLm5hbWUpOworICAgIGxvZygpIDw8ICJtb3ZlLWFz
c2lnbigiIDw8IG5hbWUgPDwgIikgIjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgTW92
ZU9ubHlMaWZlY3ljbGVMb2dnZXI6OnNldE5hbWUoY29uc3QgY2hhciogbmV3TmFtZSkKK3sKKyAg
ICBuYW1lID0gbmV3TmFtZTsKKyAgICBsb2coKSA8PCAic2V0LW5hbWUoIiA8PCBuYW1lIDw8ICIp
ICI7Cit9CisKK1RFU1QoTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIsIEJhc2ljKQoreworICAgIHsg
TW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbDsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0
KDxkZWZhdWx0PikgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CisKKyAgICB7IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwoImEiKTsgfQorICAgIEFTU0VSVF9T
VFJFUSgiY29uc3RydWN0KGEpIGRlc3RydWN0KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
KworICAgIHsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgiZCIpOyBNb3ZlT25seUxpZmVjeWNs
ZUxvZ2dlciBsMihXVEZNb3ZlKGwpKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KGQp
IG1vdmUtY29uc3RydWN0KGQpIGRlc3RydWN0KGQpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeyBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsKCJl
Iik7IE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwyOyBsMiA9IFdURk1vdmUobCk7IH0KKyAgICBB
U1NFUlRfU1RSRVEoImNvbnN0cnVjdChlKSBjb25zdHJ1Y3QoPGRlZmF1bHQ+KSBtb3ZlLWFzc2ln
bihlKSBkZXN0cnVjdChlKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKKworICAgIHsgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgbCgiZiIpOyBsLnNldE5hbWUo
IngiKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KGYpIHNldC1uYW1lKHgpIGRlc3Ry
dWN0KHgpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsgc3RhdGljIE1vdmVPbmx5
TGlmZWN5Y2xlTG9nZ2VyIGwoImciKTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KGcp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzBjYWMxMzgyYWU5NmE2MDQwOTlmOWZhNmM1YzQ2MGE5ZDRlZjAyZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01vdmVPbmx5TGlmZWN5Y2xlTG9n
Z2VyLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJMb2dnZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdHJ1
Y3QgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgeworICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2Vy
KCk7CisgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIoY29uc3QgY2hhciopOworCisgICAgfk1v
dmVPbmx5TGlmZWN5Y2xlTG9nZ2VyKCk7CisKKyAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlcihN
b3ZlT25seUxpZmVjeWNsZUxvZ2dlciYmKTsKKyAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciYg
b3BlcmF0b3I9KE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyJiYpOworCisgICAgdm9pZCBzZXROYW1l
KGNvbnN0IGNoYXIqKTsKKworICAgIGNvbnN0IGNoYXIqIG5hbWUgeyAiPGRlZmF1bHQ+IiB9Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJE
ZXN0cm95ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95
ZWQuY3BwCmluZGV4IDcwMjk1M2RhMWMzMDUzM2QxOTczZWJkMDBiZmNkYTY0YTgzM2VhYTguLjFl
ZDlkMmZiYjU1MGY3MWMwYzkwZGYyMTVjNjVhNDNjNzhhMjU2N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkxpZmVjeWNsZUxvZ2dlci5oIgor
I2luY2x1ZGUgIk1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OSw2ICs1MCw0NiBA
QCBURVNUKFdURl9OZXZlckRlc3Ryb3llZCwgQ29uc3RydWN0KQogICAgICAgICBBU1NFUlRfU1RS
RVEoeC5nZXQoKS5uYW1lLCAibmFtZSIpOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoImNvbnN0
cnVjdChuYW1lKSBjb3B5LWNvbnN0cnVjdChuYW1lKSBzZXQtbmFtZSh4KSBkZXN0cnVjdCh4KSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxM
aWZlY3ljbGVMb2dnZXI+IHggeyBbXSB7IHJldHVybiBMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIg
fTsgfSgpIH07IFVOVVNFRF9QQVJBTSh4KTsgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0
KG5hbWUpIG1vdmUtY29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgICAgIExpZmVjeWNsZUxvZ2dlciBsIHsgIm5hbWUi
IH07CisgICAgICAgICAgICBsLnNldE5hbWUoIngiKTsKKyAgICAgICAgICAgIHJldHVybiBsOwor
ICAgICAgICB9KCkpOworICAgICAgICBBU1NFUlRfU1RSRVEoeC5nZXQoKS5uYW1lLCAieCIpOwor
ICAgIH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1lKSBzZXQtbmFtZSh4KSBtb3Zl
LWNvbnN0cnVjdCh4KSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKKworICAgIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dl
cj4geDsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dlcj4geSB7
IFdURk1vdmUoeCkgfTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHkpOworICAgIH0KKyAgICBBU1NF
UlRfU1RSRVEoImNvbnN0cnVjdCg8ZGVmYXVsdD4pIG1vdmUtY29uc3RydWN0KDxkZWZhdWx0Pikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgTGlmZWN5Y2xlTG9nZ2VyPiB4OworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgTGlmZWN5Y2xlTG9nZ2VyPiB5IHsgV1RGTW92ZSh4KSB9OworICAgICAg
ICBVTlVTRURfUEFSQU0oeSk7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KDxk
ZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CisKKyAgICB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb3ZlT25seUxpZmVjeWNsZUxvZ2dl
cj4geCB7IFtdIHsgcmV0dXJuIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIHsgIm5hbWUiIH07IH0o
KSB9OyBVTlVTRURfUEFSQU0oeCk7IH0KKyAgICBBU1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1l
KSBtb3ZlLWNvbnN0cnVjdChuYW1lKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgc3RhdGljIGF1dG8geCA9IG1ha2VOZXZlckRl
c3Ryb3llZChbXSB7CisgICAgICAgICAgICBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciBsIHsgIm5h
bWUiIH07CisgICAgICAgICAgICBsLnNldE5hbWUoIngiKTsKKyAgICAgICAgICAgIHJldHVybiBs
OworICAgICAgICB9KCkpOworICAgICAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgfQorICAgIEFT
U0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgp
IGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCiBzdGF0
aWMgY29uc3QgVmVjdG9yPGludD4mIGxpc3QoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>