<?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>146235</bug_id>
          
          <creation_ts>2015-06-23 04:47:03 -0700</creation_ts>
          <short_desc>[Streams API] Implement HighWaterMark</short_desc>
          <delta_ts>2015-06-25 05:38:48 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>138967</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104082</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-23 04:47:03 -0700</bug_when>
    <thetext>Implement high water mark as defined in https://streams.spec.whatwg.org/#rs-constructor and https://streams.spec.whatwg.org/#validate-and-normalize-queuing-strategy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104083</commentid>
    <comment_count>1</comment_count>
      <attachid>255406</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-23 05:20:49 -0700</bug_when>
    <thetext>Created attachment 255406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104130</commentid>
    <comment_count>2</comment_count>
      <attachid>255406</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-23 11:27:13 -0700</bug_when>
    <thetext>Comment on attachment 255406
Patch

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

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:201
&gt; +static inline double getHighWaterMark(ExecState&amp; exec, JSObject* strategy)

WebKIt coding style does not involve the word &quot;get&quot; for a function with a return value like this.

The strategy argument should be a JSObject&amp;.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:205
&gt; +    if (!jsHighWaterMark)
&gt; +        return 1;

This dead code should be removed. The get function can never return an “empty” JSValue like this. I don’t even think we need this local variable.

However, we should return here if we had an exception before running toNumber.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:207
&gt; +    double highWaterMark = jsHighWaterMark.toNumber(&amp;exec);

IF we get an exception from toNumber we should return that exception, not the &quot;highWaterMark parameter is NaN&quot; one.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:209
&gt; +        throwVMError(&amp;exec, createTypeError(&amp;exec, ASCIILiteral(&quot;highWaterMark parameter is NaN&quot;)));

Isn’t there a more efficient way to do this perhaps with a single function call? It seems overkill here to have a custom strong that includes the argument name. Can we make this more consistent with other bindings?

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:213
&gt; +        throwVMError(&amp;exec, createRangeError(&amp;exec, ASCIILiteral(&quot;highWaterMark parameter is not a positive value&quot;)));

Same thought here.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:219
&gt;  RefPtr&lt;ReadableJSStream&gt; ReadableJSStream::create(ExecState&amp; exec, ScriptExecutionContext&amp; scriptExecutionContext)

It’s a bad pattern to do so much bindings work here in the DOM class. I wonder if there is some way to improve the factoring. Sam Weinig might have some comments about that.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:236
&gt; +        highWaterMark = getHighWaterMark(exec, strategyObject);

Need to return after this if there is an exception before calling getPropertyFromObject below because side effects can be observed.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:251
&gt; +    RefPtr&lt;ReadableJSStream&gt; readableStream = adoptRef(*new ReadableJSStream(scriptExecutionContext, exec, jsSource, highWaterMark, sizeFunction));

Is it correct to pass an empty JSValue for sizeFunction when there is no function? How about passing &quot;undefined&quot; instead? Also we should change the type to be JSFunction* (or something like that) since we are doing the type checking here outside the class.

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:88
&gt; +    JSC::Strong&lt;JSC::Unknown&gt; m_sizeFunction;

I’m concerned that this could result in a reference cycle, if the size function has captured a reference to the stream. I guess I should have the same worry about m_errorFunction. Generally speaking I think we need to use GC marking rather than strong references in this class to avoid cycles and leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104134</commentid>
    <comment_count>3</comment_count>
      <attachid>255406</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-23 11:30:30 -0700</bug_when>
    <thetext>Comment on attachment 255406
Patch

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

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:207
&gt;&gt; +    double highWaterMark = jsHighWaterMark.toNumber(&amp;exec);
&gt; 
&gt; IF we get an exception from toNumber we should return that exception, not the &quot;highWaterMark parameter is NaN&quot; one.

To be clearer, I mean we should return so that exception is not overwritten bythe &quot;highWaterMark parameter is NaN&quot; one or any other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104370</commentid>
    <comment_count>4</comment_count>
      <attachid>255406</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-24 08:29:27 -0700</bug_when>
    <thetext>Comment on attachment 255406
Patch

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

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:201
&gt;&gt; +static inline double getHighWaterMark(ExecState&amp; exec, JSObject* strategy)
&gt; 
&gt; WebKIt coding style does not involve the word &quot;get&quot; for a function with a return value like this.
&gt; 
&gt; The strategy argument should be a JSObject&amp;.

ok

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:205
&gt;&gt; +        return 1;
&gt; 
&gt; This dead code should be removed. The get function can never return an “empty” JSValue like this. I don’t even think we need this local variable.

Good catch, we shoud check whether jsHighWaterMark is undefined or not.

&gt; However, we should return here if we had an exception before running toNumber.

OK

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:207
&gt;&gt;&gt; +    double highWaterMark = jsHighWaterMark.toNumber(&amp;exec);
&gt;&gt; 
&gt;&gt; IF we get an exception from toNumber we should return that exception, not the &quot;highWaterMark parameter is NaN&quot; one.
&gt; 
&gt; To be clearer, I mean we should return so that exception is not overwritten bythe &quot;highWaterMark parameter is NaN&quot; one or any other.

Right.

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:209
&gt;&gt; +        throwVMError(&amp;exec, createTypeError(&amp;exec, ASCIILiteral(&quot;highWaterMark parameter is NaN&quot;)));
&gt; 
&gt; Isn’t there a more efficient way to do this perhaps with a single function call? It seems overkill here to have a custom strong that includes the argument name. Can we make this more consistent with other bindings?

I am not sure to totally understand the point here.
We can remove the ASCIILiteral string, it is not mandatory, that what is doing setDOMException().
Or we could set it to &quot;Value is NaN&quot;.
Is it what is suggested?

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:219
&gt;&gt;  RefPtr&lt;ReadableJSStream&gt; ReadableJSStream::create(ExecState&amp; exec, ScriptExecutionContext&amp; scriptExecutionContext)
&gt; 
&gt; It’s a bad pattern to do so much bindings work here in the DOM class. I wonder if there is some way to improve the factoring. Sam Weinig might have some comments about that.

We could slightly reduce the binding by making the constructor not custom.
But we need anyway an ExecState, so we would use the globalExec retrieved from the source object.
I&apos;ll have some thoughts about it later.

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:236
&gt;&gt; +        highWaterMark = getHighWaterMark(exec, strategyObject);
&gt; 
&gt; Need to return after this if there is an exception before calling getPropertyFromObject below because side effects can be observed.

ok

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:251
&gt;&gt; +    RefPtr&lt;ReadableJSStream&gt; readableStream = adoptRef(*new ReadableJSStream(scriptExecutionContext, exec, jsSource, highWaterMark, sizeFunction));
&gt; 
&gt; Is it correct to pass an empty JSValue for sizeFunction when there is no function? How about passing &quot;undefined&quot; instead? Also we should change the type to be JSFunction* (or something like that) since we are doing the type checking here outside the class.

It is covered by tests, but this is not recommended I guess.
Let&apos;s change that to a JSFunction*/nullptr

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.h:88
&gt;&gt; +    JSC::Strong&lt;JSC::Unknown&gt; m_sizeFunction;
&gt; 
&gt; I’m concerned that this could result in a reference cycle, if the size function has captured a reference to the stream. I guess I should have the same worry about m_errorFunction. Generally speaking I think we need to use GC marking rather than strong references in this class to avoid cycles and leaks.

I share the same concerns.
Let&apos;s do that as a follow up patch, which may also encompass source and maybe pull fulfill/reject promise callbacks.
I filed bug 146278 for that purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104626</commentid>
    <comment_count>5</comment_count>
      <attachid>255406</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-25 04:34:55 -0700</bug_when>
    <thetext>Comment on attachment 255406
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:201
&gt;&gt;&gt; +static inline double getHighWaterMark(ExecState&amp; exec, JSObject* strategy)
&gt;&gt; 
&gt;&gt; WebKIt coding style does not involve the word &quot;get&quot; for a function with a return value like this.
&gt;&gt; 
&gt;&gt; The strategy argument should be a JSObject&amp;.

Done

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:205
&gt;&gt;&gt; +        return 1;
&gt;&gt; 
&gt;&gt; This dead code should be removed. The get function can never return an “empty” JSValue like this. I don’t even think we need this local variable.
&gt;&gt; 
&gt;&gt; However, we should return here if we had an exception before running toNumber.
&gt; 
&gt; Good catch, we shoud check whether jsHighWaterMark is undefined or not.

Done

&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:207
&gt;&gt;&gt;&gt; +    double highWaterMark = jsHighWaterMark.toNumber(&amp;exec);
&gt;&gt;&gt; 
&gt;&gt;&gt; IF we get an exception from toNumber we should return that exception, not the &quot;highWaterMark parameter is NaN&quot; one.
&gt;&gt; 
&gt;&gt; To be clearer, I mean we should return so that exception is not overwritten bythe &quot;highWaterMark parameter is NaN&quot; one or any other.

Done

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:209
&gt;&gt;&gt; +        throwVMError(&amp;exec, createTypeError(&amp;exec, ASCIILiteral(&quot;highWaterMark parameter is NaN&quot;)));
&gt;&gt; 
&gt;&gt; Isn’t there a more efficient way to do this perhaps with a single function call? It seems overkill here to have a custom strong that includes the argument name. Can we make this more consistent with other bindings?

Changed to &quot;Value is NaN&quot;

&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:213
&gt;&gt; +        throwVMError(&amp;exec, createRangeError(&amp;exec, ASCIILiteral(&quot;highWaterMark parameter is not a positive value&quot;)));
&gt;&gt; 
&gt;&gt; Same thought here.

Changed to &quot;Not a positive value&quot;

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:219
&gt;&gt;&gt;  RefPtr&lt;ReadableJSStream&gt; ReadableJSStream::create(ExecState&amp; exec, ScriptExecutionContext&amp; scriptExecutionContext)
&gt;&gt; 
&gt;&gt; It’s a bad pattern to do so much bindings work here in the DOM class. I wonder if there is some way to improve the factoring. Sam Weinig might have some comments about that.

Added a FIXME

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:236
&gt;&gt;&gt; +        highWaterMark = getHighWaterMark(exec, strategyObject);
&gt;&gt; 
&gt;&gt; Need to return after this if there is an exception before calling getPropertyFromObject below because side effects can be observed.

Done

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:251
&gt;&gt;&gt; +    RefPtr&lt;ReadableJSStream&gt; readableStream = adoptRef(*new ReadableJSStream(scriptExecutionContext, exec, jsSource, highWaterMark, sizeFunction));
&gt;&gt; 
&gt;&gt; Is it correct to pass an empty JSValue for sizeFunction when there is no function? How about passing &quot;undefined&quot; instead? Also we should change the type to be JSFunction* (or something like that) since we are doing the type checking here outside the class.

Done

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableJSStream.h:88
&gt;&gt;&gt; +    JSC::Strong&lt;JSC::Unknown&gt; m_sizeFunction;
&gt;&gt; 
&gt;&gt; I’m concerned that this could result in a reference cycle, if the size function has captured a reference to the stream. I guess I should have the same worry about m_errorFunction. Generally speaking I think we need to use GC marking rather than strong references in this class to avoid cycles and leaks.

Added a FIXME referring to the filed bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104627</commentid>
    <comment_count>6</comment_count>
      <attachid>255546</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-25 04:35:24 -0700</bug_when>
    <thetext>Created attachment 255546
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104628</commentid>
    <comment_count>7</comment_count>
      <attachid>255546</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 04:37:08 -0700</bug_when>
    <thetext>Comment on attachment 255546
Patch for landing

Rejecting attachment 255546 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 255546, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/4887571318439936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104630</commentid>
    <comment_count>8</comment_count>
      <attachid>255547</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-25 04:42:03 -0700</bug_when>
    <thetext>Created attachment 255547
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104635</commentid>
    <comment_count>9</comment_count>
      <attachid>255547</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 05:38:44 -0700</bug_when>
    <thetext>Comment on attachment 255547
Patch for landing

Clearing flags on attachment: 255547

Committed r185953: &lt;http://trac.webkit.org/changeset/185953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104636</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 05:38:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255406</attachid>
            <date>2015-06-23 05:20:49 -0700</date>
            <delta_ts>2015-06-25 04:35:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146235-20150623142005.patch</filename>
            <type>text/plain</type>
            <size>12000</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE4Mzk0OGMxODVmNTdi
YzhjM2Q0N2FhZWI0N2RiZGYyZjQ4YjUxNC4uODgwZGNkYWUyYzQ3NDBiOTRmNmQ2ZmQ5YjkyYTY2
YmNjMTFkMTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA2LTI0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBJbXBsZW1lbnQgSGlnaFdhdGVyTWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmV0cmlldmFsIG9mIEhpZ2hXYXRlck1hcmsgcGFyYW1ldGVyIGZy
b20gYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgUmVhZGFibGVTdHJlYW0gSlMgY29uc3RydWN0b3Iu
CisgICAgICAgIFJldHJpZXZhbCBvZiBzaXplIGZ1bmN0aW9uIGNhbGxiYWNrIGZyb20gYXJndW1l
bnRzIHBhc3NlZCB0byB0aGUgUmVhZGFibGVTdHJlYW0gSlMgY29uc3RydWN0b3IuCisgICAgICAg
IENhbGxpbmcgZG9QdWxsKCkgaWYgYnVmZmVyIHNpemUgaXMgYmVsb3cgSGlnaFdhdGVyTWFyay4K
KworICAgICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVT
dHJlYW06OnB1bGwpOiBBZGRpbmcgcHJlY2lzZSBjaGVjayBmb3IgSFdNLgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOiBJbnRyb2R1Y2luZyBoYXNFbm91Z2hWYWx1
ZXMuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRIaWdoV2F0ZXJNYXJrKTogVXRpbGl0eSByb3V0aW5lIHRvIGdldCBwcm9w
ZXJseSBIV00gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVh
dGUpOiBSZXRyaWV2YWwgb2YgSFdNIGFuZCBzaXplIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOiBBZGRpbmcgaGFzRW5vdWdoVmFsdWVzIGFuZCBkZXNp
cmVkU2l6ZSBwcm90b3R5cGVzLgorCiAyMDE1LTA2LTIzICBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFi
bGVTdHJlYW0ganMgc291cmNlICInY2FuY2VsIiBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggNDI3OTVlZjM0Zjkw
MGM5MWQ3MDQ1MjJjMzQ2ODNjZjRjNGZiNjFmZC4uYzFiZTdiZWIzYjExZDdmZWYwN2NlYTI3NjA4
YzY4NjUxMzc4OGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uY3BwCkBAIC0xMjQsOCArMTI0LDggQEAgdm9pZCBSZWFkYWJsZVN0cmVh
bTo6cHVsbCgpCiB7CiAgICAgaWYgKCFtX2lzU3RhcnRlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpD
bG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCB8fCBtX2Nsb3NlUmVxdWVzdGVkKQog
ICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBxdWV1ZVNpemUgY2hlY2su
Ci0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNWYWx1ZSgpKQorCisgICAg
aWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNFbm91Z2hWYWx1ZXMoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNQdWxsaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDgwYmM2NTA2Y2E0YTM5NmNj
ZjkyZDVmZTkxYzc2MDJlZmE3ZDc3NzcuLjE5MjY4ZGNjN2MwODdjYjMwNzNmNTI0YjVlZmVmMDgw
MjhmOTk0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQ2Fs
bGJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgdmlydHVhbCBib29sIGhhc0Vub3Vn
aFZhbHVlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgZG9QdWxsKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAppbmRleCA5NTI2NzllMTg3YmFhYTBkN2Q0NTM4MmEwMmU3YjkzNjA5OTEz
ODVhLi4wOGE3YTE4ZDliMTQxY2JjZDhhZWVmZmI4ODRhNDdmOTJlOWIxMmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTk4LDYg
KzE5OCwyNCBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvQ2FuY2VsKEpTVmFsdWUgcmVhc29u
KQogICAgIHJldHVybiAhcHJvbWlzZTsKIH0KIAorc3RhdGljIGlubGluZSBkb3VibGUgZ2V0SGln
aFdhdGVyTWFyayhFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0KiBzdHJhdGVneSkKK3sKKyAgICBK
U1ZhbHVlIGpzSGlnaFdhdGVyTWFyayA9IGdldFByb3BlcnR5RnJvbU9iamVjdChleGVjLCBzdHJh
dGVneSwgImhpZ2hXYXRlck1hcmsiKTsKKyAgICBpZiAoIWpzSGlnaFdhdGVyTWFyaykKKyAgICAg
ICAgcmV0dXJuIDE7CisKKyAgICBkb3VibGUgaGlnaFdhdGVyTWFyayA9IGpzSGlnaFdhdGVyTWFy
ay50b051bWJlcigmZXhlYyk7CisgICAgaWYgKHN0ZDo6aXNuYW4oaGlnaFdhdGVyTWFyaykpIHsK
KyAgICAgICAgdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiaGlnaFdhdGVyTWFyayBwYXJhbWV0ZXIgaXMgTmFOIikpKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIGlmIChoaWdoV2F0ZXJNYXJrIDwgMCkgeworICAgICAgICB0aHJv
d1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaGln
aFdhdGVyTWFyayBwYXJhbWV0ZXIgaXMgbm90IGEgcG9zaXRpdmUgdmFsdWUiKSkpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhpZ2hXYXRlck1hcms7Cit9CisKIFJlZlB0
cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRlJiBl
eGVjLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewog
ICAgIEpTT2JqZWN0KiBqc1NvdXJjZTsKQEAgLTIxMCw3ICsyMjgsMjcgQEAgUmVmUHRyPFJlYWRh
YmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIFNj
cmlwdEV4ZWN1dGkKICAgICB9IGVsc2UKICAgICAgICAganNTb3VyY2UgPSBKU0ZpbmFsT2JqZWN0
OjpjcmVhdGUoZXhlYy52bSgpLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy52
bSgpLCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwganNOdWxsKCksIDEpKTsKIAotICAg
IFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiByZWFkYWJsZVN0cmVhbSA9IGFkb3B0UmVmKCpuZXcg
UmVhZGFibGVKU1N0cmVhbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBleGVjLCBqc1NvdXJjZSkp
OworICAgIGRvdWJsZSBoaWdoV2F0ZXJNYXJrID0gMTsKKyAgICBKU1ZhbHVlIHNpemVGdW5jdGlv
bjsKKyAgICB2YWx1ZSA9IGV4ZWMuYXJndW1lbnQoMSk7CisgICAgaWYgKHZhbHVlLmlzT2JqZWN0
KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIHN0cmF0ZWd5T2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0
KCk7CisgICAgICAgIGhpZ2hXYXRlck1hcmsgPSBnZXRIaWdoV2F0ZXJNYXJrKGV4ZWMsIHN0cmF0
ZWd5T2JqZWN0KTsKKyAgICAgICAgc2l6ZUZ1bmN0aW9uID0gZ2V0UHJvcGVydHlGcm9tT2JqZWN0
KGV4ZWMsIHN0cmF0ZWd5T2JqZWN0LCAic2l6ZSIpOworCisgICAgICAgIGlmIChleGVjLmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFz
aXplRnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7CisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoJmV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJzaXplIHBhcmFtZXRlciBz
aG91bGQgYmUgYSBmdW5jdGlvbiIpKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
dGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2Vjb25kIGFyZ3VtZW50LCBpZiBhbnksIHNob3Vs
ZCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcmVhZGFibGVTdHJlYW0gPSBhZG9wdFJlZigqbmV3
IFJlYWRhYmxlSlNTdHJlYW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXhlYywganNTb3VyY2Us
IGhpZ2hXYXRlck1hcmssIHNpemVGdW5jdGlvbikpOwogICAgIHJlYWRhYmxlU3RyZWFtLT5kb1N0
YXJ0KGV4ZWMpOwogCiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC0yMTksOCArMjU3
LDkgQEAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShF
eGVjU3RhdGUmIGV4ZWMsIFNjcmlwdEV4ZWN1dGkKICAgICByZXR1cm4gcmVhZGFibGVTdHJlYW07
CiB9CiAKLVJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmpl
Y3QqIHNvdXJjZSkKK1JlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBzdGF0ZSwg
SlNPYmplY3QqIHNvdXJjZSwgZG91YmxlIGhpZ2hXYXRlck1hcmssIEpTVmFsdWUgc2l6ZUZ1bmN0
aW9uKQogICAgIDogUmVhZGFibGVTdHJlYW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAs
IG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKQogewogICAgIG1fc291cmNlLnNldChzdGF0
ZS52bSgpLCBzb3VyY2UpOwogICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgUmVmIHRvIHRoZSBzdHJl
YW0gYXMgdGhpcyB3b3VsZCBjYXVzZSBhIFJlZiBjeWNsZS4KQEAgLTIyOSw2ICsyNjgsOCBAQCBS
ZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9KSk7CisgICAgaWYgKHNpemVGdW5jdGlvbikKKyAgICAgICAgbV9zaXplRnVu
Y3Rpb24uc2V0KHN0YXRlLnZtKCksIHNpemVGdW5jdGlvbik7CiB9CiAKIEpTVmFsdWUgUmVhZGFi
bGVKU1N0cmVhbTo6anNDb250cm9sbGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uaAppbmRleCA0MDlhZmExZThhODI0ZjEyZTc5NDFhYzM1YjVjNDNhZmU5MDFiZmI1
Li4yMGM2YWExODVlZjNmMmVjZGQyNmQ2ZjY3Zjc0ZjgyNGNkODJiMDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC02MSwxNCArNjEsMTcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRlJik7CiAKKyAgICBk
b3VibGUgZGVzaXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX2No
dW5rUXVldWUuc2l6ZSgpOyB9CisKIHByaXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0Kik7Cisg
ICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTT2JqZWN0KiwgZG91YmxlLCBKU0M6OkpTVmFsdWUpOwogCiAgICAgdm9pZCBk
b1N0YXJ0KEpTQzo6RXhlY1N0YXRlJik7CiAKICAgICBKU0M6OkpTUHJvbWlzZSogaW52b2tlKEpT
Qzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXIpOwogICAg
IHZvaWQgc3RvcmVFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUmKTsKIAorICAgIHZpcnR1YWwgYm9v
bCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkZXNpcmVkU2l6ZSgp
IDw9IDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGRvUHVsbCgpIG92ZXJyaWRlOwpAQCAtODEsNiArODQsOCBAQCBwcml2YXRlOgogICAgIEpTQzo6
U3Ryb25nPEpTQzo6SlNGdW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9uOwogICAgIEpTQzo6U3Ryb25n
PEpTQzo6SlNPYmplY3Q+IG1fc291cmNlOwogICAgIERlcXVlPEpTQzo6U3Ryb25nPEpTQzo6VW5r
bm93bj4+IG1fY2h1bmtRdWV1ZTsKKyAgICBkb3VibGUgbV9oaWdoV2F0ZXJNYXJrOworICAgIEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9zaXplRnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjg3YmU3M2MwYjhiNGZhYTJmZGVjZmMyMWQzYTM1N2M5MzY2
ZjQ3Yi4uY2FkOGVkNjI2NDlmYWU2YmM0MDk0NjgzOTBkMGZkMDcxOTRkMGM2ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE1LTA2LTI0ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZh
cmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgSGlnaFdhdGVyTWFyawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LWV4cGVjdGVkLnR4dDoKKwogMjAxNS0wNi0yMyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxj
YWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IFJlYWRhYmxlU3Ry
ZWFtIGpzIHNvdXJjZSAiJ2NhbmNlbCIgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1z
dHJhdGVnaWVzLWV4cGVjdGVkLnR4dAppbmRleCBhOWUxYjhiMTgxY2M3ZjE3ZmM5N2VmNmJmZDRk
YzgxZmFhODk2MDU2Li5kMjg4MGE0OTEwOGI2OTc2NTNiOTUwMWRkOTdjODJmZTdhYjc5MzlhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
YWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDE3
ICsxLDkgQEAKIAotRkFJTCBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUg
Z2V0dGVyIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVy
cm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
fSwgewotICAgICAgICAgIC4uLiIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZSBzdHJlYW06
IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAogRkFJTCBSZWFkYWJsZSBzdHJlYW06IHRo
cm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kIGFzc2VydF90aHJvd3M6IGVucXVldWUgc2hvdWxk
IHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsg
fSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQg
cmUtdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgICAgIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgICAgIC4uLiIgZGlkIG5vdCB0aHJvdwotRkFJTCBS
ZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBhc3NlcnRfdGhy
b3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgLTEgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewot
ICAgICAgLi4uIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlIHN0cmVhbTogbmVnYXRpdmUg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3Rpb24gc2hvdWxk
IHRocm93IGEgUmFuZ2VFcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgICAgICBuZXcg
UmVhZGFibGVTdHJlYW0oe30sIHsKLSAgICAgICAgICAuLi4iIGRpZCBub3QgdGhyb3cKK1BBU1Mg
UmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAK
K1BBU1MgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCitQ
QVNTIFJlYWRhYmxlIHN0cmVhbTogbmVnYXRpdmUgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKIEZB
SUwgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIHJldHVybmluZyBOYU4gYXNzZXJ0X2Vx
dWFsczogZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGV4cGVjdGVkIGZ1bmN0aW9u
ICJmdW5jdGlvbiBSYW5nZUVycm9yKCkgewogICAgIFtuYXRpdmUgY29kZV0KIH0iIGJ1dCBnb3Qg
ZnVuY3Rpb24gImZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCBkZDU2NDc4NDIzNTBmYzE1
MTYxYTE1MTgwOTI0ODQ2OWVmOWJmMzBjLi43NTc2MjI4NTg4NmZiMWUzMzM3OTI0NzE5ZDFmYTQ3
ZWNlYzAxZTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3Rl
ZC50eHQKQEAgLTE4LDkgKzE4LDkgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkg
Y2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbQogUEFTUyBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3Ry
ZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscyAKIFBBU1MgUmVhZGFibGVTdHJlYW06
IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0
IGNodW5rLCBpZiBkcmFpbmluZyAKIFBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2Fs
bCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIAot
RkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBl
dmVyeSByZWFkIGFzc2VydF9lcXVhbHM6IHB1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkg
Zm91ciB0aW1lcyBleHBlY3RlZCA0IGJ1dCBnb3QgMQorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAogUEFTUyBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBp
cyBub3cgY2xvc2VkIAotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRl
ciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlm
IHN0cmF0ZWd5IGFsbG93cyBhc3NlcnRfZXF1YWxzOiBwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgZm91ciB0aW1lcyBleHBlY3RlZCA0IGJ1dCBnb3QgMQorUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdp
dGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFsbG93cyAKIFBBU1MgUmVhZGFibGVT
dHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gCiBQQVNTIFJlYWRh
YmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFi
bGUgYnV0IGRyYWluaW5nIAogUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255546</attachid>
            <date>2015-06-25 04:35:24 -0700</date>
            <delta_ts>2015-06-25 04:41:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146235-20150625133437.patch</filename>
            <type>text/plain</type>
            <size>14141</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE4Mzk0OGMxODVmNTdi
YzhjM2Q0N2FhZWI0N2RiZGYyZjQ4YjUxNC4uODgwZGNkYWUyYzQ3NDBiOTRmNmQ2ZmQ5YjkyYTY2
YmNjMTFkMTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA2LTI0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBJbXBsZW1lbnQgSGlnaFdhdGVyTWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmV0cmlldmFsIG9mIEhpZ2hXYXRlck1hcmsgcGFyYW1ldGVyIGZy
b20gYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgUmVhZGFibGVTdHJlYW0gSlMgY29uc3RydWN0b3Iu
CisgICAgICAgIFJldHJpZXZhbCBvZiBzaXplIGZ1bmN0aW9uIGNhbGxiYWNrIGZyb20gYXJndW1l
bnRzIHBhc3NlZCB0byB0aGUgUmVhZGFibGVTdHJlYW0gSlMgY29uc3RydWN0b3IuCisgICAgICAg
IENhbGxpbmcgZG9QdWxsKCkgaWYgYnVmZmVyIHNpemUgaXMgYmVsb3cgSGlnaFdhdGVyTWFyay4K
KworICAgICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVT
dHJlYW06OnB1bGwpOiBBZGRpbmcgcHJlY2lzZSBjaGVjayBmb3IgSFdNLgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOiBJbnRyb2R1Y2luZyBoYXNFbm91Z2hWYWx1
ZXMuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRIaWdoV2F0ZXJNYXJrKTogVXRpbGl0eSByb3V0aW5lIHRvIGdldCBwcm9w
ZXJseSBIV00gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVh
dGUpOiBSZXRyaWV2YWwgb2YgSFdNIGFuZCBzaXplIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOiBBZGRpbmcgaGFzRW5vdWdoVmFsdWVzIGFuZCBkZXNp
cmVkU2l6ZSBwcm90b3R5cGVzLgorCiAyMDE1LTA2LTIzICBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFi
bGVTdHJlYW0ganMgc291cmNlICInY2FuY2VsIiBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggNDI3OTVlZjM0Zjkw
MGM5MWQ3MDQ1MjJjMzQ2ODNjZjRjNGZiNjFmZC4uYzFiZTdiZWIzYjExZDdmZWYwN2NlYTI3NjA4
YzY4NjUxMzc4OGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uY3BwCkBAIC0xMjQsOCArMTI0LDggQEAgdm9pZCBSZWFkYWJsZVN0cmVh
bTo6cHVsbCgpCiB7CiAgICAgaWYgKCFtX2lzU3RhcnRlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpD
bG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCB8fCBtX2Nsb3NlUmVxdWVzdGVkKQog
ICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBxdWV1ZVNpemUgY2hlY2su
Ci0gICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNWYWx1ZSgpKQorCisgICAg
aWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNFbm91Z2hWYWx1ZXMoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNQdWxsaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDgwYmM2NTA2Y2E0YTM5NmNj
ZjkyZDVmZTkxYzc2MDJlZmE3ZDc3NzcuLjE5MjY4ZGNjN2MwODdjYjMwNzNmNTI0YjVlZmVmMDgw
MjhmOTk0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQ2Fs
bGJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgdmlydHVhbCBib29sIGhhc0Vub3Vn
aFZhbHVlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgZG9QdWxsKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAppbmRleCA5NTI2NzllMTg3YmFhYTBkN2Q0NTM4MmEwMmU3YjkzNjA5OTEz
ODVhLi45YTJmZDgxYzMwOTk0YTM2OWEyNWZlZTVkOGViOTQxODRlMzkyNDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtNDgsOSAr
NDgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBnZXRQcm9wZXJ0eUZyb21PYmplY3QoRXhlY1N0YXRlJiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBpZGVudGlmaWVyKQorc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGdldFByb3BlcnR5RnJvbU9iamVjdChFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0
JiBvYmplY3QsIGNvbnN0IGNoYXIqIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+
Z2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCBpZGVudGlmaWVyKSk7Cisg
ICAgcmV0dXJuIG9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMs
IGlkZW50aWZpZXIpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNhbGxGdW5jdGlvbihF
eGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUganNGdW5jdGlvbiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3VtZW50cykKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGNhbGxGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUganNGdW5jdGlvbiwg
SlNWYWx1ZQogCiBKU1Byb21pc2UqIFJlYWRhYmxlSlNTdHJlYW06Omludm9rZShFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVyKQogewot
ICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZyb21PYmplY3Qoc3RhdGUsIG1fc291
cmNlLmdldCgpLCBwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9w
ZXJ0eUZyb21PYmplY3Qoc3RhdGUsICptX3NvdXJjZS5nZXQoKSwgcHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC0xOTgsMjkgKzE5OCw3NyBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvQ2FuY2VsKEpTVmFs
dWUgcmVhc29uKQogICAgIHJldHVybiAhcHJvbWlzZTsKIH0KIAotUmVmUHRyPFJlYWRhYmxlSlNT
dHJlYW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCitzdGF0aWMgaW5saW5lIGRv
dWJsZSBub3JtYWxpemVIaWdoV2F0ZXJNYXJrKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHN0
cmF0ZWd5KQogeworICAgIEpTVmFsdWUganNIaWdoV2F0ZXJNYXJrID0gZ2V0UHJvcGVydHlGcm9t
T2JqZWN0KGV4ZWMsIHN0cmF0ZWd5LCAiaGlnaFdhdGVyTWFyayIpOworCisgICAgaWYgKGV4ZWMu
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGpzSGlnaFdhdGVy
TWFyay5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGRvdWJsZSBoaWdo
V2F0ZXJNYXJrID0ganNIaWdoV2F0ZXJNYXJrLnRvTnVtYmVyKCZleGVjKTsKKworICAgIGlmIChl
eGVjLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChzdGQ6Omlz
bmFuKGhpZ2hXYXRlck1hcmspKSB7CisgICAgICAgIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRl
VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIlZhbHVlIGlzIE5hTiIpKSk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICBpZiAoaGlnaFdhdGVyTWFyayA8IDApIHsKKyAgICAgICAg
dGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSYW5nZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwo
Ik5vdCBhIHBvc2l0aXZlIHZhbHVlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IHJldHVybiBoaWdoV2F0ZXJNYXJrOworfQorCitSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gUmVh
ZGFibGVKU1N0cmVhbTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBjb25zaWRlciByZWR1Y2luZyB0aGUgYmluZGluZyBjb2RlIGhlcmVpICh1c2luZyBEaWN0aW9u
YXJ5L3JlZ3VsYXIgYmluZGluZyBjb25zdHJ1Y3RvciBhbmQvb3IgaW1wcm92aW5nIHRoZSBJREwg
Z2VuZXJhdG9yKS4gCiAgICAgSlNPYmplY3QqIGpzU291cmNlOwotICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjLmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgw
KTsKICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAganNTb3VyY2UgPSB2YWx1ZS5n
ZXRPYmplY3QoKTsKICAgICBlbHNlIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBmaXJzdCBhcmd1bWVudCwgaWYgYW55LCBzaG91
bGQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRl
VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCwgaWYgYW55LCBz
aG91bGQgYmUgYW4gb2JqZWN0IikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfSBl
bHNlCi0gICAgICAgIGpzU291cmNlID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMudm0oKSwg
SlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpLCAxKSk7CisgICAgICAgIGpzU291cmNlID0gSlNGaW5h
bE9iamVjdDo6Y3JlYXRlKHN0YXRlLnZtKCksIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShzdGF0ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpLCAx
KSk7CisKKyAgICBkb3VibGUgaGlnaFdhdGVyTWFyayA9IDE7CisgICAgSlNGdW5jdGlvbiogc2l6
ZUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICB2YWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOworICAg
IGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0JiBzdHJhdGVneU9iamVj
dCA9ICp2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICAgICAgaGlnaFdhdGVyTWFyayA9IG5vcm1hbGl6
ZUhpZ2hXYXRlck1hcmsoc3RhdGUsIHN0cmF0ZWd5T2JqZWN0KTsKKyAgICAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
aWYgKCEoc2l6ZUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0UHJvcGVy
dHlGcm9tT2JqZWN0KHN0YXRlLCBzdHJhdGVneU9iamVjdCwgInNpemUiKSkpKSB7CisgICAgICAg
ICAgICBpZiAoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHRocm93Vk1F
cnJvcigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgic2l6ZSBw
YXJhbWV0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSBlbHNlIGlmICghdmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIlNlY29uZCBhcmd1bWVudCwgaWYgYW55LCBzaG91bGQgYmUg
YW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgUmVm
UHRyPFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFk
YWJsZUpTU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV4ZWMsIGpzU291cmNlKSk7Ci0g
ICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoZXhlYyk7CisgICAgUmVmUHRyPFJlYWRhYmxlSlNT
dHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6
ZUZ1bmN0aW9uKSk7CisgICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3RhdGUpOwogCi0gICAg
aWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiByZWFkYWJsZVN0cmVhbTsKIH0K
IAotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCog
c291cmNlKQorUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3RhdGUmIHN0YXRlLCBKU09i
amVjdCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0
aW9uKQogICAgIDogUmVhZGFibGVTdHJlYW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAs
IG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKQogewogICAgIG1fc291cmNlLnNldChzdGF0
ZS52bSgpLCBzb3VyY2UpOwogICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgUmVmIHRvIHRoZSBzdHJl
YW0gYXMgdGhpcyB3b3VsZCBjYXVzZSBhIFJlZiBjeWNsZS4KQEAgLTIyOSw2ICsyNzcsOCBAQCBS
ZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9KSk7CisgICAgaWYgKHNpemVGdW5jdGlvbikKKyAgICAgICAgbV9zaXplRnVu
Y3Rpb24uc2V0KHN0YXRlLnZtKCksIHNpemVGdW5jdGlvbik7CiB9CiAKIEpTVmFsdWUgUmVhZGFi
bGVKU1N0cmVhbTo6anNDb250cm9sbGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uaAppbmRleCA0MDlhZmExZThhODI0ZjEyZTc5NDFhYzM1YjVjNDNhZmU5MDFiZmI1
Li5kNGU2NWI5ZWJiMGI0Y2E1ZDE1NjIwNGRhNzFmOGI5ODlkNGVlMzQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC02MSwxNCArNjEsMTcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRlJik7CiAKKyAgICBk
b3VibGUgZGVzaXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX2No
dW5rUXVldWUuc2l6ZSgpOyB9CisKIHByaXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0Kik7Cisg
ICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTT2JqZWN0KiwgZG91YmxlLCBKU0M6OkpTRnVuY3Rpb24qKTsKIAogICAgIHZv
aWQgZG9TdGFydChKU0M6OkV4ZWNTdGF0ZSYpOwogCiAgICAgSlNDOjpKU1Byb21pc2UqIGludm9r
ZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKTsK
ICAgICB2b2lkIHN0b3JlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlJik7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNp
emUoKSA8PSAwOyB9CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBkb1B1bGwoKSBvdmVycmlkZTsKQEAgLTc3LDEwICs4MCwxMyBAQCBwcml2YXRlOgogICAg
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIGNvbnNpZGVyIG5vdCB1c2luZyBKU0M6OlN0cm9uZywgc2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyNzgKICAgICBKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24+IG1fZXJyb3I7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBtX2Vy
cm9yRnVuY3Rpb247CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9zb3VyY2U7CiAg
ICAgRGVxdWU8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4gbV9jaHVua1F1ZXVlOworICAgIGRv
dWJsZSBtX2hpZ2hXYXRlck1hcms7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBt
X3NpemVGdW5jdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiODdi
ZTczYzBiOGI0ZmFhMmZkZWNmYzIxZDNhMzU3YzkzNjZmNDdiLi5jYWQ4ZWQ2MjY0OWZhZTZiYzQw
OTQ2ODM5MGQwZmQwNzE5NGQwYzZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDYtMjQg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFt
cyBBUEldIEltcGxlbWVudCBIaWdoV2F0ZXJNYXJrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA2
LTIzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0
cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVTdHJlYW0ganMgc291cmNlICInY2FuY2VsIiBj
YWxsYmFjawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGE5ZTFiOGIxODFjYzdmMTdmYzk3ZWY2YmZkNGRjODFmYWE4OTYwNTYuLmQyODgwYTQ5MTA4
YjY5NzY1M2I5NTAxZGQ5N2M4MmZlN2FiNzkzOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQt
c3RyYXRlZ2llcy1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsOSBAQAogCi1GQUlMIFJlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgYXNzZXJ0X3Rocm93czogY29u
c3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgICAgLi4uIiBkaWQg
bm90IHRocm93CitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBn
ZXR0ZXIgCiBGQUlMIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRo
b2QgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90IHRocm93Ci1GQUlMIFJl
YWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgYXNz
ZXJ0X3Rocm93czogY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAg
ICAgICAgLi4uIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBz
dHJhdGVneS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQg
dGhyb3cgYSBSYW5nZUVycm9yIGZvciAtMSBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAuLi4iIGRpZCBub3QgdGhyb3cK
LUZBSUwgUmVhZGFibGUgc3RyZWFtOiBuZWdhdGl2ZSBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGFz
c2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZ1bmN0
aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAg
ICAgICAgIC4uLiIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5n
IHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGlu
dmFsaWQgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBuZWdh
dGl2ZSBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAogRkFJTCBSZWFkYWJsZSBzdHJlYW06IHN0cmF0
ZWd5LnNpemUgcmV0dXJuaW5nIE5hTiBhc3NlcnRfZXF1YWxzOiBlbnF1ZXVlIHNob3VsZCB0aHJv
dyBhIFJhbmdlRXJyb3IgZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7
CiAgICAgW25hdGl2ZSBjb2RlXQogfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gQXNzZXJ0
aW9uRXJyb3IobWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhw
ZWN0ZWQudHh0CmluZGV4IGRkNTY0Nzg0MjM1MGZjMTUxNjFhMTUxODA5MjQ4NDY5ZWY5YmYzMGMu
Ljc1NzYyMjg1ODg2ZmIxZTMzMzc5MjQ3MTlkMWZhNDdlY2VjMDFlN2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtMTgsOSArMTgsOSBAQCBQ
QVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1l
bXB0eSBzdHJlYW0gcmVhZCBmcm9tCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0
IGZ1bGZpbGxzIAogUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBp
biByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nIAogUEFT
UyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3Vz
IHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgYXNzZXJ0X2VxdWFsczog
cHVsbCgpIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBmb3VyIHRpbWVzIGV4cGVjdGVkIDQgYnV0
IGdvdCAxCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5k
IGFmdGVyIGV2ZXJ5IHJlYWQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwg
cHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCi1GQUlMIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUg
cHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIGFzc2VydF9l
cXVhbHM6IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVzIGV4cGVjdGVk
IDQgYnV0IGdvdCAxCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVy
IGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYg
c3RyYXRlZ3kgYWxsb3dzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxl
IHRvIGNsb3NlIGEgc3RyZWFtLiAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxk
IHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgCiBQQVNTIFJl
YWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xv
c2VkIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255547</attachid>
            <date>2015-06-25 04:42:03 -0700</date>
            <delta_ts>2015-06-25 05:38:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146235-20150625134116.patch</filename>
            <type>text/plain</type>
            <size>14135</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE4Mzk0OGMxODVmNTdi
YzhjM2Q0N2FhZWI0N2RiZGYyZjQ4YjUxNC4uMWM2YTY1ZGE2ZjZkMWU2ZjI1OTZhZDRkMGFhNjcz
MzZkMGFiNzBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA2LTI0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBJbXBsZW1lbnQgSGlnaFdhdGVyTWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgUmV0cmlldmFsIG9mIEhpZ2hXYXRlck1hcmsgcGFyYW1ldGVyIGZyb20g
YXJndW1lbnRzIHBhc3NlZCB0byB0aGUgUmVhZGFibGVTdHJlYW0gSlMgY29uc3RydWN0b3IuCisg
ICAgICAgIFJldHJpZXZhbCBvZiBzaXplIGZ1bmN0aW9uIGNhbGxiYWNrIGZyb20gYXJndW1lbnRz
IHBhc3NlZCB0byB0aGUgUmVhZGFibGVTdHJlYW0gSlMgY29uc3RydWN0b3IuCisgICAgICAgIENh
bGxpbmcgZG9QdWxsKCkgaWYgYnVmZmVyIHNpemUgaXMgYmVsb3cgSGlnaFdhdGVyTWFyay4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW06OnB1bGwpOiBBZGRpbmcgcHJlY2lzZSBjaGVjayBmb3IgSFdNLgorICAgICAgICAqIE1vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOiBJbnRyb2R1Y2luZyBoYXNFbm91Z2hWYWx1ZXMu
CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRIaWdoV2F0ZXJNYXJrKTogVXRpbGl0eSByb3V0aW5lIHRvIGdldCBwcm9wZXJs
eSBIV00gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUp
OiBSZXRyaWV2YWwgb2YgSFdNIGFuZCBzaXplIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5oOiBBZGRpbmcgaGFzRW5vdWdoVmFsdWVzIGFuZCBkZXNpcmVk
U2l6ZSBwcm90b3R5cGVzLgorCiAyMDE1LTA2LTIzICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAg
PGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVT
dHJlYW0ganMgc291cmNlICInY2FuY2VsIiBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggNDI3OTVlZjM0ZjkwMGM5
MWQ3MDQ1MjJjMzQ2ODNjZjRjNGZiNjFmZC4uYzFiZTdiZWIzYjExZDdmZWYwN2NlYTI3NjA4YzY4
NjUxMzc4OGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uY3BwCkBAIC0xMjQsOCArMTI0LDggQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6
cHVsbCgpCiB7CiAgICAgaWYgKCFtX2lzU3RhcnRlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9z
ZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCB8fCBtX2Nsb3NlUmVxdWVzdGVkKQogICAg
ICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBxdWV1ZVNpemUgY2hlY2suCi0g
ICAgaWYgKG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNWYWx1ZSgpKQorCisgICAgaWYg
KG1fcmVhZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiBoYXNFbm91Z2hWYWx1ZXMoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1faXNQdWxsaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDgwYmM2NTA2Y2E0YTM5NmNjZjky
ZDVmZTkxYzc2MDJlZmE3ZDc3NzcuLjE5MjY4ZGNjN2MwODdjYjMwNzNmNTI0YjVlZmVmMDgwMjhm
OTk0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQ2FsbGJh
Y2tzKCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgdmlydHVhbCBib29sIGhhc0Vub3VnaFZh
bHVlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
ZG9QdWxsKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmNwcAppbmRleCA5NTI2NzllMTg3YmFhYTBkN2Q0NTM4MmEwMmU3YjkzNjA5OTEzODVh
Li45YTJmZDgxYzMwOTk0YTM2OWEyNWZlZTVkOGViOTQxODRlMzkyNDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtNDgsOSArNDgs
OSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBnZXRQcm9wZXJ0eUZyb21PYmplY3QoRXhlY1N0YXRlJiBleGVjLCBK
U09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBpZGVudGlmaWVyKQorc3RhdGljIGlubGluZSBK
U1ZhbHVlIGdldFByb3BlcnR5RnJvbU9iamVjdChFeGVjU3RhdGUmIGV4ZWMsIEpTT2JqZWN0JiBv
YmplY3QsIGNvbnN0IGNoYXIqIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+Z2V0
KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCBpZGVudGlmaWVyKSk7CisgICAg
cmV0dXJuIG9iamVjdC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsIGlk
ZW50aWZpZXIpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNhbGxGdW5jdGlvbihFeGVj
U3RhdGUmIGV4ZWMsIEpTVmFsdWUganNGdW5jdGlvbiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3VtZW50cykKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGNhbGxGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUganNGdW5jdGlvbiwgSlNW
YWx1ZQogCiBKU1Byb21pc2UqIFJlYWRhYmxlSlNTdHJlYW06Omludm9rZShFeGVjU3RhdGUmIHN0
YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVyKQogewotICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZyb21PYmplY3Qoc3RhdGUsIG1fc291cmNl
LmdldCgpLCBwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0
eUZyb21PYmplY3Qoc3RhdGUsICptX3NvdXJjZS5nZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
OTgsMjkgKzE5OCw3NyBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvQ2FuY2VsKEpTVmFsdWUg
cmVhc29uKQogICAgIHJldHVybiAhcHJvbWlzZTsKIH0KIAotUmVmUHRyPFJlYWRhYmxlSlNTdHJl
YW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCitzdGF0aWMgaW5saW5lIGRvdWJs
ZSBub3JtYWxpemVIaWdoV2F0ZXJNYXJrKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QmIHN0cmF0
ZWd5KQogeworICAgIEpTVmFsdWUganNIaWdoV2F0ZXJNYXJrID0gZ2V0UHJvcGVydHlGcm9tT2Jq
ZWN0KGV4ZWMsIHN0cmF0ZWd5LCAiaGlnaFdhdGVyTWFyayIpOworCisgICAgaWYgKGV4ZWMuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGpzSGlnaFdhdGVyTWFy
ay5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGRvdWJsZSBoaWdoV2F0
ZXJNYXJrID0ganNIaWdoV2F0ZXJNYXJrLnRvTnVtYmVyKCZleGVjKTsKKworICAgIGlmIChleGVj
LmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChzdGQ6OmlzbmFu
KGhpZ2hXYXRlck1hcmspKSB7CisgICAgICAgIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlVHlw
ZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIlZhbHVlIGlzIE5hTiIpKSk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICBpZiAoaGlnaFdhdGVyTWFyayA8IDApIHsKKyAgICAgICAgdGhy
b3dWTUVycm9yKCZleGVjLCBjcmVhdGVSYW5nZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIk5v
dCBhIHBvc2l0aXZlIHZhbHVlIikpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiBoaWdoV2F0ZXJNYXJrOworfQorCitSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFi
bGVKU1N0cmVhbTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
b25zaWRlciByZWR1Y2luZyB0aGUgYmluZGluZyBjb2RlIGhlcmVpICh1c2luZyBEaWN0aW9uYXJ5
L3JlZ3VsYXIgYmluZGluZyBjb25zdHJ1Y3RvciBhbmQvb3IgaW1wcm92aW5nIHRoZSBJREwgZ2Vu
ZXJhdG9yKS4gCiAgICAgSlNPYmplY3QqIGpzU291cmNlOwotICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgwKTsK
ICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAganNTb3VyY2UgPSB2YWx1ZS5nZXRP
YmplY3QoKTsKICAgICBlbHNlIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB0
aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBmaXJzdCBhcmd1bWVudCwgaWYgYW55LCBzaG91bGQg
YmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCwgaWYgYW55LCBzaG91
bGQgYmUgYW4gb2JqZWN0IikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGpzU291cmNlID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMudm0oKSwgSlNG
aW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCksIGpzTnVsbCgpLCAxKSk7CisgICAgICAgIGpzU291cmNlID0gSlNGaW5hbE9i
amVjdDo6Y3JlYXRlKHN0YXRlLnZtKCksIEpTRmluYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShz
dGF0ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpLCAxKSk7
CisKKyAgICBkb3VibGUgaGlnaFdhdGVyTWFyayA9IDE7CisgICAgSlNGdW5jdGlvbiogc2l6ZUZ1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICB2YWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOworICAgIGlm
ICh2YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0JiBzdHJhdGVneU9iamVjdCA9
ICp2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICAgICAgaGlnaFdhdGVyTWFyayA9IG5vcm1hbGl6ZUhp
Z2hXYXRlck1hcmsoc3RhdGUsIHN0cmF0ZWd5T2JqZWN0KTsKKyAgICAgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYg
KCEoc2l6ZUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0UHJvcGVydHlG
cm9tT2JqZWN0KHN0YXRlLCBzdHJhdGVneU9iamVjdCwgInNpemUiKSkpKSB7CisgICAgICAgICAg
ICBpZiAoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHRocm93Vk1FcnJv
cigmc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgic2l6ZSBwYXJh
bWV0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSBlbHNlIGlmICghdmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIlNlY29uZCBhcmd1bWVudCwgaWYgYW55LCBzaG91bGQgYmUgYW4g
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgUmVmUHRy
PFJlYWRhYmxlSlNTdHJlYW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJs
ZUpTU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV4ZWMsIGpzU291cmNlKSk7Ci0gICAg
cmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoZXhlYyk7CisgICAgUmVmUHRyPFJlYWRhYmxlSlNTdHJl
YW0+IHJlYWRhYmxlU3RyZWFtID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIHN0YXRlLCBqc1NvdXJjZSwgaGlnaFdhdGVyTWFyaywgc2l6ZUZ1
bmN0aW9uKSk7CisgICAgcmVhZGFibGVTdHJlYW0tPmRvU3RhcnQoc3RhdGUpOwogCi0gICAgaWYg
KGV4ZWMuaGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiByZWFkYWJsZVN0cmVhbTsKIH0KIAot
UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291
cmNlKQorUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVj
dCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9u
KQogICAgIDogUmVhZGFibGVTdHJlYW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAsIG1f
aGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKQogewogICAgIG1fc291cmNlLnNldChzdGF0ZS52
bSgpLCBzb3VyY2UpOwogICAgIC8vIFdlIGRvIG5vdCB0YWtlIGEgUmVmIHRvIHRoZSBzdHJlYW0g
YXMgdGhpcyB3b3VsZCBjYXVzZSBhIFJlZiBjeWNsZS4KQEAgLTIyOSw2ICsyNzcsOCBAQCBSZWFk
YWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleAogICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9KSk7CisgICAgaWYgKHNpemVGdW5jdGlvbikKKyAgICAgICAgbV9zaXplRnVuY3Rp
b24uc2V0KHN0YXRlLnZtKCksIHNpemVGdW5jdGlvbik7CiB9CiAKIEpTVmFsdWUgUmVhZGFibGVK
U1N0cmVhbTo6anNDb250cm9sbGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNT
dHJlYW0uaAppbmRleCA0MDlhZmExZThhODI0ZjEyZTc5NDFhYzM1YjVjNDNhZmU5MDFiZmI1Li5k
NGU2NWI5ZWJiMGI0Y2E1ZDE1NjIwNGRhNzFmOGI5ODlkNGVlMzQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC02MSwxNCArNjEsMTcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBlbnF1ZXVlKEpTQzo6RXhlY1N0YXRlJik7CiAKKyAgICBkb3Vi
bGUgZGVzaXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX2NodW5r
UXVldWUuc2l6ZSgpOyB9CisKIHByaXZhdGU6Ci0gICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0Kik7CisgICAg
UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTT2JqZWN0KiwgZG91YmxlLCBKU0M6OkpTRnVuY3Rpb24qKTsKIAogICAgIHZvaWQg
ZG9TdGFydChKU0M6OkV4ZWNTdGF0ZSYpOwogCiAgICAgSlNDOjpKU1Byb21pc2UqIGludm9rZShK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKTsKICAg
ICB2b2lkIHN0b3JlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlJik7CiAKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNpemUo
KSA8PSAwOyB9CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBkb1B1bGwoKSBvdmVycmlkZTsKQEAgLTc3LDEwICs4MCwxMyBAQCBwcml2YXRlOgogICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICAvLyBGSVhNRTogd2Ug
c2hvdWxkIGNvbnNpZGVyIG5vdCB1c2luZyBKU0M6OlN0cm9uZywgc2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyNzgKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVu
a25vd24+IG1fZXJyb3I7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBtX2Vycm9y
RnVuY3Rpb247CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9zb3VyY2U7CiAgICAg
RGVxdWU8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4gbV9jaHVua1F1ZXVlOworICAgIGRvdWJs
ZSBtX2hpZ2hXYXRlck1hcms7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBtX3Np
emVGdW5jdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiODdiZTcz
YzBiOGI0ZmFhMmZkZWNmYzIxZDNhMzU3YzkzNjZmNDdiLi40YzI2OWY1NzEwMWM4NTBhYTA4YjA0
YzI5MzNkZTBiNjlhMDUxZDgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDYtMjQgIFhh
YmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBB
UEldIEltcGxlbWVudCBIaWdoV2F0ZXJNYXJrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyMzUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1z
dHJhdGVnaWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA2LTIzICBY
YWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMg
QVBJXSBJbXBsZW1lbnQgUmVhZGFibGVTdHJlYW0ganMgc291cmNlICInY2FuY2VsIiBjYWxsYmFj
awpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMtZXhwZWN0ZWQudHh0CmluZGV4IGE5
ZTFiOGIxODFjYzdmMTdmYzk3ZWY2YmZkNGRjODFmYWE4OTYwNTYuLmQyODgwYTQ5MTA4YjY5NzY1
M2I5NTAxZGQ5N2M4MmZlN2FiNzkzOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRl
Z2llcy1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsOSBAQAogCi1GQUlMIFJlYWRhYmxlIHN0cmVh
bTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIgYXNzZXJ0X3Rocm93czogY29uc3RydWN0
aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgICAgLi4uIiBkaWQgbm90IHRo
cm93CitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBnZXR0ZXIg
CiBGQUlMIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgYXNz
ZXJ0X3Rocm93czogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICJmdW5j
dGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgYXNzZXJ0X3Ro
cm93czogY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgICAg
Li4uIiBkaWQgbm90IHRocm93Ci1GQUlMIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVn
eS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cg
YSBSYW5nZUVycm9yIGZvciAtMSBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
bmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAuLi4iIGRpZCBub3QgdGhyb3cKLUZBSUwg
UmVhZGFibGUgc3RyZWFtOiBuZWdhdGl2ZSBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGFzc2VydF90
aHJvd3M6IGNvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZ1bmN0aW9uICJm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgICAg
IC4uLiIgZGlkIG5vdCB0aHJvdworUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0
ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFsaWQg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBuZWdhdGl2ZSBz
dHJhdGVneS5oaWdoV2F0ZXJNYXJrIAogRkFJTCBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNp
emUgcmV0dXJuaW5nIE5hTiBhc3NlcnRfZXF1YWxzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJh
bmdlRXJyb3IgZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIFJhbmdlRXJyb3IoKSB7CiAgICAg
W25hdGl2ZSBjb2RlXQogfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gQXNzZXJ0aW9uRXJy
b3IobWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0CmluZGV4IGRkNTY0Nzg0MjM1MGZjMTUxNjFhMTUxODA5MjQ4NDY5ZWY5YmYzMGMuLjc1NzYy
Mjg1ODg2ZmIxZTMzMzc5MjQ3MTlkMWZhNDdlY2VjMDFlN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtMTgsOSArMTgsOSBAQCBQQVNTIFJl
YWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBz
dHJlYW0gcmVhZCBmcm9tCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1
bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZp
bGxzIAogUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFj
dGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nIAogUEFTUyBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwg
Y2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVs
bCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgYXNzZXJ0X2VxdWFsczogcHVsbCgp
IHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBmb3VyIHRpbWVzIGV4cGVjdGVkIDQgYnV0IGdvdCAx
CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVy
IGV2ZXJ5IHJlYWQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBh
ZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCi1GQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAo
d2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIGFzc2VydF9lcXVhbHM6
IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVzIGV4cGVjdGVkIDQgYnV0
IGdvdCAxCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVl
dWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRl
Z3kgYWxsb3dzIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNs
b3NlIGEgc3RyZWFtLiAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93
IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgCiBQQVNTIFJlYWRhYmxl
U3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>