<?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>154820</bug_id>
          
          <creation_ts>2016-02-29 09:16:21 -0800</creation_ts>
          <short_desc>[Fetch API] Support Request and Response blob() when body data is a blob</short_desc>
          <delta_ts>2016-03-01 02:34:14 -0800</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151937</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169155</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-29 09:16:21 -0800</bug_when>
    <thetext>Body can store data as a blob, and blob() should return the corresponding data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169159</commentid>
    <comment_count>1</comment_count>
      <attachid>272492</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-29 09:27:12 -0800</bug_when>
    <thetext>Created attachment 272492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169188</commentid>
    <comment_count>2</comment_count>
      <attachid>272499</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-29 10:09:14 -0800</bug_when>
    <thetext>Created attachment 272499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169308</commentid>
    <comment_count>3</comment_count>
      <attachid>272499</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-29 16:28:43 -0800</bug_when>
    <thetext>Comment on attachment 272499
Patch

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

It’s annoying to have both Vector&lt;char&gt; and Vector&lt;unsigned char&gt;. We’ll have code bloat.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:139
&gt; +        RefPtr&lt;Blob&gt; blob = Blob::create(extractFromText(), contentType);
&gt; +        promise.resolve(WTFMove(blob));

Would read better without the local variable:

    promise.resolve(Blob::create(extractFromText(), contentType));

But also, noticing that the type here is a RefPtr, not a Ref, can Blob::create return null? Do we need to do something different in that case?

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:183
&gt; +    CString data = m_text.utf8();
&gt; +    Vector&lt;char&gt; value(data.length());
&gt; +    memcpy(value.data(), data.data(), data.length());
&gt; +    return value;

This allocates memory twice, once for the CString and the second time for the Vector. Slower than just allocating once. We should look over the String::utf8 function and figure out how to make one that goes right into a Vector&lt;char&gt; (or maybe into a Vector&lt;unsigned char&gt;). It also zeroes out the entire vector before doing the memcpy. Slightly wasteful.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:458
&gt; +    RefPtr&lt;ArrayBuffer&gt; buffer = ArrayBuffer::create(vector.data(), vector.size());
&gt; +    return toJS(state, globalObject, buffer.get());

Can ArrayBuffer::create return null? If so, does this handle it correctly?

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:464
&gt; +    RefPtr&lt;ArrayBuffer&gt; buffer = ArrayBuffer::create(vector.data(), vector.size());
&gt; +    return toJS(state, globalObject, buffer.get());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169396</commentid>
    <comment_count>4</comment_count>
      <attachid>272555</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 01:15:17 -0800</bug_when>
    <thetext>Created attachment 272555
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169397</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 01:18:53 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #3)
&gt; Comment on attachment 272499 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272499&amp;action=review
&gt; 
&gt; It’s annoying to have both Vector&lt;char&gt; and Vector&lt;unsigned char&gt;. We’ll
&gt; have code bloat.

Right.
I updated the code to directly pass an ArrayBuffer to the promise.
A follow-up patch could remove DeferredWrapper::resolve&lt;Vector&lt;unsigned char&gt;&gt;.

&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:139
&gt; &gt; +        RefPtr&lt;Blob&gt; blob = Blob::create(extractFromText(), contentType);
&gt; &gt; +        promise.resolve(WTFMove(blob));
&gt; 
&gt; Would read better without the local variable:

OK

&gt;     promise.resolve(Blob::create(extractFromText(), contentType));
&gt; 
&gt; But also, noticing that the type here is a RefPtr, not a Ref, can
&gt; Blob::create return null? Do we need to do something different in that case?

Blob::create returns a Ref actually.

&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:183
&gt; &gt; +    CString data = m_text.utf8();
&gt; &gt; +    Vector&lt;char&gt; value(data.length());
&gt; &gt; +    memcpy(value.data(), data.data(), data.length());
&gt; &gt; +    return value;
&gt; 
&gt; This allocates memory twice, once for the CString and the second time for
&gt; the Vector. Slower than just allocating once. We should look over the
&gt; String::utf8 function and figure out how to make one that goes right into a
&gt; Vector&lt;char&gt; (or maybe into a Vector&lt;unsigned char&gt;). It also zeroes out the
&gt; entire vector before doing the memcpy. Slightly wasteful.

Yes, I added a more specific FIXME about it.

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:458
&gt; &gt; +    RefPtr&lt;ArrayBuffer&gt; buffer = ArrayBuffer::create(vector.data(), vector.size());
&gt; &gt; +    return toJS(state, globalObject, buffer.get());
&gt; 
&gt; Can ArrayBuffer::create return null? If so, does this handle it correctly?

Yes it can and it will translate to a null JS value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169403</commentid>
    <comment_count>6</comment_count>
      <attachid>272555</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-01 02:34:11 -0800</bug_when>
    <thetext>Comment on attachment 272555
Patch for landing

Clearing flags on attachment: 272555

Committed r197396: &lt;http://trac.webkit.org/changeset/197396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169404</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-01 02:34:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272492</attachid>
            <date>2016-02-29 09:27:12 -0800</date>
            <delta_ts>2016-02-29 10:09:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154820-20160229182655.patch</filename>
            <type>text/plain</type>
            <size>15537</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwZjEwOGI4NjRjMzZh
ZGI3YTQ3NGZlNmJiY2I0ODA3YTgyNTc4NS4uODk2MzdiOTMzMGJlOTljZmIyNzBkZjU5YjBiY2Zk
ODNhYzg5MjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE2LTAyLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgW0ZldGNo
IEFQSV0gU3VwcG9ydCBSZXF1ZXN0IGFuZCBSZXNwb25zZSBibG9iKCkgd2hlbiBib2R5IGRhdGEg
aXMgYSBibG9iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQ4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIHRoZSBzYW1lIEJsb2IgdGhhdCBpcyBzdG9y
ZWQgaW4gQm9keSBpbiBjYXNlIEpTIGJsb2IoKSBpcyBjYWxsZWQuCisgICAgICAgIEFkZGluZyBz
dXBwb3J0IGZvciBCbG9iIGNyZWF0aW9uIHdoZW4gZGF0YSBpcyBzdG9yZWQgYXMgdGV4dC4KKyAg
ICAgICAgVXBkYXRlZCBKU0RPTUJpbmRpbmcgYW5kIEpTRE9NUHJvbWlzZSB0byByZXR1cm4gYSBK
UyBBcnJheUJ1ZmZlciBmb3IgVmVjdG9yPGNoYXI+IGFzIHdlbGwgYXMgVmVjdG9yPHVuc2lnbmVk
IGNoYXI+LgorCisgICAgICAgIENvdmVyZWQgYnkgYWRkZWQgdGVzdHMuCisKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YmxvYik6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZl
KTogRGVsZXRlZC4KKworMjAxNi0wMi0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRA
Y3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFJlZmFjdG9yIEZldGNoQm9keSBjb25zdHJ1Y3RvcnMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDcyMQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggNTcwODQ1
ZDNiNmE1ZDExOGVmNDNiZTJmYjE0MWU4YmE2ZDhmNTI3My4uODFkODE0ODA2YmJiNjExMGVjNmYx
NDNiYWVjZWM1NzA3Mzg4MWE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcApAQCAtMTAzLDExICsxMDMsOCBAQCB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJQcm9taXNlJiYgcHJvbWlzZSkKIAogICAgIGlmIChtX3R5cGUgPT0gVHlw
ZTo6VGV4dCkgewogICAgICAgICAvLyBGSVhNRTogcHJvbWlzZSBleHBlY3RzIGEgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gQXJyYXlCdWZmZXIuCi0g
ICAgICAgIC8vIFdlIHNob3VsZCB0cnkgdG8gY3JlYXRlIGEgVmVjdG9yPHVuc2lnbmVkIGNoYXI+
IG9yIGFuIEFycmF5QnVmZmVyIGRpcmVjdGx5IGZyb20gbV90ZXh0LgotICAgICAgICBDU3RyaW5n
IGRhdGEgPSBtX3RleHQudXRmOCgpOwotICAgICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gdmFs
dWUoZGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEuZGF0
YSgpLCBkYXRhLmxlbmd0aCgpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUodmFs
dWUpKTsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIHRyeSB0byBjcmVhdGUgYW4gQXJyYXlCdWZmZXIg
ZGlyZWN0bHkgZnJvbSBtX3RleHQuCisgICAgICAgIHByb21pc2UucmVzb2x2ZShleHRyYWN0RnJv
bVRleHQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gRklYTUU6IFN1cHBvcnQg
b3RoZXIgdHlwZXMuCkBAIC0xMzEsNiArMTI4LDE1IEBAIHZvaWQgRmV0Y2hCb2R5OjpibG9iKEJs
b2JQcm9taXNlJiYgcHJvbWlzZSkKICAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJlZChw
cm9taXNlKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpCbG9i
KSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShtX2Jsb2IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgeworICAgICAgICBwcm9taXNlLnJl
c29sdmUoQmxvYjo6Y3JlYXRlKGV4dHJhY3RGcm9tVGV4dCgpLCBtX21pbWVUeXBlKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4K
ICAgICBwcm9taXNlLnJlamVjdCgwKTsKIH0KQEAgLTE2NSw2ICsxNzEsMTUgQEAgdm9pZCBGZXRj
aEJvZHk6Ompzb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU09OUHJvbWlzZSYmIHByb21pc2Up
CiAgICAgcHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKK1ZlY3RvcjxjaGFyPiBGZXRjaEJvZHk6OmV4
dHJhY3RGcm9tVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpUZXh0
KTsKKyAgICBDU3RyaW5nIGRhdGEgPSBtX3RleHQudXRmOCgpOworICAgIFZlY3RvcjxjaGFyPiB2
YWx1ZShkYXRhLmxlbmd0aCgpKTsKKyAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLmRhdGEo
KSwgZGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmgKaW5kZXggMTk2YjdiMDdjYTE1ZTMyZTNkZDNmZjY0ZWE4MzE3NGExNmI3YjBiNy4uOGYzZjg3
OWUzMTYzNjFiYjE0ZDcwNzFkMDBmNTE1ZjZjN2UxODI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKIGNsYXNzIEZldGNoQm9keSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBET01Q
cm9taXNlPFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiwgRXhjZXB0aW9uQ29kZT4gQXJyYXlCdWZmZXJQ
cm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8Y2hhcj4sIEV4Y2VwdGlvbkNv
ZGU+IEFycmF5QnVmZmVyUHJvbWlzZTsKICAgICB2b2lkIGFycmF5QnVmZmVyKEFycmF5QnVmZmVy
UHJvbWlzZSYmKTsKIAogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8RE9NRm9ybURhdGE+
LCBFeGNlcHRpb25Db2RlPiBGb3JtRGF0YVByb21pc2U7CkBAIC04MSw2ICs4MSw4IEBAIHByaXZh
dGU6CiAgICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAgICAgRmV0Y2hCb2R5KFN0
cmluZyYmKTsKIAorICAgIFZlY3RvcjxjaGFyPiBleHRyYWN0RnJvbVRleHQoKSBjb25zdDsKKwog
ICAgIFR5cGUgbV90eXBlID0gVHlwZTo6Tm9uZTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICBib29sIG1faXNEaXN0dXJiZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgKaW5kZXggMGJjNWQ3YWQ1N2JmNDk1NzM1MzQ0OWZlODI0NmE1ZWY5Njkw
OTg1NC4uNWNlMjU1MGIwZGE5NTY4YTMxYTM2YzRjZmRlNWM0ZjcxNDQzOThkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTQ1Miw2ICs0NTIsMTggQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE8KICAgICByZXR1cm4gYXJyYXk7CiB9CiAKK2lubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQoreworICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgp
LCB2ZWN0b3Iuc2l6ZSgpKTsKKyAgICByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBi
dWZmZXIuZ2V0KCkpOworfQorCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
dW5zaWduZWQgY2hhcj4mIHZlY3RvcikKK3sKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7Cisg
ICAgcmV0dXJuIHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgYnVmZmVyLmdldCgpKTsKK30KKwog
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JO
dWxsKGV4ZWMsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmgKaW5kZXggNzM5ZWQ4YTlkYzBlNzJkODliM2FlNzNlYmFmZDYyODUxNTY1MzIyNi4uOTVjZDMy
ZDUyM2RlZDdmZGFkOGMwZGU2ZjY5MTU1Mjk0MGRlZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTE2NSwxNiArMTY1LDYgQEAgaW5saW5lIHZvaWQg
RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPEpTQzo6SlNWYWx1ZT4oY29uc3QgSlNDOjpKU1ZhbHVl
JiB2YWx1ZSkKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAgICAgcmVzb2x2
ZSgqZXhlYywgdmFsdWUpOwogfQotdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFw
cGVyOjpyZXNvbHZlPFZlY3Rvcjx1bnNpZ25lZCBjaGFyPj4oY29uc3QgVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKG1fZGVmZXJyZWQpOwotICAgIEFTU0VSVCht
X2dsb2JhbE9iamVjdCk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocmVzdWx0
LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdG9KUyhleGVjLCBt
X2dsb2JhbE9iamVjdC5nZXQoKSwgYnVmZmVyLmdldCgpKSk7Ci19CiAKIHRlbXBsYXRlPD4KIGlu
bGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhY2ZmZjhjN2QyNzBhZjUwZjFkM2U0
NzY4NGVkNjM2ODc5NzMyMjJlLi43MDEzYjU5ZDdlYjZjOThjNGVkMWU0MzE5OGFkMGY5ZDQ0YzEz
ODY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Ni0wMi0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisg
ICAgICAgIFtGZXRjaCBBUEldIFN1cHBvcnQgUmVxdWVzdCBhbmQgUmVzcG9uc2UgYmxvYigpIHdo
ZW4gYm9keSBkYXRhIGlzIGEgYmxvYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkaW5nIGJsb2Igc3BlY2lmaWMgdGVzdHMuIE5ldyB0ZXN0cyBhcmUg
bm90IGNvdmVyZWQgeWV0IGFzIHRoZXkgcmVxdWlyZSBjb252ZXJ0aW5nIGRhdGEgZnJvbSBhIGJs
b2IgaW50byBhbm90aGVyIGZvcm0gKEpTT04sIHRleHQuLi4pLgorICAgICAgICBSZWJhc2luZyBl
eHBlY3RhdGlvbnMgd2l0aCB0ZXN0IHRoYXQgaXMgbm93IHBhc3NpbmcgYW5kIG5ldyBmYWlsaW5n
IHRlc3RzLgorICAgICAgICBGaXhpbmcgdHlwb3MgaW4gdGVzdCAoSnNvbiAtPiBKU09OIGFuZCBy
ZW1vdmluZyBUZXh0RGVjb2RlciB1c2UpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWw6CisKIDIwMTYtMDItMjgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJzZSBIVE1MT0xF
bGVtZW50LnN0YXJ0IGFzIHBlciB0aGUgSFRNTCBzcGVjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVl
c3QtY29uc3VtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50
eHQKaW5kZXggZDI2Y2M3NmExYjIwYjUwNmNiM2U2NjE1NTIxZTI4MDUxYTJlM2Y5ZC4uOTZlN2Nl
YzFmMzBlZmYzZGNkNzJhMjc0YWUyMTMzMmZjZjdhYWRiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1
ZXN0LWNvbnN1bWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWV4cGVj
dGVkLnR4dApAQCAtMSw5ICsxLDEzIEBACiAKIFBBU1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBh
cyB0ZXh0IAotRkFJTCBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGJsb2IgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorUEFTUyBDb25zdW1l
IHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMg
YXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMganNvbiAKIEZBSUwg
Q29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitQQVNTIENvbnN1bWUgYmxvYiByZXNw
b25zZSdzIGJvZHkgYXMgYmxvYiAKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBh
cyB0ZXh0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRl
ZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29u
c3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCiBQQVNTIENvbnN1bWUgSlNP
TiBmcm9tIHRleHQ6ICcibnVsbCInIAogUEFTUyBDb25zdW1lIEpTT04gZnJvbSB0ZXh0OiAnIjEi
JyAKIFBBU1MgQ29uc3VtZSBKU09OIGZyb20gdGV4dDogJyJ0cnVlIicgCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1
ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUuaHRtbAppbmRl
eCAzYzQ1ZWU2YTI4ODlmMTAxMDcwYmQ2NzJjOTBlMTc5OGUxYTgzZDI3Li5lMzY1YjcyMmMxZjE1
OWMyMWZiNTBmN2FkNDQ0NWE5YmU5NzRhOWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29u
c3VtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwKQEAgLTc5LDEyICs3OSwy
OCBAQAogCiAgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgZm9ybURhdGEu
YXBwZW5kKCJuYW1lIiwgInZhbHVlIikKLSAgICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlzIHJl
cXVlc3QncyBib2R5IiwgInRleHQiLCBjaGVja0JvZHlUZXh0KTsKLSAgICBjaGVja1JlcXVlc3RC
b2R5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5IiwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKLSAg
ICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5IiwgImFycmF5QnVmZmVy
IiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOwotICAgIGNoZWNrUmVxdWVzdEJvZHkoSlNPTi5zdHJp
bmdpZnkoIlRoaXMgaXMgcmVxdWVzdCdzIGJvZHkiKSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsK
KyAgICB2YXIgdGV4dERhdGEgPSAiVGhpcyBpcyByZXNwb25zZSdzIGJvZHkiOworICAgIHZhciBi
bG9iID0gbmV3IEJsb2IoW3RleHREYXRhXSwgeyAidHlwZSIgOiAidGV4dC9wbGFpbiIgfSk7CisK
KyAgICBjaGVja1JlcXVlc3RCb2R5KHRleHREYXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOwor
ICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEsICJibG9iIiwgY2hlY2tCb2R5QmxvYik7Cisg
ICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJy
YXlCdWZmZXIpOworICAgIGNoZWNrUmVxdWVzdEJvZHkoSlNPTi5zdHJpbmdpZnkodGV4dERhdGEp
LCAianNvbiIsIGNoZWNrQm9keUpTT04pOwogICAgIGNoZWNrUmVxdWVzdEJvZHkoZm9ybURhdGEs
ICJmb3JtRGF0YSIsIGNoZWNrQm9keUZvcm1EYXRhKTsKIAorICAgIGZ1bmN0aW9uIGNoZWNrQmxv
YlJlc3BvbnNlQm9keShibG9iQm9keSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9u
KSB7CisgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVz
cG9uc2UgPSBuZXcgUmVzcG9uc2UoYmxvYkJvZHkpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVz
cG9uc2UuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJl
dHVybiBjaGVja0Z1bmN0aW9uKHJlc3BvbnNlLCBibG9iRGF0YSk7CisgICAgICB9LCAiQ29uc3Vt
ZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyAiICsgYm9keVR5cGUpOworICAgIH0KKworICAgIGNo
ZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9i
KTsKKyAgICBjaGVja0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJ0ZXh0IiwgY2hl
Y2tCb2R5VGV4dCk7CisgICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAi
anNvbiIsIGNoZWNrQm9keUpTT04pOworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0
ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgdmFy
IGdvb2RKU09OVmFsdWVzID0gWyJudWxsIiwgIjEiLCAidHJ1ZSIsICJcInN0cmluZ1wiIl07CiAg
ICAgZ29vZEpTT05WYWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKaW5k
ZXggNjZjOGY4NjcyYjEwOTZmNmY2NGJlMmExNDlmMTZmOGNiYTdmZjhhOS4uMDMyNmQyZGRkZTk5
ZDA3N2QzMDMzMGE0M2M3NGQ4ZjIwMjk2ZTA3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3Rl
ZC50eHQKQEAgLTEsNyArMSwxMSBAQAogCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFz
IHRleHQgCi1GQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAotRkFJTCBDb25zdW1l
IHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVGV4dERlY29kZXIiCitQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJs
b2IgCitQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAogRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3Mg
Ym9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogdW5kZWZpbmVkCitQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYmxv
YiAKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3Vt
ZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNl
J3MgYm9keSBhcyBhcnJheUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogdW5kZWZpbmVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbAppbmRleCAxNGRjYWQ3OTVjMmY1
NjcyZDU4ZjI5MzQ4NzViYzZkZDcwNmI2MzVkLi40OGQ0YmY5NjFhNzM0NTM2YTI2NWJiNjYwYzc0
YjhjNTRjZjYyM2JiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sCkBAIC0zNywxOCArMzcsMjYgQEAKICAgICAg
IH0pOwogICAgIH0KIAorICAgIDwhLS0gVGFrZW4gZnJvbSBodHRwczovL2RldmVsb3BlcnMuZ29v
Z2xlLmNvbSAtLT4KKyAgICBmdW5jdGlvbiBzdHIyYWIoc3RyKSB7CisgICAgICB2YXIgYnVmID0g
bmV3IEFycmF5QnVmZmVyKHN0ci5sZW5ndGgqMik7IC8vIDIgYnl0ZXMgZm9yIGVhY2ggY2hhcgor
ICAgICAgdmFyIGJ1ZlZpZXcgPSBuZXcgVWludDE2QXJyYXkoYnVmKTsKKyAgICAgIGZvciAodmFy
IGk9MCwgc3RyTGVuPXN0ci5sZW5ndGg7IGkgPCBzdHJMZW47IGkrKykgeworICAgICAgICBidWZW
aWV3W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7CisgICAgICB9CisgICAgICByZXR1cm4gYnVmOwor
ICAgIH0KKwogICAgIGZ1bmN0aW9uIGNoZWNrQm9keUFycmF5QnVmZmVyKHJlc3BvbnNlLCBleHBl
Y3RlZEJvZHkpIHsKICAgICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oIGZ1
bmN0aW9uKGJvZHlBc0FycmF5QnVmZmVyKSB7Ci0gICAgICAgIHZhciBkZWNvZGVyID0gbmV3IFRl
eHREZWNvZGVyKCJ1dGYtOCIpOwotICAgICAgICB2YXIgc3RyQm9keSA9IGRlY29kZXIuZGVjb2Rl
KGJvZHlBc0FycmF5QnVmZmVyKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhzdHJCb2R5LCBleHBl
Y3RlZEJvZHksICJSZXRyaWV2ZSBhbmQgdmVyaWZ5IHJlc3BvbnNlJ3MgYm9keSIpOworICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGJvZHlBc0FycmF5QnVmZmVyLCBzdHIyYWIoZXhwZWN0ZWRC
b2R5KSwgIlJldHJpZXZlIGFuZCB2ZXJpZnkgcmVzcG9uc2UncyBib2R5Iik7CiAgICAgICAgIGFz
c2VydF90cnVlKHJlc3BvbnNlLmJvZHlVc2VkLCAiYm9keSBhcyBhcnJheUJ1ZmZlcjogYm9keVVz
ZWQgdHVybmVkIHRydWUiKTsKICAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGNoZWNr
Qm9keUpzb24ocmVzcG9uc2UsIGV4cGVjdGVkQm9keSkgewotICAgICAgcmV0dXJuIHJlc3BvbnNl
Lmpzb24oKS50aGVuKGZ1bmN0aW9uKGJvZHlBc0pzb24pIHsKLSAgICAgICAgdmFyIHN0ckJvZHkg
PSBKU09OLnN0cmluZ2lmeShib2R5QXNKc29uKQorICAgIGZ1bmN0aW9uIGNoZWNrQm9keUpTT04o
cmVzcG9uc2UsIGV4cGVjdGVkQm9keSkgeworICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50
aGVuKGZ1bmN0aW9uKGJvZHlBc0pTT04pIHsKKyAgICAgICAgdmFyIHN0ckJvZHkgPSBKU09OLnN0
cmluZ2lmeShib2R5QXNKU09OKQogICAgICAgICBhc3NlcnRfZXF1YWxzKHN0ckJvZHksIGV4cGVj
dGVkQm9keSwgIlJldHJpZXZlIGFuZCB2ZXJpZnkgcmVzcG9uc2UncyBib2R5Iik7CiAgICAgICAg
IGFzc2VydF90cnVlKHJlc3BvbnNlLmJvZHlVc2VkLCAiYm9keSBhcyBqc29uOiBib2R5VXNlZCB0
dXJuZWQgdHJ1ZSIpOwogICAgICAgfSk7CkBAIC03MCwxMiArNzgsMzEgQEAKICAgICB9CiAKICAg
ICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKLSAgICBmb3JtRGF0YS5hcHBlbmQoIm5h
bWUiLCAidmFsdWUiKQotICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJUaGlzIGlzIHJlc3BvbnNlJ3Mg
Ym9keSIsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7Ci0gICAgY2hlY2tSZXNwb25zZUJvZHkoIlRo
aXMgaXMgcmVzcG9uc2UncyBib2R5IiwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVj
a1Jlc3BvbnNlQm9keSgiVGhpcyBpcyByZXNwb25zZSdzIGJvZHkiLCAiYXJyYXlCdWZmZXIiLCBj
aGVja0JvZHlBcnJheUJ1ZmZlcik7Ci0gICAgY2hlY2tSZXNwb25zZUJvZHkoSlNPTi5zdHJpbmdp
ZnkoIlRoaXMgaXMgcmVzcG9uc2UncyBib2R5IiksICJqc29uIiwgY2hlY2tCb2R5SnNvbik7Cisg
ICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIik7CisgICAgdmFyIHRleHREYXRhID0g
IlRoaXMgaXMgcmVzcG9uc2UncyBib2R5IjsKKyAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0
RGF0YV0sIHsgInR5cGUiIDogInRleHQvcGxhaW4iIH0pOworCisgICAgY2hlY2tSZXNwb25zZUJv
ZHkodGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7CisgICAgY2hlY2tSZXNwb25zZUJv
ZHkodGV4dERhdGEsICJibG9iIiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXNwb25zZUJv
ZHkodGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKworICAg
IGNoZWNrUmVzcG9uc2VCb2R5KEpTT04uc3RyaW5naWZ5KCJUaGlzIGlzIHJlc3BvbnNlJ3MgYm9k
eSIpLCAianNvbiIsIGNoZWNrQm9keUpTT04pOworCiAgICAgY2hlY2tSZXNwb25zZUJvZHkoZm9y
bURhdGEsICJmb3JtRGF0YSIsIGNoZWNrQm9keUZvcm1EYXRhKTsKKworICAgIGZ1bmN0aW9uIGNo
ZWNrQmxvYlJlc3BvbnNlQm9keShibG9iQm9keSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1
bmN0aW9uKSB7CisgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2
YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoYmxvYkJvZHkpOworICAgICAgICBhc3NlcnRfZmFs
c2UocmVzcG9uc2UuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAg
ICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJlc3BvbnNlLCBibG9iRGF0YSk7CisgICAgICB9LCAi
Q29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyAiICsgYm9keVR5cGUpOworICAgIH0KKwor
ICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImJsb2IiLCBjaGVja0Jv
ZHlCbG9iKTsKKyAgICBjaGVja0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJ0ZXh0
IiwgY2hlY2tCb2R5VGV4dCk7CisgICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHRE
YXRhLCAianNvbiIsIGNoZWNrQm9keUpTT04pOworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShi
bG9iLCB0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAg
ICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272499</attachid>
            <date>2016-02-29 10:09:14 -0800</date>
            <delta_ts>2016-03-01 01:14:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154820-20160229190857.patch</filename>
            <type>text/plain</type>
            <size>15864</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwZjEwOGI4NjRjMzZh
ZGI3YTQ3NGZlNmJiY2I0ODA3YTgyNTc4NS4uODk2MzdiOTMzMGJlOTljZmIyNzBkZjU5YjBiY2Zk
ODNhYzg5MjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE2LTAyLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgW0ZldGNo
IEFQSV0gU3VwcG9ydCBSZXF1ZXN0IGFuZCBSZXNwb25zZSBibG9iKCkgd2hlbiBib2R5IGRhdGEg
aXMgYSBibG9iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQ4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIHRoZSBzYW1lIEJsb2IgdGhhdCBpcyBzdG9y
ZWQgaW4gQm9keSBpbiBjYXNlIEpTIGJsb2IoKSBpcyBjYWxsZWQuCisgICAgICAgIEFkZGluZyBz
dXBwb3J0IGZvciBCbG9iIGNyZWF0aW9uIHdoZW4gZGF0YSBpcyBzdG9yZWQgYXMgdGV4dC4KKyAg
ICAgICAgVXBkYXRlZCBKU0RPTUJpbmRpbmcgYW5kIEpTRE9NUHJvbWlzZSB0byByZXR1cm4gYSBK
UyBBcnJheUJ1ZmZlciBmb3IgVmVjdG9yPGNoYXI+IGFzIHdlbGwgYXMgVmVjdG9yPHVuc2lnbmVk
IGNoYXI+LgorCisgICAgICAgIENvdmVyZWQgYnkgYWRkZWQgdGVzdHMuCisKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YmxvYik6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZl
KTogRGVsZXRlZC4KKworMjAxNi0wMi0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRA
Y3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFJlZmFjdG9yIEZldGNoQm9keSBjb25zdHJ1Y3RvcnMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDcyMQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggNTcwODQ1
ZDNiNmE1ZDExOGVmNDNiZTJmYjE0MWU4YmE2ZDhmNTI3My4uMDYwOTIyOWU2NjMwNWU3Y2Y0YmFh
OTVkOTc5MjkyYWQ5ZTQ3MGFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0pTT05PYmplY3QuaD4KQEAgLTEwMywxMSArMTA0LDggQEAgdm9pZCBGZXRjaEJvZHk6
OmFycmF5QnVmZmVyKEFycmF5QnVmZmVyUHJvbWlzZSYmIHByb21pc2UpCiAKICAgICBpZiAobV90
eXBlID09IFR5cGU6OlRleHQpIHsKICAgICAgICAgLy8gRklYTUU6IHByb21pc2UgZXhwZWN0cyBh
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIEFycmF5
QnVmZmVyLgotICAgICAgICAvLyBXZSBzaG91bGQgdHJ5IHRvIGNyZWF0ZSBhIFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiBvciBhbiBBcnJheUJ1ZmZlciBkaXJlY3RseSBmcm9tIG1fdGV4dC4KLSAgICAg
ICAgQ1N0cmluZyBkYXRhID0gbV90ZXh0LnV0ZjgoKTsKLSAgICAgICAgVmVjdG9yPHVuc2lnbmVk
IGNoYXI+IHZhbHVlKGRhdGEubGVuZ3RoKCkpOwotICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSgp
LCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShX
VEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIC8vIFdlIHNob3VsZCB0cnkgdG8gY3JlYXRlIGFuIEFy
cmF5QnVmZmVyIGRpcmVjdGx5IGZyb20gbV90ZXh0LgorICAgICAgICBwcm9taXNlLnJlc29sdmUo
ZXh0cmFjdEZyb21UZXh0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIEZJWE1F
OiBTdXBwb3J0IG90aGVyIHR5cGVzLgpAQCAtMTMxLDYgKzEyOSwxNyBAQCB2b2lkIEZldGNoQm9k
eTo6YmxvYihCbG9iUHJvbWlzZSYmIHByb21pc2UpCiAgICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JE
aXN0dXJiZWQocHJvbWlzZSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX3R5cGUgPT0g
VHlwZTo6QmxvYikgeworICAgICAgICBwcm9taXNlLnJlc29sdmUobV9ibG9iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAobV90eXBlID09IFR5cGU6OlRleHQpIHsKKyAgICAgICAg
U3RyaW5nIGNvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpOworICAgICAgICBSZWZQdHI8QmxvYj4g
YmxvYiA9IEJsb2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpOworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShibG9iKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KICAgICBwcm9taXNlLnJl
amVjdCgwKTsKIH0KQEAgLTE2NSw2ICsxNzQsMTUgQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU09OUHJvbWlzZSYmIHByb21pc2UpCiAgICAgcHJvbWlzZS5y
ZWplY3QoMCk7CiB9CiAKK1ZlY3RvcjxjaGFyPiBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpUZXh0KTsKKyAgICBDU3RyaW5n
IGRhdGEgPSBtX3RleHQudXRmOCgpOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZShkYXRhLmxlbmd0
aCgpKTsKKyAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgo
KSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hf
QVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggMTk2Yjdi
MDdjYTE1ZTMyZTNkZDNmZjY0ZWE4MzE3NGExNmI3YjBiNy4uOGYzZjg3OWUzMTYzNjFiYjE0ZDcw
NzFkMDBmNTE1ZjZjN2UxODI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNs
YXNzIEZldGNoQm9keSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBET01Qcm9taXNlPFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiwgRXhjZXB0aW9uQ29kZT4gQXJyYXlCdWZmZXJQcm9taXNlOworICAgIHR5
cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8Y2hhcj4sIEV4Y2VwdGlvbkNvZGU+IEFycmF5QnVmZmVy
UHJvbWlzZTsKICAgICB2b2lkIGFycmF5QnVmZmVyKEFycmF5QnVmZmVyUHJvbWlzZSYmKTsKIAog
ICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8RE9NRm9ybURhdGE+LCBFeGNlcHRpb25Db2Rl
PiBGb3JtRGF0YVByb21pc2U7CkBAIC04MSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgRmV0Y2hC
b2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAgICAgRmV0Y2hCb2R5KFN0cmluZyYmKTsKIAorICAg
IFZlY3RvcjxjaGFyPiBleHRyYWN0RnJvbVRleHQoKSBjb25zdDsKKwogICAgIFR5cGUgbV90eXBl
ID0gVHlwZTo6Tm9uZTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBib29sIG1faXNEaXN0
dXJiZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
aW5kZXggMGJjNWQ3YWQ1N2JmNDk1NzM1MzQ0OWZlODI0NmE1ZWY5NjkwOTg1NC4uNWNlMjU1MGIw
ZGE5NTY4YTMxYTM2YzRjZmRlNWM0ZjcxNDQzOThkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTQ1Miw2ICs0NTIsMTggQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE8KICAgICByZXR1cm4gYXJyYXk7CiB9CiAKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgp
KTsKKyAgICByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBidWZmZXIuZ2V0KCkpOwor
fQorCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4m
IHZlY3RvcikKK3sKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CisgICAgcmV0dXJuIHRvSlMo
c3RhdGUsIGdsb2JhbE9iamVjdCwgYnVmZmVyLmdldCgpKTsKK30KKwogaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggNzM5ZWQ4
YTlkYzBlNzJkODliM2FlNzNlYmFmZDYyODUxNTY1MzIyNi4uOTVjZDMyZDUyM2RlZDdmZGFkOGMw
ZGU2ZjY5MTU1Mjk0MGRlZmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmgKQEAgLTE2NSwxNiArMTY1LDYgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZXNvbHZlPEpTQzo6SlNWYWx1ZT4oY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1ZSkKICAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CiAgICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUp
OwogfQotdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPj4oY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiByZXN1bHQp
Ci17Ci0gICAgQVNTRVJUKG1fZGVmZXJyZWQpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7
Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocmVzdWx0LmRhdGEoKSwgcmVzdWx0
LnNpemUoKSk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5n
ZXQoKSwgYnVmZmVyLmdldCgpKSk7Ci19CiAKIHRlbXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVy
cmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCBhY2ZmZjhjN2QyNzBhZjUwZjFkM2U0NzY4NGVkNjM2ODc5NzMy
MjJlLi43MDEzYjU5ZDdlYjZjOThjNGVkMWU0MzE5OGFkMGY5ZDQ0YzEzODY0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0wMi0yOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtGZXRjaCBB
UEldIFN1cHBvcnQgUmVxdWVzdCBhbmQgUmVzcG9uc2UgYmxvYigpIHdoZW4gYm9keSBkYXRhIGlz
IGEgYmxvYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIGJsb2Igc3BlY2lmaWMgdGVzdHMuIE5ldyB0ZXN0cyBhcmUgbm90IGNvdmVyZWQgeWV0
IGFzIHRoZXkgcmVxdWlyZSBjb252ZXJ0aW5nIGRhdGEgZnJvbSBhIGJsb2IgaW50byBhbm90aGVy
IGZvcm0gKEpTT04sIHRleHQuLi4pLgorICAgICAgICBSZWJhc2luZyBleHBlY3RhdGlvbnMgd2l0
aCB0ZXN0IHRoYXQgaXMgbm93IHBhc3NpbmcgYW5kIG5ldyBmYWlsaW5nIHRlc3RzLgorICAgICAg
ICBGaXhpbmcgdHlwb3MgaW4gdGVzdCAoSnNvbiAtPiBKU09OIGFuZCByZW1vdmluZyBUZXh0RGVj
b2RlciB1c2UpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1
ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sOgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNw
b25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWw6CisKIDIwMTYtMDItMjggIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJzZSBIVE1MT0xFbGVtZW50LnN0YXJ0IGFz
IHBlciB0aGUgSFRNTCBzcGVjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXggZDI2Y2M3
NmExYjIwYjUwNmNiM2U2NjE1NTIxZTI4MDUxYTJlM2Y5ZC4uOTZlN2NlYzFmMzBlZmYzZGNkNzJh
Mjc0YWUyMTMzMmZjZjdhYWRiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dApAQCAtMSw5
ICsxLDEzIEBACiAKIFBBU1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAotRkFJTCBD
b25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGJsb2IgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorUEFTUyBDb25zdW1lIHJlcXVlc3QncyBib2R5
IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQ
QVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMganNvbiAKIEZBSUwgQ29uc3VtZSByZXF1ZXN0
J3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogdW5kZWZpbmVkCitQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMg
YmxvYiAKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29u
c3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3Bv
bnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCiBQQVNTIENvbnN1bWUgSlNPTiBmcm9tIHRleHQ6ICci
bnVsbCInIAogUEFTUyBDb25zdW1lIEpTT04gZnJvbSB0ZXh0OiAnIjEiJyAKIFBBU1MgQ29uc3Vt
ZSBKU09OIGZyb20gdGV4dDogJyJ0cnVlIicgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29u
c3VtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUuaHRtbAppbmRleCAzYzQ1ZWU2YTI4ODlm
MTAxMDcwYmQ2NzJjOTBlMTc5OGUxYTgzZDI3Li5lMzY1YjcyMmMxZjE1OWMyMWZiNTBmN2FkNDQ0
NWE5YmU5NzRhOWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
cXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwKQEAgLTc5LDEyICs3OSwyOCBAQAogCiAgICAgdmFy
IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwg
InZhbHVlIikKLSAgICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5Iiwg
InRleHQiLCBjaGVja0JvZHlUZXh0KTsKLSAgICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlzIHJl
cXVlc3QncyBib2R5IiwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVja1JlcXVlc3RC
b2R5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5IiwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJy
YXlCdWZmZXIpOwotICAgIGNoZWNrUmVxdWVzdEJvZHkoSlNPTi5zdHJpbmdpZnkoIlRoaXMgaXMg
cmVxdWVzdCdzIGJvZHkiKSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKKyAgICB2YXIgdGV4dERh
dGEgPSAiVGhpcyBpcyByZXNwb25zZSdzIGJvZHkiOworICAgIHZhciBibG9iID0gbmV3IEJsb2Io
W3RleHREYXRhXSwgeyAidHlwZSIgOiAidGV4dC9wbGFpbiIgfSk7CisKKyAgICBjaGVja1JlcXVl
c3RCb2R5KHRleHREYXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVxdWVz
dEJvZHkodGV4dERhdGEsICJibG9iIiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXF1ZXN0
Qm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworICAg
IGNoZWNrUmVxdWVzdEJvZHkoSlNPTi5zdHJpbmdpZnkodGV4dERhdGEpLCAianNvbiIsIGNoZWNr
Qm9keUpTT04pOwogICAgIGNoZWNrUmVxdWVzdEJvZHkoZm9ybURhdGEsICJmb3JtRGF0YSIsIGNo
ZWNrQm9keUZvcm1EYXRhKTsKIAorICAgIGZ1bmN0aW9uIGNoZWNrQmxvYlJlc3BvbnNlQm9keShi
bG9iQm9keSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9uKSB7CisgICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVz
cG9uc2UoYmxvYkJvZHkpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQs
ICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0
aW9uKHJlc3BvbnNlLCBibG9iRGF0YSk7CisgICAgICB9LCAiQ29uc3VtZSBibG9iIHJlc3BvbnNl
J3MgYm9keSBhcyAiICsgYm9keVR5cGUpOworICAgIH0KKworICAgIGNoZWNrQmxvYlJlc3BvbnNl
Qm9keShibG9iLCB0ZXh0RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja0Js
b2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7Cisg
ICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9k
eUpTT04pOworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImFycmF5
QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgdmFyIGdvb2RKU09OVmFsdWVz
ID0gWyJudWxsIiwgIjEiLCAidHJ1ZSIsICJcInN0cmluZ1wiIl07CiAgICAgZ29vZEpTT05WYWx1
ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXggNjZjOGY4NjcyYjEw
OTZmNmY2NGJlMmExNDlmMTZmOGNiYTdmZjhhOS4uMDMyNmQyZGRkZTk5ZDA3N2QzMDMzMGE0M2M3
NGQ4ZjIwMjk2ZTA3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKQEAgLTEsNyAr
MSwxMSBAQAogCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIHRleHQgCi1GQUlMIENv
bnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVq
ZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAotRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9k
eSBhcyBhcnJheUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVGV4dERl
Y29kZXIiCitQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCitQQVNTIENvbnN1
bWUgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNl
J3MgYm9keSBhcyBqc29uIAogRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0
YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVk
CitQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK0ZBSUwgQ29uc3Vt
ZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNl
J3MgYm9keSBhcyBqc29uIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJh
eUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5k
ZWZpbmVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNl
L3Jlc3BvbnNlLWNvbnN1bWUuaHRtbAppbmRleCAxNGRjYWQ3OTVjMmY1NjcyZDU4ZjI5MzQ4NzVi
YzZkZDcwNmI2MzVkLi40OGQ0YmY5NjFhNzM0NTM2YTI2NWJiNjYwYzc0YjhjNTRjZjYyM2JiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9u
c2UtY29uc3VtZS5odG1sCkBAIC0zNywxOCArMzcsMjYgQEAKICAgICAgIH0pOwogICAgIH0KIAor
ICAgIDwhLS0gVGFrZW4gZnJvbSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbSAtLT4KKyAg
ICBmdW5jdGlvbiBzdHIyYWIoc3RyKSB7CisgICAgICB2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVy
KHN0ci5sZW5ndGgqMik7IC8vIDIgYnl0ZXMgZm9yIGVhY2ggY2hhcgorICAgICAgdmFyIGJ1ZlZp
ZXcgPSBuZXcgVWludDE2QXJyYXkoYnVmKTsKKyAgICAgIGZvciAodmFyIGk9MCwgc3RyTGVuPXN0
ci5sZW5ndGg7IGkgPCBzdHJMZW47IGkrKykgeworICAgICAgICBidWZWaWV3W2ldID0gc3RyLmNo
YXJDb2RlQXQoaSk7CisgICAgICB9CisgICAgICByZXR1cm4gYnVmOworICAgIH0KKwogICAgIGZ1
bmN0aW9uIGNoZWNrQm9keUFycmF5QnVmZmVyKHJlc3BvbnNlLCBleHBlY3RlZEJvZHkpIHsKICAg
ICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oIGZ1bmN0aW9uKGJvZHlBc0Fy
cmF5QnVmZmVyKSB7Ci0gICAgICAgIHZhciBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCJ1dGYt
OCIpOwotICAgICAgICB2YXIgc3RyQm9keSA9IGRlY29kZXIuZGVjb2RlKGJvZHlBc0FycmF5QnVm
ZmVyKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhzdHJCb2R5LCBleHBlY3RlZEJvZHksICJSZXRy
aWV2ZSBhbmQgdmVyaWZ5IHJlc3BvbnNlJ3MgYm9keSIpOworICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGJvZHlBc0FycmF5QnVmZmVyLCBzdHIyYWIoZXhwZWN0ZWRCb2R5KSwgIlJldHJpZXZl
IGFuZCB2ZXJpZnkgcmVzcG9uc2UncyBib2R5Iik7CiAgICAgICAgIGFzc2VydF90cnVlKHJlc3Bv
bnNlLmJvZHlVc2VkLCAiYm9keSBhcyBhcnJheUJ1ZmZlcjogYm9keVVzZWQgdHVybmVkIHRydWUi
KTsKICAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGNoZWNrQm9keUpzb24ocmVzcG9u
c2UsIGV4cGVjdGVkQm9keSkgewotICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKGZ1
bmN0aW9uKGJvZHlBc0pzb24pIHsKLSAgICAgICAgdmFyIHN0ckJvZHkgPSBKU09OLnN0cmluZ2lm
eShib2R5QXNKc29uKQorICAgIGZ1bmN0aW9uIGNoZWNrQm9keUpTT04ocmVzcG9uc2UsIGV4cGVj
dGVkQm9keSkgeworICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKGZ1bmN0aW9uKGJv
ZHlBc0pTT04pIHsKKyAgICAgICAgdmFyIHN0ckJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5QXNK
U09OKQogICAgICAgICBhc3NlcnRfZXF1YWxzKHN0ckJvZHksIGV4cGVjdGVkQm9keSwgIlJldHJp
ZXZlIGFuZCB2ZXJpZnkgcmVzcG9uc2UncyBib2R5Iik7CiAgICAgICAgIGFzc2VydF90cnVlKHJl
c3BvbnNlLmJvZHlVc2VkLCAiYm9keSBhcyBqc29uOiBib2R5VXNlZCB0dXJuZWQgdHJ1ZSIpOwog
ICAgICAgfSk7CkBAIC03MCwxMiArNzgsMzEgQEAKICAgICB9CiAKICAgICB2YXIgZm9ybURhdGEg
PSBuZXcgRm9ybURhdGEoKTsKLSAgICBmb3JtRGF0YS5hcHBlbmQoIm5hbWUiLCAidmFsdWUiKQot
ICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJUaGlzIGlzIHJlc3BvbnNlJ3MgYm9keSIsICJ0ZXh0Iiwg
Y2hlY2tCb2R5VGV4dCk7Ci0gICAgY2hlY2tSZXNwb25zZUJvZHkoIlRoaXMgaXMgcmVzcG9uc2Un
cyBib2R5IiwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVja1Jlc3BvbnNlQm9keSgi
VGhpcyBpcyByZXNwb25zZSdzIGJvZHkiLCAiYXJyYXlCdWZmZXIiLCBjaGVja0JvZHlBcnJheUJ1
ZmZlcik7Ci0gICAgY2hlY2tSZXNwb25zZUJvZHkoSlNPTi5zdHJpbmdpZnkoIlRoaXMgaXMgcmVz
cG9uc2UncyBib2R5IiksICJqc29uIiwgY2hlY2tCb2R5SnNvbik7CisgICAgZm9ybURhdGEuYXBw
ZW5kKCJuYW1lIiwgInZhbHVlIik7CisgICAgdmFyIHRleHREYXRhID0gIlRoaXMgaXMgcmVzcG9u
c2UncyBib2R5IjsKKyAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0RGF0YV0sIHsgInR5cGUi
IDogInRleHQvcGxhaW4iIH0pOworCisgICAgY2hlY2tSZXNwb25zZUJvZHkodGV4dERhdGEsICJ0
ZXh0IiwgY2hlY2tCb2R5VGV4dCk7CisgICAgY2hlY2tSZXNwb25zZUJvZHkodGV4dERhdGEsICJi
bG9iIiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkodGV4dERhdGEsICJh
cnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKworICAgIGNoZWNrUmVzcG9uc2VC
b2R5KEpTT04uc3RyaW5naWZ5KCJUaGlzIGlzIHJlc3BvbnNlJ3MgYm9keSIpLCAianNvbiIsIGNo
ZWNrQm9keUpTT04pOworCiAgICAgY2hlY2tSZXNwb25zZUJvZHkoZm9ybURhdGEsICJmb3JtRGF0
YSIsIGNoZWNrQm9keUZvcm1EYXRhKTsKKworICAgIGZ1bmN0aW9uIGNoZWNrQmxvYlJlc3BvbnNl
Qm9keShibG9iQm9keSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9uKSB7CisgICAg
ICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVzcG9uc2UgPSBu
ZXcgUmVzcG9uc2UoYmxvYkJvZHkpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9k
eVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVj
a0Z1bmN0aW9uKHJlc3BvbnNlLCBibG9iRGF0YSk7CisgICAgICB9LCAiQ29uc3VtZSBibG9iIHJl
c3BvbnNlJ3MgYm9keSBhcyAiICsgYm9keVR5cGUpOworICAgIH0KKworICAgIGNoZWNrQmxvYlJl
c3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBj
aGVja0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4
dCk7CisgICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNo
ZWNrQm9keUpTT04pOworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwg
ImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgPC9zY3JpcHQ+CiAg
IDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272555</attachid>
            <date>2016-03-01 01:15:17 -0800</date>
            <delta_ts>2016-03-01 02:34:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154820-20160301101500.patch</filename>
            <type>text/plain</type>
            <size>14142</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlNDI2YWRiOTNhZTU2
ZmY0Mjk4OWQ1YWQ4NmE0MDU3MDg4MmJmMy4uODRhNDlkZWU3MGRmM2UzNTA5OTE1M2JkNWZjM2I2
Zjg1ZWM2NGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTAyLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gU3VwcG9ydCBSZXF1ZXN0IGFuZCBSZXNwb25zZSBibG9iKCkgd2hlbiBib2R5IGRhdGEg
aXMgYSBibG9iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQ4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
ZGRpbmcgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIHRoZSBzYW1lIEJsb2IgdGhhdCBpcyBzdG9yZWQg
aW4gQm9keSBpbiBjYXNlIEpTIGJsb2IoKSBpcyBjYWxsZWQuCisgICAgICAgIEFkZGluZyBzdXBw
b3J0IGZvciBCbG9iIGNyZWF0aW9uIHdoZW4gZGF0YSBpcyBzdG9yZWQgYXMgdGV4dC4KKyAgICAg
ICAgVXBkYXRlZCBKU0RPTUJpbmRpbmcgYW5kIEpTRE9NUHJvbWlzZSB0byByZXR1cm4gYSBKUyBB
cnJheUJ1ZmZlciBmb3IgVmVjdG9yPGNoYXI+IGFzIHdlbGwgYXMgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+LgorCisgICAgICAgIENvdmVyZWQgYnkgYWRkZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmFy
cmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKTog
RGVsZXRlZC4KKwogMjAxNi0wMi0yOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBmZWF0dXJlIG9mIGFudGlh
bGlhc2VkIGZvbnQgZGlsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAppbmRleCA1NzA4NDVkM2I2YTVkMTE4ZWY0M2JlMmZiMTQxZThiYTZkOGY1MjczLi5m
ZGJhNWNkY2RkMWVhN2UxM2ZiY2FlNjMwZTczZmZhMWU0OGE3ZmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNs
dWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Gb3Jt
RGF0YS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgpAQCAtMTAyLDEyICsxMDMs
MTAgQEAgdm9pZCBGZXRjaEJvZHk6OmFycmF5QnVmZmVyKEFycmF5QnVmZmVyUHJvbWlzZSYmIHBy
b21pc2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkg
ewotICAgICAgICAvLyBGSVhNRTogcHJvbWlzZSBleHBlY3RzIGEgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gQXJyYXlCdWZmZXIuCi0gICAgICAgIC8v
IFdlIHNob3VsZCB0cnkgdG8gY3JlYXRlIGEgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG9yIGFuIEFy
cmF5QnVmZmVyIGRpcmVjdGx5IGZyb20gbV90ZXh0LgotICAgICAgICBDU3RyaW5nIGRhdGEgPSBt
X3RleHQudXRmOCgpOwotICAgICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gdmFsdWUoZGF0YS5s
ZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEuZGF0YSgpLCBkYXRh
Lmxlbmd0aCgpKTsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURk1vdmUodmFsdWUpKTsKKyAg
ICAgICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugd291bGQgbGlrZSB0byBoYXZlIGFuIEFycmF5QnVm
ZmVyIGRpcmVjdGx5IGZyb20gbV90ZXh0LgorICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YSA9IGV4
dHJhY3RGcm9tVGV4dCgpOworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gRklY
TUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCkBAIC0xMzEsNiArMTMwLDE2IEBAIHZvaWQgRmV0Y2hC
b2R5OjpibG9iKEJsb2JQcm9taXNlJiYgcHJvbWlzZSkKICAgICBpZiAocHJvY2Vzc0lmRW1wdHlP
ckRpc3R1cmJlZChwcm9taXNlKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fdHlwZSA9
PSBUeXBlOjpCbG9iKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShtX2Jsb2IpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgeworICAgICAg
ICBTdHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFj
dE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZShCbG9iOjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4K
ICAgICBwcm9taXNlLnJlamVjdCgwKTsKIH0KQEAgLTE2NSw2ICsxNzQsMTYgQEAgdm9pZCBGZXRj
aEJvZHk6Ompzb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU09OUHJvbWlzZSYmIHByb21pc2Up
CiAgICAgcHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKK1ZlY3RvcjxjaGFyPiBGZXRjaEJvZHk6OmV4
dHJhY3RGcm9tVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpUZXh0
KTsKKyAgICAvLyBGSVhNRTogVGhpcyBkb3VibGUgYWxsb2NhdGlvbiBpcyBub3QgZWZmaWNpZW50
LiBNaWdodCB3YW50IHRvIGZpeCB0aGF0IGF0IFdURlN0cmluZyBsZXZlbC4KKyAgICBDU3RyaW5n
IGRhdGEgPSBtX3RleHQudXRmOCgpOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZShkYXRhLmxlbmd0
aCgpKTsKKyAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgo
KSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hf
QVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggMTk2Yjdi
MDdjYTE1ZTMyZTNkZDNmZjY0ZWE4MzE3NGExNmI3YjBiNy4uOTcxYzk2OTg3NTNkMmJkYmQ4Njgy
MDU1MzAwZjA1OGUxZTA3NTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFz
cyBKU1ZhbHVlOwogfTsKQEAgLTQ3LDcgKzQ4LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKIAogY2xhc3MgRmV0Y2hCb2R5IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIERPTVByb21pc2U8
VmVjdG9yPHVuc2lnbmVkIGNoYXI+LCBFeGNlcHRpb25Db2RlPiBBcnJheUJ1ZmZlclByb21pc2U7
CisgICAgdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgRXhjZXB0
aW9uQ29kZT4gQXJyYXlCdWZmZXJQcm9taXNlOwogICAgIHZvaWQgYXJyYXlCdWZmZXIoQXJyYXlC
dWZmZXJQcm9taXNlJiYpOwogCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxET01Gb3Jt
RGF0YT4sIEV4Y2VwdGlvbkNvZGU+IEZvcm1EYXRhUHJvbWlzZTsKQEAgLTgxLDYgKzgyLDggQEAg
cHJpdmF0ZToKICAgICBGZXRjaEJvZHkoUmVmPERPTUZvcm1EYXRhPiYmKTsKICAgICBGZXRjaEJv
ZHkoU3RyaW5nJiYpOwogCisgICAgVmVjdG9yPGNoYXI+IGV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0
OworCiAgICAgVHlwZSBtX3R5cGUgPSBUeXBlOjpOb25lOwogICAgIFN0cmluZyBtX21pbWVUeXBl
OwogICAgIGJvb2wgbV9pc0Rpc3R1cmJlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggZDdmYjRlNTU4MTQ2NTBjOGYyZWZhYzZhMzNjOTZkYjhjNDczNzZhYS4uZjUy
YWU2NGFmYjdhY2Q0NzJmNDhhNTYwNTJjZTNhMTkyMzg1MWM2YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDItMjkgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbRmV0Y2ggQVBJXSBTdXBw
b3J0IFJlcXVlc3QgYW5kIFJlc3BvbnNlIGJsb2IoKSB3aGVuIGJvZHkgZGF0YSBpcyBhIGJsb2IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZGluZyBibG9i
IHNwZWNpZmljIHRlc3RzLiBOZXcgdGVzdHMgYXJlIG5vdCBjb3ZlcmVkIHlldCBhcyB0aGV5IHJl
cXVpcmUgY29udmVydGluZyBkYXRhIGZyb20gYSBibG9iIGludG8gYW5vdGhlciBmb3JtIChKU09O
LCB0ZXh0Li4uKS4KKyAgICAgICAgUmViYXNpbmcgZXhwZWN0YXRpb25zIHdpdGggdGVzdCB0aGF0
IGlzIG5vdyBwYXNzaW5nIGFuZCBuZXcgZmFpbGluZyB0ZXN0cy4KKyAgICAgICAgRml4aW5nIHR5
cG9zIGluIHRlc3QgKEpzb24gLT4gSlNPTiBhbmQgcmVtb3ZpbmcgVGV4dERlY29kZXIgdXNlKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0
LWNvbnN1bWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9u
c2UtY29uc3VtZS5odG1sOgorCiAyMDE2LTAyLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIEhUTUwgcGFyc2luZyBydWxlcyBmb3IgdGV4dGFyZWEubWF4
TGVuZ3RoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1
ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXggZDI2Y2M3NmExYjIwYjUwNmNi
M2U2NjE1NTIxZTI4MDUxYTJlM2Y5ZC4uOTZlN2NlYzFmMzBlZmYzZGNkNzJhMjc0YWUyMTMzMmZj
ZjdhYWRiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDEzIEBACiAK
IFBBU1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAotRkFJTCBDb25zdW1lIHJlcXVl
c3QncyBib2R5IGFzIGJsb2IgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IHVuZGVmaW5lZAorUEFTUyBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCiBQ
QVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUg
cmVxdWVzdCdzIGJvZHkgYXMganNvbiAKIEZBSUwgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBm
b3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5k
ZWZpbmVkCitQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK0ZBSUwg
Q29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJl
c3BvbnNlJ3MgYm9keSBhcyBqc29uIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBh
cyBhcnJheUJ1ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogdW5kZWZpbmVkCiBQQVNTIENvbnN1bWUgSlNPTiBmcm9tIHRleHQ6ICcibnVsbCInIAogUEFT
UyBDb25zdW1lIEpTT04gZnJvbSB0ZXh0OiAnIjEiJyAKIFBBU1MgQ29uc3VtZSBKU09OIGZyb20g
dGV4dDogJyJ0cnVlIicgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVx
dWVzdC9yZXF1ZXN0LWNvbnN1bWUuaHRtbAppbmRleCAzYzQ1ZWU2YTI4ODlmMTAxMDcwYmQ2NzJj
OTBlMTc5OGUxYTgzZDI3Li5lMzY1YjcyMmMxZjE1OWMyMWZiNTBmN2FkNDQ0NWE5YmU5NzRhOWY5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVz
dC1jb25zdW1lLmh0bWwKQEAgLTc5LDEyICs3OSwyOCBAQAogCiAgICAgdmFyIGZvcm1EYXRhID0g
bmV3IEZvcm1EYXRhKCk7CiAgICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIikKLSAg
ICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5IiwgInRleHQiLCBjaGVj
a0JvZHlUZXh0KTsKLSAgICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlzIHJlcXVlc3QncyBib2R5
IiwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVja1JlcXVlc3RCb2R5KCJUaGlzIGlz
IHJlcXVlc3QncyBib2R5IiwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOwot
ICAgIGNoZWNrUmVxdWVzdEJvZHkoSlNPTi5zdHJpbmdpZnkoIlRoaXMgaXMgcmVxdWVzdCdzIGJv
ZHkiKSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKKyAgICB2YXIgdGV4dERhdGEgPSAiVGhpcyBp
cyByZXNwb25zZSdzIGJvZHkiOworICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3RleHREYXRhXSwg
eyAidHlwZSIgOiAidGV4dC9wbGFpbiIgfSk7CisKKyAgICBjaGVja1JlcXVlc3RCb2R5KHRleHRE
YXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERh
dGEsICJibG9iIiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0RGF0
YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworICAgIGNoZWNrUmVxdWVz
dEJvZHkoSlNPTi5zdHJpbmdpZnkodGV4dERhdGEpLCAianNvbiIsIGNoZWNrQm9keUpTT04pOwog
ICAgIGNoZWNrUmVxdWVzdEJvZHkoZm9ybURhdGEsICJmb3JtRGF0YSIsIGNoZWNrQm9keUZvcm1E
YXRhKTsKIAorICAgIGZ1bmN0aW9uIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iQm9keSwgYmxv
YkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9uKSB7CisgICAgICBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoYmxvYkJv
ZHkpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQsICJib2R5VXNlZCBp
cyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJlc3BvbnNl
LCBibG9iRGF0YSk7CisgICAgICB9LCAiQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyAi
ICsgYm9keVR5cGUpOworICAgIH0KKworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0
ZXh0RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja0Jsb2JSZXNwb25zZUJv
ZHkoYmxvYiwgdGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7CisgICAgY2hlY2tCbG9i
UmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9keUpTT04pOworICAg
IGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hl
Y2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgdmFyIGdvb2RKU09OVmFsdWVzID0gWyJudWxsIiwg
IjEiLCAidHJ1ZSIsICJcInN0cmluZ1wiIl07CiAgICAgZ29vZEpTT05WYWx1ZXMuZm9yRWFjaChm
dW5jdGlvbih2YWx1ZSkgewogICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXggNjZjOGY4NjcyYjEwOTZmNmY2NGJlMmEx
NDlmMTZmOGNiYTdmZjhhOS4uMDMyNmQyZGRkZTk5ZDA3N2QzMDMzMGE0M2M3NGQ4ZjIwMjk2ZTA3
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVz
cG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSwxMSBAQAogCiBQ
QVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIHRleHQgCi1GQUlMIENvbnN1bWUgcmVzcG9u
c2UncyBib2R5IGFzIGJsb2IgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IHVuZGVmaW5lZAotRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1
ZmZlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0
ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVGV4dERlY29kZXIiCitQQVNT
IENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCitQQVNTIENvbnN1bWUgcmVzcG9uc2Un
cyBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBq
c29uIAogRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitQQVNTIENvbnN1
bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3Bv
bnNlJ3MgYm9keSBhcyB0ZXh0IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBq
c29uIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmlu
ZWQKK0ZBSUwgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNv
bnN1bWUuaHRtbAppbmRleCAxNGRjYWQ3OTVjMmY1NjcyZDU4ZjI5MzQ4NzViYzZkZDcwNmI2MzVk
Li40OGQ0YmY5NjFhNzM0NTM2YTI2NWJiNjYwYzc0YjhjNTRjZjYyM2JiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNw
b25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5o
dG1sCkBAIC0zNywxOCArMzcsMjYgQEAKICAgICAgIH0pOwogICAgIH0KIAorICAgIDwhLS0gVGFr
ZW4gZnJvbSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbSAtLT4KKyAgICBmdW5jdGlvbiBz
dHIyYWIoc3RyKSB7CisgICAgICB2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVyKHN0ci5sZW5ndGgq
Mik7IC8vIDIgYnl0ZXMgZm9yIGVhY2ggY2hhcgorICAgICAgdmFyIGJ1ZlZpZXcgPSBuZXcgVWlu
dDE2QXJyYXkoYnVmKTsKKyAgICAgIGZvciAodmFyIGk9MCwgc3RyTGVuPXN0ci5sZW5ndGg7IGkg
PCBzdHJMZW47IGkrKykgeworICAgICAgICBidWZWaWV3W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7
CisgICAgICB9CisgICAgICByZXR1cm4gYnVmOworICAgIH0KKwogICAgIGZ1bmN0aW9uIGNoZWNr
Qm9keUFycmF5QnVmZmVyKHJlc3BvbnNlLCBleHBlY3RlZEJvZHkpIHsKICAgICAgIHJldHVybiBy
ZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oIGZ1bmN0aW9uKGJvZHlBc0FycmF5QnVmZmVyKSB7
Ci0gICAgICAgIHZhciBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpOwotICAgICAg
ICB2YXIgc3RyQm9keSA9IGRlY29kZXIuZGVjb2RlKGJvZHlBc0FycmF5QnVmZmVyKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhzdHJCb2R5LCBleHBlY3RlZEJvZHksICJSZXRyaWV2ZSBhbmQgdmVy
aWZ5IHJlc3BvbnNlJ3MgYm9keSIpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGJvZHlB
c0FycmF5QnVmZmVyLCBzdHIyYWIoZXhwZWN0ZWRCb2R5KSwgIlJldHJpZXZlIGFuZCB2ZXJpZnkg
cmVzcG9uc2UncyBib2R5Iik7CiAgICAgICAgIGFzc2VydF90cnVlKHJlc3BvbnNlLmJvZHlVc2Vk
LCAiYm9keSBhcyBhcnJheUJ1ZmZlcjogYm9keVVzZWQgdHVybmVkIHRydWUiKTsKICAgICAgIH0p
OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGNoZWNrQm9keUpzb24ocmVzcG9uc2UsIGV4cGVjdGVk
Qm9keSkgewotICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKGZ1bmN0aW9uKGJvZHlB
c0pzb24pIHsKLSAgICAgICAgdmFyIHN0ckJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5QXNKc29u
KQorICAgIGZ1bmN0aW9uIGNoZWNrQm9keUpTT04ocmVzcG9uc2UsIGV4cGVjdGVkQm9keSkgewor
ICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKGZ1bmN0aW9uKGJvZHlBc0pTT04pIHsK
KyAgICAgICAgdmFyIHN0ckJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5QXNKU09OKQogICAgICAg
ICBhc3NlcnRfZXF1YWxzKHN0ckJvZHksIGV4cGVjdGVkQm9keSwgIlJldHJpZXZlIGFuZCB2ZXJp
ZnkgcmVzcG9uc2UncyBib2R5Iik7CiAgICAgICAgIGFzc2VydF90cnVlKHJlc3BvbnNlLmJvZHlV
c2VkLCAiYm9keSBhcyBqc29uOiBib2R5VXNlZCB0dXJuZWQgdHJ1ZSIpOwogICAgICAgfSk7CkBA
IC03MCwxMiArNzgsMzEgQEAKICAgICB9CiAKICAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURh
dGEoKTsKLSAgICBmb3JtRGF0YS5hcHBlbmQoIm5hbWUiLCAidmFsdWUiKQotICAgIGNoZWNrUmVz
cG9uc2VCb2R5KCJUaGlzIGlzIHJlc3BvbnNlJ3MgYm9keSIsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4
dCk7Ci0gICAgY2hlY2tSZXNwb25zZUJvZHkoIlRoaXMgaXMgcmVzcG9uc2UncyBib2R5IiwgImJs
b2IiLCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVja1Jlc3BvbnNlQm9keSgiVGhpcyBpcyByZXNw
b25zZSdzIGJvZHkiLCAiYXJyYXlCdWZmZXIiLCBjaGVja0JvZHlBcnJheUJ1ZmZlcik7Ci0gICAg
Y2hlY2tSZXNwb25zZUJvZHkoSlNPTi5zdHJpbmdpZnkoIlRoaXMgaXMgcmVzcG9uc2UncyBib2R5
IiksICJqc29uIiwgY2hlY2tCb2R5SnNvbik7CisgICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwg
InZhbHVlIik7CisgICAgdmFyIHRleHREYXRhID0gIlRoaXMgaXMgcmVzcG9uc2UncyBib2R5IjsK
KyAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0RGF0YV0sIHsgInR5cGUiIDogInRleHQvcGxh
aW4iIH0pOworCisgICAgY2hlY2tSZXNwb25zZUJvZHkodGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tC
b2R5VGV4dCk7CisgICAgY2hlY2tSZXNwb25zZUJvZHkodGV4dERhdGEsICJibG9iIiwgY2hlY2tC
b2R5QmxvYik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkodGV4dERhdGEsICJhcnJheUJ1ZmZlciIs
IGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKworICAgIGNoZWNrUmVzcG9uc2VCb2R5KEpTT04uc3Ry
aW5naWZ5KCJUaGlzIGlzIHJlc3BvbnNlJ3MgYm9keSIpLCAianNvbiIsIGNoZWNrQm9keUpTT04p
OworCiAgICAgY2hlY2tSZXNwb25zZUJvZHkoZm9ybURhdGEsICJmb3JtRGF0YSIsIGNoZWNrQm9k
eUZvcm1EYXRhKTsKKworICAgIGZ1bmN0aW9uIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iQm9k
eSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9uKSB7CisgICAgICBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uo
YmxvYkJvZHkpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQsICJib2R5
VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJl
c3BvbnNlLCBibG9iRGF0YSk7CisgICAgICB9LCAiQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9k
eSBhcyAiICsgYm9keVR5cGUpOworICAgIH0KKworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShi
bG9iLCB0ZXh0RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja0Jsb2JSZXNw
b25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7CisgICAgY2hl
Y2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9keUpTT04p
OworICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImFycmF5QnVmZmVy
IiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwv
aHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>