<?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>161662</bug_id>
          
          <creation_ts>2016-09-06 17:45:45 -0700</creation_ts>
          <short_desc>Support jsc shell builtin `read`</short_desc>
          <delta_ts>2016-09-13 14:55:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226967</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-06 17:45:45 -0700</bug_when>
    <thetext>The jsc shell currently supports a `readFile` method which returns a string. SpiderMonkey&apos;s js shell and V8&apos;s d8 shell both support similar file-to-string functions, as well as a binary-file-to-Uint8Array function. jsc should support a similar binary file method to simplify testing, including testing of WebAssembly blobs.

Emscripten&apos;s shell.js (which is also used for some WebAssembly things) has a polyfill [1] for a builtin called `read`. jsc should therefore have a builtin with the same name if we want things to &quot;Just Work&quot;.

  [1]: https://github.com/kripken/emscripten/blob/5f0918409a1407dd168f57cfa34b109cd1770a8a/src/shell.js#L138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226971</commentid>
    <comment_count>1</comment_count>
      <attachid>288075</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-06 17:50:41 -0700</bug_when>
    <thetext>Created attachment 288075
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226977</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-06 17:53:17 -0700</bug_when>
    <thetext>Attachment 288075 did not pass style-queue:


ERROR: Source/JavaScriptCore/jsc.cpp:1567:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226989</commentid>
    <comment_count>3</comment_count>
      <attachid>288075</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-06 18:18:02 -0700</bug_when>
    <thetext>Comment on attachment 288075
patch

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

Looks good but I have a couple of comments.

&gt; Source/JavaScriptCore/jsc.cpp:1566
&gt; +    auto content = std::make_unique&lt;Storage&gt;();

Why do you need a unique_ptr here? Wouldn&apos;t regular Vector work fine.

&gt; Source/JavaScriptCore/jsc.cpp:1567
&gt; +    auto destroyStorage = [] (void* bytes, void*) { delete static_cast&lt;Storage*&gt;(bytes); };

Doesn&apos;t bytes point to the Vector&apos;s storage rather than the vector itself? I don&apos;t think you want to static_cast this. I think you just want to do fastFree();

&gt; Source/JavaScriptCore/jsc.cpp:1575
&gt; +    JSObjectRef result = JSObjectMakeTypedArrayWithBytesNoCopy(toRef(exec), kJSTypedArrayTypeUint8Array, content-&gt;data(), content-&gt;size(), destroyStorage, nullptr, &amp;exception);

Why are you calling this through the C-API. I guess there&apos;s nothing wrong with that but it just seems harder for you. I would think it&apos;s easier to just use the internal TypedArray API.

Also, I think you could just do content-&gt;releaseBuffer().leakPtr() instead of content-&gt;data() then a release later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227352</commentid>
    <comment_count>4</comment_count>
      <attachid>288186</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-07 14:33:52 -0700</bug_when>
    <thetext>Created attachment 288186
patch

Address Keith&apos;s comments.

(In reply to comment #3)
&gt; Comment on attachment 288075 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288075&amp;action=review
&gt; 
&gt; Looks good but I have a couple of comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/jsc.cpp:1566
&gt; &gt; +    auto content = std::make_unique&lt;Storage&gt;();
&gt; 
&gt; Why do you need a unique_ptr here? Wouldn&apos;t regular Vector work fine.

See below, not needed anymore.

&gt; &gt; Source/JavaScriptCore/jsc.cpp:1567
&gt; &gt; +    auto destroyStorage = [] (void* bytes, void*) { delete static_cast&lt;Storage*&gt;(bytes); };
&gt; 
&gt; Doesn&apos;t bytes point to the Vector&apos;s storage rather than the vector itself? I
&gt; don&apos;t think you want to static_cast this. I think you just want to do
&gt; fastFree();

Yup, that was a bug.

&gt; &gt; Source/JavaScriptCore/jsc.cpp:1575
&gt; &gt; +    JSObjectRef result = JSObjectMakeTypedArrayWithBytesNoCopy(toRef(exec), kJSTypedArrayTypeUint8Array, content-&gt;data(), content-&gt;size(), destroyStorage, nullptr, &amp;exception);
&gt; 
&gt; Why are you calling this through the C-API. I guess there&apos;s nothing wrong
&gt; with that but it just seems harder for you. I would think it&apos;s easier to
&gt; just use the internal TypedArray API.


I&apos;d tried the C++ one but the JSGenericTypedArrayView&lt;Uint8Adaptor&gt;::create function wasn&apos;t exported, causing jsc to fail linking. As discussed I&apos;m now exporting that one specialization.

&gt; Also, I think you could just do content-&gt;releaseBuffer().leakPtr() instead
&gt; of content-&gt;data() then a release later.

Indeed! Though xcode&apos;s navigation I was mistakenly looking at bmalloc&apos;s Vector.h instead of the WTF one, and found its capabilities underwhelming for what I wanted to do. This is much better, and removes the need for unique_ptr for auto-lifetime-management-with-release-of-ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227354</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-07 14:35:53 -0700</bug_when>
    <thetext>Attachment 288186 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSTypedArrays.cpp:54:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jsc.cpp:1572:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227355</commentid>
    <comment_count>6</comment_count>
      <attachid>288187</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-07 14:39:28 -0700</bug_when>
    <thetext>Created attachment 288187
patch

Fix format. Ignore lambda format comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227356</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-07 14:40:41 -0700</bug_when>
    <thetext>Attachment 288187 did not pass style-queue:


ERROR: Source/JavaScriptCore/jsc.cpp:1572:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227985</commentid>
    <comment_count>8</comment_count>
      <attachid>288187</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-08 18:39:22 -0700</bug_when>
    <thetext>Comment on attachment 288187
patch

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

Other than my one issue it looks good.

&gt; Source/JavaScriptCore/runtime/JSTypedArrays.cpp:54
&gt; +JSUint8Array* createUint8TypedArray(ExecState* exec, Structure* structure, PassRefPtr&lt;ArrayBuffer&gt; passedBuffer, unsigned byteOffset, unsigned length)

The new hotness in WebKit is to use RefPtr&lt;ArrayBuffer&gt;&amp;&amp;. PassRefPtr is a legacy API from before r-value references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228165</commentid>
    <comment_count>9</comment_count>
      <attachid>288410</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-09 09:53:44 -0700</bug_when>
    <thetext>Created attachment 288410
patch

Address Keith&apos;s comment about rvalue ref, and update createUint8TypedArray to forward accordingly.

Rebase from master, changing exception handling to match Mark&apos;s change in https://bugs.webkit.org/show_bug.cgi?id=161498</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228182</commentid>
    <comment_count>10</comment_count>
      <attachid>288410</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-09 10:14:08 -0700</bug_when>
    <thetext>Comment on attachment 288410
patch

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

&gt; Source/JavaScriptCore/jsc.cpp:1566
&gt; +        if (UNLIKELY(scope.exception()) || type != &quot;binary&quot;)
&gt; +            return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral(&quot;Expected &apos;binary&apos; as second argument.&quot;))));

Throwing an exception while one already exists will result in an assertion failure.  Maybe you should express this as:
    if (UNLIKELY(scope.exception))
        return JSValue();
    if (type != binary)
        return JSValue::encode(throw...);

Or did you deliberately want to overwrite the original exception?  If so, you should declare a CatchScope after the ThrowScope, and do a catchScope.clearException() before doing the throw.

&gt; Source/JavaScriptCore/jsc.cpp:1581
&gt; +    if (UNLIKELY(scope.exception()))
&gt; +        return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral(&quot;Failed to allocate ArrayBuffer.&quot;))));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228185</commentid>
    <comment_count>11</comment_count>
      <attachid>288410</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-09 10:20:12 -0700</bug_when>
    <thetext>Comment on attachment 288410
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228187</commentid>
    <comment_count>12</comment_count>
      <attachid>288410</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-09 10:23:15 -0700</bug_when>
    <thetext>Comment on attachment 288410
patch

I&apos;m rescinding my r+ in light of Mark&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228284</commentid>
    <comment_count>13</comment_count>
      <attachid>288425</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-09 12:02:39 -0700</bug_when>
    <thetext>Created attachment 288425
patch

Fixed exceptions. I created a new throwVMError convenience function, which I&apos;ll add uses to in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228902</commentid>
    <comment_count>14</comment_count>
      <attachid>288425</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-12 14:35:10 -0700</bug_when>
    <thetext>Comment on attachment 288425
patch

r=me if you fix the windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228978</commentid>
    <comment_count>15</comment_count>
      <attachid>288634</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-12 16:29:00 -0700</bug_when>
    <thetext>Created attachment 288634
patch

Fix Windows build. The function signatures didn&apos;t match because of the __cdecl calling convention. A lambda should re-wire this properly.


C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\jsc.cpp(1581): error C2664: &apos;WTF::Ref&lt;JSC::ArrayBuffer&gt; JSC::ArrayBuffer::createFromBytes(const void *,unsigned int,JSC::ArrayBufferDestructorFunction &amp;&amp;)&apos;: cannot convert argument 3 from &apos;void (__cdecl *)(void *)&apos; to &apos;JSC::ArrayBufferDestructorFunction &amp;&amp;&apos; [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\shell\jscLib.vcxproj]
  C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\jsc.cpp(1581): note: You cannot bind an lvalue to an rvalue reference
C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\jsc.cpp(1581): error C2660: &apos;JSC::createUint8TypedArray&apos;: function does not take 4 arguments [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\shell\jscLib.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228980</commentid>
    <comment_count>16</comment_count>
      <attachid>288634</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 16:31:26 -0700</bug_when>
    <thetext>Comment on attachment 288634
patch

Rejecting attachment 288634 from commit-queue.

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

ChangeLog entry in JSTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2061969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228982</commentid>
    <comment_count>17</comment_count>
      <attachid>288637</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-12 16:35:39 -0700</bug_when>
    <thetext>Created attachment 288637
patch

Fix ChangeLogs. OOPS!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228983</commentid>
    <comment_count>18</comment_count>
      <attachid>288637</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 16:36:03 -0700</bug_when>
    <thetext>Comment on attachment 288637
patch

Rejecting attachment 288637 from review queue.

jfbastien@apple.com does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229308</commentid>
    <comment_count>19</comment_count>
      <attachid>288727</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-13 14:22:24 -0700</bug_when>
    <thetext>Created attachment 288727
patch

Same patch, without my silly r+. Just cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229321</commentid>
    <comment_count>20</comment_count>
      <attachid>288727</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-13 14:55:18 -0700</bug_when>
    <thetext>Comment on attachment 288727
patch

Clearing flags on attachment: 288727

Committed r205880: &lt;http://trac.webkit.org/changeset/205880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229322</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-13 14:55:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288075</attachid>
            <date>2016-09-06 17:50:41 -0700</date>
            <delta_ts>2016-09-07 14:33:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>7177</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAyMTZlMGYzNGVjOGY1ZGRmNmIyZTUzYzUwOWU2NThkMWU1ZWE5ZDE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCiBKU1Rl
c3RzL3N0cmVzcy9qc2MtcmVhZC5qcyAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIHwgMjUgKysrKysr
KysrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICB8IDI5
ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDk2IGluc2Vy
dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9zdHJl
c3MvanNjLXJlYWQuanMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDI3MDNlYWQuLjhhOTc2M2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDkt
MDYgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
anNjIHNoZWxsIGJ1aWx0aW4gYHJlYWRgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0cmVzcy9qc2MtcmVhZC5qczogQWRkZWQuCisgICAgICAgICh0
ZXN0KTogdGVzdCBgcmVhZGAgYW5kIGByZWFkRmlsZWAgc2hlbGwgYnVpbHRpbnMsIGluIHN0cmlu
ZyBhbmQgYmluYXJ5IG1vZGUuCisKIDIwMTYtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBCdXR0ZXJmbGllcyBzaG91bGQgYmUgYWxsb2NhdGVkIGluIEF1
eGlsaWFyeSBNYXJrZWRTcGFjZSBpbnN0ZWFkIG9mIENvcGllZFNwYWNlIGFuZCB3ZSBzaG91bGQg
cmV3cml0ZSBhcyBtdWNoIG9mIHRoZSBHQyBhcyBuZWVkZWQgdG8gbWFrZSB0aGlzIG5vdCBhIHJl
Z3Jlc3Npb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpzIGIvSlNUZXN0
cy9zdHJlc3MvanNjLXJlYWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWM2ODBmNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpzCkBA
IC0wLDAgKzEsMzYgQEAKKyhmdW5jdGlvbiB0ZXN0KCkgeworICAgIC8vIFJlYWQgdGhpcyB0ZXN0
IGZpbGUgdXNpbmcganNjIHNoZWxsJ3MgYnVpbHRpbnMsIGFuZCBjaGVjayB0aGF0IGl0cyBjb250
ZW50IGlzIGFzIGV4cGVjdGVkLgorICAgIGNvbnN0IGluX2ZpbGUgPSAnanNjLXJlYWQuanMnOwor
ICAgIAorICAgIGNvbnN0IGNoZWNrID0gY29udGVudF9yZWFkID0+IHsKKyAgICAgICAgbGV0IGV4
cGVjdCA9ICcoJyArIHRlc3QudG9TdHJpbmcoKSArICcpKCk7XG4nOworICAgICAgICBpZiAoY29u
dGVudF9yZWFkICE9PSBleHBlY3QpCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQg
dG8gcmVhZCB0aGlzIGZpbGUgYXMtaXMsIGluc3RlYWQgcmVhZDpcbj09PT09PT09PT1cbicgKyBj
b250ZW50X3JlYWQgKyAnXG49PT09PT09PT09Jyk7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3Rf
YXJyYXlidWZmZXIgPSByZWFkX2Z1bmN0aW9uID0+IHsKKyAgICAgICAgbGV0IGZpbGUgPSByZWFk
X2Z1bmN0aW9uKGluX2ZpbGUsICdiaW5hcnknKTsKKyAgICAgICAgaWYgKHR5cGVvZiBmaWxlLmJ1
ZmZlciAhPT0gJ29iamVjdCcgfHwgZmlsZS5ieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgfHwgZmls
ZS5sZW5ndGggPT09IHVuZGVmaW5lZCB8fCBmaWxlLkJZVEVTX1BFUl9FTEVNRU5UICE9PSAxIHx8
IGZpbGUuYnl0ZU9mZnNldCAhPT0gMCkKKyAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3Rl
ZCBhIFVpbnQ4QXJyYXknKTsKKyAgICAgICAgbGV0IHN0ciA9ICcnOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSAhPSBmaWxlLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc3RyICs9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoZmlsZVtpXSk7ICAvLyBBc3N1bWUgQVNDSUkuCisgICAgICAgIGNoZWNr
KHN0cik7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3Rfc3RyaW5nID0gcmVhZF9mdW5jdGlvbiA9
PiB7CisgICAgICAgIGxldCBzdHIgPSByZWFkX2Z1bmN0aW9uKGluX2ZpbGUpOworICAgICAgICBp
ZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhw
ZWN0ZWQgYSBzdHJpbmcnKTsKKyAgICAgICAgY2hlY2soc3RyKTsKKyAgICB9OworCisgICAgLy8g
anNjJ3Mgb3JpZ2luYWwgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlzIGByZWFkRmlsZWAsIHdoZXJl
YXMgU3BpZGVyTW9ua2V5CisgICAgLy8gc2hlbGwncyBmaWxlIHJlYWRpbmcgZnVuY3Rpb24gaXMg
YHJlYWRgLiBUaGUgbGF0dGVyIGlzIHVzZWQgYnkKKyAgICAvLyBlbXNjcmlwdGVuJ3Mgc2hlbGwu
anMgKGQ4IGNhbGxzIGl0IGByZWFkYnVmZmVyYCwgd2hpY2ggc2hlbGwuanMKKyAgICAvLyBwb2x5
ZmlsbHMpLgorICAgIHRlc3RfYXJyYXlidWZmZXIocmVhZEZpbGUpOworICAgIHRlc3RfYXJyYXli
dWZmZXIocmVhZCk7CisgICAgdGVzdF9zdHJpbmcocmVhZEZpbGUpOworICAgIHRlc3Rfc3RyaW5n
KHJlYWQpOworfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDI5Yzg1Y2UuLmFkMDZj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA5LTA2
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpz
YyBzaGVsbCBidWlsdGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIGpzYyBzaGVsbCBjdXJyZW50bHkgc3VwcG9ydHMgYSBgcmVhZEZp
bGVgIG1ldGhvZCB3aGljaCByZXR1cm5zCisgICAgICAgIGEgc3RyaW5nLiBTcGlkZXJNb25rZXkn
cyBqcyBzaGVsbCBhbmQgVjgncyBkOCBzaGVsbCBib3RoIHN1cHBvcnQKKyAgICAgICAgc2ltaWxh
ciBmaWxlLXRvLXN0cmluZyBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgYQorICAgICAgICBiaW5hcnkt
ZmlsZS10by1VaW50OEFycmF5IGZ1bmN0aW9uLiBqc2Mgc2hvdWxkIHN1cHBvcnQgYSBzaW1pbGFy
CisgICAgICAgIGJpbmFyeSBmaWxlIG1ldGhvZCB0byBzaW1wbGlmeSB0ZXN0aW5nLCBpbmNsdWRp
bmcgdGVzdGluZyBvZgorICAgICAgICBXZWJBc3NlbWJseSBibG9icy4KKworICAgICAgICBFbXNj
cmlwdGVuJ3Mgc2hlbGwuanMgKHdoaWNoIGlzIGFsc28gdXNlZCBmb3Igc29tZSBXZWJBc3NlbWJs
eQorICAgICAgICB0aGluZ3MpIGhhcyBhIHBvbHlmaWxsIFsxXSBmb3IgYSBidWlsdGluIGNhbGxl
ZCBgcmVhZGAuIGpzYyBzaG91bGQKKyAgICAgICAgdGhlcmVmb3JlIGhhdmUgYSBidWlsdGluIHdp
dGggdGhlIHNhbWUgbmFtZSBpZiB3ZSB3YW50IHRoaW5ncyB0bworICAgICAgICAiSnVzdCBXb3Jr
Ii4KKworICAgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL2tyaXBrZW4vZW1zY3JpcHRl
bi9ibG9iLzVmMDkxODQwOWExNDA3ZGQxNjhmNTdjZmEzNGIxMDljZDE3NzBhOGEvc3JjL3NoZWxs
LmpzI0wxMzgKKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKTogYWRkIGByZWFkYCwgbWFrZSBgcmVhZEZpbGVgIHRha2UgdXAgdG8gMiBh
cmd1bWVudHMuCisgICAgICAgIChmdW5jdGlvblJlYWRGaWxlKTogc3VwcG9ydCBiaW5hcnkgZmls
ZXMsIGFzIHBlciBTcGlkZXJNb25rZXkuCisKIDIwMTYtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBUeXBlZCBhcnJheXMgc2hvdWxkIHVzZSBNYXJrZWRT
cGFjZSBpbnN0ZWFkIG9mIENvcGllZFNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDIzNmNm
ZDMuLjk0NjZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJBcnJh
eVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgogI2lu
Y2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKQEAgLTQ5LDYgKzUwLDcgQEAKICNpbmNsdWRlICJK
U09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CisjaW5jbHVkZSAiSlNUeXBlZEFycmF5LmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAj
aW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKQEAgLTY5LDYg
KzcxLDcgQEAKICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC04MDIsNyArODA1LDggQEAgcHJvdGVjdGVkOgogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgInJ1blN0cmluZyIsIGZ1bmN0aW9uUnVuU3RyaW5nLCAxKTsK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2FkIiwgZnVuY3Rpb25Mb2FkLCAxKTsKICAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJsb2FkU3RyaW5nIiwgZnVuY3Rpb25Mb2FkU3RyaW5nLCAxKTsK
LSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkRmlsZSIsIGZ1bmN0aW9uUmVhZEZpbGUsIDEp
OworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25SZWFkRmlsZSwg
Mik7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVhZCIsIGZ1bmN0aW9uUmVhZEZpbGUsIDIp
OwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNoZWNrU3ludGF4IiwgZnVuY3Rpb25DaGVja1N5
bnRheCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAianNjU3RhY2siLCBmdW5jdGlvbkpT
Q1N0YWNrLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkbGluZSIsIGZ1bmN0aW9u
UmVhZGxpbmUsIDApOwpAQCAtMTU0OSwxMSArMTU1MywyOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyBm
aWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwotICAgIGlmICghZmlsbEJ1ZmZl
cldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKKworICAgIGJvb2wgaXNCaW5h
cnkgPSBmYWxzZTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkgeworICAgICAg
ICBTdHJpbmcgdHlwZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4ZWMpOworICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkgfHwgdHlwZSAhPSAiYmluYXJ5IikKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgJ2JpbmFyeScgYXMgc2Vj
b25kIGFyZ3VtZW50LiIpKSkpOworICAgICAgICBpc0JpbmFyeSA9IHRydWU7CisgICAgfQorCisg
ICAgdHlwZWRlZiBWZWN0b3I8Y2hhcj4gU3RvcmFnZTsKKyAgICBhdXRvIGNvbnRlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN0b3JhZ2U+KCk7CisgICAgYXV0byBkZXN0cm95U3RvcmFnZSA9IFtdICh2
b2lkKiBieXRlcywgdm9pZCopIHsgZGVsZXRlIHN0YXRpY19jYXN0PFN0b3JhZ2UqPihieXRlcyk7
IH07CisgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1lLCAqY29u
dGVudCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4g
ZmlsZS4iKSkpKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
c3RyaW5nRnJvbVVURihzY3JpcHQpKSk7CisgICAgaWYgKCFpc0JpbmFyeSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKCpjb250ZW50
KSkpOworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24odG9SZWYoZXhlYywgZXhlYy0+ZXhjZXB0
aW9uKCkpKTsKKyAgICBKU09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2VUeXBlZEFycmF5
V2l0aEJ5dGVzTm9Db3B5KHRvUmVmKGV4ZWMpLCBrSlNUeXBlZEFycmF5VHlwZVVpbnQ4QXJyYXks
IGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpLCBkZXN0cm95U3RvcmFnZSwgbnVsbHB0
ciwgJmV4Y2VwdGlvbik7CisgICAgY29udGVudC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="311486"
          type_id="1"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288186</attachid>
            <date>2016-09-07 14:33:52 -0700</date>
            <delta_ts>2016-09-07 14:39:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>8627</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBjZTZiZGNkZjg0MzFiZGY3NTllMTgxZGJmMTVjMDk2NDM3ZjFlZTNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysr
KysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3Bw
IHwgIDUgKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5o
ICAgfCAgMiArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5qcwoKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjcw
M2VhZC4uNjNkNDVlOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wOS0wNyAgSkYgQmFzdGllbiAgPGpm
YmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBqc2Mgc2hlbGwgYnVpbHRpbiBg
cmVhZGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL2pzYy1yZWFkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOiB0ZXN0IGByZWFkYCBh
bmQgYHJlYWRGaWxlYCBzaGVsbCBidWlsdGlucywgaW4gc3RyaW5nIGFuZCBiaW5hcnkgbW9kZS4K
KwogMjAxNi0wOC0zMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IEJ1dHRlcmZsaWVzIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gQXV4aWxpYXJ5IE1hcmtlZFNwYWNl
IGluc3RlYWQgb2YgQ29waWVkU3BhY2UgYW5kIHdlIHNob3VsZCByZXdyaXRlIGFzIG11Y2ggb2Yg
dGhlIEdDIGFzIG5lZWRlZCB0byBtYWtlIHRoaXMgbm90IGEgcmVncmVzc2lvbgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjMyMDRlCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMKQEAgLTAsMCArMSwzNiBAQAorKGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgLy8gUmVhZCB0aGlzIHRlc3QgZmlsZSB1c2luZyBqc2Mgc2hl
bGwncyBidWlsdGlucywgYW5kIGNoZWNrIHRoYXQgaXRzIGNvbnRlbnQgaXMgYXMgZXhwZWN0ZWQu
CisgICAgY29uc3QgaW5fZmlsZSA9ICdqc2MtcmVhZC5qcyc7CisKKyAgICBjb25zdCBjaGVjayA9
IGNvbnRlbnRfcmVhZCA9PiB7CisgICAgICAgIGxldCBleHBlY3QgPSAnKCcgKyB0ZXN0LnRvU3Ry
aW5nKCkgKyAnKSgpO1xuJzsKKyAgICAgICAgaWYgKGNvbnRlbnRfcmVhZCAhPT0gZXhwZWN0KQor
ICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRvIHJlYWQgdGhpcyBmaWxlIGFzLWlz
LCBpbnN0ZWFkIHJlYWQ6XG49PT09PT09PT09XG4nICsgY29udGVudF9yZWFkICsgJ1xuPT09PT09
PT09PScpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0X2FycmF5YnVmZmVyID0gcmVhZF9mdW5j
dGlvbiA9PiB7CisgICAgICAgIGxldCBmaWxlID0gcmVhZF9mdW5jdGlvbihpbl9maWxlLCAnYmlu
YXJ5Jyk7CisgICAgICAgIGlmICh0eXBlb2YgZmlsZS5idWZmZXIgIT09ICdvYmplY3QnIHx8IGZp
bGUuYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGZpbGUubGVuZ3RoID09PSB1bmRlZmluZWQg
fHwgZmlsZS5CWVRFU19QRVJfRUxFTUVOVCAhPT0gMSB8fCBmaWxlLmJ5dGVPZmZzZXQgIT09IDAp
CisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgYSBVaW50OEFycmF5Jyk7CisgICAg
ICAgIGxldCBzdHIgPSAnJzsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gZmlsZS5sZW5n
dGg7ICsraSkKKyAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGZpbGVbaV0p
OyAgLy8gQXNzdW1lIEFTQ0lJLgorICAgICAgICBjaGVjayhzdHIpOworICAgIH07CisKKyAgICBj
b25zdCB0ZXN0X3N0cmluZyA9IHJlYWRfZnVuY3Rpb24gPT4geworICAgICAgICBsZXQgc3RyID0g
cmVhZF9mdW5jdGlvbihpbl9maWxlKTsKKyAgICAgICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJp
bmcnKQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIGEgc3RyaW5nJyk7CisgICAg
ICAgIGNoZWNrKHN0cik7CisgICAgfTsKKworICAgIC8vIGpzYydzIG9yaWdpbmFsIGZpbGUgcmVh
ZGluZyBmdW5jdGlvbiBpcyBgcmVhZEZpbGVgLCB3aGVyZWFzIFNwaWRlck1vbmtleQorICAgIC8v
IHNoZWxsJ3MgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlzIGByZWFkYC4gVGhlIGxhdHRlciBpcyB1
c2VkIGJ5CisgICAgLy8gZW1zY3JpcHRlbidzIHNoZWxsLmpzIChkOCBjYWxscyBpdCBgcmVhZGJ1
ZmZlcmAsIHdoaWNoIHNoZWxsLmpzCisgICAgLy8gcG9seWZpbGxzKS4KKyAgICB0ZXN0X2FycmF5
YnVmZmVyKHJlYWRGaWxlKTsKKyAgICB0ZXN0X2FycmF5YnVmZmVyKHJlYWQpOworICAgIHRlc3Rf
c3RyaW5nKHJlYWRGaWxlKTsKKyAgICB0ZXN0X3N0cmluZyhyZWFkKTsKK30pKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCAyOWM4NWNlLi40ZGFiNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0wOS0wNyAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBqc2Mgc2hlbGwgYnVpbHRpbiBgcmVhZGAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTY2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBqc2Mg
c2hlbGwgY3VycmVudGx5IHN1cHBvcnRzIGEgYHJlYWRGaWxlYCBtZXRob2Qgd2hpY2ggcmV0dXJu
cworICAgICAgICBhIHN0cmluZy4gU3BpZGVyTW9ua2V5J3MganMgc2hlbGwgYW5kIFY4J3MgZDgg
c2hlbGwgYm90aCBzdXBwb3J0CisgICAgICAgIHNpbWlsYXIgZmlsZS10by1zdHJpbmcgZnVuY3Rp
b25zLCBhcyB3ZWxsIGFzIGEKKyAgICAgICAgYmluYXJ5LWZpbGUtdG8tVWludDhBcnJheSBmdW5j
dGlvbi4ganNjIHNob3VsZCBzdXBwb3J0IGEgc2ltaWxhcgorICAgICAgICBiaW5hcnkgZmlsZSBt
ZXRob2QgdG8gc2ltcGxpZnkgdGVzdGluZywgaW5jbHVkaW5nIHRlc3Rpbmcgb2YKKyAgICAgICAg
V2ViQXNzZW1ibHkgYmxvYnMuCisKKyAgICAgICAgRW1zY3JpcHRlbidzIHNoZWxsLmpzICh3aGlj
aCBpcyBhbHNvIHVzZWQgZm9yIHNvbWUgV2ViQXNzZW1ibHkKKyAgICAgICAgdGhpbmdzKSBoYXMg
YSBwb2x5ZmlsbCBbMV0gZm9yIGEgYnVpbHRpbiBjYWxsZWQgYHJlYWRgLiBqc2Mgc2hvdWxkCisg
ICAgICAgIHRoZXJlZm9yZSBoYXZlIGEgYnVpbHRpbiB3aXRoIHRoZSBzYW1lIG5hbWUgaWYgd2Ug
d2FudCB0aGluZ3MgdG8KKyAgICAgICAgIkp1c3QgV29yayIuCisKKyAgICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS9rcmlwa2VuL2Vtc2NyaXB0ZW4vYmxvYi81ZjA5MTg0MDlhMTQwN2Rk
MTY4ZjU3Y2ZhMzRiMTA5Y2QxNzcwYThhL3NyYy9zaGVsbC5qcyNMMTM4CisKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6IGFkZCBgcmVh
ZGAsIG1ha2UgYHJlYWRGaWxlYCB0YWtlIHVwIHRvIDIgYXJndW1lbnRzLgorICAgICAgICAoZnVu
Y3Rpb25SZWFkRmlsZSk6IHN1cHBvcnQgYmluYXJ5IGZpbGVzLCBhcyBwZXIgU3BpZGVyTW9ua2V5
LgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZVVpbnQ4VHlwZWRBcnJheSk6IEpTIHByaXZhdGUgZXhwb3J0IG9mIEpTVWludDhBcnJheTo6
Y3JlYXRlLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oOiBleHBvc2UgcHJpdmF0
ZSBleHBvcnQuCisKIDIwMTYtMDktMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBUeXBlZCBhcnJheXMgc2hvdWxkIHVzZSBNYXJrZWRTcGFjZSBpbnN0ZWFkIG9m
IENvcGllZFNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDIzNmNmZDMuLmU3NTIxY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCIKICNpbmNsdWRlICJCdXR0
ZXJmbHlJbmxpbmVzLmgiCkBAIC00OSw2ICs1MCw3IEBACiAjaW5jbHVkZSAiSlNPTk9iamVjdC5o
IgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpAQCAtODAyLDcgKzgwNCw4IEBA
IHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJydW5TdHJpbmciLCBmdW5jdGlv
blJ1blN0cmluZywgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibG9hZCIsIGZ1bmN0aW9u
TG9hZCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibG9hZFN0cmluZyIsIGZ1bmN0aW9u
TG9hZFN0cmluZywgMSk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVhZEZpbGUiLCBmdW5j
dGlvblJlYWRGaWxlLCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkRmlsZSIsIGZ1
bmN0aW9uUmVhZEZpbGUsIDIpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWQiLCBmdW5j
dGlvblJlYWRGaWxlLCAyKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjaGVja1N5bnRheCIs
IGZ1bmN0aW9uQ2hlY2tTeW50YXgsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImpzY1N0
YWNrIiwgZnVuY3Rpb25KU0NTdGFjaywgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVh
ZGxpbmUiLCBmdW5jdGlvblJlYWRsaW5lLCAwKTsKQEAgLTE1NDksMTEgKzE1NTIsMjkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKLSAg
ICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCisK
KyAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA+IDEpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVudCgxKS50b1dURlN0
cmluZyhleGVjKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpIHx8IHR5cGUgIT0g
ImJpbmFyeSIpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVk
ICdiaW5hcnknIGFzIHNlY29uZCBhcmd1bWVudC4iKSkpKTsKKyAgICAgICAgaXNCaW5hcnkgPSB0
cnVlOworICAgIH0KKworICAgIFZlY3RvcjxjaGFyPiBjb250ZW50OworICAgIGlmICghZmlsbEJ1
ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgY29udGVudCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihzY3JpcHQp
KSk7CisgICAgaWYgKCFpc0JpbmFyeSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKGNvbnRlbnQpKSk7CisKKyAgICBhdXRvIGxlbmd0
aCA9IGNvbnRlbnQuc2l6ZSgpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb250ZW50LnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRy
KCksIGxlbmd0aCwgW10gKHZvaWQqIHApIHsgZmFzdEZyZWUocCk7IH0pOworICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBjcmVhdGVVaW50OFR5cGVkQXJyYXkoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFR5cGVVaW50OCksIFdURk1vdmUoYnVmZmVy
KSwgMCwgbGVuZ3RoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGFsbG9jYXRlIEFycmF5QnVmZmVyLiIp
KSkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcApp
bmRleCAzYTQ2OWFkLi5hMDAxMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlzLmNwcApAQCAtNTEsNSArNTEsMTAgQEAgTUFLRV9TX0lORk8oVWlu
dDMyKTsKIE1BS0VfU19JTkZPKEZsb2F0MzIpOwogTUFLRV9TX0lORk8oRmxvYXQ2NCk7CiAKK0pT
VWludDhBcnJheSogY3JlYXRlVWludDhUeXBlZEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBhc3NlZEJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7CisgICAgcmV0dXJuIEpTVWludDhB
cnJheTo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShwYXNzZWRCdWZmZXIpLCBieXRl
T2Zmc2V0LCBsZW5ndGgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmgKaW5kZXggODdlM2VhYy4uMTky
MTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
aApAQCAtNDIsNiArNDIsOCBAQCB0eXBlZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PFVpbnQz
MkFkYXB0b3I+IEpTVWludDMyQXJyYXk7CiB0eXBlZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEZsb2F0MzJBZGFwdG9yPiBKU0Zsb2F0MzJBcnJheTsKIHR5cGVkZWYgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8RmxvYXQ2NEFkYXB0b3I+IEpTRmxvYXQ2NEFycmF5OwogCitKU19FWFBPUlRfUFJJ
VkFURSBKU1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1R5cGVk
QXJyYXlzX2gKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288187</attachid>
            <date>2016-09-07 14:39:28 -0700</date>
            <delta_ts>2016-09-09 09:53:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>8629</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0ZWRjZGYzNWY4YThkYTU0NzIxNzMwMzg1MGMyYTU2MTQyMTZlOGQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysr
KysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3Bw
IHwgIDYgKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
aCAgIHwgIDIgKysKIDYgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMKCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI3
MDNlYWQuLjYzZDQ1ZTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDktMDcgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQganNjIHNoZWxsIGJ1aWx0aW4g
YHJlYWRgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9qc2MtcmVhZC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KTogdGVzdCBgcmVhZGAg
YW5kIGByZWFkRmlsZWAgc2hlbGwgYnVpbHRpbnMsIGluIHN0cmluZyBhbmQgYmluYXJ5IG1vZGUu
CisKIDIwMTYtMDgtMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCdXR0ZXJmbGllcyBzaG91bGQgYmUgYWxsb2NhdGVkIGluIEF1eGlsaWFyeSBNYXJrZWRTcGFj
ZSBpbnN0ZWFkIG9mIENvcGllZFNwYWNlIGFuZCB3ZSBzaG91bGQgcmV3cml0ZSBhcyBtdWNoIG9m
IHRoZSBHQyBhcyBuZWVkZWQgdG8gbWFrZSB0aGlzIG5vdCBhIHJlZ3Jlc3Npb24KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpzIGIvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIzMjA0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpzCkBAIC0wLDAgKzEsMzYgQEAKKyhm
dW5jdGlvbiB0ZXN0KCkgeworICAgIC8vIFJlYWQgdGhpcyB0ZXN0IGZpbGUgdXNpbmcganNjIHNo
ZWxsJ3MgYnVpbHRpbnMsIGFuZCBjaGVjayB0aGF0IGl0cyBjb250ZW50IGlzIGFzIGV4cGVjdGVk
LgorICAgIGNvbnN0IGluX2ZpbGUgPSAnanNjLXJlYWQuanMnOworCisgICAgY29uc3QgY2hlY2sg
PSBjb250ZW50X3JlYWQgPT4geworICAgICAgICBsZXQgZXhwZWN0ID0gJygnICsgdGVzdC50b1N0
cmluZygpICsgJykoKTtcbic7CisgICAgICAgIGlmIChjb250ZW50X3JlYWQgIT09IGV4cGVjdCkK
KyAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0byByZWFkIHRoaXMgZmlsZSBhcy1p
cywgaW5zdGVhZCByZWFkOlxuPT09PT09PT09PVxuJyArIGNvbnRlbnRfcmVhZCArICdcbj09PT09
PT09PT0nKTsKKyAgICB9OworCisgICAgY29uc3QgdGVzdF9hcnJheWJ1ZmZlciA9IHJlYWRfZnVu
Y3Rpb24gPT4geworICAgICAgICBsZXQgZmlsZSA9IHJlYWRfZnVuY3Rpb24oaW5fZmlsZSwgJ2Jp
bmFyeScpOworICAgICAgICBpZiAodHlwZW9mIGZpbGUuYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBm
aWxlLmJ5dGVMZW5ndGggPT09IHVuZGVmaW5lZCB8fCBmaWxlLmxlbmd0aCA9PT0gdW5kZWZpbmVk
IHx8IGZpbGUuQllURVNfUEVSX0VMRU1FTlQgIT09IDEgfHwgZmlsZS5ieXRlT2Zmc2V0ICE9PSAw
KQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIGEgVWludDhBcnJheScpOworICAg
ICAgICBsZXQgc3RyID0gJyc7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpICE9IGZpbGUubGVu
Z3RoOyArK2kpCisgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmaWxlW2ld
KTsgIC8vIEFzc3VtZSBBU0NJSS4KKyAgICAgICAgY2hlY2soc3RyKTsKKyAgICB9OworCisgICAg
Y29uc3QgdGVzdF9zdHJpbmcgPSByZWFkX2Z1bmN0aW9uID0+IHsKKyAgICAgICAgbGV0IHN0ciA9
IHJlYWRfZnVuY3Rpb24oaW5fZmlsZSk7CisgICAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3Ry
aW5nJykKKyAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpOworICAg
ICAgICBjaGVjayhzdHIpOworICAgIH07CisKKyAgICAvLyBqc2MncyBvcmlnaW5hbCBmaWxlIHJl
YWRpbmcgZnVuY3Rpb24gaXMgYHJlYWRGaWxlYCwgd2hlcmVhcyBTcGlkZXJNb25rZXkKKyAgICAv
LyBzaGVsbCdzIGZpbGUgcmVhZGluZyBmdW5jdGlvbiBpcyBgcmVhZGAuIFRoZSBsYXR0ZXIgaXMg
dXNlZCBieQorICAgIC8vIGVtc2NyaXB0ZW4ncyBzaGVsbC5qcyAoZDggY2FsbHMgaXQgYHJlYWRi
dWZmZXJgLCB3aGljaCBzaGVsbC5qcworICAgIC8vIHBvbHlmaWxscykuCisgICAgdGVzdF9hcnJh
eWJ1ZmZlcihyZWFkRmlsZSk7CisgICAgdGVzdF9hcnJheWJ1ZmZlcihyZWFkKTsKKyAgICB0ZXN0
X3N0cmluZyhyZWFkRmlsZSk7CisgICAgdGVzdF9zdHJpbmcocmVhZCk7Cit9KSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjljODVjZS4uNGRhYjVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMDktMDcgIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQganNjIHNoZWxsIGJ1aWx0aW4gYHJlYWRg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE2NjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUganNj
IHNoZWxsIGN1cnJlbnRseSBzdXBwb3J0cyBhIGByZWFkRmlsZWAgbWV0aG9kIHdoaWNoIHJldHVy
bnMKKyAgICAgICAgYSBzdHJpbmcuIFNwaWRlck1vbmtleSdzIGpzIHNoZWxsIGFuZCBWOCdzIGQ4
IHNoZWxsIGJvdGggc3VwcG9ydAorICAgICAgICBzaW1pbGFyIGZpbGUtdG8tc3RyaW5nIGZ1bmN0
aW9ucywgYXMgd2VsbCBhcyBhCisgICAgICAgIGJpbmFyeS1maWxlLXRvLVVpbnQ4QXJyYXkgZnVu
Y3Rpb24uIGpzYyBzaG91bGQgc3VwcG9ydCBhIHNpbWlsYXIKKyAgICAgICAgYmluYXJ5IGZpbGUg
bWV0aG9kIHRvIHNpbXBsaWZ5IHRlc3RpbmcsIGluY2x1ZGluZyB0ZXN0aW5nIG9mCisgICAgICAg
IFdlYkFzc2VtYmx5IGJsb2JzLgorCisgICAgICAgIEVtc2NyaXB0ZW4ncyBzaGVsbC5qcyAod2hp
Y2ggaXMgYWxzbyB1c2VkIGZvciBzb21lIFdlYkFzc2VtYmx5CisgICAgICAgIHRoaW5ncykgaGFz
IGEgcG9seWZpbGwgWzFdIGZvciBhIGJ1aWx0aW4gY2FsbGVkIGByZWFkYC4ganNjIHNob3VsZAor
ICAgICAgICB0aGVyZWZvcmUgaGF2ZSBhIGJ1aWx0aW4gd2l0aCB0aGUgc2FtZSBuYW1lIGlmIHdl
IHdhbnQgdGhpbmdzIHRvCisgICAgICAgICJKdXN0IFdvcmsiLgorCisgICAgICAgICAgWzFdOiBo
dHRwczovL2dpdGh1Yi5jb20va3JpcGtlbi9lbXNjcmlwdGVuL2Jsb2IvNWYwOTE4NDA5YTE0MDdk
ZDE2OGY1N2NmYTM0YjEwOWNkMTc3MGE4YS9zcmMvc2hlbGwuanMjTDEzOAorCisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBhZGQgYHJl
YWRgLCBtYWtlIGByZWFkRmlsZWAgdGFrZSB1cCB0byAyIGFyZ3VtZW50cy4KKyAgICAgICAgKGZ1
bmN0aW9uUmVhZEZpbGUpOiBzdXBwb3J0IGJpbmFyeSBmaWxlcywgYXMgcGVyIFNwaWRlck1vbmtl
eS4KKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwOgorICAgICAgICAoSlNDOjpj
cmVhdGVVaW50OFR5cGVkQXJyYXkpOiBKUyBwcml2YXRlIGV4cG9ydCBvZiBKU1VpbnQ4QXJyYXk6
OmNyZWF0ZS4KKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheXMuaDogZXhwb3NlIHByaXZh
dGUgZXhwb3J0LgorCiAyMDE2LTA5LTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgVHlwZWQgYXJyYXlzIHNob3VsZCB1c2UgTWFya2VkU3BhY2UgaW5zdGVhZCBv
ZiBDb3BpZWRTcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyMzZjZmQzLi5lNzUyMWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgiCiAjaW5jbHVkZSAiQnV0
dGVyZmx5SW5saW5lcy5oIgpAQCAtNDksNiArNTAsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3Qu
aCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAi
TExJbnREYXRhLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKQEAgLTgwMiw3ICs4MDQsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicnVuU3RyaW5nIiwgZnVuY3Rp
b25SdW5TdHJpbmcsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWQiLCBmdW5jdGlv
bkxvYWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWRTdHJpbmciLCBmdW5jdGlv
bkxvYWRTdHJpbmcsIDEpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRGaWxlIiwgZnVu
Y3Rpb25SZWFkRmlsZSwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVhZEZpbGUiLCBm
dW5jdGlvblJlYWRGaWxlLCAyKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkIiwgZnVu
Y3Rpb25SZWFkRmlsZSwgMik7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2hlY2tTeW50YXgi
LCBmdW5jdGlvbkNoZWNrU3ludGF4LCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJqc2NT
dGFjayIsIGZ1bmN0aW9uSlNDU3RhY2ssIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJl
YWRsaW5lIiwgZnVuY3Rpb25SZWFkbGluZSwgMCk7CkBAIC0xNTQ5LDExICsxNTUyLDI5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7Ci0g
ICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1lLCBzY3JpcHQpKQor
CisgICAgYm9vbCBpc0JpbmFyeSA9IGZhbHNlOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPiAxKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gZXhlYy0+YXJndW1lbnQoMSkudG9XVEZT
dHJpbmcoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSB8fCB0eXBlICE9
ICJiaW5hcnkiKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIikpKSk7CisgICAgICAgIGlzQmluYXJ5ID0g
dHJ1ZTsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hhcj4gY29udGVudDsKKyAgICBpZiAoIWZpbGxC
dWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIGNvbnRlbnQpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ0Zyb21VVEYoc2NyaXB0
KSkpOworICAgIGlmICghaXNCaW5hcnkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihjb250ZW50KSkpOworCisgICAgYXV0byBsZW5n
dGggPSBjb250ZW50LnNpemUoKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoY29udGVudC5yZWxlYXNlQnVmZmVyKCkubGVha1B0
cigpLCBsZW5ndGgsIFtdICh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9KTsKKyAgICBKU09iamVj
dCogcmVzdWx0ID0gY3JlYXRlVWludDhUeXBlZEFycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShUeXBlVWludDgpLCBXVEZNb3ZlKGJ1ZmZl
ciksIDAsIGxlbmd0aCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBhbGxvY2F0ZSBBcnJheUJ1ZmZlci4i
KSkpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAK
aW5kZXggM2E0NjlhZC4uZWE4MDkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKQEAgLTUxLDUgKzUxLDExIEBAIE1BS0VfU19JTkZPKFVp
bnQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZPKEZsb2F0NjQpOwogCitK
U1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gSlNVaW50
OEFycmF5OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKHBhc3NlZEJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuaAppbmRleCA4N2UzZWFjLi4x
OTIxM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVk
QXJyYXlzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
cy5oCkBAIC00Miw2ICs0Miw4IEBAIHR5cGVkZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWlu
dDMyQWRhcHRvcj4gSlNVaW50MzJBcnJheTsKIHR5cGVkZWYgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8RmxvYXQzMkFkYXB0b3I+IEpTRmxvYXQzMkFycmF5OwogdHlwZWRlZiBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxGbG9hdDY0QWRhcHRvcj4gSlNGbG9hdDY0QXJyYXk7CiAKK0pTX0VYUE9SVF9Q
UklWQVRFIEpTVWludDhBcnJheSogY3JlYXRlVWludDhUeXBlZEFycmF5KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTVHlw
ZWRBcnJheXNfaAotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="311567"
          type_id="1"
          status="-"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="311568"
          type_id="3"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288410</attachid>
            <date>2016-09-09 09:53:44 -0700</date>
            <delta_ts>2016-09-09 12:02:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>8541</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAyMTdjYjBkNzZjYjVhODJjZjU0NmM2NmNlMzZlOTViOTQzMWRkOGEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysr
KysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3Bw
IHwgIDYgKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
aCAgIHwgIDIgKysKIDYgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMKCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcx
MDI2MmIuLmZhZGY1MTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDktMDcgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQganNjIHNoZWxsIGJ1aWx0aW4g
YHJlYWRgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9qc2MtcmVhZC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KTogdGVzdCBgcmVhZGAg
YW5kIGByZWFkRmlsZWAgc2hlbGwgYnVpbHRpbnMsIGluIHN0cmluZyBhbmQgYmluYXJ5IG1vZGUu
CisKIDIwMTYtMDktMDggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2Ugc2hvdWxkIGlubGluZSBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiBpbnRv
IEpJVCBjb2RlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2pzYy1yZWFkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjFiMzIwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5qcwpA
QCAtMCwwICsxLDM2IEBACisoZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAvLyBSZWFkIHRoaXMgdGVz
dCBmaWxlIHVzaW5nIGpzYyBzaGVsbCdzIGJ1aWx0aW5zLCBhbmQgY2hlY2sgdGhhdCBpdHMgY29u
dGVudCBpcyBhcyBleHBlY3RlZC4KKyAgICBjb25zdCBpbl9maWxlID0gJ2pzYy1yZWFkLmpzJzsK
KworICAgIGNvbnN0IGNoZWNrID0gY29udGVudF9yZWFkID0+IHsKKyAgICAgICAgbGV0IGV4cGVj
dCA9ICcoJyArIHRlc3QudG9TdHJpbmcoKSArICcpKCk7XG4nOworICAgICAgICBpZiAoY29udGVu
dF9yZWFkICE9PSBleHBlY3QpCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgdG8g
cmVhZCB0aGlzIGZpbGUgYXMtaXMsIGluc3RlYWQgcmVhZDpcbj09PT09PT09PT1cbicgKyBjb250
ZW50X3JlYWQgKyAnXG49PT09PT09PT09Jyk7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3RfYXJy
YXlidWZmZXIgPSByZWFkX2Z1bmN0aW9uID0+IHsKKyAgICAgICAgbGV0IGZpbGUgPSByZWFkX2Z1
bmN0aW9uKGluX2ZpbGUsICdiaW5hcnknKTsKKyAgICAgICAgaWYgKHR5cGVvZiBmaWxlLmJ1ZmZl
ciAhPT0gJ29iamVjdCcgfHwgZmlsZS5ieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgfHwgZmlsZS5s
ZW5ndGggPT09IHVuZGVmaW5lZCB8fCBmaWxlLkJZVEVTX1BFUl9FTEVNRU5UICE9PSAxIHx8IGZp
bGUuYnl0ZU9mZnNldCAhPT0gMCkKKyAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCBh
IFVpbnQ4QXJyYXknKTsKKyAgICAgICAgbGV0IHN0ciA9ICcnOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSAhPSBmaWxlLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc3RyICs9IFN0cmluZy5m
cm9tQ2hhckNvZGUoZmlsZVtpXSk7ICAvLyBBc3N1bWUgQVNDSUkuCisgICAgICAgIGNoZWNrKHN0
cik7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3Rfc3RyaW5nID0gcmVhZF9mdW5jdGlvbiA9PiB7
CisgICAgICAgIGxldCBzdHIgPSByZWFkX2Z1bmN0aW9uKGluX2ZpbGUpOworICAgICAgICBpZiAo
dHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0
ZWQgYSBzdHJpbmcnKTsKKyAgICAgICAgY2hlY2soc3RyKTsKKyAgICB9OworCisgICAgLy8ganNj
J3Mgb3JpZ2luYWwgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlzIGByZWFkRmlsZWAsIHdoZXJlYXMg
U3BpZGVyTW9ua2V5CisgICAgLy8gc2hlbGwncyBmaWxlIHJlYWRpbmcgZnVuY3Rpb24gaXMgYHJl
YWRgLiBUaGUgbGF0dGVyIGlzIHVzZWQgYnkKKyAgICAvLyBlbXNjcmlwdGVuJ3Mgc2hlbGwuanMg
KGQ4IGNhbGxzIGl0IGByZWFkYnVmZmVyYCwgd2hpY2ggc2hlbGwuanMKKyAgICAvLyBwb2x5Zmls
bHMpLgorICAgIHRlc3RfYXJyYXlidWZmZXIocmVhZEZpbGUpOworICAgIHRlc3RfYXJyYXlidWZm
ZXIocmVhZCk7CisgICAgdGVzdF9zdHJpbmcocmVhZEZpbGUpOworICAgIHRlc3Rfc3RyaW5nKHJl
YWQpOworfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIyZmE2YjkuLjNlMzg3OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA5LTA3ICBK
RiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpzYyBz
aGVsbCBidWlsdGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGpzYyBzaGVsbCBjdXJyZW50bHkgc3VwcG9ydHMgYSBgcmVhZEZpbGVg
IG1ldGhvZCB3aGljaCByZXR1cm5zCisgICAgICAgIGEgc3RyaW5nLiBTcGlkZXJNb25rZXkncyBq
cyBzaGVsbCBhbmQgVjgncyBkOCBzaGVsbCBib3RoIHN1cHBvcnQKKyAgICAgICAgc2ltaWxhciBm
aWxlLXRvLXN0cmluZyBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgYQorICAgICAgICBiaW5hcnktZmls
ZS10by1VaW50OEFycmF5IGZ1bmN0aW9uLiBqc2Mgc2hvdWxkIHN1cHBvcnQgYSBzaW1pbGFyCisg
ICAgICAgIGJpbmFyeSBmaWxlIG1ldGhvZCB0byBzaW1wbGlmeSB0ZXN0aW5nLCBpbmNsdWRpbmcg
dGVzdGluZyBvZgorICAgICAgICBXZWJBc3NlbWJseSBibG9icy4KKworICAgICAgICBFbXNjcmlw
dGVuJ3Mgc2hlbGwuanMgKHdoaWNoIGlzIGFsc28gdXNlZCBmb3Igc29tZSBXZWJBc3NlbWJseQor
ICAgICAgICB0aGluZ3MpIGhhcyBhIHBvbHlmaWxsIFsxXSBmb3IgYSBidWlsdGluIGNhbGxlZCBg
cmVhZGAuIGpzYyBzaG91bGQKKyAgICAgICAgdGhlcmVmb3JlIGhhdmUgYSBidWlsdGluIHdpdGgg
dGhlIHNhbWUgbmFtZSBpZiB3ZSB3YW50IHRoaW5ncyB0bworICAgICAgICAiSnVzdCBXb3JrIi4K
KworICAgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL2tyaXBrZW4vZW1zY3JpcHRlbi9i
bG9iLzVmMDkxODQwOWExNDA3ZGQxNjhmNTdjZmEzNGIxMDljZDE3NzBhOGEvc3JjL3NoZWxsLmpz
I0wxMzgKKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKTogYWRkIGByZWFkYCwgbWFrZSBgcmVhZEZpbGVgIHRha2UgdXAgdG8gMiBhcmd1
bWVudHMuCisgICAgICAgIChmdW5jdGlvblJlYWRGaWxlKTogc3VwcG9ydCBiaW5hcnkgZmlsZXMs
IGFzIHBlciBTcGlkZXJNb25rZXkuCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlzLmNw
cDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KTogSlMgcHJpdmF0ZSBleHBv
cnQgb2YgSlNVaW50OEFycmF5OjpjcmVhdGUuCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJy
YXlzLmg6IGV4cG9zZSBwcml2YXRlIGV4cG9ydC4KKwogMjAxNi0wOS0wOSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcHJvbWlz
ZS5pbmhlcml0cyhKU1Byb21pc2U6OmluZm8oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYTk2
MjUzYS4uYWRmMDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRl
ICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5o
IgogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCisjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgogI2luY2x1ZGUgIkpTV0FTTU1vZHVs
ZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCkBA
IC04MDMsNyArODA1LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJ1
blN0cmluZyIsIGZ1bmN0aW9uUnVuU3RyaW5nLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJsb2FkIiwgZnVuY3Rpb25Mb2FkLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2Fk
U3RyaW5nIiwgZnVuY3Rpb25Mb2FkU3RyaW5nLCAxKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJyZWFkRmlsZSIsIGZ1bmN0aW9uUmVhZEZpbGUsIDEpOworICAgICAgICBhZGRGdW5jdGlvbih2
bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25SZWFkRmlsZSwgMik7CisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAicmVhZCIsIGZ1bmN0aW9uUmVhZEZpbGUsIDIpOwogICAgICAgICBhZGRGdW5jdGlvbih2
bSwgImNoZWNrU3ludGF4IiwgZnVuY3Rpb25DaGVja1N5bnRheCwgMSk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAianNjU3RhY2siLCBmdW5jdGlvbkpTQ1N0YWNrLCAxKTsKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJyZWFkbGluZSIsIGZ1bmN0aW9uUmVhZGxpbmUsIDApOwpAQCAtMTU1NSwx
MSArMTU1OCwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZp
bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
VmVjdG9yPGNoYXI+IHNjcmlwdDsKLSAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoZmlsZU5hbWUsIHNjcmlwdCkpCisKKyAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7CisgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBl
eGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSB8fCB0eXBlICE9ICJiaW5hcnkiKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1l
bnQuIikpKSk7CisgICAgICAgIGlzQmluYXJ5ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBWZWN0b3I8
Y2hhcj4gY29udGVudDsKKyAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmls
ZU5hbWUsIGNvbnRlbnQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxk
IG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIHN0cmluZ0Zyb21VVEYoc2NyaXB0KSkpOworICAgIGlmICghaXNCaW5hcnkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVU
Rihjb250ZW50KSkpOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVHlwZVVpbnQ4KTsKKyAgICBhdXRv
IGxlbmd0aCA9IGNvbnRlbnQuc2l6ZSgpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjcmVhdGVV
aW50OFR5cGVkQXJyYXkoZXhlYywgc3RydWN0dXJlLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5
dGVzKGNvbnRlbnQucmVsZWFzZUJ1ZmZlcigpLmxlYWtQdHIoKSwgbGVuZ3RoLCBmYXN0RnJlZSks
IDAsIGxlbmd0aCk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gYWxsb2NhdGUgQXJyYXlCdWZm
ZXIuIikpKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUq
IGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVk
QXJyYXlzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
Y3BwCmluZGV4IDIwNjRhNmUuLmI4OGQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCkBAIC00OSw1ICs0OSwxMSBAQCBNQUtFX1NfSU5G
TyhVaW50MzIpOwogTUFLRV9TX0lORk8oRmxvYXQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDY0KTsK
IAorSlNVaW50OEFycmF5KiBjcmVhdGVVaW50OFR5cGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHBhc3NlZEJ1ZmZlciwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBKU1Vp
bnQ4QXJyYXk6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIHN0ZDo6Zm9yd2FyZDxSZWZQdHI8QXJy
YXlCdWZmZXI+PihwYXNzZWRCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlzLmgKaW5kZXggODdlM2VhYy4uZmI0NzYxMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuaApAQCAtNDIsNiArNDIsOCBAQCB0eXBlZGVm
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PFVpbnQzMkFkYXB0b3I+IEpTVWludDMyQXJyYXk7CiB0
eXBlZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEZsb2F0MzJBZGFwdG9yPiBKU0Zsb2F0MzJB
cnJheTsKIHR5cGVkZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8RmxvYXQ2NEFkYXB0b3I+IEpT
RmxvYXQ2NEFycmF5OwogCitKU19FWFBPUlRfUFJJVkFURSBKU1VpbnQ4QXJyYXkqIGNyZWF0ZVVp
bnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gSlNUeXBlZEFycmF5c19oCi0tIAoyLjkuMwoK
</data>
<flag name="review"
          id="311760"
          type_id="1"
          status="-"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="311761"
          type_id="3"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288425</attachid>
            <date>2016-09-09 12:02:39 -0700</date>
            <delta_ts>2016-09-12 16:29:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>10016</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzY2E3YTc2NzlhZWQ1MjE2Mzc0MzU2MmIzMzQ3OWQ2YWI1OTg1OTZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgfCAzMyArKysrKysrKysr
KysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAg
ICAgICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlz
LmNwcCB8ICA2ICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlzLmggICB8ICAyICsrCiA3IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCA1IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpz
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCA3MTAyNjJiLi4xNTA3M2NiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTA5ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpzYyBzaGVsbCBidWls
dGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvanNjLXJlYWQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6IHRlc3QgYHJl
YWRgIGFuZCBgcmVhZEZpbGVgIHNoZWxsIGJ1aWx0aW5zLCBpbiBzdHJpbmcgYW5kIGJpbmFyeSBt
b2RlLgorCiAyMDE2LTA5LTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlIHNob3VsZCBpbmxpbmUgb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4g
aW50byBKSVQgY29kZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgYi9K
U1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xYjMyMDRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQu
anMKQEAgLTAsMCArMSwzNiBAQAorKGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgLy8gUmVhZCB0aGlz
IHRlc3QgZmlsZSB1c2luZyBqc2Mgc2hlbGwncyBidWlsdGlucywgYW5kIGNoZWNrIHRoYXQgaXRz
IGNvbnRlbnQgaXMgYXMgZXhwZWN0ZWQuCisgICAgY29uc3QgaW5fZmlsZSA9ICdqc2MtcmVhZC5q
cyc7CisKKyAgICBjb25zdCBjaGVjayA9IGNvbnRlbnRfcmVhZCA9PiB7CisgICAgICAgIGxldCBl
eHBlY3QgPSAnKCcgKyB0ZXN0LnRvU3RyaW5nKCkgKyAnKSgpO1xuJzsKKyAgICAgICAgaWYgKGNv
bnRlbnRfcmVhZCAhPT0gZXhwZWN0KQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVk
IHRvIHJlYWQgdGhpcyBmaWxlIGFzLWlzLCBpbnN0ZWFkIHJlYWQ6XG49PT09PT09PT09XG4nICsg
Y29udGVudF9yZWFkICsgJ1xuPT09PT09PT09PScpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0
X2FycmF5YnVmZmVyID0gcmVhZF9mdW5jdGlvbiA9PiB7CisgICAgICAgIGxldCBmaWxlID0gcmVh
ZF9mdW5jdGlvbihpbl9maWxlLCAnYmluYXJ5Jyk7CisgICAgICAgIGlmICh0eXBlb2YgZmlsZS5i
dWZmZXIgIT09ICdvYmplY3QnIHx8IGZpbGUuYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGZp
bGUubGVuZ3RoID09PSB1bmRlZmluZWQgfHwgZmlsZS5CWVRFU19QRVJfRUxFTUVOVCAhPT0gMSB8
fCBmaWxlLmJ5dGVPZmZzZXQgIT09IDApCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0
ZWQgYSBVaW50OEFycmF5Jyk7CisgICAgICAgIGxldCBzdHIgPSAnJzsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgIT0gZmlsZS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHN0ciArPSBTdHJp
bmcuZnJvbUNoYXJDb2RlKGZpbGVbaV0pOyAgLy8gQXNzdW1lIEFTQ0lJLgorICAgICAgICBjaGVj
ayhzdHIpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0X3N0cmluZyA9IHJlYWRfZnVuY3Rpb24g
PT4geworICAgICAgICBsZXQgc3RyID0gcmVhZF9mdW5jdGlvbihpbl9maWxlKTsKKyAgICAgICAg
aWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4
cGVjdGVkIGEgc3RyaW5nJyk7CisgICAgICAgIGNoZWNrKHN0cik7CisgICAgfTsKKworICAgIC8v
IGpzYydzIG9yaWdpbmFsIGZpbGUgcmVhZGluZyBmdW5jdGlvbiBpcyBgcmVhZEZpbGVgLCB3aGVy
ZWFzIFNwaWRlck1vbmtleQorICAgIC8vIHNoZWxsJ3MgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlz
IGByZWFkYC4gVGhlIGxhdHRlciBpcyB1c2VkIGJ5CisgICAgLy8gZW1zY3JpcHRlbidzIHNoZWxs
LmpzIChkOCBjYWxscyBpdCBgcmVhZGJ1ZmZlcmAsIHdoaWNoIHNoZWxsLmpzCisgICAgLy8gcG9s
eWZpbGxzKS4KKyAgICB0ZXN0X2FycmF5YnVmZmVyKHJlYWRGaWxlKTsKKyAgICB0ZXN0X2FycmF5
YnVmZmVyKHJlYWQpOworICAgIHRlc3Rfc3RyaW5nKHJlYWRGaWxlKTsKKyAgICB0ZXN0X3N0cmlu
ZyhyZWFkKTsKK30pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBmMTJlYTJkLi4xYjNh
NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNi0wOS0w
NyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBq
c2Mgc2hlbGwgYnVpbHRpbiBgcmVhZGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBqc2Mgc2hlbGwgY3VycmVudGx5IHN1cHBvcnRzIGEgYHJlYWRG
aWxlYCBtZXRob2Qgd2hpY2ggcmV0dXJucworICAgICAgICBhIHN0cmluZy4gU3BpZGVyTW9ua2V5
J3MganMgc2hlbGwgYW5kIFY4J3MgZDggc2hlbGwgYm90aCBzdXBwb3J0CisgICAgICAgIHNpbWls
YXIgZmlsZS10by1zdHJpbmcgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIGEKKyAgICAgICAgYmluYXJ5
LWZpbGUtdG8tVWludDhBcnJheSBmdW5jdGlvbi4ganNjIHNob3VsZCBzdXBwb3J0IGEgc2ltaWxh
cgorICAgICAgICBiaW5hcnkgZmlsZSBtZXRob2QgdG8gc2ltcGxpZnkgdGVzdGluZywgaW5jbHVk
aW5nIHRlc3Rpbmcgb2YKKyAgICAgICAgV2ViQXNzZW1ibHkgYmxvYnMuCisKKyAgICAgICAgRW1z
Y3JpcHRlbidzIHNoZWxsLmpzICh3aGljaCBpcyBhbHNvIHVzZWQgZm9yIHNvbWUgV2ViQXNzZW1i
bHkKKyAgICAgICAgdGhpbmdzKSBoYXMgYSBwb2x5ZmlsbCBbMV0gZm9yIGEgYnVpbHRpbiBjYWxs
ZWQgYHJlYWRgLiBqc2Mgc2hvdWxkCisgICAgICAgIHRoZXJlZm9yZSBoYXZlIGEgYnVpbHRpbiB3
aXRoIHRoZSBzYW1lIG5hbWUgaWYgd2Ugd2FudCB0aGluZ3MgdG8KKyAgICAgICAgIkp1c3QgV29y
ayIuCisKKyAgICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlwa2VuL2Vtc2NyaXB0
ZW4vYmxvYi81ZjA5MTg0MDlhMTQwN2RkMTY4ZjU3Y2ZhMzRiMTA5Y2QxNzcwYThhL3NyYy9zaGVs
bC5qcyNMMTM4CisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbik6IGFkZCBgcmVhZGAsIG1ha2UgYHJlYWRGaWxlYCB0YWtlIHVwIHRvIDIg
YXJndW1lbnRzLgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6IHN1cHBvcnQgYmluYXJ5IGZp
bGVzLCBhcyBwZXIgU3BpZGVyTW9ua2V5LgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAg
ICAgICAgKEpTQzo6dGhyb3dWTUVycm9yKTogY29udmVuaWVuY2UgZnVuY3Rpb24sIEknbGwgYWRk
IG1vcmUgdXNlcyBpbiBhIGZvbGxvdy11cAorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5
cy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVpbnQ4VHlwZWRBcnJheSk6IEpTIHByaXZhdGUg
ZXhwb3J0IG9mIEpTVWludDhBcnJheTo6Y3JlYXRlLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
ZEFycmF5cy5oOiBleHBvc2UgcHJpdmF0ZSBleHBvcnQuCisKIDIwMTYtMDktMDkgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoTWFwSW1wbCBuZWVkcyB0byBt
X2J1ZmZlci5jbGVhcigpIGluIGl0cyBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRl
eCBhOTYyNTNhLi5jNWY4ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjIsNiArMjIsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVDcmVh
dG9yLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgpAQCAtNDgsNiArNDksNyBAQAog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiSlNXQVNN
TW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3Iu
aCIKQEAgLTgwMyw3ICs4MDUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAicnVuU3RyaW5nIiwgZnVuY3Rpb25SdW5TdHJpbmcsIDEpOwogICAgICAgICBhZGRGdW5jdGlv
bih2bSwgImxvYWQiLCBmdW5jdGlvbkxvYWQsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImxvYWRTdHJpbmciLCBmdW5jdGlvbkxvYWRTdHJpbmcsIDEpOwotICAgICAgICBhZGRGdW5jdGlv
bih2bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25SZWFkRmlsZSwgMSk7CisgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAicmVhZEZpbGUiLCBmdW5jdGlvblJlYWRGaWxlLCAyKTsKKyAgICAgICAgYWRkRnVu
Y3Rpb24odm0sICJyZWFkIiwgZnVuY3Rpb25SZWFkRmlsZSwgMik7CiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiY2hlY2tTeW50YXgiLCBmdW5jdGlvbkNoZWNrU3ludGF4LCAxKTsKICAgICAgICAg
YWRkRnVuY3Rpb24odm0sICJqc2NTdGFjayIsIGZ1bmN0aW9uSlNDU3RhY2ssIDEpOwogICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgInJlYWRsaW5lIiwgZnVuY3Rpb25SZWFkbGluZSwgMCk7CkBAIC0x
NTU1LDExICsxNTU4LDMxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
ZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwotICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50
c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHNjcmlwdCkpKTsKKyAgICBib29sIGlz
QmluYXJ5ID0gZmFsc2U7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDEpIHsKKyAg
ICAgICAgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKTsK
KyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgICAgIHJl
dHVybiBFbmNvZGVkSlNWYWx1ZSgpOworICAgICAgICBpZiAodHlwZSAhPSAiYmluYXJ5IikKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJFeHBlY3RlZCAnYmlu
YXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIik7CisgICAgICAgIGlzQmluYXJ5ID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBWZWN0b3I8Y2hhcj4gY29udGVudDsKKyAgICBpZiAoIWZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoZmlsZU5hbWUsIGNvbnRlbnQpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKTsKKworICAgIGlmICgh
aXNCaW5hcnkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
c3RyaW5nRnJvbVVURihjb250ZW50KSkpOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVHlwZVVpbnQ4
KTsKKyAgICBhdXRvIGxlbmd0aCA9IGNvbnRlbnQuc2l6ZSgpOworICAgIEpTT2JqZWN0KiByZXN1
bHQgPSBjcmVhdGVVaW50OFR5cGVkQXJyYXkoZXhlYywgc3RydWN0dXJlLCBBcnJheUJ1ZmZlcjo6
Y3JlYXRlRnJvbUJ5dGVzKGNvbnRlbnQucmVsZWFzZUJ1ZmZlcigpLmxlYWtQdHIoKSwgbGVuZ3Ro
LCBmYXN0RnJlZSksIDAsIGxlbmd0aCk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIEVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAppbmRleCA5ZGRkNWViLi4zNzJmODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgKQEAgLTgyLDYgKzgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiB0aHJv
d1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0
cmkKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNW
YWx1ZS4KIGlubGluZSB2b2lkIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2Nv
cGUmIHNjb3BlLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgZXhjZXB0aW9uKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7IH0K
K2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJv
d1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChlcnJvck1lc3NhZ2UpKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhy
b3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKSB7IHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsgfQogaW5saW5l
IEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJv
d1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5k
ZXggMjA2NGE2ZS4uYjg4ZDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5cy5jcHAKQEAgLTQ5LDUgKzQ5LDExIEBAIE1BS0VfU19JTkZPKFVpbnQz
Mik7CiBNQUtFX1NfSU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZPKEZsb2F0NjQpOwogCitKU1Vp
bnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFzc2VkQnVmZmVyLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIEpTVWludDhBcnJh
eTo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZl
cj4+KHBhc3NlZEJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eXMuaAppbmRleCA4N2UzZWFjLi5mYjQ3NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5cy5oCkBAIC00Miw2ICs0Miw4IEBAIHR5cGVkZWYgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8VWludDMyQWRhcHRvcj4gSlNVaW50MzJBcnJheTsKIHR5cGVkZWYg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8RmxvYXQzMkFkYXB0b3I+IEpTRmxvYXQzMkFycmF5Owog
dHlwZWRlZiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxGbG9hdDY0QWRhcHRvcj4gSlNGbG9hdDY0
QXJyYXk7CiAKK0pTX0VYUE9SVF9QUklWQVRFIEpTVWludDhBcnJheSogY3JlYXRlVWludDhUeXBl
ZEFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBKU1R5cGVkQXJyYXlzX2gKLS0gCjIuOS4zCgo=
</data>
<flag name="review"
          id="311778"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288634</attachid>
            <date>2016-09-12 16:29:00 -0700</date>
            <delta_ts>2016-09-12 16:35:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>10065</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0MDgyZmM4ZWI0ZWMwYjdkY2I0MmQ3YjM5YjA1N2JhYTAwZjZiMjY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgfCAzMyArKysrKysrKysr
KysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAg
ICAgICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlz
LmNwcCB8ICA2ICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlzLmggICB8ICAyICsrCiA3IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCA1IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpz
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCA3YmI4ZDhmLi5jMmM5MzIxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTA5ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpzYyBzaGVsbCBidWls
dGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvanNjLXJlYWQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6IHRlc3QgYHJl
YWRgIGFuZCBgcmVhZEZpbGVgIHNoZWxsIGJ1aWx0aW5zLCBpbiBzdHJpbmcgYW5kIGJpbmFyeSBt
b2RlLgorCiAyMDE2LTA5LTEyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0ZXN0cyBmb3IgZGlmZmVyZW50IGxpYm0gZW52
aXJvbm1lbnRzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2pzYy1yZWFkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjFiMzIwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9qc2MtcmVhZC5qcwpA
QCAtMCwwICsxLDM2IEBACisoZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAvLyBSZWFkIHRoaXMgdGVz
dCBmaWxlIHVzaW5nIGpzYyBzaGVsbCdzIGJ1aWx0aW5zLCBhbmQgY2hlY2sgdGhhdCBpdHMgY29u
dGVudCBpcyBhcyBleHBlY3RlZC4KKyAgICBjb25zdCBpbl9maWxlID0gJ2pzYy1yZWFkLmpzJzsK
KworICAgIGNvbnN0IGNoZWNrID0gY29udGVudF9yZWFkID0+IHsKKyAgICAgICAgbGV0IGV4cGVj
dCA9ICcoJyArIHRlc3QudG9TdHJpbmcoKSArICcpKCk7XG4nOworICAgICAgICBpZiAoY29udGVu
dF9yZWFkICE9PSBleHBlY3QpCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgdG8g
cmVhZCB0aGlzIGZpbGUgYXMtaXMsIGluc3RlYWQgcmVhZDpcbj09PT09PT09PT1cbicgKyBjb250
ZW50X3JlYWQgKyAnXG49PT09PT09PT09Jyk7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3RfYXJy
YXlidWZmZXIgPSByZWFkX2Z1bmN0aW9uID0+IHsKKyAgICAgICAgbGV0IGZpbGUgPSByZWFkX2Z1
bmN0aW9uKGluX2ZpbGUsICdiaW5hcnknKTsKKyAgICAgICAgaWYgKHR5cGVvZiBmaWxlLmJ1ZmZl
ciAhPT0gJ29iamVjdCcgfHwgZmlsZS5ieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgfHwgZmlsZS5s
ZW5ndGggPT09IHVuZGVmaW5lZCB8fCBmaWxlLkJZVEVTX1BFUl9FTEVNRU5UICE9PSAxIHx8IGZp
bGUuYnl0ZU9mZnNldCAhPT0gMCkKKyAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCBh
IFVpbnQ4QXJyYXknKTsKKyAgICAgICAgbGV0IHN0ciA9ICcnOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSAhPSBmaWxlLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc3RyICs9IFN0cmluZy5m
cm9tQ2hhckNvZGUoZmlsZVtpXSk7ICAvLyBBc3N1bWUgQVNDSUkuCisgICAgICAgIGNoZWNrKHN0
cik7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3Rfc3RyaW5nID0gcmVhZF9mdW5jdGlvbiA9PiB7
CisgICAgICAgIGxldCBzdHIgPSByZWFkX2Z1bmN0aW9uKGluX2ZpbGUpOworICAgICAgICBpZiAo
dHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0
ZWQgYSBzdHJpbmcnKTsKKyAgICAgICAgY2hlY2soc3RyKTsKKyAgICB9OworCisgICAgLy8ganNj
J3Mgb3JpZ2luYWwgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlzIGByZWFkRmlsZWAsIHdoZXJlYXMg
U3BpZGVyTW9ua2V5CisgICAgLy8gc2hlbGwncyBmaWxlIHJlYWRpbmcgZnVuY3Rpb24gaXMgYHJl
YWRgLiBUaGUgbGF0dGVyIGlzIHVzZWQgYnkKKyAgICAvLyBlbXNjcmlwdGVuJ3Mgc2hlbGwuanMg
KGQ4IGNhbGxzIGl0IGByZWFkYnVmZmVyYCwgd2hpY2ggc2hlbGwuanMKKyAgICAvLyBwb2x5Zmls
bHMpLgorICAgIHRlc3RfYXJyYXlidWZmZXIocmVhZEZpbGUpOworICAgIHRlc3RfYXJyYXlidWZm
ZXIocmVhZCk7CisgICAgdGVzdF9zdHJpbmcocmVhZEZpbGUpOworICAgIHRlc3Rfc3RyaW5nKHJl
YWQpOworfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZlOTVhZjIuLjAxMjZkZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA5LTA3ICBK
RiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpzYyBz
aGVsbCBidWlsdGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGpzYyBzaGVsbCBjdXJyZW50bHkgc3VwcG9ydHMgYSBgcmVhZEZpbGVg
IG1ldGhvZCB3aGljaCByZXR1cm5zCisgICAgICAgIGEgc3RyaW5nLiBTcGlkZXJNb25rZXkncyBq
cyBzaGVsbCBhbmQgVjgncyBkOCBzaGVsbCBib3RoIHN1cHBvcnQKKyAgICAgICAgc2ltaWxhciBm
aWxlLXRvLXN0cmluZyBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgYQorICAgICAgICBiaW5hcnktZmls
ZS10by1VaW50OEFycmF5IGZ1bmN0aW9uLiBqc2Mgc2hvdWxkIHN1cHBvcnQgYSBzaW1pbGFyCisg
ICAgICAgIGJpbmFyeSBmaWxlIG1ldGhvZCB0byBzaW1wbGlmeSB0ZXN0aW5nLCBpbmNsdWRpbmcg
dGVzdGluZyBvZgorICAgICAgICBXZWJBc3NlbWJseSBibG9icy4KKworICAgICAgICBFbXNjcmlw
dGVuJ3Mgc2hlbGwuanMgKHdoaWNoIGlzIGFsc28gdXNlZCBmb3Igc29tZSBXZWJBc3NlbWJseQor
ICAgICAgICB0aGluZ3MpIGhhcyBhIHBvbHlmaWxsIFsxXSBmb3IgYSBidWlsdGluIGNhbGxlZCBg
cmVhZGAuIGpzYyBzaG91bGQKKyAgICAgICAgdGhlcmVmb3JlIGhhdmUgYSBidWlsdGluIHdpdGgg
dGhlIHNhbWUgbmFtZSBpZiB3ZSB3YW50IHRoaW5ncyB0bworICAgICAgICAiSnVzdCBXb3JrIi4K
KworICAgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL2tyaXBrZW4vZW1zY3JpcHRlbi9i
bG9iLzVmMDkxODQwOWExNDA3ZGQxNjhmNTdjZmEzNGIxMDljZDE3NzBhOGEvc3JjL3NoZWxsLmpz
I0wxMzgKKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKTogYWRkIGByZWFkYCwgbWFrZSBgcmVhZEZpbGVgIHRha2UgdXAgdG8gMiBhcmd1
bWVudHMuCisgICAgICAgIChmdW5jdGlvblJlYWRGaWxlKTogc3VwcG9ydCBiaW5hcnkgZmlsZXMs
IGFzIHBlciBTcGlkZXJNb25rZXkuCisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAg
ICAoSlNDOjp0aHJvd1ZNRXJyb3IpOiBjb252ZW5pZW5jZSBmdW5jdGlvbiwgSSdsbCBhZGQgbW9y
ZSB1c2VzIGluIGEgZm9sbG93LXVwCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlzLmNw
cDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KTogSlMgcHJpdmF0ZSBleHBv
cnQgb2YgSlNVaW50OEFycmF5OjpjcmVhdGUuCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJy
YXlzLmg6IGV4cG9zZSBwcml2YXRlIGV4cG9ydC4KKwogMjAxNi0wOS0xMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgR2V0QXJyYXlM
ZW5ndGggZm9yIEpTQXJyYXkubGVuZ3RoIGV2ZW4gd2hlbiB0aGUgYXJyYXkgdHlwZSBpcyB1bmRl
Y2lkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOWI4Y2QzMy4uMTUwZjkzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisj
aW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIgogI2luY2x1ZGUgIkJ1dHRlcmZseUlu
bGluZXMuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBl
ZEFycmF5cy5oIgogI2luY2x1ZGUgIkpTV0FTTU1vZHVsZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0
YS5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCkBAIC04MDMsNyArODA1LDggQEAgcHJvdGVj
dGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJ1blN0cmluZyIsIGZ1bmN0aW9uUnVuU3Ry
aW5nLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2FkIiwgZnVuY3Rpb25Mb2FkLCAx
KTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2FkU3RyaW5nIiwgZnVuY3Rpb25Mb2FkU3Ry
aW5nLCAxKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkRmlsZSIsIGZ1bmN0aW9uUmVh
ZEZpbGUsIDEpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25S
ZWFkRmlsZSwgMik7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVhZCIsIGZ1bmN0aW9uUmVh
ZEZpbGUsIDIpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNoZWNrU3ludGF4IiwgZnVuY3Rp
b25DaGVja1N5bnRheCwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAianNjU3RhY2siLCBm
dW5jdGlvbkpTQ1N0YWNrLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkbGluZSIs
IGZ1bmN0aW9uUmVhZGxpbmUsIDApOwpAQCAtMTU1NSwxMSArMTU1OCwzMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKiBleGVjKQogICAg
IFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKLSAg
ICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkp
KTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3RyaW5nRnJv
bVVURihzY3JpcHQpKSk7CisgICAgYm9vbCBpc0JpbmFyeSA9IGZhbHNlOworICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPiAxKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gZXhlYy0+YXJn
dW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5l
eGNlcHRpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gRW5jb2RlZEpTVmFsdWUoKTsKKyAgICAg
ICAgaWYgKHR5cGUgIT0gImJpbmFyeSIpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIHNjb3BlLCAiRXhwZWN0ZWQgJ2JpbmFyeScgYXMgc2Vjb25kIGFyZ3VtZW50LiIpOwor
ICAgICAgICBpc0JpbmFyeSA9IHRydWU7CisgICAgfQorCisgICAgVmVjdG9yPGNoYXI+IGNvbnRl
bnQ7CisgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1lLCBjb250
ZW50KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgIkNvdWxkIG5v
dCBvcGVuIGZpbGUuIik7CisKKyAgICBpZiAoIWlzQmluYXJ5KQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ0Zyb21VVEYoY29udGVudCkpKTsKKwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT50
eXBlZEFycmF5U3RydWN0dXJlKFR5cGVVaW50OCk7CisgICAgYXV0byBsZW5ndGggPSBjb250ZW50
LnNpemUoKTsKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY3JlYXRlVWludDhUeXBlZEFycmF5KGV4
ZWMsIHN0cnVjdHVyZSwgQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhjb250ZW50LnJlbGVh
c2VCdWZmZXIoKS5sZWFrUHRyKCksIGxlbmd0aCwgW10gKHZvaWQqIHApIHsgZmFzdEZyZWUocCk7
IH0pLCAwLCBsZW5ndGgpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisg
ICAgICAgIHJldHVybiBFbmNvZGVkSlNWYWx1ZSgpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKaW5kZXggOWRkZDVlYi4uMzcyZjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCkBAIC04Miw2ICs4Miw3IEBAIGlubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVy
cm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpCiAvLyBD
b252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCiBp
bmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29w
ZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4
Y2VwdGlvbik7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBlcnJvcikpOyB9CitpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoZXJyb3JNZXNzYWdlKSkpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBl
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7IH0KIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCmluZGV4IDIwNjRh
NmUuLmI4OGQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZWRBcnJheXMuY3BwCkBAIC00OSw1ICs0OSwxMSBAQCBNQUtFX1NfSU5GTyhVaW50MzIpOwogTUFL
RV9TX0lORk8oRmxvYXQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDY0KTsKIAorSlNVaW50OEFycmF5
KiBjcmVhdGVVaW50OFR5cGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHBhc3NlZEJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBKU1VpbnQ4QXJyYXk6OmNyZWF0
ZShleGVjLCBzdHJ1Y3R1cmUsIHN0ZDo6Zm9yd2FyZDxSZWZQdHI8QXJyYXlCdWZmZXI+PihwYXNz
ZWRCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmgKaW5k
ZXggODdlM2VhYy4uZmI0NzYxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheXMuaApAQCAtNDIsNiArNDIsOCBAQCB0eXBlZGVmIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PFVpbnQzMkFkYXB0b3I+IEpTVWludDMyQXJyYXk7CiB0eXBlZGVmIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEZsb2F0MzJBZGFwdG9yPiBKU0Zsb2F0MzJBcnJheTsKIHR5cGVkZWYg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8RmxvYXQ2NEFkYXB0b3I+IEpTRmxvYXQ2NEFycmF5Owog
CitKU19FWFBPUlRfUFJJVkFURSBKU1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gSlNUeXBlZEFycmF5c19oCi0tIAoyLjkuMwoK
</data>
<flag name="commit-queue"
          id="311937"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288637</attachid>
            <date>2016-09-12 16:35:39 -0700</date>
            <delta_ts>2016-09-13 14:22:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>10061</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxZjUyZjY0YzhjMDdmMTM1OGYwYzA1ZDk0MmI1OTQwNDRhNGI2NmU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgfCAzMyArKysrKysrKysr
KysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAg
ICAgICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlz
LmNwcCB8ICA2ICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlzLmggICB8ICAyICsrCiA3IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCA1IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpz
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCA3YmI4ZDhmLi5hZWE4OTYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTEyICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpzYyBzaGVsbCBidWls
dGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAg
ICogc3RyZXNzL2pzYy1yZWFkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOiB0ZXN0IGByZWFk
YCBhbmQgYHJlYWRGaWxlYCBzaGVsbCBidWlsdGlucywgaW4gc3RyaW5nIGFuZCBiaW5hcnkgbW9k
ZS4KKwogMjAxNi0wOS0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBmaXggdGVzdHMgZm9yIGRpZmZlcmVudCBsaWJtIGVudmly
b25tZW50cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9qc2MtcmVhZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
YjMyMDRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMKQEAg
LTAsMCArMSwzNiBAQAorKGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgLy8gUmVhZCB0aGlzIHRlc3Qg
ZmlsZSB1c2luZyBqc2Mgc2hlbGwncyBidWlsdGlucywgYW5kIGNoZWNrIHRoYXQgaXRzIGNvbnRl
bnQgaXMgYXMgZXhwZWN0ZWQuCisgICAgY29uc3QgaW5fZmlsZSA9ICdqc2MtcmVhZC5qcyc7CisK
KyAgICBjb25zdCBjaGVjayA9IGNvbnRlbnRfcmVhZCA9PiB7CisgICAgICAgIGxldCBleHBlY3Qg
PSAnKCcgKyB0ZXN0LnRvU3RyaW5nKCkgKyAnKSgpO1xuJzsKKyAgICAgICAgaWYgKGNvbnRlbnRf
cmVhZCAhPT0gZXhwZWN0KQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRvIHJl
YWQgdGhpcyBmaWxlIGFzLWlzLCBpbnN0ZWFkIHJlYWQ6XG49PT09PT09PT09XG4nICsgY29udGVu
dF9yZWFkICsgJ1xuPT09PT09PT09PScpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0X2FycmF5
YnVmZmVyID0gcmVhZF9mdW5jdGlvbiA9PiB7CisgICAgICAgIGxldCBmaWxlID0gcmVhZF9mdW5j
dGlvbihpbl9maWxlLCAnYmluYXJ5Jyk7CisgICAgICAgIGlmICh0eXBlb2YgZmlsZS5idWZmZXIg
IT09ICdvYmplY3QnIHx8IGZpbGUuYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGZpbGUubGVu
Z3RoID09PSB1bmRlZmluZWQgfHwgZmlsZS5CWVRFU19QRVJfRUxFTUVOVCAhPT0gMSB8fCBmaWxl
LmJ5dGVPZmZzZXQgIT09IDApCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgYSBV
aW50OEFycmF5Jyk7CisgICAgICAgIGxldCBzdHIgPSAnJzsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgIT0gZmlsZS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJv
bUNoYXJDb2RlKGZpbGVbaV0pOyAgLy8gQXNzdW1lIEFTQ0lJLgorICAgICAgICBjaGVjayhzdHIp
OworICAgIH07CisKKyAgICBjb25zdCB0ZXN0X3N0cmluZyA9IHJlYWRfZnVuY3Rpb24gPT4gewor
ICAgICAgICBsZXQgc3RyID0gcmVhZF9mdW5jdGlvbihpbl9maWxlKTsKKyAgICAgICAgaWYgKHR5
cGVvZiBzdHIgIT09ICdzdHJpbmcnKQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVk
IGEgc3RyaW5nJyk7CisgICAgICAgIGNoZWNrKHN0cik7CisgICAgfTsKKworICAgIC8vIGpzYydz
IG9yaWdpbmFsIGZpbGUgcmVhZGluZyBmdW5jdGlvbiBpcyBgcmVhZEZpbGVgLCB3aGVyZWFzIFNw
aWRlck1vbmtleQorICAgIC8vIHNoZWxsJ3MgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlzIGByZWFk
YC4gVGhlIGxhdHRlciBpcyB1c2VkIGJ5CisgICAgLy8gZW1zY3JpcHRlbidzIHNoZWxsLmpzIChk
OCBjYWxscyBpdCBgcmVhZGJ1ZmZlcmAsIHdoaWNoIHNoZWxsLmpzCisgICAgLy8gcG9seWZpbGxz
KS4KKyAgICB0ZXN0X2FycmF5YnVmZmVyKHJlYWRGaWxlKTsKKyAgICB0ZXN0X2FycmF5YnVmZmVy
KHJlYWQpOworICAgIHRlc3Rfc3RyaW5nKHJlYWRGaWxlKTsKKyAgICB0ZXN0X3N0cmluZyhyZWFk
KTsKK30pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTk1YWYyLi5hN2JiY2EzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNi0wOS0xMiAgSkYg
QmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBqc2Mgc2hl
bGwgYnVpbHRpbiBgcmVhZGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKwor
ICAgICAgICBUaGUganNjIHNoZWxsIGN1cnJlbnRseSBzdXBwb3J0cyBhIGByZWFkRmlsZWAgbWV0
aG9kIHdoaWNoIHJldHVybnMKKyAgICAgICAgYSBzdHJpbmcuIFNwaWRlck1vbmtleSdzIGpzIHNo
ZWxsIGFuZCBWOCdzIGQ4IHNoZWxsIGJvdGggc3VwcG9ydAorICAgICAgICBzaW1pbGFyIGZpbGUt
dG8tc3RyaW5nIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyBhCisgICAgICAgIGJpbmFyeS1maWxlLXRv
LVVpbnQ4QXJyYXkgZnVuY3Rpb24uIGpzYyBzaG91bGQgc3VwcG9ydCBhIHNpbWlsYXIKKyAgICAg
ICAgYmluYXJ5IGZpbGUgbWV0aG9kIHRvIHNpbXBsaWZ5IHRlc3RpbmcsIGluY2x1ZGluZyB0ZXN0
aW5nIG9mCisgICAgICAgIFdlYkFzc2VtYmx5IGJsb2JzLgorCisgICAgICAgIEVtc2NyaXB0ZW4n
cyBzaGVsbC5qcyAod2hpY2ggaXMgYWxzbyB1c2VkIGZvciBzb21lIFdlYkFzc2VtYmx5CisgICAg
ICAgIHRoaW5ncykgaGFzIGEgcG9seWZpbGwgWzFdIGZvciBhIGJ1aWx0aW4gY2FsbGVkIGByZWFk
YC4ganNjIHNob3VsZAorICAgICAgICB0aGVyZWZvcmUgaGF2ZSBhIGJ1aWx0aW4gd2l0aCB0aGUg
c2FtZSBuYW1lIGlmIHdlIHdhbnQgdGhpbmdzIHRvCisgICAgICAgICJKdXN0IFdvcmsiLgorCisg
ICAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20va3JpcGtlbi9lbXNjcmlwdGVuL2Jsb2Iv
NWYwOTE4NDA5YTE0MDdkZDE2OGY1N2NmYTM0YjEwOWNkMTc3MGE4YS9zcmMvc2hlbGwuanMjTDEz
OAorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOiBhZGQgYHJlYWRgLCBtYWtlIGByZWFkRmlsZWAgdGFrZSB1cCB0byAyIGFyZ3VtZW50
cy4KKyAgICAgICAgKGZ1bmN0aW9uUmVhZEZpbGUpOiBzdXBwb3J0IGJpbmFyeSBmaWxlcywgYXMg
cGVyIFNwaWRlck1vbmtleS4KKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChK
U0M6OnRocm93Vk1FcnJvcik6IGNvbnZlbmllbmNlIGZ1bmN0aW9uLCBJJ2xsIGFkZCBtb3JlIHVz
ZXMgaW4gYSBmb2xsb3ctdXAKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVVaW50OFR5cGVkQXJyYXkpOiBKUyBwcml2YXRlIGV4cG9ydCBv
ZiBKU1VpbnQ4QXJyYXk6OmNyZWF0ZS4KKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheXMu
aDogZXhwb3NlIHByaXZhdGUgZXhwb3J0LgorCiAyMDE2LTA5LTEyICBCZW5qYW1pbiBQb3VsYWlu
ICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBHZXRBcnJheUxlbmd0
aCBmb3IgSlNBcnJheS5sZW5ndGggZXZlbiB3aGVuIHRoZSBhcnJheSB0eXBlIGlzIHVuZGVjaWRl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5YjhjZDMzLi4xNTBmOTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNs
dWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5l
cy5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRl
ICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJy
YXlzLmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKQEAgLTgwMyw3ICs4MDUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicnVuU3RyaW5nIiwgZnVuY3Rpb25SdW5TdHJpbmcs
IDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWQiLCBmdW5jdGlvbkxvYWQsIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWRTdHJpbmciLCBmdW5jdGlvbkxvYWRTdHJpbmcs
IDEpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25SZWFkRmls
ZSwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVhZEZpbGUiLCBmdW5jdGlvblJlYWRG
aWxlLCAyKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkIiwgZnVuY3Rpb25SZWFkRmls
ZSwgMik7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2hlY2tTeW50YXgiLCBmdW5jdGlvbkNo
ZWNrU3ludGF4LCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJqc2NTdGFjayIsIGZ1bmN0
aW9uSlNDU3RhY2ssIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRsaW5lIiwgZnVu
Y3Rpb25SZWFkbGluZSwgMCk7CkBAIC0xNTU1LDExICsxNTU4LDMxIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwotICAgIGlm
ICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRG
KHNjcmlwdCkpKTsKKyAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7CisgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA+IDEpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVu
dCgxKS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBFbmNvZGVkSlNWYWx1ZSgpOworICAgICAgICBp
ZiAodHlwZSAhPSAiYmluYXJ5IikKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
Yywgc2NvcGUsICJFeHBlY3RlZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIik7CisgICAg
ICAgIGlzQmluYXJ5ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hhcj4gY29udGVudDsK
KyAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIGNvbnRlbnQp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iKTsKKworICAgIGlmICghaXNCaW5hcnkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihjb250ZW50KSkpOworCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnR5cGVk
QXJyYXlTdHJ1Y3R1cmUoVHlwZVVpbnQ4KTsKKyAgICBhdXRvIGxlbmd0aCA9IGNvbnRlbnQuc2l6
ZSgpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjcmVhdGVVaW50OFR5cGVkQXJyYXkoZXhlYywg
c3RydWN0dXJlLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnRlbnQucmVsZWFzZUJ1
ZmZlcigpLmxlYWtQdHIoKSwgbGVuZ3RoLCBbXSAodm9pZCogcCkgeyBmYXN0RnJlZShwKTsgfSks
IDAsIGxlbmd0aCk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIEVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVj
a1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAppbmRleCA5ZGRkNWViLi4zNzJmODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKQEAgLTgyLDYgKzgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3Io
RXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmkKIC8vIENvbnZl
bmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KIGlubGlu
ZSB2b2lkIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBF
eGNlcHRpb24qIGV4Y2VwdGlvbikgeyB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0
aW9uKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7IH0KK2lubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChl
cnJvck1lc3NhZ2UpKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsgfQogaW5saW5lIEVuY29kZWRKU1Zh
bHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwg
QVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRK
U1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggMjA2NGE2ZS4u
Yjg4ZDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5cy5jcHAKQEAgLTQ5LDUgKzQ5LDExIEBAIE1BS0VfU19JTkZPKFVpbnQzMik7CiBNQUtFX1Nf
SU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZPKEZsb2F0NjQpOwogCitKU1VpbnQ4QXJyYXkqIGNy
ZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFzc2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIEpTVWludDhBcnJheTo6Y3JlYXRlKGV4
ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KHBhc3NlZEJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuaAppbmRleCA4
N2UzZWFjLi5mYjQ3NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlZEFycmF5cy5oCkBAIC00Miw2ICs0Miw4IEBAIHR5cGVkZWYgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8VWludDMyQWRhcHRvcj4gSlNVaW50MzJBcnJheTsKIHR5cGVkZWYgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8RmxvYXQzMkFkYXB0b3I+IEpTRmxvYXQzMkFycmF5OwogdHlwZWRlZiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxGbG9hdDY0QWRhcHRvcj4gSlNGbG9hdDY0QXJyYXk7CiAKK0pT
X0VYUE9SVF9QUklWQVRFIEpTVWludDhBcnJheSogY3JlYXRlVWludDhUeXBlZEFycmF5KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBKU1R5cGVkQXJyYXlzX2gKLS0gCjIuOS4zCgo=
</data>
<flag name="review"
          id="311940"
          type_id="1"
          status="-"
          setter="commit-queue"
    />
    <flag name="commit-queue"
          id="311941"
          type_id="3"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288727</attachid>
            <date>2016-09-13 14:22:24 -0700</date>
            <delta_ts>2016-09-13 14:55:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-read.patch</filename>
            <type>text/plain</type>
            <size>10061</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxZjUyZjY0YzhjMDdmMTM1OGYwYzA1ZDk0MmI1OTQwNDRhNGI2NmU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDYgU2VwIDIwMTYgMTc6NDc6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSByZWFkCgot
LS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAg
KysrKysrKwogSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgICAgICAgICAgICAgICAgICAgICAg
fCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgfCAzMyArKysrKysrKysr
KysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAg
ICAgICAgfCAgMSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlz
LmNwcCB8ICA2ICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlzLmggICB8ICAyICsrCiA3IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCA1IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL2pzYy1yZWFkLmpz
CgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCA3YmI4ZDhmLi5hZWE4OTYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA5LTEyICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGpzYyBzaGVsbCBidWls
dGluIGByZWFkYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYxNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAg
ICogc3RyZXNzL2pzYy1yZWFkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOiB0ZXN0IGByZWFk
YCBhbmQgYHJlYWRGaWxlYCBzaGVsbCBidWlsdGlucywgaW4gc3RyaW5nIGFuZCBiaW5hcnkgbW9k
ZS4KKwogMjAxNi0wOS0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBmaXggdGVzdHMgZm9yIGRpZmZlcmVudCBsaWJtIGVudmly
b25tZW50cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9qc2MtcmVhZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
YjMyMDRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvanNjLXJlYWQuanMKQEAg
LTAsMCArMSwzNiBAQAorKGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgLy8gUmVhZCB0aGlzIHRlc3Qg
ZmlsZSB1c2luZyBqc2Mgc2hlbGwncyBidWlsdGlucywgYW5kIGNoZWNrIHRoYXQgaXRzIGNvbnRl
bnQgaXMgYXMgZXhwZWN0ZWQuCisgICAgY29uc3QgaW5fZmlsZSA9ICdqc2MtcmVhZC5qcyc7CisK
KyAgICBjb25zdCBjaGVjayA9IGNvbnRlbnRfcmVhZCA9PiB7CisgICAgICAgIGxldCBleHBlY3Qg
PSAnKCcgKyB0ZXN0LnRvU3RyaW5nKCkgKyAnKSgpO1xuJzsKKyAgICAgICAgaWYgKGNvbnRlbnRf
cmVhZCAhPT0gZXhwZWN0KQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRvIHJl
YWQgdGhpcyBmaWxlIGFzLWlzLCBpbnN0ZWFkIHJlYWQ6XG49PT09PT09PT09XG4nICsgY29udGVu
dF9yZWFkICsgJ1xuPT09PT09PT09PScpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0X2FycmF5
YnVmZmVyID0gcmVhZF9mdW5jdGlvbiA9PiB7CisgICAgICAgIGxldCBmaWxlID0gcmVhZF9mdW5j
dGlvbihpbl9maWxlLCAnYmluYXJ5Jyk7CisgICAgICAgIGlmICh0eXBlb2YgZmlsZS5idWZmZXIg
IT09ICdvYmplY3QnIHx8IGZpbGUuYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGZpbGUubGVu
Z3RoID09PSB1bmRlZmluZWQgfHwgZmlsZS5CWVRFU19QRVJfRUxFTUVOVCAhPT0gMSB8fCBmaWxl
LmJ5dGVPZmZzZXQgIT09IDApCisgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgYSBV
aW50OEFycmF5Jyk7CisgICAgICAgIGxldCBzdHIgPSAnJzsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgIT0gZmlsZS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJv
bUNoYXJDb2RlKGZpbGVbaV0pOyAgLy8gQXNzdW1lIEFTQ0lJLgorICAgICAgICBjaGVjayhzdHIp
OworICAgIH07CisKKyAgICBjb25zdCB0ZXN0X3N0cmluZyA9IHJlYWRfZnVuY3Rpb24gPT4gewor
ICAgICAgICBsZXQgc3RyID0gcmVhZF9mdW5jdGlvbihpbl9maWxlKTsKKyAgICAgICAgaWYgKHR5
cGVvZiBzdHIgIT09ICdzdHJpbmcnKQorICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVk
IGEgc3RyaW5nJyk7CisgICAgICAgIGNoZWNrKHN0cik7CisgICAgfTsKKworICAgIC8vIGpzYydz
IG9yaWdpbmFsIGZpbGUgcmVhZGluZyBmdW5jdGlvbiBpcyBgcmVhZEZpbGVgLCB3aGVyZWFzIFNw
aWRlck1vbmtleQorICAgIC8vIHNoZWxsJ3MgZmlsZSByZWFkaW5nIGZ1bmN0aW9uIGlzIGByZWFk
YC4gVGhlIGxhdHRlciBpcyB1c2VkIGJ5CisgICAgLy8gZW1zY3JpcHRlbidzIHNoZWxsLmpzIChk
OCBjYWxscyBpdCBgcmVhZGJ1ZmZlcmAsIHdoaWNoIHNoZWxsLmpzCisgICAgLy8gcG9seWZpbGxz
KS4KKyAgICB0ZXN0X2FycmF5YnVmZmVyKHJlYWRGaWxlKTsKKyAgICB0ZXN0X2FycmF5YnVmZmVy
KHJlYWQpOworICAgIHRlc3Rfc3RyaW5nKHJlYWRGaWxlKTsKKyAgICB0ZXN0X3N0cmluZyhyZWFk
KTsKK30pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTk1YWYyLi5hN2JiY2EzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNi0wOS0xMiAgSkYg
QmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBqc2Mgc2hl
bGwgYnVpbHRpbiBgcmVhZGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTY2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKwor
ICAgICAgICBUaGUganNjIHNoZWxsIGN1cnJlbnRseSBzdXBwb3J0cyBhIGByZWFkRmlsZWAgbWV0
aG9kIHdoaWNoIHJldHVybnMKKyAgICAgICAgYSBzdHJpbmcuIFNwaWRlck1vbmtleSdzIGpzIHNo
ZWxsIGFuZCBWOCdzIGQ4IHNoZWxsIGJvdGggc3VwcG9ydAorICAgICAgICBzaW1pbGFyIGZpbGUt
dG8tc3RyaW5nIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyBhCisgICAgICAgIGJpbmFyeS1maWxlLXRv
LVVpbnQ4QXJyYXkgZnVuY3Rpb24uIGpzYyBzaG91bGQgc3VwcG9ydCBhIHNpbWlsYXIKKyAgICAg
ICAgYmluYXJ5IGZpbGUgbWV0aG9kIHRvIHNpbXBsaWZ5IHRlc3RpbmcsIGluY2x1ZGluZyB0ZXN0
aW5nIG9mCisgICAgICAgIFdlYkFzc2VtYmx5IGJsb2JzLgorCisgICAgICAgIEVtc2NyaXB0ZW4n
cyBzaGVsbC5qcyAod2hpY2ggaXMgYWxzbyB1c2VkIGZvciBzb21lIFdlYkFzc2VtYmx5CisgICAg
ICAgIHRoaW5ncykgaGFzIGEgcG9seWZpbGwgWzFdIGZvciBhIGJ1aWx0aW4gY2FsbGVkIGByZWFk
YC4ganNjIHNob3VsZAorICAgICAgICB0aGVyZWZvcmUgaGF2ZSBhIGJ1aWx0aW4gd2l0aCB0aGUg
c2FtZSBuYW1lIGlmIHdlIHdhbnQgdGhpbmdzIHRvCisgICAgICAgICJKdXN0IFdvcmsiLgorCisg
ICAgICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20va3JpcGtlbi9lbXNjcmlwdGVuL2Jsb2Iv
NWYwOTE4NDA5YTE0MDdkZDE2OGY1N2NmYTM0YjEwOWNkMTc3MGE4YS9zcmMvc2hlbGwuanMjTDEz
OAorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOiBhZGQgYHJlYWRgLCBtYWtlIGByZWFkRmlsZWAgdGFrZSB1cCB0byAyIGFyZ3VtZW50
cy4KKyAgICAgICAgKGZ1bmN0aW9uUmVhZEZpbGUpOiBzdXBwb3J0IGJpbmFyeSBmaWxlcywgYXMg
cGVyIFNwaWRlck1vbmtleS4KKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChK
U0M6OnRocm93Vk1FcnJvcik6IGNvbnZlbmllbmNlIGZ1bmN0aW9uLCBJJ2xsIGFkZCBtb3JlIHVz
ZXMgaW4gYSBmb2xsb3ctdXAKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVVaW50OFR5cGVkQXJyYXkpOiBKUyBwcml2YXRlIGV4cG9ydCBv
ZiBKU1VpbnQ4QXJyYXk6OmNyZWF0ZS4KKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheXMu
aDogZXhwb3NlIHByaXZhdGUgZXhwb3J0LgorCiAyMDE2LTA5LTEyICBCZW5qYW1pbiBQb3VsYWlu
ICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBHZXRBcnJheUxlbmd0
aCBmb3IgSlNBcnJheS5sZW5ndGggZXZlbiB3aGVuIHRoZSBhcnJheSB0eXBlIGlzIHVuZGVjaWRl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA5YjhjZDMzLi4xNTBmOTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNs
dWRlICJBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmgiCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5l
cy5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRl
ICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJy
YXlzLmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKQEAgLTgwMyw3ICs4MDUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicnVuU3RyaW5nIiwgZnVuY3Rpb25SdW5TdHJpbmcs
IDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWQiLCBmdW5jdGlvbkxvYWQsIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWRTdHJpbmciLCBmdW5jdGlvbkxvYWRTdHJpbmcs
IDEpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25SZWFkRmls
ZSwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVhZEZpbGUiLCBmdW5jdGlvblJlYWRG
aWxlLCAyKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWFkIiwgZnVuY3Rpb25SZWFkRmls
ZSwgMik7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2hlY2tTeW50YXgiLCBmdW5jdGlvbkNo
ZWNrU3ludGF4LCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJqc2NTdGFjayIsIGZ1bmN0
aW9uSlNDU3RhY2ssIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRsaW5lIiwgZnVu
Y3Rpb25SZWFkbGluZSwgMCk7CkBAIC0xNTU1LDExICsxNTU4LDMxIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwotICAgIGlm
ICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwog
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRG
KHNjcmlwdCkpKTsKKyAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7CisgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA+IDEpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVu
dCgxKS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBFbmNvZGVkSlNWYWx1ZSgpOworICAgICAgICBp
ZiAodHlwZSAhPSAiYmluYXJ5IikKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
Yywgc2NvcGUsICJFeHBlY3RlZCAnYmluYXJ5JyBhcyBzZWNvbmQgYXJndW1lbnQuIik7CisgICAg
ICAgIGlzQmluYXJ5ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hhcj4gY29udGVudDsK
KyAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIGNvbnRlbnQp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iKTsKKworICAgIGlmICghaXNCaW5hcnkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihjb250ZW50KSkpOworCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnR5cGVk
QXJyYXlTdHJ1Y3R1cmUoVHlwZVVpbnQ4KTsKKyAgICBhdXRvIGxlbmd0aCA9IGNvbnRlbnQuc2l6
ZSgpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjcmVhdGVVaW50OFR5cGVkQXJyYXkoZXhlYywg
c3RydWN0dXJlLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNvbnRlbnQucmVsZWFzZUJ1
ZmZlcigpLmxlYWtQdHIoKSwgbGVuZ3RoLCBbXSAodm9pZCogcCkgeyBmYXN0RnJlZShwKTsgfSks
IDAsIGxlbmd0aCk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIEVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVj
a1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAppbmRleCA5ZGRkNWViLi4zNzJmODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmgKQEAgLTgyLDYgKzgyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3Io
RXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmkKIC8vIENvbnZl
bmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KIGlubGlu
ZSB2b2lkIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBF
eGNlcHRpb24qIGV4Y2VwdGlvbikgeyB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0
aW9uKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7IH0KK2lubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChl
cnJvck1lc3NhZ2UpKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsgfQogaW5saW5lIEVuY29kZWRKU1Zh
bHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwg
QVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRK
U1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggMjA2NGE2ZS4u
Yjg4ZDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5cy5jcHAKQEAgLTQ5LDUgKzQ5LDExIEBAIE1BS0VfU19JTkZPKFVpbnQzMik7CiBNQUtFX1Nf
SU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZPKEZsb2F0NjQpOwogCitKU1VpbnQ4QXJyYXkqIGNy
ZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFzc2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIEpTVWludDhBcnJheTo6Y3JlYXRlKGV4
ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KHBhc3NlZEJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuaAppbmRleCA4
N2UzZWFjLi5mYjQ3NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlZEFycmF5cy5oCkBAIC00Miw2ICs0Miw4IEBAIHR5cGVkZWYgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8VWludDMyQWRhcHRvcj4gSlNVaW50MzJBcnJheTsKIHR5cGVkZWYgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8RmxvYXQzMkFkYXB0b3I+IEpTRmxvYXQzMkFycmF5OwogdHlwZWRlZiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxGbG9hdDY0QWRhcHRvcj4gSlNGbG9hdDY0QXJyYXk7CiAKK0pT
X0VYUE9SVF9QUklWQVRFIEpTVWludDhBcnJheSogY3JlYXRlVWludDhUeXBlZEFycmF5KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBKU1R5cGVkQXJyYXlzX2gKLS0gCjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>