<?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>164319</bug_id>
          
          <creation_ts>2016-11-02 07:30:11 -0700</creation_ts>
          <short_desc>[Readable Streams API] Implement ByteStreamController error()</short_desc>
          <delta_ts>2016-11-16 01:23:46 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Romain Bellessort">romain.wkt</reporter>
          <assigned_to name="Romain Bellessort">romain.wkt</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1247308</commentid>
    <comment_count>0</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-02 07:30:11 -0700</bug_when>
    <thetext>Implement error() method of ReadableByteStreamController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247325</commentid>
    <comment_count>1</comment_count>
      <attachid>293661</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-02 08:04:43 -0700</bug_when>
    <thetext>Created attachment 293661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247343</commentid>
    <comment_count>2</comment_count>
      <attachid>293661</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-11-02 09:21:14 -0700</bug_when>
    <thetext>Comment on attachment 293661
Patch

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

&gt; Source/WebCore/Modules/streams/ReadableByteStreamController.js:41
&gt; +        @makeThisTypeError(&quot;ReadableByteStreamController&quot;, &quot;error&quot;);

Should we add a test for this one as well?
Maybe it can be covered by WebIDL based tests (see wpt for more info).

&gt; Source/WebCore/Modules/streams/ReadableByteStreamController.js:43
&gt; +    const stream = this.@controlledReadableStream;

No need to define stream since it is used only once.

&gt; Source/WebCore/Modules/streams/ReadableByteStreamInternals.js:87
&gt; +    return @isObject(controller) &amp;&amp; !!controller.@underlyingByteSource;

This is the same test mechanism as isReadableStreamController. We might not need to restate the same comment here, just forward to ReadableStreamInternals.js.
Also maybe we should just do something like controller instanceof @ReadableStreamDefaultController, even though this departs from the spec.
It should be equivalent at least currently since all steams/controllers are built using these constructors.

&gt; Source/WebCore/Modules/streams/ReadableByteStreamInternals.js:94
&gt; +    const stream = controller.@controlledReadableStream;

stream is used only once in an assert, just better to not define it.

&gt; Source/WebCore/Modules/streams/ReadableStream.js:63
&gt; +            @throwTypeError(&quot;ReadableByteStreamController could not be created: &quot; + e.message);

Isn&apos;t there a risk that the try/catch error will change the error from range error to type error?
If so, shouldn&apos;t we do something like:
let readableByteStreamControllerConstructor;
try {
   readableByteStreamControllerConstructor = @ReadableByteStreamController;
} catch (e) {
 //not implemented error
}
this.@readableStreamController = new readableByteStreamControllerConstructor(this, underlyingSource, strategy.highWaterMark);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247366</commentid>
    <comment_count>3</comment_count>
      <attachid>293670</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-02 10:22:20 -0700</bug_when>
    <thetext>Created attachment 293670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247377</commentid>
    <comment_count>4</comment_count>
      <attachid>293674</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-02 10:48:52 -0700</bug_when>
    <thetext>Created attachment 293674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247380</commentid>
    <comment_count>5</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-02 10:53:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 293661 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293661&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/streams/ReadableByteStreamController.js:41
&gt; &gt; +        @makeThisTypeError(&quot;ReadableByteStreamController&quot;, &quot;error&quot;);
&gt; 
&gt; Should we add a test for this one as well?
&gt; Maybe it can be covered by WebIDL based tests (see wpt for more info).

I&apos;m not sure how this could be tested. On the other hand, I was planning to add a test for the following test (line 43, check whether stream is in readable state) after implementing close().

&gt; &gt; Source/WebCore/Modules/streams/ReadableByteStreamController.js:43
&gt; &gt; +    const stream = this.@controlledReadableStream;
&gt; 
&gt; No need to define stream since it is used only once.

I removed it (and did the same in ReadableStreamDefaultController.js).

&gt; &gt; Source/WebCore/Modules/streams/ReadableByteStreamInternals.js:87
&gt; &gt; +    return @isObject(controller) &amp;&amp; !!controller.@underlyingByteSource;
&gt; 
&gt; This is the same test mechanism as isReadableStreamController. We might not
&gt; need to restate the same comment here, just forward to
&gt; ReadableStreamInternals.js.
&gt; Also maybe we should just do something like controller instanceof
&gt; @ReadableStreamDefaultController, even though this departs from the spec.
&gt; It should be equivalent at least currently since all steams/controllers are
&gt; built using these constructors.

I tried using &quot;instanceof&quot;, but it results in a TypeError (instanceof called on an object with an invalid prototype property). Therefore I kept the same code, but modified the comment to point to isReadableStreamDefaultController.

&gt; &gt; Source/WebCore/Modules/streams/ReadableByteStreamInternals.js:94
&gt; &gt; +    const stream = controller.@controlledReadableStream;
&gt; 
&gt; stream is used only once in an assert, just better to not define it.

Removed.

&gt; &gt; Source/WebCore/Modules/streams/ReadableStream.js:63
&gt; &gt; +            @throwTypeError(&quot;ReadableByteStreamController could not be created: &quot; + e.message);
&gt; 
&gt; Isn&apos;t there a risk that the try/catch error will change the error from range
&gt; error to type error?
&gt; If so, shouldn&apos;t we do something like:
&gt; let readableByteStreamControllerConstructor;
&gt; try {
&gt;    readableByteStreamControllerConstructor = @ReadableByteStreamController;
&gt; } catch (e) {
&gt;  //not implemented error
&gt; }
&gt; this.@readableStreamController = new
&gt; readableByteStreamControllerConstructor(this, underlyingSource,
&gt; strategy.highWaterMark);

Right, this is cleaner. In the new patch, I implemented something similar except that I define readableByteStreamControllerConstructor only inside the try statement (and still use “new @ReadableByteStreamController()” after the try/catch). In the end, it will be possible to remove the try/catch without modifying the rest of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247710</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-11-03 08:34:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 293661 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=293661&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/streams/ReadableByteStreamController.js:41
&gt; &gt; &gt; +        @makeThisTypeError(&quot;ReadableByteStreamController&quot;, &quot;error&quot;);
&gt; &gt; 
&gt; &gt; Should we add a test for this one as well?
&gt; &gt; Maybe it can be covered by WebIDL based tests (see wpt for more info).
&gt; 
&gt; I&apos;m not sure how this could be tested. On the other hand, I was planning to
&gt; add a test for the following test (line 43, check whether stream is in
&gt; readable state) after implementing close().

You can try to use https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function/apply with a this object of a different type and print the exception message or check at least that it is a TypeError.

Please add something like LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.js or LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.html (WebIDL based)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248084</commentid>
    <comment_count>7</comment_count>
      <attachid>293875</attachid>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-04 02:21:53 -0700</bug_when>
    <thetext>Created attachment 293875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248090</commentid>
    <comment_count>8</comment_count>
    <who name="Romain Bellessort">romain.wkt</who>
    <bug_when>2016-11-04 03:09:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Comment on attachment 293661 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=293661&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/Modules/streams/ReadableByteStreamController.js:41
&gt; &gt; &gt; &gt; +        @makeThisTypeError(&quot;ReadableByteStreamController&quot;, &quot;error&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; Should we add a test for this one as well?
&gt; &gt; &gt; Maybe it can be covered by WebIDL based tests (see wpt for more info).
&gt; &gt; 
&gt; &gt; I&apos;m not sure how this could be tested. On the other hand, I was planning to
&gt; &gt; add a test for the following test (line 43, check whether stream is in
&gt; &gt; readable state) after implementing close().
&gt; 
&gt; You can try to use
&gt; https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/
&gt; Objets_globaux/Function/apply with a this object of a different type and
&gt; print the exception message or check at least that it is a TypeError.

Thanks, I added such a test.

&gt; Please add something like
&gt; LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/
&gt; readable-stream-reader.js or
&gt; LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.
&gt; html (WebIDL based)

I tried both approaches but had troubles with WebIDL-based tests. So I added corresponding tests in readable-byte-stream-controller.js. All behave as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248091</commentid>
    <comment_count>9</comment_count>
      <attachid>293875</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-04 03:42:08 -0700</bug_when>
    <thetext>Comment on attachment 293875
Patch

Clearing flags on attachment: 293875

Committed r208382: &lt;http://trac.webkit.org/changeset/208382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248092</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-04 03:42:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248739</commentid>
    <comment_count>11</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-11-07 06:49:40 -0800</bug_when>
    <thetext>Reverted r208382 for reason:

This change appears to have caused 3 SerializedCryptoKeyWrapTest API tests to fail on macOS.

Committed r208422: &lt;http://trac.webkit.org/changeset/208422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248740</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-11-07 06:50:06 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Reverted r208382 for reason:
&gt; 
&gt; This change appears to have caused 3 SerializedCryptoKeyWrapTest API tests
&gt; to fail on macOS.
&gt; 
&gt; Committed r208422: &lt;http://trac.webkit.org/changeset/208422&gt;

Link to failures:

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/1231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248745</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-11-07 07:55:19 -0800</bug_when>
    <thetext>The API tests are still failing after the rollout. 

https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/19305

I will roll the patch back in later today unless someone else beats me to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249296</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-11-09 09:53:03 -0800</bug_when>
    <thetext>Reverted r208422 for reason:

Roll r208382 back in since it was not responsible for the API test failures seen on macOS.

Committed r208434: &lt;http://trac.webkit.org/changeset/208434&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293661</attachid>
            <date>2016-11-02 08:04:43 -0700</date>
            <delta_ts>2016-11-02 10:22:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164319-20161102160043.patch</filename>
            <type>text/plain</type>
            <size>8712</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0NTNmNTgxNjZhNGY2
YTU1ZDBjZDgwMTFkMzE4ZWMyYWYxZDE4Yy4uNzFhYjExYzUyMTU5ZGM5MzNhZDViMGM2NWViOWQw
MmUxZTAyNmY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTExLTAyICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBCeXRlU3RyZWFtQ29udHJvbGxlciBl
cnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRlZCBlcnJvcigpIG1ldGhvZCBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGJ1dCB1cGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zIGZv
ciBlcnJvcigpLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIuanM6CisgICAgICAgIChlcnJvcik6IEltcGxlbWVudGVkLgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAg
IChwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAg
ICAoaXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKTogQWRkZWQuCisgICAgICAgIChyZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgKHJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXJDbGVhclBlbmRpbmdQdWxsSW50b3MpOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChpbml0aWFs
aXplUmVhZGFibGVTdHJlYW0pOiBNb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UuCisgICAgICAg
ICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCB0b3RhbFF1ZXVlZEJ5
dGVzLgorCiAyMDE2LTExLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIyMDc3NTMtMjA3NzU1KTogQVNTRVJUSU9OIEZBSUxFRDogbV9w
YXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmlzSW5NZW1vcnlDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5q
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyLmpzCmluZGV4IGRiNDNjNjEwODUyYjgzYTg4MzRlNmUzYTk2YTI5ODFlNGY5NzU3ZDku
LjllYmQ5ODFlNzJlOTI4OTc2MDMyZDE3ODgyYTQxYTY2ZWYxMWQxYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyLmpzCkBAIC0zNyw4ICszNywxNCBAQCBmdW5jdGlvbiBlcnJvcihlcnJvcikK
IHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICAvL0ZJWE1FOiBJbXBsZW1lbnQgYXBwcm9wcmlh
dGUgYmVoYXZpb3IuCi0gICAgQHRocm93VHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyIGVycm9yKCkgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgaWYgKCFAaXNSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQorICAgICAgICBAbWFrZVRoaXNUeXBlRXJyb3Io
IlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiLCAiZXJyb3IiKTsKKworICAgIGNvbnN0IHN0
cmVhbSA9IHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBpZiAoc3RyZWFtLkBz
dGF0ZSAhPT0gQHN0cmVhbVJlYWRhYmxlKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRh
YmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpOworCisgICAgQHJlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXJFcnJvcih0aGlzLCBlcnJvcik7CiB9CiAKIGZ1bmN0aW9uIGNsb3NlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1J
bnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRl
U3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGNlNjEyZTM1YzZjM2I5N2I3ZTk1NmQ3OTBiNzY5ZGQ3
NmMwNDIxZTQuLjk4N2U3NDFiNjI2NjQzZjdkYzk3MWFhMTJhODcyNzViOTJkOGE0MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1J
bnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFscy5qcwpAQCAtMzksMTkgKzM5LDE5IEBAIGZ1bmN0aW9uIHByaXZh
dGVJbml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcihzdHJlYW0sIHVuZGVybHlp
bmdCeXRlU291CiAKICAgICB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0gPSBzdHJlYW07
CiAgICAgdGhpcy5AdW5kZXJseWluZ0J5dGVTb3VyY2UgPSB1bmRlcmx5aW5nQnl0ZVNvdXJjZTsK
KyAgICB0aGlzLkBwdWxsQWdhaW4gPSBmYWxzZTsKKyAgICB0aGlzLkBwdWxsaW5nID0gZmFsc2U7
CisgICAgQHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJDbGVhclBlbmRpbmdQdWxsSW50b3Mo
dGhpcyk7CiAgICAgdGhpcy5AcXVldWUgPSBAbmV3UXVldWUoKTsKKyAgICB0aGlzLkB0b3RhbFF1
ZXVlZEJ5dGVzID0gMDsKICAgICB0aGlzLkBzdGFydGVkID0gZmFsc2U7CiAgICAgdGhpcy5AY2xv
c2VSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICB0aGlzLkBwdWxsQWdhaW4gPSBmYWxzZTsKLSAgICB0
aGlzLkBwdWxsaW5nID0gZmFsc2U7CiAKICAgICBsZXQgaHdtID0gQE51bWJlcihoaWdoV2F0ZXJN
YXJrKTsKICAgICBpZiAoQGlzTmFOKGh3bSkgfHwgaHdtIDwgMCkKICAgICAgICAgQHRocm93UmFu
Z2VFcnJvcigiaGlnaFdhdGVyTWFyayB2YWx1ZSBpcyBuZWdhdGl2ZSBvciBub3QgYSBudW1iZXIi
KTsKICAgICB0aGlzLkBzdHJhdGVneUhXTSA9IGh3bTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRvcy4KLQog
ICAgIGxldCBhdXRvQWxsb2NhdGVDaHVua1NpemUgPSB1bmRlcmx5aW5nQnl0ZVNvdXJjZS5hdXRv
QWxsb2NhdGVDaHVua1NpemU7CiAgICAgaWYgKGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSAhPT0gQHVu
ZGVmaW5lZCkgewogICAgICAgICBhdXRvQWxsb2NhdGVDaHVua1NpemUgPSBATnVtYmVyKGF1dG9B
bGxvY2F0ZUNodW5rU2l6ZSk7CkBAIC03NSwzICs3NSwzMiBAQCBmdW5jdGlvbiBwcml2YXRlSW5p
dGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIoc3RyZWFtLCB1bmRlcmx5aW5nQnl0
ZVNvdQogCiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlcihjb250cm9sbGVyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8v
IFNwZWMgdGVsbHMgdG8gcmV0dXJuIHRydWUgb25seSBpZiBjb250cm9sbGVyIGhhcyBhbiB1bmRl
cmx5aW5nQnl0ZVNvdXJjZSBpbnRlcm5hbCBzbG90LgorICAgIC8vIEhvd2V2ZXIsIHNpbmNlIGl0
IGlzIGEgcHJpdmF0ZSBzbG90LCBpdCBjYW5ub3QgYmUgY2hlY2tlZCB1c2luZyBoYXNPd25Qcm9w
ZXJ0eSgpLgorICAgIC8vIHVuZGVybHlpbmdCeXRlU291cmNlIGlzIG9idGFpbmVkIGluIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdG9yOiBpZiB1bmRlZmluZWQsIGl0IGlzIHNldAorICAgIC8vIHRv
IGFuIGVtcHR5IG9iamVjdC4gVGhlcmVmb3JlLCBmb2xsb3dpbmcgdGVzdCBpcyBvay4KKyAgICBy
ZXR1cm4gQGlzT2JqZWN0KGNvbnRyb2xsZXIpICYmICEhY29udHJvbGxlci5AdW5kZXJseWluZ0J5
dGVTb3VyY2U7Cit9CisKK2Z1bmN0aW9uIHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJFcnJv
cihjb250cm9sbGVyLCBlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGNvbnN0IHN0cmVh
bSA9IGNvbnRyb2xsZXIuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsKKyAgICBAYXNzZXJ0KHN0
cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1SZWFkYWJsZSk7CisgICAgQHJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXJDbGVhclBlbmRpbmdQdWxsSW50b3MoY29udHJvbGxlcik7CisgICAgY29udHJv
bGxlci5AcXVldWUgPSBAbmV3UXVldWUoKTsKKyAgICBAcmVhZGFibGVTdHJlYW1FcnJvcihzdHJl
YW0sIGUpOworfQorCitmdW5jdGlvbiByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQ2xlYXJQ
ZW5kaW5nUHVsbEludG9zKGNvbnRyb2xsZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
Ly8gRklYTUU6IFRvIGJlIGltcGxlbWVudGVkIGluIGNvbmp1bmN0aW9uIHdpdGggUmVhZGFibGVT
dHJlYW1CWU9CUmVxdWVzdC4KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5qcwppbmRleCBmM2ViMWVkZjhkZDY0OTE5ZDNhNTZlMzRjY2QwNmVh
ZjgxMzA0ODMyLi45OGI3ZTliMTJiZmJjZTIyYjU4ODRjMWQ0Y2NlZDEyYzdhNmNlY2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBA
IC02MCw3ICs2MCw3IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSh1bmRlcmx5
aW5nU291cmNlLCBzdHJhdGVneSkKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHRoaXMuQHJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlciA9IG5ldyBAUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
cih0aGlzLCB1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrKTsKICAgICAg
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIGNvdWxkIG5vdCBiZSBjcmVhdGVkIik7CisgICAgICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY291bGQgbm90IGJl
IGNyZWF0ZWQ6ICIgKyBlLm1lc3NhZ2UpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh0eXBl
ID09PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGlmIChzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID09
PSBAdW5kZWZpbmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oCmluZGV4IDQ1ZDg0MjAzMDQ4NzI1YmQwYjVmZGI2NTQxOTgyMDVkMmRjYzk5
ZjkuLmY4YmI1OWI0YjcxMTE3MDUwYzBkZDk3MjA3ZDBiZDMxZDQyNjcxMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHN0cmVhbVdyaXRhYmxlKSBc
CiAgICAgbWFjcm8oc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhzdHJ1
Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpIFwKKyAgICBtYWNybyh0b3RhbFF1ZXVlZEJ5dGVz
KSBcCiAgICAgbWFjcm8odW5kZXJseWluZ0J5dGVTb3VyY2UpIFwKICAgICBtYWNybyh1bmRlcmx5
aW5nU2luaykgXAogICAgIG1hY3JvKHVuZGVybHlpbmdTb3VyY2UpIFwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OWVjNDJm
ZDg3NTUyZmYzYmNiNmRjODkxMjQwMjJjYTM0YzYzZjgzLi40ZjFhNzJmNjhlMzYxYTQxZDE3NGNk
ZjU0ZDdjZjg1OWRhZDYwMGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTEtMDIgIFJv
bWFpbiBCZWxsZXNzb3J0ICA8cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIFtSZWFkYWJsZSBTdHJlYW1zIEFQSV0gSW1wbGVtZW50IEJ5dGVTdHJlYW1Db250cm9sbGVy
IGVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbiBmb3IgZXJyb3IoKSB0ZXN0IChwcmV2aW91c2x5IEZB
SUwsIG5vdyBQQVNTKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0t
Y29udHJvbGxlci1leHBlY3RlZC50eHQ6CisKIDIwMTYtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIwNzc1My0yMDc3NTUpOiBB
U1NFUlRJT04gRkFJTEVEOiBtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZS0+aXNJbk1lbW9yeUNhY2hl
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0t
Y29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CmluZGV4IDI2Y2YzNDYzZDQzMzkyYjA1
ODc1NThhOWY4YTZhY2U2OTUwMWMxNDkuLmMzMjk2NGQ1ZjNlMmVjMzdhZDVmZmNiYTQ1ZDk5YzM2
NTkxYTMxZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1z
dHJlYW0tY29udHJvbGxlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwx
MCBAQAogCiBQQVNTIENyZWF0aW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0aCBhbiB1bmRlcmx5aW5n
U291cmNlIHdpdGggdHlwZSBwcm9wZXJ0eSBzZXQgdG8gJ2J5dGVzJyBzaG91bGQgc3VjY2VlZCAK
LUZBSUwgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xs
ZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWplY3RlZCBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyIGVycm9yKCkgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIENhbGxpbmcg
cmVhZCgpIG9uIGEgcmVhZGVyIGFzc29jaWF0ZWQgdG8gYSBjb250cm9sbGVyIHRoYXQgaGFzIGJl
ZW4gZXJyb3JlZCBzaG91bGQgYmUgcmVqZWN0ZWQgCiBGQUlMIENhbGxpbmcgcmVhZCgpIG9uIGEg
cmVhZGVyIGFzc29jaWF0ZWQgdG8gYSBjb250cm9sbGVyIHRoYXQgaGFzIGJlZW4gY2xvc2VkIHNo
b3VsZCBub3QgYmUgcmVqZWN0ZWQgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjbG9zZSgp
IGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYWxsaW5nIHJlYWQoKSBhZnRlciBhIGNodW5rIGhh
cyBiZWVuIGVucXVldWVkIHNob3VsZCByZXN1bHQgaW4gb2J0YWluaW5nIHNhaWQgY2h1bmsgUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBlbnF1ZXVlKCkgaXMgbm90IGltcGxlbWVudGVkCiBQ
QVNTIENyZWF0aW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0aCBhbiB1bmRlcmx5aW5nU291cmNlIHdp
dGggdHlwZSBwcm9wZXJ0eSBzZXQgdG8gJ2J5dGVzJyBzaG91bGQgc3VjY2VlZCAKLUZBSUwgQ2Fs
bGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xsZXIgdGhhdCBo
YXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWplY3RlZCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyIGVycm9yKCkgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIENhbGxpbmcgcmVhZCgpIG9u
IGEgcmVhZGVyIGFzc29jaWF0ZWQgdG8gYSBjb250cm9sbGVyIHRoYXQgaGFzIGJlZW4gZXJyb3Jl
ZCBzaG91bGQgYmUgcmVqZWN0ZWQgCiBGQUlMIENhbGxpbmcgcmVhZCgpIG9uIGEgcmVhZGVyIGFz
c29jaWF0ZWQgdG8gYSBjb250cm9sbGVyIHRoYXQgaGFzIGJlZW4gY2xvc2VkIHNob3VsZCBub3Qg
YmUgcmVqZWN0ZWQgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjbG9zZSgpIGlzIG5vdCBp
bXBsZW1lbnRlZAogRkFJTCBDYWxsaW5nIHJlYWQoKSBhZnRlciBhIGNodW5rIGhhcyBiZWVuIGVu
cXVldWVkIHNob3VsZCByZXN1bHQgaW4gb2J0YWluaW5nIHNhaWQgY2h1bmsgUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlciBlbnF1ZXVlKCkgaXMgbm90IGltcGxlbWVudGVkCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293670</attachid>
            <date>2016-11-02 10:22:20 -0700</date>
            <delta_ts>2016-11-02 10:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164319-20161102181820.patch</filename>
            <type>text/plain</type>
            <size>10064</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0NTNmNTgxNjZhNGY2
YTU1ZDBjZDgwMTFkMzE4ZWMyYWYxZDE4Yy4uNmQ4YzE5YTBkOTMyZDJkOWU2ODgyMzBiYjE4ZWU2
ZjQwODQ5ZGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTExLTAyICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBCeXRlU3RyZWFtQ29udHJvbGxlciBl
cnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRlZCBlcnJvcigpIG1ldGhvZCBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGJ1dCB1cGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zIGZv
ciBlcnJvcigpLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIuanM6CisgICAgICAgIChlcnJvcik6IEltcGxlbWVudGVkLgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAg
IChwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAg
ICAoaXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKTogQWRkZWQuCisgICAgICAgIChyZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgKHJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXJDbGVhclBlbmRpbmdQdWxsSW50b3MpOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChpbml0aWFs
aXplUmVhZGFibGVTdHJlYW0pOiBNb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UuCisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanM6Cisg
ICAgICAgIChlcnJvcik6IFJlbW92ZWQgdW5uZWNlc3NhcnkgdmFyaWFibGUgZGVjbGFyYXRpb24u
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCB0b3Rh
bFF1ZXVlZEJ5dGVzLgorCiAyMDE2LTExLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDc3NTMtMjA3NzU1KTogQVNTRVJUSU9OIEZB
SUxFRDogbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmlzSW5NZW1vcnlDYWNoZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtQ29u
dHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmpzCmluZGV4IGRiNDNjNjEwODUyYjgzYTg4MzRlNmUzYTk2YTI5ODFl
NGY5NzU3ZDkuLjhlNjQ4MTA4YmNlNmZjNmQ1ZjZkMWQzZDViZWM1NWM1MGM5YmZmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzCkBAIC0zNyw4ICszNywxMyBAQCBmdW5jdGlvbiBlcnJv
cihlcnJvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICAvL0ZJWE1FOiBJbXBsZW1lbnQg
YXBwcm9wcmlhdGUgYmVoYXZpb3IuCi0gICAgQHRocm93VHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyIGVycm9yKCkgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgaWYgKCFA
aXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQorICAgICAgICBAbWFrZVRoaXNU
eXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiLCAiZXJyb3IiKTsKKworICAg
IGlmICh0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0uQHN0YXRlICE9PSBAc3RyZWFtUmVh
ZGFibGUpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJl
YWRhYmxlIik7CisKKyAgICBAcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVycm9yKHRoaXMs
IGVycm9yKTsKIH0KIAogZnVuY3Rpb24gY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMK
aW5kZXggY2U2MTJlMzVjNmMzYjk3YjdlOTU2ZDc5MGI3NjlkZDc2YzA0MjFlNC4uNTY4MjBhZGVl
NjNmNjFjMzFkODkxOGU3MWRhYzdhZjJlMTk4MWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxz
LmpzCkBAIC0zOSwxOSArMzksMTkgQEAgZnVuY3Rpb24gcHJpdmF0ZUluaXRpYWxpemVSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyKHN0cmVhbSwgdW5kZXJseWluZ0J5dGVTb3UKIAogICAgIHRo
aXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSA9IHN0cmVhbTsKICAgICB0aGlzLkB1bmRlcmx5
aW5nQnl0ZVNvdXJjZSA9IHVuZGVybHlpbmdCeXRlU291cmNlOworICAgIHRoaXMuQHB1bGxBZ2Fp
biA9IGZhbHNlOworICAgIHRoaXMuQHB1bGxpbmcgPSBmYWxzZTsKKyAgICBAcmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRvcyh0aGlzKTsKICAgICB0aGlzLkBx
dWV1ZSA9IEBuZXdRdWV1ZSgpOworICAgIHRoaXMuQHRvdGFsUXVldWVkQnl0ZXMgPSAwOwogICAg
IHRoaXMuQHN0YXJ0ZWQgPSBmYWxzZTsKICAgICB0aGlzLkBjbG9zZVJlcXVlc3RlZCA9IGZhbHNl
OwotICAgIHRoaXMuQHB1bGxBZ2FpbiA9IGZhbHNlOwotICAgIHRoaXMuQHB1bGxpbmcgPSBmYWxz
ZTsKIAogICAgIGxldCBod20gPSBATnVtYmVyKGhpZ2hXYXRlck1hcmspOwogICAgIGlmIChAaXNO
YU4oaHdtKSB8fCBod20gPCAwKQogICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJoaWdoV2F0ZXJN
YXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIG5vdCBhIG51bWJlciIpOwogICAgIHRoaXMuQHN0cmF0
ZWd5SFdNID0gaHdtOwogCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCByZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyQ2xlYXJQZW5kaW5nUHVsbEludG9zLgotCiAgICAgbGV0IGF1dG9BbGxvY2F0
ZUNodW5rU2l6ZSA9IHVuZGVybHlpbmdCeXRlU291cmNlLmF1dG9BbGxvY2F0ZUNodW5rU2l6ZTsK
ICAgICBpZiAoYXV0b0FsbG9jYXRlQ2h1bmtTaXplICE9PSBAdW5kZWZpbmVkKSB7CiAgICAgICAg
IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IEBOdW1iZXIoYXV0b0FsbG9jYXRlQ2h1bmtTaXplKTsK
QEAgLTc1LDMgKzc1LDI5IEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlcihzdHJlYW0sIHVuZGVybHlpbmdCeXRlU291CiAKICAgICByZXR1cm4g
dGhpczsKIH0KKworZnVuY3Rpb24gaXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKGNvbnRy
b2xsZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU2FtZSB0ZXN0IG1lY2hhbmlz
bSBhcyBpbiBpc1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgKFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzLmpzKS4KKyAgICAvLyBTZWUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBmb3IgZXhw
bGFuYXRpb25zLgorICAgIHJldHVybiBAaXNPYmplY3QoY29udHJvbGxlcikgJiYgISFjb250cm9s
bGVyLkB1bmRlcmx5aW5nQnl0ZVNvdXJjZTsKK30KKworZnVuY3Rpb24gcmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlckVycm9yKGNvbnRyb2xsZXIsIGUpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgQGFzc2VydChjb250cm9sbGVyLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0uQHN0YXRl
ID09PSBAc3RyZWFtUmVhZGFibGUpOworICAgIEByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
Q2xlYXJQZW5kaW5nUHVsbEludG9zKGNvbnRyb2xsZXIpOworICAgIGNvbnRyb2xsZXIuQHF1ZXVl
ID0gQG5ld1F1ZXVlKCk7CisgICAgQHJlYWRhYmxlU3RyZWFtRXJyb3IoY29udHJvbGxlci5AY29u
dHJvbGxlZFJlYWRhYmxlU3RyZWFtLCBlKTsKK30KKworZnVuY3Rpb24gcmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRvcyhjb250cm9sbGVyKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZCBpbiBjb25qdW5j
dGlvbiB3aXRoIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKaW5kZXggZjNlYjFlZGY4ZGQ2
NDkxOWQzYTU2ZTM0Y2NkMDZlYWY4MTMwNDgzMi4uMjczM2FjYmM1YmE4MjIwMWZmMzFkNjJiMTU1
MjdiYTI5NmEyOGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5qcwpAQCAtNTcsMTEgKzU3LDEzIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVS
ZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVneSkKICAgICAgICAgLy8gRklY
TUU6IFdoZW4gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBpcyBubyBtb3JlIGRlcGVuZGVu
dCBvbiBhIGNvbXBpbGUgZmxhZywgc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcgY2FuIGJlIHJlbW92
ZWQuCiAgICAgICAgIC8vIENvbnN0cnVjdG9yIGlzIG5vdCBuZWNlc3NhcmlseSBhdmFpbGFibGUg
aWYgdGhlIGJ5dGVTdHJlYW0gcGFydCBvZiBSZWFkZWFibGUgU3RyZWFtIEFQSSBpcyBub3QgYWN0
aXZhdGVkLiBUaGVyZWZvcmUsIGEKICAgICAgICAgLy8gc3BlY2lmaWMgaGFuZGxpbmcgb2YgZXJy
b3IgaXMgZG9uZS4KKyAgICAgICAgbGV0IHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJDb25z
dHJ1Y3RvcjsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHRoaXMuQHJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciA9IG5ldyBAUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcih0aGlzLCB1bmRl
cmx5aW5nU291cmNlLCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrKTsKKyAgICAgICAgICAgIHJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvciA9IEBSZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY291bGQgbm90IGJlIGNyZWF0ZWQi
KTsKKyAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlciBpcyBub3QgaW1wbGVtZW50ZWQiKTsKICAgICAgICAgfQorICAgICAgICB0aGlzLkByZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgPSBuZXcgQFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIo
dGhpcywgdW5kZXJseWluZ1NvdXJjZSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayk7CiAgICAgfSBl
bHNlIGlmICh0eXBlID09PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGlmIChzdHJhdGVneS5oaWdo
V2F0ZXJNYXJrID09PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgc3RyYXRlZ3kuaGlnaFdhdGVy
TWFyayA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCmluZGV4IGMwMDFkNThi
MWQ1NjNiYTVjYmI3NzFlMmIwNTExNTlhYTI1NjVkN2EuLmU5Yzk0OTk4YTAwMDkyMmJmN2I5MjZm
MjdhYzkyNmFkZjI0NWVmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCkBA
IC00OCw4ICs0OCw3IEBAIGZ1bmN0aW9uIGVycm9yKGVycm9yKQogICAgIGlmICghQGlzUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcih0aGlzKSkKICAgICAgICAgdGhyb3cgQG1ha2VUaGlz
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIiwgImVycm9yIik7CiAK
LSAgICBjb25zdCBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07Ci0gICAg
aWYgKHN0cmVhbS5Ac3RhdGUgIT09IEBzdHJlYW1SZWFkYWJsZSkKKyAgICBpZiAodGhpcy5AY29u
dHJvbGxlZFJlYWRhYmxlU3RyZWFtLkBzdGF0ZSAhPT0gQHN0cmVhbVJlYWRhYmxlKQogICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpOwogCiAg
ICAgQHJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFcnJvcih0aGlzLCBlcnJvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5k
ZXggNDVkODQyMDMwNDg3MjViZDBiNWZkYjY1NDE5ODIwNWQyZGNjOTlmOS4uZjhiYjU5YjRiNzEx
MTcwNTBjMGRkOTcyMDdkMGJkMzFkNDI2NzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oc3RyZWFtV3JpdGFibGUpIFwKICAgICBtYWNybyhzdHJ1
Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKHN0cnVjdHVyZWRDbG9uZUFycmF5
QnVmZmVyVmlldykgXAorICAgIG1hY3JvKHRvdGFsUXVldWVkQnl0ZXMpIFwKICAgICBtYWNybyh1
bmRlcmx5aW5nQnl0ZVNvdXJjZSkgXAogICAgIG1hY3JvKHVuZGVybHlpbmdTaW5rKSBcCiAgICAg
bWFjcm8odW5kZXJseWluZ1NvdXJjZSkgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5ZWM0MmZkODc1NTJmZjNiY2I2ZGM4
OTEyNDAyMmNhMzRjNjNmODMuLjRmMWE3MmY2OGUzNjFhNDFkMTc0Y2RmNTRkN2NmODU5ZGFkNjAw
ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMS0wMiAgUm9tYWluIEJlbGxlc3NvcnQg
IDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1JlYWRhYmxlIFN0
cmVhbXMgQVBJXSBJbXBsZW1lbnQgQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJyb3IoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4
cGVjdGF0aW9uIGZvciBlcnJvcigpIHRlc3QgKHByZXZpb3VzbHkgRkFJTCwgbm93IFBBU1MpLgor
CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVj
dGVkLnR4dDoKKwogMjAxNi0xMS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjA3NzUzLTIwNzc1NSk6IEFTU0VSVElPTiBGQUlMRUQ6
IG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5pc0luTWVtb3J5Q2FjaGUoKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJv
bGxlci1leHBlY3RlZC50eHQKaW5kZXggMjZjZjM0NjNkNDMzOTJiMDU4NzU1OGE5ZjhhNmFjZTY5
NTAxYzE0OS4uYzMyOTY0ZDVmM2UyZWMzN2FkNWZmY2JhNDVkOTljMzY1OTFhMzFlMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3Ry
ZWFtLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDEwIEBACiAKIFBBU1MgQ3Jl
YXRpbmcgYSBSZWFkYWJsZVN0cmVhbSB3aXRoIGFuIHVuZGVybHlpbmdTb3VyY2Ugd2l0aCB0eXBl
IHByb3BlcnR5IHNldCB0byAnYnl0ZXMnIHNob3VsZCBzdWNjZWVkIAotRkFJTCBDYWxsaW5nIHJl
YWQoKSBvbiBhIHJlYWRlciBhc3NvY2lhdGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVu
IGVycm9yZWQgc2hvdWxkIGJlIHJlamVjdGVkIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIg
ZXJyb3IoKSBpcyBub3QgaW1wbGVtZW50ZWQKK1BBU1MgQ2FsbGluZyByZWFkKCkgb24gYSByZWFk
ZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3Vs
ZCBiZSByZWplY3RlZCAKIEZBSUwgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRl
ZCB0byBhIGNvbnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBjbG9zZWQgc2hvdWxkIG5vdCBiZSByZWpl
Y3RlZCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNsb3NlKCkgaXMgbm90IGltcGxlbWVu
dGVkCiBGQUlMIENhbGxpbmcgcmVhZCgpIGFmdGVyIGEgY2h1bmsgaGFzIGJlZW4gZW5xdWV1ZWQg
c2hvdWxkIHJlc3VsdCBpbiBvYnRhaW5pbmcgc2FpZCBjaHVuayBSZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyIGVucXVldWUoKSBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgQ3JlYXRpbmcgYSBS
ZWFkYWJsZVN0cmVhbSB3aXRoIGFuIHVuZGVybHlpbmdTb3VyY2Ugd2l0aCB0eXBlIHByb3BlcnR5
IHNldCB0byAnYnl0ZXMnIHNob3VsZCBzdWNjZWVkIAotRkFJTCBDYWxsaW5nIHJlYWQoKSBvbiBh
IHJlYWRlciBhc3NvY2lhdGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVuIGVycm9yZWQg
c2hvdWxkIGJlIHJlamVjdGVkIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJyb3IoKSBp
cyBub3QgaW1wbGVtZW50ZWQKK1BBU1MgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2Np
YXRlZCB0byBhIGNvbnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWpl
Y3RlZCAKIEZBSUwgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNv
bnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBjbG9zZWQgc2hvdWxkIG5vdCBiZSByZWplY3RlZCBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNsb3NlKCkgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IENhbGxpbmcgcmVhZCgpIGFmdGVyIGEgY2h1bmsgaGFzIGJlZW4gZW5xdWV1ZWQgc2hvdWxkIHJl
c3VsdCBpbiBvYnRhaW5pbmcgc2FpZCBjaHVuayBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
IGVucXVldWUoKSBpcyBub3QgaW1wbGVtZW50ZWQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293674</attachid>
            <date>2016-11-02 10:48:52 -0700</date>
            <delta_ts>2016-11-04 02:21:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164319-20161102184451.patch</filename>
            <type>text/plain</type>
            <size>9881</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0NTNmNTgxNjZhNGY2
YTU1ZDBjZDgwMTFkMzE4ZWMyYWYxZDE4Yy4uNmQ4YzE5YTBkOTMyZDJkOWU2ODgyMzBiYjE4ZWU2
ZjQwODQ5ZGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTExLTAyICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBCeXRlU3RyZWFtQ29udHJvbGxlciBl
cnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRlZCBlcnJvcigpIG1ldGhvZCBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGJ1dCB1cGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zIGZv
ciBlcnJvcigpLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIuanM6CisgICAgICAgIChlcnJvcik6IEltcGxlbWVudGVkLgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAg
IChwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAg
ICAoaXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKTogQWRkZWQuCisgICAgICAgIChyZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyRXJyb3IpOiBBZGRlZC4KKyAgICAgICAgKHJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXJDbGVhclBlbmRpbmdQdWxsSW50b3MpOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChpbml0aWFs
aXplUmVhZGFibGVTdHJlYW0pOiBNb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UuCisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanM6Cisg
ICAgICAgIChlcnJvcik6IFJlbW92ZWQgdW5uZWNlc3NhcnkgdmFyaWFibGUgZGVjbGFyYXRpb24u
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOiBBZGRlZCB0b3Rh
bFF1ZXVlZEJ5dGVzLgorCiAyMDE2LTExLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDc3NTMtMjA3NzU1KTogQVNTRVJUSU9OIEZB
SUxFRDogbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmlzSW5NZW1vcnlDYWNoZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtQ29u
dHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyLmpzCmluZGV4IGRiNDNjNjEwODUyYjgzYTg4MzRlNmUzYTk2YTI5ODFl
NGY5NzU3ZDkuLjhlNjQ4MTA4YmNlNmZjNmQ1ZjZkMWQzZDViZWM1NWM1MGM5YmZmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1D
b250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzCkBAIC0zNyw4ICszNywxMyBAQCBmdW5jdGlvbiBlcnJv
cihlcnJvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICAvL0ZJWE1FOiBJbXBsZW1lbnQg
YXBwcm9wcmlhdGUgYmVoYXZpb3IuCi0gICAgQHRocm93VHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyIGVycm9yKCkgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgaWYgKCFA
aXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQorICAgICAgICBAbWFrZVRoaXNU
eXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiLCAiZXJyb3IiKTsKKworICAg
IGlmICh0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0uQHN0YXRlICE9PSBAc3RyZWFtUmVh
ZGFibGUpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJl
YWRhYmxlIik7CisKKyAgICBAcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVycm9yKHRoaXMs
IGVycm9yKTsKIH0KIAogZnVuY3Rpb24gY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMK
aW5kZXggY2U2MTJlMzVjNmMzYjk3YjdlOTU2ZDc5MGI3NjlkZDc2YzA0MjFlNC4uNTY4MjBhZGVl
NjNmNjFjMzFkODkxOGU3MWRhYzdhZjJlMTk4MWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxz
LmpzCkBAIC0zOSwxOSArMzksMTkgQEAgZnVuY3Rpb24gcHJpdmF0ZUluaXRpYWxpemVSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyKHN0cmVhbSwgdW5kZXJseWluZ0J5dGVTb3UKIAogICAgIHRo
aXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSA9IHN0cmVhbTsKICAgICB0aGlzLkB1bmRlcmx5
aW5nQnl0ZVNvdXJjZSA9IHVuZGVybHlpbmdCeXRlU291cmNlOworICAgIHRoaXMuQHB1bGxBZ2Fp
biA9IGZhbHNlOworICAgIHRoaXMuQHB1bGxpbmcgPSBmYWxzZTsKKyAgICBAcmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRvcyh0aGlzKTsKICAgICB0aGlzLkBx
dWV1ZSA9IEBuZXdRdWV1ZSgpOworICAgIHRoaXMuQHRvdGFsUXVldWVkQnl0ZXMgPSAwOwogICAg
IHRoaXMuQHN0YXJ0ZWQgPSBmYWxzZTsKICAgICB0aGlzLkBjbG9zZVJlcXVlc3RlZCA9IGZhbHNl
OwotICAgIHRoaXMuQHB1bGxBZ2FpbiA9IGZhbHNlOwotICAgIHRoaXMuQHB1bGxpbmcgPSBmYWxz
ZTsKIAogICAgIGxldCBod20gPSBATnVtYmVyKGhpZ2hXYXRlck1hcmspOwogICAgIGlmIChAaXNO
YU4oaHdtKSB8fCBod20gPCAwKQogICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJoaWdoV2F0ZXJN
YXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIG5vdCBhIG51bWJlciIpOwogICAgIHRoaXMuQHN0cmF0
ZWd5SFdNID0gaHdtOwogCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCByZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyQ2xlYXJQZW5kaW5nUHVsbEludG9zLgotCiAgICAgbGV0IGF1dG9BbGxvY2F0
ZUNodW5rU2l6ZSA9IHVuZGVybHlpbmdCeXRlU291cmNlLmF1dG9BbGxvY2F0ZUNodW5rU2l6ZTsK
ICAgICBpZiAoYXV0b0FsbG9jYXRlQ2h1bmtTaXplICE9PSBAdW5kZWZpbmVkKSB7CiAgICAgICAg
IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IEBOdW1iZXIoYXV0b0FsbG9jYXRlQ2h1bmtTaXplKTsK
QEAgLTc1LDMgKzc1LDI5IEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlcihzdHJlYW0sIHVuZGVybHlpbmdCeXRlU291CiAKICAgICByZXR1cm4g
dGhpczsKIH0KKworZnVuY3Rpb24gaXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKGNvbnRy
b2xsZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gU2FtZSB0ZXN0IG1lY2hhbmlz
bSBhcyBpbiBpc1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgKFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzLmpzKS4KKyAgICAvLyBTZWUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBmb3IgZXhw
bGFuYXRpb25zLgorICAgIHJldHVybiBAaXNPYmplY3QoY29udHJvbGxlcikgJiYgISFjb250cm9s
bGVyLkB1bmRlcmx5aW5nQnl0ZVNvdXJjZTsKK30KKworZnVuY3Rpb24gcmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlckVycm9yKGNvbnRyb2xsZXIsIGUpCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgQGFzc2VydChjb250cm9sbGVyLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW0uQHN0YXRl
ID09PSBAc3RyZWFtUmVhZGFibGUpOworICAgIEByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
Q2xlYXJQZW5kaW5nUHVsbEludG9zKGNvbnRyb2xsZXIpOworICAgIGNvbnRyb2xsZXIuQHF1ZXVl
ID0gQG5ld1F1ZXVlKCk7CisgICAgQHJlYWRhYmxlU3RyZWFtRXJyb3IoY29udHJvbGxlci5AY29u
dHJvbGxlZFJlYWRhYmxlU3RyZWFtLCBlKTsKK30KKworZnVuY3Rpb24gcmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRvcyhjb250cm9sbGVyKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBUbyBiZSBpbXBsZW1lbnRlZCBpbiBjb25qdW5j
dGlvbiB3aXRoIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKaW5kZXggZjNlYjFlZGY4ZGQ2
NDkxOWQzYTU2ZTM0Y2NkMDZlYWY4MTMwNDgzMi4uZmFmNmMxNjExMWU3OWQyNzcwMTMyNmQ4YmQw
NjA2Njc0ZjExOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5qcwpAQCAtNTgsMTAgKzU4LDExIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVS
ZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVneSkKICAgICAgICAgLy8gQ29u
c3RydWN0b3IgaXMgbm90IG5lY2Vzc2FyaWx5IGF2YWlsYWJsZSBpZiB0aGUgYnl0ZVN0cmVhbSBw
YXJ0IG9mIFJlYWRlYWJsZSBTdHJlYW0gQVBJIGlzIG5vdCBhY3RpdmF0ZWQuIFRoZXJlZm9yZSwg
YQogICAgICAgICAvLyBzcGVjaWZpYyBoYW5kbGluZyBvZiBlcnJvciBpcyBkb25lLgogICAgICAg
ICB0cnkgewotICAgICAgICAgICAgdGhpcy5AcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gbmV3
IEBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKHRoaXMsIHVuZGVybHlpbmdTb3VyY2UsIHN0
cmF0ZWd5LmhpZ2hXYXRlck1hcmspOworICAgICAgICAgICAgbGV0IHJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXJDb25zdHJ1Y3RvciA9IEBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyOwog
ICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY291bGQgbm90IGJlIGNyZWF0ZWQiKTsKKyAgICAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBpcyBub3Qg
aW1wbGVtZW50ZWQiKTsKICAgICAgICAgfQorICAgICAgICB0aGlzLkByZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIgPSBuZXcgQFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIodGhpcywgdW5kZXJs
eWluZ1NvdXJjZSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayk7CiAgICAgfSBlbHNlIGlmICh0eXBl
ID09PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGlmIChzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID09
PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IDE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCmluZGV4IGMwMDFkNThiMWQ1NjNiYTVjYmI3
NzFlMmIwNTExNTlhYTI1NjVkN2EuLmU5Yzk0OTk4YTAwMDkyMmJmN2I5MjZmMjdhYzkyNmFkZjI0
NWVmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCkBAIC00OCw4ICs0OCw3
IEBAIGZ1bmN0aW9uIGVycm9yKGVycm9yKQogICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlcih0aGlzKSkKICAgICAgICAgdGhyb3cgQG1ha2VUaGlzVHlwZUVycm9yKCJS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIiwgImVycm9yIik7CiAKLSAgICBjb25zdCBz
dHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07Ci0gICAgaWYgKHN0cmVhbS5A
c3RhdGUgIT09IEBzdHJlYW1SZWFkYWJsZSkKKyAgICBpZiAodGhpcy5AY29udHJvbGxlZFJlYWRh
YmxlU3RyZWFtLkBzdGF0ZSAhPT0gQHN0cmVhbVJlYWRhYmxlKQogICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpOwogCiAgICAgQHJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFcnJvcih0aGlzLCBlcnJvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNDVkODQyMDMw
NDg3MjViZDBiNWZkYjY1NDE5ODIwNWQyZGNjOTlmOS4uZjhiYjU5YjRiNzExMTcwNTBjMGRkOTcy
MDdkMGJkMzFkNDI2NzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaApAQCAtOTcsNiArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8oc3RyZWFtV3JpdGFibGUpIFwKICAgICBtYWNybyhzdHJ1Y3R1cmVkQ2xvbmVB
cnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldykg
XAorICAgIG1hY3JvKHRvdGFsUXVldWVkQnl0ZXMpIFwKICAgICBtYWNybyh1bmRlcmx5aW5nQnl0
ZVNvdXJjZSkgXAogICAgIG1hY3JvKHVuZGVybHlpbmdTaW5rKSBcCiAgICAgbWFjcm8odW5kZXJs
eWluZ1NvdXJjZSkgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5ZWM0MmZkODc1NTJmZjNiY2I2ZGM4OTEyNDAyMmNhMzRj
NjNmODMuLjRmMWE3MmY2OGUzNjFhNDFkMTc0Y2RmNTRkN2NmODU5ZGFkNjAwZTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMS0wMiAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVs
bGVzc29ydEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1JlYWRhYmxlIFN0cmVhbXMgQVBJXSBJ
bXBsZW1lbnQgQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJyb3IoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzE5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9uIGZv
ciBlcnJvcigpIHRlc3QgKHByZXZpb3VzbHkgRkFJTCwgbm93IFBBU1MpLgorCisgICAgICAgICog
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDoKKwog
MjAxNi0xMS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjA3NzUzLTIwNzc1NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fcGFyc2VkU3R5
bGVTaGVldENhY2hlLT5pc0luTWVtb3J5Q2FjaGUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci1leHBlY3Rl
ZC50eHQKaW5kZXggMjZjZjM0NjNkNDMzOTJiMDU4NzU1OGE5ZjhhNmFjZTY5NTAxYzE0OS4uYzMy
OTY0ZDVmM2UyZWMzN2FkNWZmY2JhNDVkOTljMzY1OTFhMzFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xs
ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDEwIEBACiAKIFBBU1MgQ3JlYXRpbmcgYSBSZWFk
YWJsZVN0cmVhbSB3aXRoIGFuIHVuZGVybHlpbmdTb3VyY2Ugd2l0aCB0eXBlIHByb3BlcnR5IHNl
dCB0byAnYnl0ZXMnIHNob3VsZCBzdWNjZWVkIAotRkFJTCBDYWxsaW5nIHJlYWQoKSBvbiBhIHJl
YWRlciBhc3NvY2lhdGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVuIGVycm9yZWQgc2hv
dWxkIGJlIHJlamVjdGVkIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJyb3IoKSBpcyBu
b3QgaW1wbGVtZW50ZWQKK1BBU1MgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRl
ZCB0byBhIGNvbnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWplY3Rl
ZCAKIEZBSUwgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRy
b2xsZXIgdGhhdCBoYXMgYmVlbiBjbG9zZWQgc2hvdWxkIG5vdCBiZSByZWplY3RlZCBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNsb3NlKCkgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIENh
bGxpbmcgcmVhZCgpIGFmdGVyIGEgY2h1bmsgaGFzIGJlZW4gZW5xdWV1ZWQgc2hvdWxkIHJlc3Vs
dCBpbiBvYnRhaW5pbmcgc2FpZCBjaHVuayBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGVu
cXVldWUoKSBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgQ3JlYXRpbmcgYSBSZWFkYWJsZVN0cmVh
bSB3aXRoIGFuIHVuZGVybHlpbmdTb3VyY2Ugd2l0aCB0eXBlIHByb3BlcnR5IHNldCB0byAnYnl0
ZXMnIHNob3VsZCBzdWNjZWVkIAotRkFJTCBDYWxsaW5nIHJlYWQoKSBvbiBhIHJlYWRlciBhc3Nv
Y2lhdGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVuIGVycm9yZWQgc2hvdWxkIGJlIHJl
amVjdGVkIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJyb3IoKSBpcyBub3QgaW1wbGVt
ZW50ZWQKK1BBU1MgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNv
bnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWplY3RlZCAKIEZBSUwg
Q2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xsZXIgdGhh
dCBoYXMgYmVlbiBjbG9zZWQgc2hvdWxkIG5vdCBiZSByZWplY3RlZCBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyIGNsb3NlKCkgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIENhbGxpbmcgcmVh
ZCgpIGFmdGVyIGEgY2h1bmsgaGFzIGJlZW4gZW5xdWV1ZWQgc2hvdWxkIHJlc3VsdCBpbiBvYnRh
aW5pbmcgc2FpZCBjaHVuayBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGVucXVldWUoKSBp
cyBub3QgaW1wbGVtZW50ZWQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293875</attachid>
            <date>2016-11-04 02:21:53 -0700</date>
            <delta_ts>2016-11-04 03:42:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164319-20161104101750.patch</filename>
            <type>text/plain</type>
            <size>13317</size>
            <attacher name="Romain Bellessort">romain.wkt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQyYTQxNDlhN2E2NzBk
MWE0MDY1NzI5OTExNDE0MjY3ZGY4MjRhNS4uNmU2NTA1YTYzNDJlZWFhYTQ2N2M2NjExZTliM2E2
NzExY2ViMDdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTExLTA0ICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KKworICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBCeXRlU3RyZWFtQ29udHJvbGxlciBl
cnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIElt
cGxlbWVudGVkIGVycm9yKCkgbWV0aG9kIG9mIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIu
CisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgZXJyb3IoKSBhbmQgYWRk
ZWQgSURMLXJlbGF0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5qczoKKyAgICAgICAgKGVycm9yKTogSW1wbGVtZW50ZWQu
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5q
czoKKyAgICAgICAgKHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
cik6CisgICAgICAgIChpc1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpOiBBZGRlZC4KKyAg
ICAgICAgKHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJFcnJvcik6IEFkZGVkLgorICAgICAg
ICAocmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRvcyk6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qczoKKyAgICAg
ICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6IE1vcmUgZGV0YWlsZWQgZXJyb3IgbWVzc2Fn
ZS4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5qczoKKyAgICAgICAgKGVycm9yKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSB2YXJpYWJsZSBk
ZWNsYXJhdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6
IEFkZGVkIHRvdGFsUXVldWVkQnl0ZXMuCisKIDIwMTYtMTEtMDMgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IEhhbmRsZSBJREJJbmRl
eCByZW5hbWUgYmVoYXZpb3IgcHJvcGVybHkgd2hlbiB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlv
biBhYm9ydHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzCmluZGV4IGRiNDNjNjEwODUyYjgz
YTg4MzRlNmUzYTk2YTI5ODFlNGY5NzU3ZDkuLmY5OGU3NTM1OTAzMzRlZDJlMzM2MTEwNjA5MGMx
N2EzNDVkMjNlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzCkBAIC0zNyw4ICszNywx
MyBAQCBmdW5jdGlvbiBlcnJvcihlcnJvcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICAv
L0ZJWE1FOiBJbXBsZW1lbnQgYXBwcm9wcmlhdGUgYmVoYXZpb3IuCi0gICAgQHRocm93VHlwZUVy
cm9yKCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGVycm9yKCkgaXMgbm90IGltcGxlbWVu
dGVkIik7CisgICAgaWYgKCFAaXNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKHRoaXMpKQor
ICAgICAgICB0aHJvdyBAbWFrZVRoaXNUeXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIiLCAiZXJyb3IiKTsKKworICAgIGlmICh0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJl
YW0uQHN0YXRlICE9PSBAc3RyZWFtUmVhZGFibGUpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
UmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CisKKyAgICBAcmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlckVycm9yKHRoaXMsIGVycm9yKTsKIH0KIAogZnVuY3Rpb24gY2xvc2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0
cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggY2U2MTJlMzVjNmMzYjk3YjdlOTU2ZDc5MGI3
NjlkZDc2YzA0MjFlNC4uNTY4MjBhZGVlNjNmNjFjMzFkODkxOGU3MWRhYzdhZjJlMTk4MWEyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0
cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0zOSwxOSArMzksMTkgQEAgZnVuY3Rpb24g
cHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKHN0cmVhbSwgdW5k
ZXJseWluZ0J5dGVTb3UKIAogICAgIHRoaXMuQGNvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSA9IHN0
cmVhbTsKICAgICB0aGlzLkB1bmRlcmx5aW5nQnl0ZVNvdXJjZSA9IHVuZGVybHlpbmdCeXRlU291
cmNlOworICAgIHRoaXMuQHB1bGxBZ2FpbiA9IGZhbHNlOworICAgIHRoaXMuQHB1bGxpbmcgPSBm
YWxzZTsKKyAgICBAcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJ
bnRvcyh0aGlzKTsKICAgICB0aGlzLkBxdWV1ZSA9IEBuZXdRdWV1ZSgpOworICAgIHRoaXMuQHRv
dGFsUXVldWVkQnl0ZXMgPSAwOwogICAgIHRoaXMuQHN0YXJ0ZWQgPSBmYWxzZTsKICAgICB0aGlz
LkBjbG9zZVJlcXVlc3RlZCA9IGZhbHNlOwotICAgIHRoaXMuQHB1bGxBZ2FpbiA9IGZhbHNlOwot
ICAgIHRoaXMuQHB1bGxpbmcgPSBmYWxzZTsKIAogICAgIGxldCBod20gPSBATnVtYmVyKGhpZ2hX
YXRlck1hcmspOwogICAgIGlmIChAaXNOYU4oaHdtKSB8fCBod20gPCAwKQogICAgICAgICBAdGhy
b3dSYW5nZUVycm9yKCJoaWdoV2F0ZXJNYXJrIHZhbHVlIGlzIG5lZ2F0aXZlIG9yIG5vdCBhIG51
bWJlciIpOwogICAgIHRoaXMuQHN0cmF0ZWd5SFdNID0gaHdtOwogCi0gICAgLy8gRklYTUU6IElt
cGxlbWVudCByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQ2xlYXJQZW5kaW5nUHVsbEludG9z
LgotCiAgICAgbGV0IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IHVuZGVybHlpbmdCeXRlU291cmNl
LmF1dG9BbGxvY2F0ZUNodW5rU2l6ZTsKICAgICBpZiAoYXV0b0FsbG9jYXRlQ2h1bmtTaXplICE9
PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IEBOdW1iZXIo
YXV0b0FsbG9jYXRlQ2h1bmtTaXplKTsKQEAgLTc1LDMgKzc1LDI5IEBAIGZ1bmN0aW9uIHByaXZh
dGVJbml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcihzdHJlYW0sIHVuZGVybHlp
bmdCeXRlU291CiAKICAgICByZXR1cm4gdGhpczsKIH0KKworZnVuY3Rpb24gaXNSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyKGNvbnRyb2xsZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgLy8gU2FtZSB0ZXN0IG1lY2hhbmlzbSBhcyBpbiBpc1JlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIgKFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzKS4KKyAgICAvLyBTZWUgY29ycmVz
cG9uZGluZyBmdW5jdGlvbiBmb3IgZXhwbGFuYXRpb25zLgorICAgIHJldHVybiBAaXNPYmplY3Qo
Y29udHJvbGxlcikgJiYgISFjb250cm9sbGVyLkB1bmRlcmx5aW5nQnl0ZVNvdXJjZTsKK30KKwor
ZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVycm9yKGNvbnRyb2xsZXIsIGUp
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgQGFzc2VydChjb250cm9sbGVyLkBjb250cm9s
bGVkUmVhZGFibGVTdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtUmVhZGFibGUpOworICAgIEByZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQ2xlYXJQZW5kaW5nUHVsbEludG9zKGNvbnRyb2xsZXIp
OworICAgIGNvbnRyb2xsZXIuQHF1ZXVlID0gQG5ld1F1ZXVlKCk7CisgICAgQHJlYWRhYmxlU3Ry
ZWFtRXJyb3IoY29udHJvbGxlci5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtLCBlKTsKK30KKwor
ZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckNsZWFyUGVuZGluZ1B1bGxJbnRv
cyhjb250cm9sbGVyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBUbyBi
ZSBpbXBsZW1lbnRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3QuCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uanMKaW5kZXggZjNlYjFlZGY4ZGQ2NDkxOWQzYTU2ZTM0Y2NkMDZlYWY4MTMwNDgzMi4uZmFm
NmMxNjExMWU3OWQyNzcwMTMyNmQ4YmQwNjA2Njc0ZjExOGI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwpAQCAtNTgsMTAgKzU4LDEx
IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBz
dHJhdGVneSkKICAgICAgICAgLy8gQ29uc3RydWN0b3IgaXMgbm90IG5lY2Vzc2FyaWx5IGF2YWls
YWJsZSBpZiB0aGUgYnl0ZVN0cmVhbSBwYXJ0IG9mIFJlYWRlYWJsZSBTdHJlYW0gQVBJIGlzIG5v
dCBhY3RpdmF0ZWQuIFRoZXJlZm9yZSwgYQogICAgICAgICAvLyBzcGVjaWZpYyBoYW5kbGluZyBv
ZiBlcnJvciBpcyBkb25lLgogICAgICAgICB0cnkgewotICAgICAgICAgICAgdGhpcy5AcmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyID0gbmV3IEBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKHRo
aXMsIHVuZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmspOworICAgICAgICAg
ICAgbGV0IHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJDb25zdHJ1Y3RvciA9IEBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgY291bGQgbm90
IGJlIGNyZWF0ZWQiKTsKKyAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlciBpcyBub3QgaW1wbGVtZW50ZWQiKTsKICAgICAgICAgfQorICAgICAg
ICB0aGlzLkByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgPSBuZXcgQFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIodGhpcywgdW5kZXJseWluZ1NvdXJjZSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
ayk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGlmIChz
dHJhdGVneS5oaWdoV2F0ZXJNYXJrID09PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgc3RyYXRl
Z3kuaGlnaFdhdGVyTWFyayA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCmlu
ZGV4IGMwMDFkNThiMWQ1NjNiYTVjYmI3NzFlMmIwNTExNTlhYTI1NjVkN2EuLmU5Yzk0OTk4YTAw
MDkyMmJmN2I5MjZmMjdhYzkyNmFkZjI0NWVmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmpzCkBAIC00OCw4ICs0OCw3IEBAIGZ1bmN0aW9uIGVycm9yKGVycm9yKQogICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcih0aGlzKSkKICAgICAgICAgdGhy
b3cgQG1ha2VUaGlzVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIiwg
ImVycm9yIik7CiAKLSAgICBjb25zdCBzdHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVT
dHJlYW07Ci0gICAgaWYgKHN0cmVhbS5Ac3RhdGUgIT09IEBzdHJlYW1SZWFkYWJsZSkKKyAgICBp
ZiAodGhpcy5AY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtLkBzdGF0ZSAhPT0gQHN0cmVhbVJlYWRh
YmxlKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFk
YWJsZSIpOwogCiAgICAgQHJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFcnJvcih0aGlz
LCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKaW5kZXggNDVkODQyMDMwNDg3MjViZDBiNWZkYjY1NDE5ODIwNWQyZGNjOTlmOS4u
ZjhiYjU5YjRiNzExMTcwNTBjMGRkOTcyMDdkMGJkMzFkNDI2NzEwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtOTcsNiArOTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oc3RyZWFtV3JpdGFibGUpIFwKICAg
ICBtYWNybyhzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKHN0cnVjdHVy
ZWRDbG9uZUFycmF5QnVmZmVyVmlldykgXAorICAgIG1hY3JvKHRvdGFsUXVldWVkQnl0ZXMpIFwK
ICAgICBtYWNybyh1bmRlcmx5aW5nQnl0ZVNvdXJjZSkgXAogICAgIG1hY3JvKHVuZGVybHlpbmdT
aW5rKSBcCiAgICAgbWFjcm8odW5kZXJseWluZ1NvdXJjZSkgXApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1NWQwMDdmNTNm
YjA5YTJhYWMwZmNjMWUyMWI1MTFhMjk3OTBkMjMuLmFlZjY2MmQyYTkyNTM3Yzk0YjQ4ZWU0MGU1
NjEzZmEyZTcxNDkzNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0xMS0wNCAgUm9tYWlu
IEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAg
W1JlYWRhYmxlIFN0cmVhbXMgQVBJXSBJbXBsZW1lbnQgQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJy
b3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBVcGRh
dGVkIHRlc3QgZXhwZWN0YXRpb24gZm9yIGVycm9yKCkgdGVzdCAocHJldmlvdXNseSBGQUlMLCBu
b3cgUEFTUykuCisgICAgICAgIEFkZGVkIElETC1yZWxhdGVkIHRlc3RzIGZvciBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyLgorCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0
cmVhbS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDoKKwogMjAxNi0xMS0wMyAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIwNzY2OSk6IENy
YXNoIHVuZGVyIFNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9yU2hvdWxkSXNv
bGF0ZUJsZW5kaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dAppbmRleCAyNmNmMzQ2
M2Q0MzM5MmIwNTg3NTU4YTlmOGE2YWNlNjk1MDFjMTQ5Li44YjM3OWI3ZmRkM2FlZmMyMDU5ODU3
ZjE5M2JmMjM2ODUxYWFkYjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci1leHBlY3RlZC50eHQKQEAg
LTEsMTAgKzEsMTQgQEAKIAogUEFTUyBDcmVhdGluZyBhIFJlYWRhYmxlU3RyZWFtIHdpdGggYW4g
dW5kZXJseWluZ1NvdXJjZSB3aXRoIHR5cGUgcHJvcGVydHkgc2V0IHRvICdieXRlcycgc2hvdWxk
IHN1Y2NlZWQgCi1GQUlMIENhbGxpbmcgcmVhZCgpIG9uIGEgcmVhZGVyIGFzc29jaWF0ZWQgdG8g
YSBjb250cm9sbGVyIHRoYXQgaGFzIGJlZW4gZXJyb3JlZCBzaG91bGQgYmUgcmVqZWN0ZWQgUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBlcnJvcigpIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFT
UyBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUg
Y29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgCitQQVNTIENhbGxpbmcgZXJyb3IoKSB3aXRoIGEg
dGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBz
aG91bGQgZmFpbCAKK1BBU1MgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0
byBhIGNvbnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWplY3RlZCAK
IEZBSUwgQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xs
ZXIgdGhhdCBoYXMgYmVlbiBjbG9zZWQgc2hvdWxkIG5vdCBiZSByZWplY3RlZCBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIGNsb3NlKCkgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIENhbGxp
bmcgcmVhZCgpIGFmdGVyIGEgY2h1bmsgaGFzIGJlZW4gZW5xdWV1ZWQgc2hvdWxkIHJlc3VsdCBp
biBvYnRhaW5pbmcgc2FpZCBjaHVuayBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGVucXVl
dWUoKSBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgQ3JlYXRpbmcgYSBSZWFkYWJsZVN0cmVhbSB3
aXRoIGFuIHVuZGVybHlpbmdTb3VyY2Ugd2l0aCB0eXBlIHByb3BlcnR5IHNldCB0byAnYnl0ZXMn
IHNob3VsZCBzdWNjZWVkIAotRkFJTCBDYWxsaW5nIHJlYWQoKSBvbiBhIHJlYWRlciBhc3NvY2lh
dGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVuIGVycm9yZWQgc2hvdWxkIGJlIHJlamVj
dGVkIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgZXJyb3IoKSBpcyBub3QgaW1wbGVtZW50
ZWQKK1BBU1MgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIAorUEFTUyBDYWxsaW5nIGVycm9yKCkg
d2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBmcm9tIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIgc2hvdWxkIGZhaWwgCitQQVNTIENhbGxpbmcgcmVhZCgpIG9uIGEgcmVhZGVyIGFzc29j
aWF0ZWQgdG8gYSBjb250cm9sbGVyIHRoYXQgaGFzIGJlZW4gZXJyb3JlZCBzaG91bGQgYmUgcmVq
ZWN0ZWQgCiBGQUlMIENhbGxpbmcgcmVhZCgpIG9uIGEgcmVhZGVyIGFzc29jaWF0ZWQgdG8gYSBj
b250cm9sbGVyIHRoYXQgaGFzIGJlZW4gY2xvc2VkIHNob3VsZCBub3QgYmUgcmVqZWN0ZWQgUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBjbG9zZSgpIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJ
TCBDYWxsaW5nIHJlYWQoKSBhZnRlciBhIGNodW5rIGhhcyBiZWVuIGVucXVldWVkIHNob3VsZCBy
ZXN1bHQgaW4gb2J0YWluaW5nIHNhaWQgY2h1bmsgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
ciBlbnF1ZXVlKCkgaXMgbm90IGltcGxlbWVudGVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5qcyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5qcwppbmRleCA5NmQyNmE4
ODAwNjhkYmQ4OGJiOTMyZWVmZjk4ZmY3M2I2MWYxYjAxLi5iZTJhZjYxZDFlMDEwOWQzYWYwZThm
ODY5ZmM2OTJiMDQwZGM4ODc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLmpzCkBAIC0xMCw2ICsxMCw1OSBAQCB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgIH0pOwogfSwgIkNyZWF0aW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0
aCBhbiB1bmRlcmx5aW5nU291cmNlIHdpdGggdHlwZSBwcm9wZXJ0eSBzZXQgdG8gJ2J5dGVzJyBz
aG91bGQgc3VjY2VlZCIpOwogCit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBtZXRob2RzID0gWydj
bG9zZScsICdjb25zdHJ1Y3RvcicsICdlbnF1ZXVlJywgJ2Vycm9yJ107CisgICAgLy8gRklYTUU6
IEFkZCBieW9iUmVxdWVzdCB3aGVuIGltcGxlbWVudGVkLgorICAgIGNvbnN0IHByb3BlcnRpZXMg
PSBtZXRob2RzLmNvbmNhdChbJ2Rlc2lyZWRTaXplJ10pLnNvcnQoKTsKKworICAgIGxldCBjb250
cm9sbGVyOworCisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAg
IH0sCisgICAgICAgIHR5cGU6ICJieXRlcyIKKyAgICB9KTsKKworICAgIGNvbnN0IHByb3RvID0g
T2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpOworCisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVz
KTsKKworICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgICAgIGNvbnN0IHByb3BE
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxk
IGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29u
ZmlndXJhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy53cml0YWJsZSwgdHJ1ZSwgJ21ldGhvZCBzaG91bGQg
YmUgd3JpdGFibGUnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgY29udHJvbGxlcltt
XSwgJ2Z1bmN0aW9uJywgJ3Nob3VsZCBoYXZlIGJlIGEgbWV0aG9kJyk7CisgICAgfQorCisgICAg
Y29uc3QgZGVzaXJlZFNpemVQcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IocHJvdG8sICdkZXNpcmVkU2l6ZScpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQ
cm9wRGVzYy5lbnVtZXJhYmxlLCBmYWxzZSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBiZSBub24tZW51
bWVyYWJsZScpOworICAgIGFzc2VydF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy5jb25maWd1
cmFibGUsIHRydWUsICdkZXNpcmVkU2l6ZSBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisgICAg
YXNzZXJ0X25vdF9lcXVhbHMoZGVzaXJlZFNpemVQcm9wRGVzYy5nZXQsIHVuZGVmaW5lZCwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBoYXZlIGEgZ2V0dGVyJyk7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNp
cmVkU2l6ZVByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBo
YXZlIGEgc2V0dGVyJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVu
Z3RoLCAwLCAnY2xvc2UgaGFzIDAgcGFyYW1ldGVyJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwgMywgJ2NvbnN0cnVjdG9yIGhhcyAzIHBhcmFtZXRl
cnMnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZS5sZW5ndGgsIDEsICdl
bnF1ZXVlIGhhcyAxIHBhcmFtZXRlcicpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5l
cnJvci5sZW5ndGgsIDEsICdlcnJvciBoYXMgMSBwYXJhbWV0ZXInKTsKKworfSwgJ1JlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxp
c3Qgb2YgcHJvcGVydGllcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBjb250cm9s
bGVyOworCisgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0s
CisgICAgICAgIHR5cGU6ICJieXRlcyIKKyAgICB9KTsKKworICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVy
cm9yIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAg
ICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVycm9yLmFwcGx5KHJzKTsgfSk7Cit9LCAiQ2Fs
bGluZyBlcnJvcigpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCBmYWlsIik7CisKIGNvbnN0IHRlc3QyID0gYXN5bmNf
dGVzdCgiQ2FsbGluZyByZWFkKCkgb24gYSByZWFkZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xs
ZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCBiZSByZWplY3RlZCIpOwogdGVzdDIuc3Rl
cChmdW5jdGlvbigpIHsKICAgICBsZXQgY29udHJvbGxlcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>