<?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>213684</bug_id>
          
          <creation_ts>2020-06-27 12:44:37 -0700</creation_ts>
          <short_desc>Improve error message for primitive callback interfaces</short_desc>
          <delta_ts>2020-06-28 19:07:52 -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>Bindings</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=213708</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1666804</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-06-27 12:44:37 -0700</bug_when>
    <thetext>Improve error message for primitive callback interfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666805</commentid>
    <comment_count>1</comment_count>
      <attachid>402969</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-06-27 12:48:07 -0700</bug_when>
    <thetext>Created attachment 402969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666806</commentid>
    <comment_count>2</comment_count>
      <attachid>402970</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-06-27 12:59:57 -0700</bug_when>
    <thetext>Created attachment 402970
Patch

Reset bindings tests results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666899</commentid>
    <comment_count>3</comment_count>
      <attachid>402970</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-28 12:56:19 -0700</bug_when>
    <thetext>Comment on attachment 402970
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp:218
&gt; +    appendArgumentMustBe(builder, argumentIndex, argumentName, interfaceName, functionName);

At some point should refactor this to use variadic append instead of StringBuilder, since there’s no reason not to use that more efficient approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666919</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-06-28 14:22:41 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; &gt; Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp:218
&gt; &gt; +    appendArgumentMustBe(builder, argumentIndex, argumentName, interfaceName, functionName);
&gt; 
&gt; At some point should refactor this to use variadic append instead of
&gt; StringBuilder, since there’s no reason not to use that more efficient
&gt; approach.

Thank you for review, Darin.

I&apos;m not sure I&apos;ve got &quot;instead of StringBuilder&quot; bit.
Would you prefer appendArgumentMustBe() written similar to refactors in r261437?

```
builder.append(
    &quot;Argument &quot;,
    argumentIndex + 1,
    &quot; (&apos;&quot;,
    argumentName,
    &quot;&apos;) to &quot;,
    functionName ? interfaceName : &quot;the &quot;,
    functionName ? &apos;.&apos; : interfaceName,
    functionName ? functionName : &quot; constructor&quot;,
    &quot; must be &quot;,
);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666924</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-28 14:47:48 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #4)
&gt; (In reply to Darin Adler from comment #3)
&gt; &gt; &gt; Source/WebCore/bindings/js/JSDOMExceptionHandling.cpp:218
&gt; &gt; &gt; +    appendArgumentMustBe(builder, argumentIndex, argumentName, interfaceName, functionName);
&gt; &gt; 
&gt; &gt; At some point should refactor this to use variadic append instead of
&gt; &gt; StringBuilder, since there’s no reason not to use that more efficient
&gt; &gt; approach.
&gt; 
&gt; Thank you for review, Darin.
&gt; 
&gt; I&apos;m not sure I&apos;ve got &quot;instead of StringBuilder&quot; bit.

Instead of appendArgumentMustBe I was suggesting writing a function throwArgumentMustBe like this:

template&lt;typename... StringTypes&gt; static JSC::EncodedJSValue throwArgumentMustBe(JSC::JSGlobalObject&amp; globalObject, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* interfaceName, const char* functionName, StringTypes ...strings)
{
    auto prefix = functionName ? &quot;&quot; : &quot;the &quot;;
    auto suffix = functionName ? &quot;.&quot; : &quot;constructor&quot;;
    auto optionalFunctionName = functionName ? functionName : &quot;&quot;;
    return throwVMTypeError(&amp;globalObject, scope, makeString(
        &quot;Argument &quot;, argumentIndex + 1, &quot; (&apos;&quot;, argumentName, &quot;&apos;) to &quot;,
        prefix, interfaceName, suffix, optionalFunctionName, &quot; must be &quot;, strings...
    ));
}

And then callers would have this:

    return throwArgumentMustBe(lexicalGlobalObject, script, argumentIndex, argumentName,
        functionInterfaceName, functionName, &quot;one of: &quot;, expectedValues);

    return throwArgumentMustBe(lexicalGlobalObject, script, argumentIndex, argumentName,
        functionInterfaceName, functionName, &quot;a function&quot;);

    return throwArgumentMustBe(lexicalGlobalObject, script, argumentIndex, argumentName,
        functionInterfaceName, functionName, &quot;an object&quot;);

It comes out kind of nice, don’t you think? Would be even better if all those arguments weren’t separate and there was some kind of struct or object they were contained in, but good enough for now.

On reflection, the current uses are simple enough that it could be done without a template:

static JSC::EncodedJSValue throwArgumentMustBe(JSC::JSGlobalObject&amp; globalObject, JSC::ThrowScope&amp; scope, unsigned argumentIndex, const char* argumentName, const char* interfaceName, const char* functionName, const char* firstSuffix, const char* secondSuffix = &quot;&quot;)
{
    ...
}

And still called the same way.

This comes out of just three things:

1) Recognition that makeString is more efficient than StringBuilder, StringBuilder to be avoided if possible.
2) Refactoring thinking: how can we maximize shared code while maintaining a high degree of clarity?
3) Realization that lists of arbitrary string-ifiable things can be passed around with parameter packs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666931</commentid>
    <comment_count>6</comment_count>
      <attachid>402970</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-06-28 15:28:54 -0700</bug_when>
    <thetext>Comment on attachment 402970
Patch

(In reply to Darin Adler from comment #5)
&gt; Instead of appendArgumentMustBe I was suggesting writing a function
&gt; throwArgumentMustBe like this:

I appreciate the insight and detailed explanation.

&gt; It comes out kind of nice, don’t you think?

Absolutely!
I&apos;ll submit a follow-up with proposed refactor and also remove StringBuilder from throwRequiredMemberTypeError().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666932</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-28 15:49:44 -0700</bug_when>
    <thetext>Committed r263638: &lt;https://trac.webkit.org/changeset/263638&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402970.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666933</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-28 15:50:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/64868672&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402969</attachid>
            <date>2020-06-27 12:48:07 -0700</date>
            <delta_ts>2020-06-27 12:59:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213684-20200627224805.patch</filename>
            <type>text/plain</type>
            <size>9826</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmYjNlZWVhOGI1MDk3
NzViNTY3NjJmMDUzZjFjYzk4NTc0MmFjZC4uMzdkYTA4M2Y5OWVhOTU0YTE2OTc3N2RjYTE0NzU1
ZDJiZTkzYjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA2LTI3ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBJbXByb3ZlIGVy
cm9yIG1lc3NhZ2UgZm9yIHByaW1pdGl2ZSBjYWxsYmFjayBpbnRlcmZhY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJld29yZHMg
VHlwZUVycm9yIG1lc3NhZ2UgZm9yIG5vbi1vYmplY3QgY2FsbGJhY2sgaW50ZXJmYWNlcworICAg
ICAgICBiZWNhdXNlIGFwYXJ0IGZyb20gZnVuY3Rpb24sIGFuIG9iamVjdCB3aXRoIGNlcnRhaW4g
bWV0aG9kIGlzIGFsc28gYWxsb3dlZC4KKyAgICAgICAgTmV3IGVycm9yIG1lc3NhZ2UgbWF0Y2hl
cyBDaHJvbWUgYW5kIEZpcmVmb3guCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2NyZWF0ZU5v
ZGVJdGVyYXRvci1wYXJhbWV0ZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2NyZWF0
ZVRyZWVXYWxrZXItcGFyYW1ldGVycy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXJndW1lbnRN
dXN0QmVPYmplY3RFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25I
YW5kbGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2V0QXJndW1lbnRFeGNlcHRpb25GdW5jdGlvbik6CisKIDIwMjAtMDYtMjYg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ1JBU0g6IGluY29t
cGF0aWJsZSBkb3duY2FzdDw+IG9wZXJhdGlvbiBpbiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6c2V0Q0RNSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcAppbmRleCA5YmViOTUzMWZjNjk5Nzk5NWU2YzJl
ZDk4NGZjN2YzMmY1ODdlNzMzLi5jMjQwODkwMzJlNjU3ZjgzOTY3YThmNWZlMWVhMDFkNjA0MWEw
MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmNwcApAQCAtMjEyLDYgKzIxMiwxNCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVl
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYQogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAorSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJv
d0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRl
eCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50
TmFtZSwgaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoImFuIG9iamVjdCIpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgYnVpbGRlci50b1N0cmluZygpKTsKK30KKwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2lnbmVkIGFyZ3Vt
ZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25J
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkVHlwZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgKaW5kZXggOWI2MDg3
YThiZmM5MDQzNzBhZjQ5YWZmYTNjMzkyYjVkZWZkMmYxNS4uNjM3NzVjZWI5OWQxMjVhM2M4OTI2
NjQ4YWEwZjU3ODhmMzI2ZTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01FeGNlcHRpb25IYW5kbGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBXRUJDT1JFX0VY
UE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6VGhyb3dTY29wZQogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dT
Y29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0
IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNW
YWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFy
Z3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUpOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUm
LCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNW
YWx1ZSB0aHJvd1JlcXVpcmVkTWVtYmVyVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBtZW1iZXJOYW1lLCBjb25zdCBjaGFyKiBkaWN0
aW9uYXJ5TmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9y
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRl
cmZhY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggNzVhYmY3Y2ZhOTkxODAxM2NjMzYwODlmNjQ1ZjNmNzk4Y2Rm
MzZjZi4uZTdkOGMzMzI2OTk0MWNiZWE5NDIzMmNkMmFlNGJmM2Q2NTA3NWUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTE1MDMsOCArMTUwMywxMSBAQCBzdWIgR2V0QXJndW1lbnRFeGNlcHRpb25GdW5jdGlvbgogICAg
IG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50
ZXJmYWNlTmFtZSgkaW50ZXJmYWNlKTsKICAgICBteSAkdHlwZU5hbWUgPSBHZXRUeXBlTmFtZUZv
ckRpc3BsYXlJbkV4Y2VwdGlvbigkYXJndW1lbnQtPnR5cGUpOwogCi0gICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmd1bWVudC0+dHlwZSkgfHwgJGNvZGVHZW5l
cmF0b3ItPklzQ2FsbGJhY2tGdW5jdGlvbigkYXJndW1lbnQtPnR5cGUpKSB7Ci0gICAgICAgICMg
RklYTUU6IFdlIHNob3VsZCBoYXZlIHNwZWNpYWxpemVkIG1lc3NhZ2VzIGZvciBjYWxsYmFjayBp
bnRlcmZhY2VzIHZzLiBjYWxsYmFjayBmdW5jdGlvbnMuCisgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCRhcmd1bWVudC0+dHlwZSkpIHsKKyAgICAgICAgcmV0dXJu
ICJ0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsICR7YXJndW1lbnRJbmRleH0sIFwiJHtuYW1lfVwiLCBcIiR7dmlzaWJsZUludGVyZmFjZU5h
bWV9XCIsICR7cXVvdGVkRnVuY3Rpb25OYW1lfSk7IjsKKyAgICB9CisKKyAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzQ2FsbGJhY2tGdW5jdGlvbigkYXJndW1lbnQtPnR5cGUpKSB7CiAgICAgICAg
IHJldHVybiAidGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsICR7YXJndW1lbnRJbmRleH0sIFwiJHtuYW1lfVwiLCBcIiR7dmlzaWJsZUlu
dGVyZmFjZU5hbWV9XCIsICR7cXVvdGVkRnVuY3Rpb25OYW1lfSk7IjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjMjE0ZDYzMTJmM2E1ZTU0ZWZkNDYyNGJlZDU3YzExMjI3ZjkwMzhjLi5iZTIzMTMwMzU1MTZl
NDkwNWQwYjZlOTZkNDZhYTc1YmUzMzVkZmVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MDYtMjcgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgcHJpbWl0aXZlIGNhbGxiYWNrIGludGVyZmFjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9k
b20vY3JlYXRlTm9kZUl0ZXJhdG9yLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL2NyZWF0ZU5vZGVJdGVyYXRvci1wYXJhbWV0ZXJzLmh0bWw6CisgICAgICAgICog
ZmFzdC9kb20vY3JlYXRlVHJlZVdhbGtlci1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9jcmVhdGVUcmVlV2Fsa2VyLXBhcmFtZXRlcnMuaHRtbDoKKwogMjAyMC0w
Ni0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB3
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kgZnJvbSB1cHN0cmVhbQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlTm9kZUl0ZXJhdG9yLXBhcmFt
ZXRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlTm9kZUl0ZXJh
dG9yLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDMyMDA1YjcwNTRhMTJkNjFiZGNkMDU3
YTgyN2FmMzM4YTE1MWI5NWQuLjg5ZmJjZWMzOTRjNzFiMWMwMWRmN2M1NmRkOWY1YWUzOTA1OTg0
YjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZU5vZGVJdGVyYXRvci1w
YXJhbWV0ZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVO
b2RlSXRlcmF0b3ItcGFyYW1ldGVycy1leHBlY3RlZC50eHQKQEAgLTksNiArOSw5IEBAIFBBU1Mg
ZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
Tm90IGVub3VnaCBhcmd1bWVuCiBOdWxsIHJvb3Qgbm9kZQogUEFTUyBkb2N1bWVudC5jcmVhdGVO
b2RlSXRlcmF0b3IobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAo
J3Jvb3QnKSB0byBEb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IgbXVzdCBiZSBhbiBpbnN0YW5j
ZSBvZiBOb2RlLgogCitQcmltaXRpdmUgKHN5bWJvbCkgTm9kZUZpbHRlciBjYWxsYmFjaworUEFT
UyBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQsIG51bGwsIFN5bWJvbCgpKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAzICgnZmlsdGVyJykgdG8gRG9jdW1l
bnQuY3JlYXRlTm9kZUl0ZXJhdG9yIG11c3QgYmUgYW4gb2JqZWN0LgorCiBEZWZhdWx0IHBhcmFt
ZXRlcnMKIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50KQog
UEFTUyBpdGVyYXRvci5yb290IGlzIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jcmVhdGVOb2RlSXRlcmF0b3ItcGFyYW1ldGVycy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3JlYXRlTm9kZUl0ZXJhdG9yLXBhcmFtZXRlcnMuaHRtbAppbmRleCA1YzQ3NzQ1
ODRkY2JmMGViMTNjY2E2MDRhYTE1YTIyMjlmYmZmYzkwLi5jM2E2NzdmMmZlNjUxYjYxMjdkYWZh
Y2M3ZjdlMDdhYmIzMjhjMTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVh
dGVOb2RlSXRlcmF0b3ItcGFyYW1ldGVycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2NyZWF0ZU5vZGVJdGVyYXRvci1wYXJhbWV0ZXJzLmh0bWwKQEAgLTEyLDYgKzEyLDEwIEBAIGRl
YnVnKCIiKQogZGVidWcoIk51bGwgcm9vdCBub2RlIik7CiBzaG91bGRUaHJvdygiZG9jdW1lbnQu
Y3JlYXRlTm9kZUl0ZXJhdG9yKG51bGwpIiwgIidUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKFxcJ3Jv
b3RcXCcpIHRvIERvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvciBtdXN0IGJlIGFuIGluc3RhbmNl
IG9mIE5vZGUnIik7CiAKK2RlYnVnKCIiKTsKK2RlYnVnKCJQcmltaXRpdmUgKHN5bWJvbCkgTm9k
ZUZpbHRlciBjYWxsYmFjayIpOworc2hvdWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZU5vZGVJdGVy
YXRvcihkb2N1bWVudCwgbnVsbCwgU3ltYm9sKCkpIiwgIidUeXBlRXJyb3I6IEFyZ3VtZW50IDMg
KFxcJ2ZpbHRlclxcJykgdG8gRG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yIG11c3QgYmUgYW4g
b2JqZWN0JyIpOworCiBkZWJ1ZygiIik7CiBkZWJ1ZygiRGVmYXVsdCBwYXJhbWV0ZXJzIik7CiBl
dmFsQW5kTG9nKCJpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihkb2N1bWVu
dCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXIt
cGFyYW1ldGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVUcmVl
V2Fsa2VyLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDNkZGNkYjY2MGVmMDEwMDNjNDQ5
MjJlODA0YWRhMDJjNTJjMWY2ODUuLjRiN2MwNTIwNTQxM2FmNjQyZjBmNDdkZGVkMzAyMWVmNGFj
YmEzZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXIt
cGFyYW1ldGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRl
VHJlZVdhbGtlci1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dApAQCAtOSw2ICs5LDkgQEAgUEFTUyBk
b2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMKIE51bGwgcm9vdCBub2RlCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRy
ZWVXYWxrZXIobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ3Jv
b3QnKSB0byBEb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Yg
Tm9kZS4KIAorUHJpbWl0aXZlIChzdHJpbmcpIE5vZGVGaWx0ZXIgY2FsbGJhY2sKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCwgbnVsbCwgJ3N0cicpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKCdmaWx0ZXInKSB0byBEb2N1bWVudC5jcmVhdGVU
cmVlV2Fsa2VyIG11c3QgYmUgYW4gb2JqZWN0LgorCiBEZWZhdWx0IHBhcmFtZXRlcnMKIHdhbGtl
ciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQpCiBQQVNTIHdhbGtlci5yb290
IGlzIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVUcmVl
V2Fsa2VyLXBhcmFtZXRlcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVX
YWxrZXItcGFyYW1ldGVycy5odG1sCmluZGV4IDdjMzBmODE4NmZlMTYyMDliZDUyNDEwYTk0YjY2
MmVkYjQ0YjgwOTMuLmZjOWU3MWJhZDUzNzk1YjM2MmVjZjM4YWZkY2ExYzRmNGMwMGU4NmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXItcGFyYW1ldGVy
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXItcGFyYW1l
dGVycy5odG1sCkBAIC0xMiw2ICsxMiwxMCBAQCBkZWJ1ZygiIikKIGRlYnVnKCJOdWxsIHJvb3Qg
bm9kZSIpOwogc2hvdWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIobnVsbCkiLCAi
J1R5cGVFcnJvcjogQXJndW1lbnQgMSAoXFwncm9vdFxcJykgdG8gRG9jdW1lbnQuY3JlYXRlVHJl
ZVdhbGtlciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE5vZGUnIik7CiAKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJQcmltaXRpdmUgKHN0cmluZykgTm9kZUZpbHRlciBjYWxsYmFjayIpOworc2hvdWxkVGhy
b3coImRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIG51bGwsICdzdHInKSIsICIn
VHlwZUVycm9yOiBBcmd1bWVudCAzIChcXCdmaWx0ZXJcXCcpIHRvIERvY3VtZW50LmNyZWF0ZVRy
ZWVXYWxrZXIgbXVzdCBiZSBhbiBvYmplY3QnIik7CisKIGRlYnVnKCIiKTsKIGRlYnVnKCJEZWZh
dWx0IHBhcmFtZXRlcnMiKTsKIGV2YWxBbmRMb2coIndhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRy
ZWVXYWxrZXIoZG9jdW1lbnQpIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402970</attachid>
            <date>2020-06-27 12:59:57 -0700</date>
            <delta_ts>2020-06-28 15:49:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213684-20200627225955.patch</filename>
            <type>text/plain</type>
            <size>20454</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmYjNlZWVhOGI1MDk3
NzViNTY3NjJmMDUzZjFjYzk4NTc0MmFjZC4uNTZhZjY5MThhMDlmZjhlNTFkYTNiYjUyZjQ3ODlh
MmJlOGI1OWQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA2LTI3ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBJbXByb3ZlIGVy
cm9yIG1lc3NhZ2UgZm9yIHByaW1pdGl2ZSBjYWxsYmFjayBpbnRlcmZhY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJld29yZHMg
VHlwZUVycm9yIG1lc3NhZ2UgZm9yIG5vbi1vYmplY3QgY2FsbGJhY2sgaW50ZXJmYWNlcworICAg
ICAgICBiZWNhdXNlIGFwYXJ0IGZyb20gZnVuY3Rpb24sIGFuIG9iamVjdCB3aXRoIGNlcnRhaW4g
bWV0aG9kIGlzIGFsc28gYWxsb3dlZC4KKyAgICAgICAgTmV3IGVycm9yIG1lc3NhZ2UgbWF0Y2hl
cyBDaHJvbWUgYW5kIEZpcmVmb3guCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2NyZWF0ZU5v
ZGVJdGVyYXRvci1wYXJhbWV0ZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2NyZWF0
ZVRyZWVXYWxrZXItcGFyYW1ldGVycy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXJndW1lbnRN
dXN0QmVPYmplY3RFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25I
YW5kbGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2V0QXJndW1lbnRFeGNlcHRpb25GdW5jdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0Lyo6IFVwZGF0ZWQuCisKIDIwMjAtMDYtMjYgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ1JBU0g6IGluY29tcGF0aWJsZSBkb3du
Y2FzdDw+IG9wZXJhdGlvbiBpbiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0Q0RNSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNl
cHRpb25IYW5kbGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmNwcAppbmRleCA5YmViOTUzMWZjNjk5Nzk5NWU2YzJlZDk4NGZjN2YzMmY1
ODdlNzMzLi5jMjQwODkwMzJlNjU3ZjgzOTY3YThmNWZlMWVhMDFkNjA0MWEwMGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmNwcApAQCAtMjEyLDYgKzIxMiwxNCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgYnVpbGRl
ci50b1N0cmluZygpKTsKIH0KIAorSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVz
dEJlT2JqZWN0RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hh
ciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGFwcGVuZEFy
Z3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgaW50ZXJm
YWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImFuIG9i
amVjdCIpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgYnVpbGRlci50b1N0cmluZygpKTsKK30KKwogSlNDOjpFbmNvZGVkSlNWYWx1ZSB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNv
bnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgKaW5kZXggOWI2MDg3YThiZmM5MDQzNzBh
ZjQ5YWZmYTNjMzkyYjVkZWZkMmYxNS4uNjM3NzVjZWI5OWQxMjVhM2M4OTI2NjQ4YWEwZjU3ODhm
MzI2ZTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNl
cHRpb25IYW5kbGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29w
ZQogCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0
QmVFbnVtRXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVmFsdWVzKTsKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3Vt
ZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUpOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0Fy
Z3VtZW50TXVzdEJlT2JqZWN0RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dT
Y29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUpOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCB1bnNpZ25lZCBh
cmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBl
eHBlY3RlZFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd1Jl
cXVpcmVkTWVtYmVyVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2Nv
cGUmLCBjb25zdCBjaGFyKiBtZW1iZXJOYW1lLCBjb25zdCBjaGFyKiBkaWN0aW9uYXJ5TmFtZSwg
Y29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25z
dHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggNzVhYmY3Y2ZhOTkxODAxM2NjMzYwODlmNjQ1ZjNmNzk4Y2RmMzZjZi4uZTdkOGMz
MzI2OTk0MWNiZWE5NDIzMmNkMmFlNGJmM2Q2NTA3NWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE1MDMsOCArMTUw
MywxMSBAQCBzdWIgR2V0QXJndW1lbnRFeGNlcHRpb25GdW5jdGlvbgogICAgIG15ICR2aXNpYmxl
SW50ZXJmYWNlTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgk
aW50ZXJmYWNlKTsKICAgICBteSAkdHlwZU5hbWUgPSBHZXRUeXBlTmFtZUZvckRpc3BsYXlJbkV4
Y2VwdGlvbigkYXJndW1lbnQtPnR5cGUpOwogCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Nh
bGxiYWNrSW50ZXJmYWNlKCRhcmd1bWVudC0+dHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ2Fs
bGJhY2tGdW5jdGlvbigkYXJndW1lbnQtPnR5cGUpKSB7Ci0gICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBoYXZlIHNwZWNpYWxpemVkIG1lc3NhZ2VzIGZvciBjYWxsYmFjayBpbnRlcmZhY2VzIHZz
LiBjYWxsYmFjayBmdW5jdGlvbnMuCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNr
SW50ZXJmYWNlKCRhcmd1bWVudC0+dHlwZSkpIHsKKyAgICAgICAgcmV0dXJuICJ0aHJvd0FyZ3Vt
ZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICR7YXJndW1l
bnRJbmRleH0sIFwiJHtuYW1lfVwiLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICR7cXVv
dGVkRnVuY3Rpb25OYW1lfSk7IjsKKyAgICB9CisKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
Q2FsbGJhY2tGdW5jdGlvbigkYXJndW1lbnQtPnR5cGUpKSB7CiAgICAgICAgIHJldHVybiAidGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
ICR7YXJndW1lbnRJbmRleH0sIFwiJHtuYW1lfVwiLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9
XCIsICR7cXVvdGVkRnVuY3Rpb25OYW1lfSk7IjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMWVm
ODM0MDdjM2Q0ODdkMTNkNmJlZDBiYTJlMzkzMGU1MTU0OTY3Yy4uZjAyM2FiYjBiZDdjYmVjZmVj
NmUxZDk5MWRkZTVmYTAwOGZkMDU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE5NzIsNyArMTk3Miw3IEBA
IHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwotICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsgfSk7
CisgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpT
VGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAi
dGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsgfSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsK
ICAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQxLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMSwgInRlc3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsgfSk7
CkBAIC03MzcwLDcgKzczNzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcgogICAgIGlmIChV
TkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsgfSk7CisgICAg
YXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOyB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0
aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03MzkzLDcgKzczOTMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhYwogICAgIGF1dG8gbm9uQ2FsbGJhY2sgPSBjb252ZXJ0PElE
TExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgxKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEu
dmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAx
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxi
YWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNzQxMSw3ICs3NDExLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW4KICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOyB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03NDg5LDcgKzc0ODksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYQogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25h
bEFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNzUwOCw3ICs3NTA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRo
Q2EKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRl
cmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBj
b252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTc2MzgsNyArNzYzOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1Qm9kCiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJ
bnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5k
ZXggMDI4MGUyN2JmN2M2NTkyODFkODg5MTY4YmM5MTQwMWQzNjBjYWE5ZS4uZTBlZTA1ZmZkNDFk
ODRjYWExNGIzYWRiYjJiNTQ3N2E4ZTM4MmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0x
NjksNyArMTY5LDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0cKICAgICBhdXRvIHRlc3RDYWxs
YmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInRlc3RDYWxsYmFj
a0Z1bmN0aW9uIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpOwot
ICAgIGF1dG8gdGVzdENhbGxiYWNrSW50ZXJmYWNlID0gY29udmVydDxJRExDYWxsYmFja0ludGVy
ZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDIudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAyLCAidGVzdENhbGxiYWNrSW50ZXJmYWNlIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIp
OyB9KTsKKyAgICBhdXRvIHRlc3RDYWxsYmFja0ludGVyZmFjZSA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQyLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDIsICJ0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCAiVGVzdFR5cGVkZWZzIiwgbnVs
bHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0VHlwZWRlZnM6OmNyZWF0ZShXVEZNb3Zl
KGhlbGxvKSwgdGVzdENhbGxiYWNrRnVuY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgdGVzdENhbGxi
YWNrSW50ZXJmYWNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5
cGUob2JqZWN0KTo6aXNSZWYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMyMTRkNjMxMmYzYTVlNTRlZmQ0NjI0YmVkNTdj
MTEyMjdmOTAzOGMuLmJlMjMxMzAzNTUxNmU0OTA1ZDBiNmU5NmQ0NmFhNzViZTMzNWRmZWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNi0yNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBwcmlt
aXRpdmUgY2FsbGJhY2sgaW50ZXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNjg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9jcmVhdGVOb2RlSXRlcmF0b3ItcGFyYW1ldGVy
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vY3JlYXRlTm9kZUl0ZXJhdG9yLXBh
cmFtZXRlcnMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9jcmVhdGVUcmVlV2Fsa2VyLXBhcmFt
ZXRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXIt
cGFyYW1ldGVycy5odG1sOgorCiAyMDIwLTA2LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeSBmcm9tIHVwc3RyZWFtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jcmVhdGVOb2RlSXRlcmF0b3ItcGFyYW1ldGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9jcmVhdGVOb2RlSXRlcmF0b3ItcGFyYW1ldGVycy1leHBlY3RlZC50eHQKaW5k
ZXggMzIwMDViNzA1NGExMmQ2MWJkY2QwNTdhODI3YWYzMzhhMTUxYjk1ZC4uODlmYmNlYzM5NGM3
MWIxYzAxZGY3YzU2ZGQ5ZjVhZTM5MDU5ODRiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY3JlYXRlTm9kZUl0ZXJhdG9yLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZU5vZGVJdGVyYXRvci1wYXJhbWV0ZXJzLWV4cGVjdGVk
LnR4dApAQCAtOSw2ICs5LDkgQEAgUEFTUyBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW4KIE51bGwgcm9vdCBu
b2RlCiBQQVNTIGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgncm9vdCcpIHRvIERvY3VtZW50LmNyZWF0ZU5vZGVJ
dGVyYXRvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE5vZGUuCiAKK1ByaW1pdGl2ZSAoc3ltYm9s
KSBOb2RlRmlsdGVyIGNhbGxiYWNrCitQQVNTIGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihk
b2N1bWVudCwgbnVsbCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3Vt
ZW50IDMgKCdmaWx0ZXInKSB0byBEb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IgbXVzdCBiZSBh
biBvYmplY3QuCisKIERlZmF1bHQgcGFyYW1ldGVycwogaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVh
dGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQpCiBQQVNTIGl0ZXJhdG9yLnJvb3QgaXMgZG9jdW1lbnQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZU5vZGVJdGVyYXRvci1wYXJh
bWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVOb2RlSXRlcmF0b3ItcGFy
YW1ldGVycy5odG1sCmluZGV4IDVjNDc3NDU4NGRjYmYwZWIxM2NjYTYwNGFhMTVhMjIyOWZiZmZj
OTAuLmMzYTY3N2YyZmU2NTFiNjEyN2RhZmFjYzdmN2UwN2FiYjMyOGMxNWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZU5vZGVJdGVyYXRvci1wYXJhbWV0ZXJzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlTm9kZUl0ZXJhdG9yLXBhcmFtZXRlcnMu
aHRtbApAQCAtMTIsNiArMTIsMTAgQEAgZGVidWcoIiIpCiBkZWJ1ZygiTnVsbCByb290IG5vZGUi
KTsKIHNob3VsZFRocm93KCJkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IobnVsbCkiLCAiJ1R5
cGVFcnJvcjogQXJndW1lbnQgMSAoXFwncm9vdFxcJykgdG8gRG9jdW1lbnQuY3JlYXRlTm9kZUl0
ZXJhdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTm9kZSciKTsKIAorZGVidWcoIiIpOworZGVi
dWcoIlByaW1pdGl2ZSAoc3ltYm9sKSBOb2RlRmlsdGVyIGNhbGxiYWNrIik7CitzaG91bGRUaHJv
dygiZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50LCBudWxsLCBTeW1ib2woKSki
LCAiJ1R5cGVFcnJvcjogQXJndW1lbnQgMyAoXFwnZmlsdGVyXFwnKSB0byBEb2N1bWVudC5jcmVh
dGVOb2RlSXRlcmF0b3IgbXVzdCBiZSBhbiBvYmplY3QnIik7CisKIGRlYnVnKCIiKTsKIGRlYnVn
KCJEZWZhdWx0IHBhcmFtZXRlcnMiKTsKIGV2YWxBbmRMb2coIml0ZXJhdG9yID0gZG9jdW1lbnQu
Y3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50KSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3JlYXRlVHJlZVdhbGtlci1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXItcGFyYW1ldGVycy1leHBlY3RlZC50eHQK
aW5kZXggM2RkY2RiNjYwZWYwMTAwM2M0NDkyMmU4MDRhZGEwMmM1MmMxZjY4NS4uNGI3YzA1MjA1
NDEzYWY2NDJmMGY0N2RkZWQzMDIxZWY0YWNiYTNlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3JlYXRlVHJlZVdhbGtlci1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVUcmVlV2Fsa2VyLXBhcmFtZXRlcnMtZXhwZWN0ZWQu
dHh0CkBAIC05LDYgKzksOSBAQCBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cwogTnVsbCByb290IG5v
ZGUKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihudWxsKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBcmd1bWVudCAxICgncm9vdCcpIHRvIERvY3VtZW50LmNyZWF0ZVRyZWVXYWxr
ZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBOb2RlLgogCitQcmltaXRpdmUgKHN0cmluZykgTm9k
ZUZpbHRlciBjYWxsYmFjaworUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50
LCBudWxsLCAnc3RyJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMyAoJ2Zp
bHRlcicpIHRvIERvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIgbXVzdCBiZSBhbiBvYmplY3QuCisK
IERlZmF1bHQgcGFyYW1ldGVycwogd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihk
b2N1bWVudCkKIFBBU1Mgd2Fsa2VyLnJvb3QgaXMgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZVRyZWVXYWxrZXItcGFyYW1ldGVycy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3JlYXRlVHJlZVdhbGtlci1wYXJhbWV0ZXJzLmh0bWwKaW5kZXggN2Mz
MGY4MTg2ZmUxNjIwOWJkNTI0MTBhOTRiNjYyZWRiNDRiODA5My4uZmM5ZTcxYmFkNTM3OTViMzYy
ZWNmMzhhZmRjYTFjNGY0YzAwZTg2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y3JlYXRlVHJlZVdhbGtlci1wYXJhbWV0ZXJzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vY3JlYXRlVHJlZVdhbGtlci1wYXJhbWV0ZXJzLmh0bWwKQEAgLTEyLDYgKzEyLDEwIEBAIGRl
YnVnKCIiKQogZGVidWcoIk51bGwgcm9vdCBub2RlIik7CiBzaG91bGRUaHJvdygiZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcihudWxsKSIsICInVHlwZUVycm9yOiBBcmd1bWVudCAxIChcXCdyb290
XFwnKSB0byBEb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Yg
Tm9kZSciKTsKIAorZGVidWcoIiIpOworZGVidWcoIlByaW1pdGl2ZSAoc3RyaW5nKSBOb2RlRmls
dGVyIGNhbGxiYWNrIik7CitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihk
b2N1bWVudCwgbnVsbCwgJ3N0cicpIiwgIidUeXBlRXJyb3I6IEFyZ3VtZW50IDMgKFxcJ2ZpbHRl
clxcJykgdG8gRG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlciBtdXN0IGJlIGFuIG9iamVjdCciKTsK
KwogZGVidWcoIiIpOwogZGVidWcoIkRlZmF1bHQgcGFyYW1ldGVycyIpOwogZXZhbEFuZExvZygi
d2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCkiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>