<?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>192714</bug_id>
          
          <creation_ts>2018-12-14 13:29:40 -0800</creation_ts>
          <short_desc>Unify SharedMemory factory functions</short_desc>
          <delta_ts>2018-12-16 14:29:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>167941</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488030</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-14 13:29:40 -0800</bug_when>
    <thetext>Currently, the following factory functions are available:

- SharedMemory::create(uint8_t*, size_t, Protection), used directly
  in NetworkCache::Data::tryCreateSharedMemory(), and in the content
  extensions code to obtain a SharedMemory object to pass to other
  processes from a mapped file. The latter is only used in the Cocoa
  port.
 
- SharedMemory::wrapMap(uint8_t*, size_t, int), used only in the libsoup
  implementation of NetworkCache::Data::tryCreateSharedMemory(). This
  takes a mmap address+size and its file descriptor, and the intention
  is the same as Cocoa&apos;s ::create, but here being called ::wrapMap
  (which is incoherent).

- SharedMemory::adopt(HANDLE, size_t, Protection) for the Windows
  implementation is used internally in SharedMemoryWin.cpp but
  nowhere else, and the intention seems to be different from the
  two previous ones: in this case it takes a file handle, and
  memory-maps it (instead of taking an *existing* map). This
  should be private.

I would like to propose picking the same name for the first two
cases, and IMHO the name ::wrapMap() better indicates the intention.
Also, I want to make the functions private: the only use is inside
NetworkCache::Data::tryCreateSharedMemory(), so that could be marked
as “friend”; and the usage of ::create() in the content extensions
converted to a call to ::tryCreateSharedMemory().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488036</commentid>
    <comment_count>1</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-14 13:34:48 -0800</bug_when>
    <thetext>One more note: in case it&apos;s not clear, the intention is
to NOT have a SharedMemory::create() because it&apos;s ambiguous:

- Does it allocate and create a SharedMemory object? No, that
  is what ::allocate() does!

- Does it create only a SharedMemory object wrapping something
  else? It depends! (Yes on Cocoa, no on Unix).

Not having ::allocate() means that what will be left is either
::allocate() (and the intention is clear) or ::wrapMap() (for
which the intention is always clear).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488046</commentid>
    <comment_count>2</comment_count>
      <attachid>357339</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-14 13:43:06 -0800</bug_when>
    <thetext>Created attachment 357339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488053</commentid>
    <comment_count>3</comment_count>
      <attachid>357342</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-14 14:12:33 -0800</bug_when>
    <thetext>Created attachment 357342
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488055</commentid>
    <comment_count>4</comment_count>
      <attachid>357342</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-12-14 14:19:42 -0800</bug_when>
    <thetext>Comment on attachment 357342
Patch v2

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

Windows side looks fine to me just wondering about using mmap directly instead of the stuff in WTF. I know on Windows we hit stuff like WebAssembly using mmap directly instead of abstractions over that so we never bothered to turn it on.

&gt; Source/WebKit/Platform/unix/SharedMemoryUnix.cpp:166
&gt; +    void* data = mmap(nullptr, size, accessModeMMap(SharedMemory::Protection::ReadWrite), MAP_SHARED, fileDescriptor, 0);

Should we ever be using mmap directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488142</commentid>
    <comment_count>5</comment_count>
      <attachid>357342</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-14 17:31:33 -0800</bug_when>
    <thetext>Comment on attachment 357342
Patch v2

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

&gt; Source/WebKit/Platform/SharedMemory.h:57
&gt; +};

Please don’t include that semicolon. See &lt;https://trac.webkit.org/changeset/239017&gt; for example.

&gt; Source/WebKit/Platform/SharedMemory.h:146
&gt; +    // NetworkCache::Data::tryCreateSharedMemory() is the only function
&gt; +    // the ::wrapMap(), so mark it as friend and keep the factory private,
&gt; +    // to make sure it is not used accidentally by any other code.

Grammar error here: &quot;is the only function the ::wrapMap()&quot;.

&gt;&gt; Source/WebKit/Platform/unix/SharedMemoryUnix.cpp:166
&gt;&gt; +    void* data = mmap(nullptr, size, accessModeMMap(SharedMemory::Protection::ReadWrite), MAP_SHARED, fileDescriptor, 0);
&gt; 
&gt; Should we ever be using mmap directly?

If we do stick with mmap, then I think it’s peculiar to write accessModeMMap(SharedMemory::Protection::ReadWrite) instead of just writing PROT_READ | PROT_WRITE. Also, I think that likely we don’t need the accessModeMMap function any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488147</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-14 17:40:01 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #0)
&gt; Also, I want to make the functions private: the only use is inside
&gt; NetworkCache::Data::tryCreateSharedMemory(), so that could be marked
&gt; as “friend”; and the usage of ::create() in the content extensions
&gt; converted to a call to ::tryCreateSharedMemory().

Why does this make sense? It seems OK to have public functions that are only used in a singular location, especially since in the future they could be useful elsewhere. At least, that seems nicer than friend, especially since the classes are not closely-related here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488150</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-14 17:42:24 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #4)
&gt; Should we ever be using mmap directly?

How else to do shared memory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488153</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-14 17:43:38 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; It seems OK to have public functions that are only
&gt; used in a singular location, especially since in the future they could be
&gt; useful elsewhere. At least, that seems nicer than friend, especially since
&gt; the classes are not closely-related here.

Good point. I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488154</commentid>
    <comment_count>9</comment_count>
      <attachid>357342</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-14 17:43:41 -0800</bug_when>
    <thetext>Comment on attachment 357342
Patch v2

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

&gt; Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp:373
&gt; +    auto sharedMemory = fileData.tryCreateSharedMemory();
&gt; +    ASSERT(sharedMemory);

Why is this ASSERT OK? You have to be certain that fileData.tryCreateSharedMemory() will never fail, but the name of the function starts with &quot;try&quot; so this is suspicious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488279</commentid>
    <comment_count>10</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-15 04:55:54 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; (In reply to Michael Catanzaro from comment #6)
&gt; &gt; It seems OK to have public functions that are only
&gt; &gt; used in a singular location, especially since in the future they could be
&gt; &gt; useful elsewhere. At least, that seems nicer than friend, especially since
&gt; &gt; the classes are not closely-related here.
&gt; 
&gt; Good point. I agree.

My initial idea with this was to avoid shooting ourselves on the
foot and thinking twice before using the factory functions -- the
direct usage of SharedMemory::create() while working on #167941
took me quite some time to figure out, because on Linux it would
create a new memory area instead of wrapping the existing file
memory map.

With this patch addressing the naming of the functions and making
it consistent across platforms probably the point for making the
factory functions private is weaker, so let&apos;s just leave them
public :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488280</commentid>
    <comment_count>11</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-15 05:01:23 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #7)
&gt; (In reply to Don Olmstead from comment #4)
&gt; &gt; Should we ever be using mmap directly?
&gt; 
&gt; How else to do shared memory?

It looks to me that one of the reasons for having the SharedMemory
wrapper objects is that then one can write IPC encoders and a decoders
which operate on the SharedMemory type, instead of having to manually
handle the set of &lt;address, size, flags&gt; indidivually each time one
wants to send a shared memory buffer around. This is currently used
in a few places (NetworkCache, for example).

(Of course, for data which will not be send cross processes, one can
use mmap directly, which I think can be part of the reason why JSC
does so.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488281</commentid>
    <comment_count>12</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-15 05:06:35 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; Comment on attachment 357342 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357342&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIContentRuleListStore.cpp:373
&gt; &gt; +    auto sharedMemory = fileData.tryCreateSharedMemory();
&gt; &gt; +    ASSERT(sharedMemory);
&gt; 
&gt; Why is this ASSERT OK? You have to be certain that
&gt; fileData.tryCreateSharedMemory() will never fail, but the name of the
&gt; function starts with &quot;try&quot; so this is suspicious.

Content extensions are always saved to disk in compiled form before
they are mmap&apos;d and then sent to the WebProcess and NetworkProcess.
Which means there is always a file which was previously mmap&apos;d backing
the NetworkCache::Data object, and ::tryCreateSharedMemory() cannot
fail in that case, because the check it does is:

  RefPtr&lt;SharedMemory&gt; Data::tryCreateSharedMemory() const
  {
      if (isNull() || !isMap())
          return nullptr;
                                                                                 
      return SharedMemory::wrapMap(const_cast&lt;char*&gt;(m_buffer-&gt;data), m_buffer-&gt;length, m_fileDescriptor);
  }

We should always have file-mapping, non-null NetworkCache::Data object
here, so the first check cannot fail, and the SharedData::wrapMap()
cannot fail either.

I will add a comment about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488361</commentid>
    <comment_count>13</comment_count>
      <attachid>357418</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-16 10:07:16 -0800</bug_when>
    <thetext>Created attachment 357418
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488362</commentid>
    <comment_count>14</comment_count>
      <attachid>357418</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-16 11:13:56 -0800</bug_when>
    <thetext>Comment on attachment 357418
Patch v3

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

&gt; Source/WebKit/Platform/win/SharedMemoryWin.cpp:135
&gt; +    HANDLE handle = ::CreateFileMappingW(INVALID_HANDLE_VALUE, 0, protectAttribute(SharedMemory::Protection::ReadWrite), 0, size, 0);

Similar comment to the one I made earlier for the Unix code. This should say PAGE_READWRITE, not protectAttribute(SharedMemory::Protection::ReadWrite).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488363</commentid>
    <comment_count>15</comment_count>
      <attachid>357418</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-16 11:39:45 -0800</bug_when>
    <thetext>Comment on attachment 357418
Patch v3

Clearing flags on attachment: 357418

Committed r239260: &lt;https://trac.webkit.org/changeset/239260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488364</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-16 11:39:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488365</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-16 11:40:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/46762407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488367</commentid>
    <comment_count>18</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-16 12:23:14 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; Comment on attachment 357418 [details]
&gt; Patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357418&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Platform/win/SharedMemoryWin.cpp:135
&gt; &gt; +    HANDLE handle = ::CreateFileMappingW(INVALID_HANDLE_VALUE, 0, protectAttribute(SharedMemory::Protection::ReadWrite), 0, size, 0);
&gt; 
&gt; Similar comment to the one I made earlier for the Unix code. This should say
&gt; PAGE_READWRITE, not protectAttribute(SharedMemory::Protection::ReadWrite).

I post a follow-up patch with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488368</commentid>
    <comment_count>19</comment_count>
      <attachid>357419</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-16 12:39:05 -0800</bug_when>
    <thetext>Created attachment 357419
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488369</commentid>
    <comment_count>20</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-16 12:42:52 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #19)
&gt; Created attachment 357419 [details]
&gt; Patch for landing

As I don&apos;t have a Windows box around, I&apos;ll let the EWS go over
the patch before landing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488373</commentid>
    <comment_count>21</comment_count>
      <attachid>357419</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-16 14:29:20 -0800</bug_when>
    <thetext>Comment on attachment 357419
Patch for landing

Clearing flags on attachment: 357419

Committed r239261: &lt;https://trac.webkit.org/changeset/239261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488374</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-16 14:29:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357339</attachid>
            <date>2018-12-14 13:43:06 -0800</date>
            <delta_ts>2018-12-14 14:12:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192714-20181215014134.patch</filename>
            <type>text/plain</type>
            <size>8892</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmU1MjBiODU5MTA0OGE3
YzE5ZjczY2YxYWQ0NzkxNDA4ODEwZjEuLjYzYzM4OGM3ZDEwNzhhYTVjYmMzMWVmYWM2YzVlMmNl
M2NjNWQyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMTItMTQgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBVbmlmeSBTaGFy
ZWRNZW1vcnkgZmFjdG9yeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MjcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgdW5pZmllcyBTaGFyZWRNZW1vcnkgc28gaW4gdGhlIGZv
bGxvd2luZyB3YXksIGFjcm9zcyBwbGF0Zm9ybXM6CisKKyAgICAgICAgLSBTaGFyZWRNZW1vcnk6
OmNyZWF0ZSgpIGlzIHJlbW92ZWQsIHRvIGF2b2lkIGFtYmlndWl0eS4KKyAgICAgICAgLSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKCkgYWx3YXlzIGFsbG9jYXRlcyBhIG5ldyBibG9jayBvZiBzaGFy
ZWQgbWVtb3J5LgorICAgICAgICAtIFNoYXJlZE1lbW9yeTo6d3JhcE1hcCgpIGFsd2F5cyBjcmVh
dGVzIGEgU2hhcmVkTWVtb3J5IG9iamVjdCB3aGljaCByZWZlcnMgdG8gYW4KKyAgICAgICAgICBl
eGlzdGluZyByZWdpb24gb2YgbWVtb3J5IHJlc3VsdGluZyBmcm9tIG1lbW9yeS1tYXBwaW5nIGEg
ZmlsZS4gVGhpcyBpcyBub3cKKyAgICAgICAgICBwcml2YXRlIGFuZCBjYW4gYmUgb25seSB1c2Vk
IGZyb20gTmV0d29ya0NhY2hlOjpEYXRhLgorCisgICAgICAgIFRoZSBwbGF0Zm9ybS1zcGVjaWZp
YyAoV2luZG93cykgU2hhcmVkTWVtb3J5OjphZG9wdCgpLCB3aGljaCBpcyB1c2VkIGludGVybmFs
bHkKKyAgICAgICAgb25seSwgaXMgbWFya2VkIGFzIHByaXZhdGUuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6dHJ5Q3JlYXRlU2hhcmVkTWVtb3J5IGNvbnN0KTogVXNl
IFNoYXJlZE1lbW9yeTo6d3JhcE1hcCgpLgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oOiBNYWtlIFNoYXJlZE1lbW9yeTo6YWRvcHQoKSBwcml2YXRlLCByZW1vdmUgdGhlIGRlZmlu
aXRpb24gb2YKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGUoKSwgYW5kIG1ha2UgU2hhcmVk
TWVtb3J5Ojp3cmFwTWFwKCkgcHJpdmF0ZS4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRNZW1vcnlDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6d3JhcE1h
cCk6IFJlbmFtZWQgZnJvbSA6OmNyZWF0ZSgpLgorICAgICAgICAqIFBsYXRmb3JtL3VuaXgvU2hh
cmVkTWVtb3J5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2Nh
dGUpOiBSZW5hbWVkIGZyb20gOjpjcmVhdGUoKS4KKyAgICAgICAgKiBQbGF0Zm9ybS93aW4vU2hh
cmVkTWVtb3J5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0
ZSk6IFJlbmFtZWQgZnJvbSA6OmNyZWF0ZSgpCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmNyZWF0ZUV4dGVuc2lvbik6
IFVzZSBOZXR3b3JrQ2FjaGU6OkRhdGE6OnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpIGluc3RlYWQg
b2YKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGUoKS4KKwogMjAxOC0xMi0xNCAgQWRyaWFu
IFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBV
bnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjM5MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCmlu
ZGV4IGM4MWY4NThhYTBhMjM1ZThkNjg5ODVkMWU3OWY3OTFlZjMxMTg4OTkuLjZhMzlmODg3MDA4
Nzk0NDNkNjY5ZjNiMjlhMDNiMjhlYWFmNjUyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCkBA
IC0xMDgsNyArMTA4LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gRGF0YTo6dHJ5Q3JlYXRlU2hh
cmVkTWVtb3J5KCkgY29uc3QKICAgICBpZiAoaXNOdWxsKCkgfHwgIWlzTWFwKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGRhdGEoKSksIG1fc2l6ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0
PHVpbnQ4X3QqPihkYXRhKCkpLCBtX3NpemUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCAz
ZWFkYjE1ZjcyYTI1NDcyYzdiNTYwNTc3ZjkyNGU4N2IyZGY1MDY1Li4wMjViMzAxYjBkYTAzYzk2
Y2Q3ZTY4N2Y1ZTg2YTZmZjkwYjFhOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKQEAgLTUyLDYgKzUyLDEwIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCituYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKK2NsYXNzIERhdGE7Cit9Owor
CiBjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRNZW1vcnk+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFByb3RlY3Rpb24gewpAQCAtOTAsMTQgKzk0LDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2Nh
dGUoc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKHZvaWQq
LCBzaXplX3QsIFByb3RlY3Rpb24pOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBt
YXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7Ci0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVf
dCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKLSNlbmRpZgotI2lmIE9TKFdJTkRPV1MpCi0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFkb3B0KEhBTkRMRSwgc2l6ZV90LCBQcm90ZWN0aW9u
KTsKLSNlbmRpZgogCiAgICAgflNoYXJlZE1lbW9yeSgpOwogCkBAIC0xMjAsNiArMTE3LDEzIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQogICAgIFdURjo6TWFjaFNlbmRSaWdo
dCBjcmVhdGVTZW5kUmlnaHQoUHJvdGVjdGlvbikgY29uc3Q7CisgICAgc3RhdGljIFJlZlByZTxT
aGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgUHJvdGVjdGlvbik7CisjZW5kaWYK
KyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOworI2VuZGlm
CisjaWYgT1MoV0lORE9XUykKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWRvcHQo
SEFORExFLCBzaXplX3QsIFByb3RlY3Rpb24pOwogI2VuZGlmCiAKICAgICBzaXplX3QgbV9zaXpl
OwpAQCAtMTM2LDYgKzE0MCwxMSBAQCBwcml2YXRlOgogI2VsaWYgT1MoV0lORE9XUykKICAgICBI
QU5ETEUgbV9oYW5kbGU7CiAjZW5kaWYKKworICAgIC8vIE5ldHdvcmtDYWNoZTo6RGF0YTo6dHJ5
Q3JlYXRlU2hhcmVkTWVtb3J5KCkgaXMgdGhlIG9ubHkgZnVuY3Rpb24KKyAgICAvLyB0aGUgOjp3
cmFwTWFwKCksIHNvIG1hcmsgaXQgYXMgZnJpZW5kIGFuZCBrZWVwIHRoZSBmYWN0b3J5IHByaXZh
dGUsCisgICAgLy8gdG8gbWFrZSBzdXJlIGl0IGlzIG5vdCB1c2VkIGFjY2lkZW50YWxseSBieSBh
bnkgb3RoZXIgY29kZS4KKyAgICBmcmllbmQgY2xhc3MgTmV0d29ya0NhY2hlOjpEYXRhOwogfTsK
IAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVt
b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlD
b2NvYS5jcHAKaW5kZXggMzYzYWQzMmE3MGFjNDBjMjhmNDBmNzY5MmE3NzVjNzMwMzNiN2RhMC4u
ZTAyODg5MTI1ZjI0ZmE2NjZmYWUxYmJkYmNlNjNiYTAyODQyNTEzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBzdGF0aWMgV1RGOjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXpl
X3Qgc2l6ZSwgdm1fb2Zmc2V0X3Qgb2Zmc2V0LCBTaGFyZQogICAgIHJldHVybiBXVEY6Ok1hY2hT
ZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOwogfQogCi1SZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRN
ZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKHZvaWQqIGRh
dGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJUKHNp
emUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5p
eC5jcHAKaW5kZXggNTIwZTc5NzU5OTJlZDlkZWU0OGEwNTc3ZTBhYjI5NTBkOTRkYzVlZC4uYzA5
Yjc0YTNiNmMxZDI2N2UxN2JlN2JmOWYyOTkyOTJjNGFmZGQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHN0YXRpYyBpbnQgY3JlYXRlU2hhcmVkTWVtb3J5KCkKICAgICByZXR1cm4gZmlsZURlc2Ny
aXB0b3I7CiB9CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZv
aWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCitSZWZQdHI8
U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogewogICAg
IGludCBmaWxlRGVzY3JpcHRvciA9IGNyZWF0ZVNoYXJlZE1lbW9yeSgpOwogICAgIGlmIChmaWxl
RGVzY3JpcHRvciA9PSAtMSkgewpAQCAtMTYzLDcgKzE2Myw3IEBAIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90
ZWN0aW9uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkKiBkYXRhID0gbW1hcChhZGRyZXNz
LCBzaXplLCBhY2Nlc3NNb2RlTU1hcChwcm90ZWN0aW9uKSwgTUFQX1NIQVJFRCwgZmlsZURlc2Ny
aXB0b3IsIDApOworICAgIHZvaWQqIGRhdGEgPSBtbWFwKG51bGxwdHIsIHNpemUsIGFjY2Vzc01v
ZGVNTWFwKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSwgTUFQX1NIQVJFRCwg
ZmlsZURlc2NyaXB0b3IsIDApOwogICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKICAgICAg
ICAgY2xvc2VXaXRoUmV0cnkoZmlsZURlc2NyaXB0b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE3NiwxMSArMTc2LDYgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjpjcmVhdGUodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24KICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUoc2l6ZV90IHNpemUpCi17Ci0gICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6Y3JlYXRlKG51
bGxwdHIsIHNpemUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKLX0KLQog
UmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjptYXAoY29uc3QgSGFuZGxlJiBoYW5k
bGUsIFByb3RlY3Rpb24gcHJvdGVjdGlvbikKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5pc051bGwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcApp
bmRleCAyZDMyYzMzMTNjZDQzMmZhZGJkN2M0Njc2ZmEwNzUyZDUwZThlZTI5Li42MWRmMTlhMjU5
MDZlOTRiZTI1OTE2MmI3ZDZlOGJkMzJkMTNjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKQEAgLTEzMiwxNiArMTMyLDExIEBAIHN0YXRp
YyBEV09SRCBwcm90ZWN0QXR0cmlidXRlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQogCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVf
dCBzaXplKQogewotICAgIHJldHVybiBTaGFyZWRNZW1vcnk6OmNyZWF0ZShudWxscHRyLCBzaXpl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7Ci19Ci0KLVJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXpl
LCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCi17Ci0gICAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRl
RmlsZU1hcHBpbmdXKElOVkFMSURfSEFORExFX1ZBTFVFLCAwLCBwcm90ZWN0QXR0cmlidXRlKHBy
b3RlY3Rpb24pLCAwLCBzaXplLCAwKTsKKyAgICBIQU5ETEUgaGFuZGxlID0gOjpDcmVhdGVGaWxl
TWFwcGluZ1coSU5WQUxJRF9IQU5ETEVfVkFMVUUsIDAsIHByb3RlY3RBdHRyaWJ1dGUoU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpLCAwLCBzaXplLCAwKTsKICAgICBpZiAoIWhh
bmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB2b2lkKiBiYXNlQWRkcmVzcyA9
IDo6TWFwVmlld09mRmlsZUV4KGhhbmRsZSwgRklMRV9NQVBfQUxMX0FDQ0VTUywgMCwgMCwgc2l6
ZSwgYWRkcmVzcyk7CisgICAgdm9pZCogYmFzZUFkZHJlc3MgPSA6Ok1hcFZpZXdPZkZpbGVFeCho
YW5kbGUsIEZJTEVfTUFQX0FMTF9BQ0NFU1MsIDAsIDAsIHNpemUsIG51bGxwdHIpOwogICAgIGlm
ICghYmFzZUFkZHJlc3MpIHsKICAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGUpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDA3NzhjZDY2YmFiOGQ4YzE1NzFj
MDc4NjU4YWIzYjg1MjMxNjIwMGIuLjRlOTFmZGE5MThjY2JiNzZjMTMyNGY4ZTFhOTlkODJkNDQ1
OWFjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMzY5LDcgKzM2OSw4IEBAIHN0YXRpYyBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoV1RGOjpTdHJpbmcmJiBqc29uLCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVuCiAKIHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUV4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQ29udGVudFJ1bGVMaXN0
TWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZmls
ZURhdGEpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGNvbnN0X2Nhc3Q8dWludDhfdCo+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNp
emUoKSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeSA9IGZpbGVEYXRhLnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpOworICAg
IEFTU0VSVChzaGFyZWRNZW1vcnkpOwogICAgIGNvbnN0IHNpemVfdCBoZWFkZXJBbmRTb3VyY2VT
aXplID0gQ29udGVudFJ1bGVMaXN0RmlsZUhlYWRlclNpemUgKyBtZXRhRGF0YS5zb3VyY2VTaXpl
OwogICAgIGF1dG8gY29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhID0gV2ViS2l0OjpXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGEoCiAgICAgICAgIFdURk1vdmUoc2hhcmVkTWVtb3J5KSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357342</attachid>
            <date>2018-12-14 14:12:33 -0800</date>
            <delta_ts>2018-12-16 10:07:12 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-192714-20181215021101.patch</filename>
            <type>text/plain</type>
            <size>8892</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmU1MjBiODU5MTA0OGE3
YzE5ZjczY2YxYWQ0NzkxNDA4ODEwZjEuLjYzYzM4OGM3ZDEwNzhhYTVjYmMzMWVmYWM2YzVlMmNl
M2NjNWQyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMTItMTQgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBVbmlmeSBTaGFy
ZWRNZW1vcnkgZmFjdG9yeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MjcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgdW5pZmllcyBTaGFyZWRNZW1vcnkgc28gaW4gdGhlIGZv
bGxvd2luZyB3YXksIGFjcm9zcyBwbGF0Zm9ybXM6CisKKyAgICAgICAgLSBTaGFyZWRNZW1vcnk6
OmNyZWF0ZSgpIGlzIHJlbW92ZWQsIHRvIGF2b2lkIGFtYmlndWl0eS4KKyAgICAgICAgLSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKCkgYWx3YXlzIGFsbG9jYXRlcyBhIG5ldyBibG9jayBvZiBzaGFy
ZWQgbWVtb3J5LgorICAgICAgICAtIFNoYXJlZE1lbW9yeTo6d3JhcE1hcCgpIGFsd2F5cyBjcmVh
dGVzIGEgU2hhcmVkTWVtb3J5IG9iamVjdCB3aGljaCByZWZlcnMgdG8gYW4KKyAgICAgICAgICBl
eGlzdGluZyByZWdpb24gb2YgbWVtb3J5IHJlc3VsdGluZyBmcm9tIG1lbW9yeS1tYXBwaW5nIGEg
ZmlsZS4gVGhpcyBpcyBub3cKKyAgICAgICAgICBwcml2YXRlIGFuZCBjYW4gYmUgb25seSB1c2Vk
IGZyb20gTmV0d29ya0NhY2hlOjpEYXRhLgorCisgICAgICAgIFRoZSBwbGF0Zm9ybS1zcGVjaWZp
YyAoV2luZG93cykgU2hhcmVkTWVtb3J5OjphZG9wdCgpLCB3aGljaCBpcyB1c2VkIGludGVybmFs
bHkKKyAgICAgICAgb25seSwgaXMgbWFya2VkIGFzIHByaXZhdGUuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6dHJ5Q3JlYXRlU2hhcmVkTWVtb3J5IGNvbnN0KTogVXNl
IFNoYXJlZE1lbW9yeTo6d3JhcE1hcCgpLgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oOiBNYWtlIFNoYXJlZE1lbW9yeTo6YWRvcHQoKSBwcml2YXRlLCByZW1vdmUgdGhlIGRlZmlu
aXRpb24gb2YKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGUoKSwgYW5kIG1ha2UgU2hhcmVk
TWVtb3J5Ojp3cmFwTWFwKCkgcHJpdmF0ZS4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRNZW1vcnlDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6d3JhcE1h
cCk6IFJlbmFtZWQgZnJvbSA6OmNyZWF0ZSgpLgorICAgICAgICAqIFBsYXRmb3JtL3VuaXgvU2hh
cmVkTWVtb3J5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2Nh
dGUpOiBSZW5hbWVkIGZyb20gOjpjcmVhdGUoKS4KKyAgICAgICAgKiBQbGF0Zm9ybS93aW4vU2hh
cmVkTWVtb3J5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0
ZSk6IFJlbmFtZWQgZnJvbSA6OmNyZWF0ZSgpCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmNyZWF0ZUV4dGVuc2lvbik6
IFVzZSBOZXR3b3JrQ2FjaGU6OkRhdGE6OnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpIGluc3RlYWQg
b2YKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGUoKS4KKwogMjAxOC0xMi0xNCAgQWRyaWFu
IFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBV
bnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMjM5MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCmlu
ZGV4IGM4MWY4NThhYTBhMjM1ZThkNjg5ODVkMWU3OWY3OTFlZjMxMTg4OTkuLjZhMzlmODg3MDA4
Nzk0NDNkNjY5ZjNiMjlhMDNiMjhlYWFmNjUyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCkBA
IC0xMDgsNyArMTA4LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gRGF0YTo6dHJ5Q3JlYXRlU2hh
cmVkTWVtb3J5KCkgY29uc3QKICAgICBpZiAoaXNOdWxsKCkgfHwgIWlzTWFwKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGRhdGEoKSksIG1fc2l6ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0
PHVpbnQ4X3QqPihkYXRhKCkpLCBtX3NpemUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCAz
ZWFkYjE1ZjcyYTI1NDcyYzdiNTYwNTc3ZjkyNGU4N2IyZGY1MDY1Li5kZDNhZGNkNGRkY2ZlY2Rm
NDliNWRjZTY3ODdlNzI4NWMyNWQzODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKQEAgLTUyLDYgKzUyLDEwIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCituYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKK2NsYXNzIERhdGE7Cit9Owor
CiBjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRNZW1vcnk+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFByb3RlY3Rpb24gewpAQCAtOTAsMTQgKzk0LDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2Nh
dGUoc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKHZvaWQq
LCBzaXplX3QsIFByb3RlY3Rpb24pOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBt
YXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7Ci0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVf
dCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKLSNlbmRpZgotI2lmIE9TKFdJTkRPV1MpCi0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFkb3B0KEhBTkRMRSwgc2l6ZV90LCBQcm90ZWN0aW9u
KTsKLSNlbmRpZgogCiAgICAgflNoYXJlZE1lbW9yeSgpOwogCkBAIC0xMjAsNiArMTE3LDEzIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQogICAgIFdURjo6TWFjaFNlbmRSaWdo
dCBjcmVhdGVTZW5kUmlnaHQoUHJvdGVjdGlvbikgY29uc3Q7CisgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgUHJvdGVjdGlvbik7CisjZW5kaWYK
KyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOworI2VuZGlm
CisjaWYgT1MoV0lORE9XUykKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWRvcHQo
SEFORExFLCBzaXplX3QsIFByb3RlY3Rpb24pOwogI2VuZGlmCiAKICAgICBzaXplX3QgbV9zaXpl
OwpAQCAtMTM2LDYgKzE0MCwxMSBAQCBwcml2YXRlOgogI2VsaWYgT1MoV0lORE9XUykKICAgICBI
QU5ETEUgbV9oYW5kbGU7CiAjZW5kaWYKKworICAgIC8vIE5ldHdvcmtDYWNoZTo6RGF0YTo6dHJ5
Q3JlYXRlU2hhcmVkTWVtb3J5KCkgaXMgdGhlIG9ubHkgZnVuY3Rpb24KKyAgICAvLyB0aGUgOjp3
cmFwTWFwKCksIHNvIG1hcmsgaXQgYXMgZnJpZW5kIGFuZCBrZWVwIHRoZSBmYWN0b3J5IHByaXZh
dGUsCisgICAgLy8gdG8gbWFrZSBzdXJlIGl0IGlzIG5vdCB1c2VkIGFjY2lkZW50YWxseSBieSBh
bnkgb3RoZXIgY29kZS4KKyAgICBmcmllbmQgY2xhc3MgTmV0d29ya0NhY2hlOjpEYXRhOwogfTsK
IAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVt
b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlD
b2NvYS5jcHAKaW5kZXggMzYzYWQzMmE3MGFjNDBjMjhmNDBmNzY5MmE3NzVjNzMwMzNiN2RhMC4u
ZTAyODg5MTI1ZjI0ZmE2NjZmYWUxYmJkYmNlNjNiYTAyODQyNTEzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBzdGF0aWMgV1RGOjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXpl
X3Qgc2l6ZSwgdm1fb2Zmc2V0X3Qgb2Zmc2V0LCBTaGFyZQogICAgIHJldHVybiBXVEY6Ok1hY2hT
ZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOwogfQogCi1SZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRN
ZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKHZvaWQqIGRh
dGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJUKHNp
emUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5p
eC5jcHAKaW5kZXggNTIwZTc5NzU5OTJlZDlkZWU0OGEwNTc3ZTBhYjI5NTBkOTRkYzVlZC4uYzA5
Yjc0YTNiNmMxZDI2N2UxN2JlN2JmOWYyOTkyOTJjNGFmZGQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHN0YXRpYyBpbnQgY3JlYXRlU2hhcmVkTWVtb3J5KCkKICAgICByZXR1cm4gZmlsZURlc2Ny
aXB0b3I7CiB9CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZv
aWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCitSZWZQdHI8
U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogewogICAg
IGludCBmaWxlRGVzY3JpcHRvciA9IGNyZWF0ZVNoYXJlZE1lbW9yeSgpOwogICAgIGlmIChmaWxl
RGVzY3JpcHRvciA9PSAtMSkgewpAQCAtMTYzLDcgKzE2Myw3IEBAIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCBQcm90
ZWN0aW9uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkKiBkYXRhID0gbW1hcChhZGRyZXNz
LCBzaXplLCBhY2Nlc3NNb2RlTU1hcChwcm90ZWN0aW9uKSwgTUFQX1NIQVJFRCwgZmlsZURlc2Ny
aXB0b3IsIDApOworICAgIHZvaWQqIGRhdGEgPSBtbWFwKG51bGxwdHIsIHNpemUsIGFjY2Vzc01v
ZGVNTWFwKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSwgTUFQX1NIQVJFRCwg
ZmlsZURlc2NyaXB0b3IsIDApOwogICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKICAgICAg
ICAgY2xvc2VXaXRoUmV0cnkoZmlsZURlc2NyaXB0b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE3NiwxMSArMTc2LDYgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjpjcmVhdGUodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24KICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUoc2l6ZV90IHNpemUpCi17Ci0gICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6Y3JlYXRlKG51
bGxwdHIsIHNpemUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKLX0KLQog
UmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjptYXAoY29uc3QgSGFuZGxlJiBoYW5k
bGUsIFByb3RlY3Rpb24gcHJvdGVjdGlvbikKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5pc051bGwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcApp
bmRleCAyZDMyYzMzMTNjZDQzMmZhZGJkN2M0Njc2ZmEwNzUyZDUwZThlZTI5Li42MWRmMTlhMjU5
MDZlOTRiZTI1OTE2MmI3ZDZlOGJkMzJkMTNjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKQEAgLTEzMiwxNiArMTMyLDExIEBAIHN0YXRp
YyBEV09SRCBwcm90ZWN0QXR0cmlidXRlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQogCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVf
dCBzaXplKQogewotICAgIHJldHVybiBTaGFyZWRNZW1vcnk6OmNyZWF0ZShudWxscHRyLCBzaXpl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7Ci19Ci0KLVJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXpl
LCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCi17Ci0gICAgSEFORExFIGhhbmRsZSA9IDo6Q3JlYXRl
RmlsZU1hcHBpbmdXKElOVkFMSURfSEFORExFX1ZBTFVFLCAwLCBwcm90ZWN0QXR0cmlidXRlKHBy
b3RlY3Rpb24pLCAwLCBzaXplLCAwKTsKKyAgICBIQU5ETEUgaGFuZGxlID0gOjpDcmVhdGVGaWxl
TWFwcGluZ1coSU5WQUxJRF9IQU5ETEVfVkFMVUUsIDAsIHByb3RlY3RBdHRyaWJ1dGUoU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpLCAwLCBzaXplLCAwKTsKICAgICBpZiAoIWhh
bmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB2b2lkKiBiYXNlQWRkcmVzcyA9
IDo6TWFwVmlld09mRmlsZUV4KGhhbmRsZSwgRklMRV9NQVBfQUxMX0FDQ0VTUywgMCwgMCwgc2l6
ZSwgYWRkcmVzcyk7CisgICAgdm9pZCogYmFzZUFkZHJlc3MgPSA6Ok1hcFZpZXdPZkZpbGVFeCho
YW5kbGUsIEZJTEVfTUFQX0FMTF9BQ0NFU1MsIDAsIDAsIHNpemUsIG51bGxwdHIpOwogICAgIGlm
ICghYmFzZUFkZHJlc3MpIHsKICAgICAgICAgOjpDbG9zZUhhbmRsZShoYW5kbGUpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDA3NzhjZDY2YmFiOGQ4YzE1NzFj
MDc4NjU4YWIzYjg1MjMxNjIwMGIuLjRlOTFmZGE5MThjY2JiNzZjMTMyNGY4ZTFhOTlkODJkNDQ1
OWFjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMzY5LDcgKzM2OSw4IEBAIHN0YXRpYyBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoV1RGOjpTdHJpbmcmJiBqc29uLCBWZWN0b3I8V2ViQ29y
ZTo6Q29udGVuCiAKIHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUV4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQ29udGVudFJ1bGVMaXN0
TWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZmls
ZURhdGEpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGNvbnN0X2Nhc3Q8dWludDhfdCo+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNp
emUoKSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeSA9IGZpbGVEYXRhLnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpOworICAg
IEFTU0VSVChzaGFyZWRNZW1vcnkpOwogICAgIGNvbnN0IHNpemVfdCBoZWFkZXJBbmRTb3VyY2VT
aXplID0gQ29udGVudFJ1bGVMaXN0RmlsZUhlYWRlclNpemUgKyBtZXRhRGF0YS5zb3VyY2VTaXpl
OwogICAgIGF1dG8gY29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhID0gV2ViS2l0OjpXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGEoCiAgICAgICAgIFdURk1vdmUoc2hhcmVkTWVtb3J5KSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357418</attachid>
            <date>2018-12-16 10:07:16 -0800</date>
            <delta_ts>2018-12-16 12:39:40 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-192714-20181216220544.patch</filename>
            <type>text/plain</type>
            <size>7766</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwZDc0NTRkZmJjMzNjNzdm
YjRjMmU3MDFjN2NkZjhiMjg2NTIxNDAuLjZmYjEyNTU3YjZhMjU3NWY5NWExMjY3NDFjYTE1MTMw
YTQ5NGNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMTItMTYgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBVbmlmeSBTaGFy
ZWRNZW1vcnkgZmFjdG9yeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MjcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgdW5pZmllcyBTaGFyZWRNZW1vcnkgc28gaW4gdGhlIGZv
bGxvd2luZyB3YXksIGFjcm9zcyBwbGF0Zm9ybXM6CisKKyAgICAgICAgLSBTaGFyZWRNZW1vcnk6
OmNyZWF0ZSgpIGlzIHJlbW92ZWQsIHRvIGF2b2lkIGFtYmlndWl0eS4KKyAgICAgICAgLSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKCkgYWx3YXlzIGFsbG9jYXRlcyBhIG5ldyBibG9jayBvZiBzaGFy
ZWQgbWVtb3J5LgorICAgICAgICAtIFNoYXJlZE1lbW9yeTo6d3JhcE1hcCgpIGFsd2F5cyBjcmVh
dGVzIGEgU2hhcmVkTWVtb3J5IG9iamVjdCB3aGljaCByZWZlcnMgdG8gYW4KKyAgICAgICAgICBl
eGlzdGluZyByZWdpb24gb2YgbWVtb3J5IHJlc3VsdGluZyBmcm9tIG1lbW9yeS1tYXBwaW5nIGEg
ZmlsZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjp0cnlDcmVhdGVT
aGFyZWRNZW1vcnkgY29uc3QpOiBVc2UgU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKCkuCisgICAgICAg
ICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6IFJlbW92ZSB0aGUgZGVmaW5pdGlvbiBvZiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZSgpLCBhbmQgbWFrZQorICAgICAgICBTaGFyZWRNZW1vcnk6OndyYXBN
YXAoKSBhdmFpbGFibGUgb24gT1MoREFSV0lOKSBhcyB3ZWxsLgorICAgICAgICAqIFBsYXRmb3Jt
L2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVt
b3J5Ojp3cmFwTWFwKTogUmVuYW1lZCBmcm9tIDo6Y3JlYXRlKCkuCisgICAgICAgICogUGxhdGZv
cm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVt
b3J5OjphbGxvY2F0ZSk6IFJlbmFtZWQgZnJvbSA6OmNyZWF0ZSgpLgorICAgICAgICAqIFBsYXRm
b3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKTogUmVuYW1lZCBmcm9tIDo6Y3JlYXRlKCkKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Y3JlYXRl
RXh0ZW5zaW9uKTogVXNlIE5ldHdvcmtDYWNoZTo6RGF0YTo6dHJ5Q3JlYXRlU2hhcmVkTWVtb3J5
KCkgaW5zdGVhZCBvZgorICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZSgpLgorCiAyMDE4LTEy
LTE0ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1NPVVBdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyMzkyMTkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
Q29jb2EubW0KaW5kZXggYzgxZjg1OGFhMGEyMzVlOGQ2ODk4NWQxZTc5Zjc5MWVmMzExODg5OS4u
NmEzOWY4ODcwMDg3OTQ0M2Q2NjlmM2IyOWEwM2IyOGVhYWY2NTIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
Q29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBEYXRhOjp0
cnlDcmVhdGVTaGFyZWRNZW1vcnkoKSBjb25zdAogICAgIGlmIChpc051bGwoKSB8fCAhaXNNYXAo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkTWVtb3J5Ojpj
cmVhdGUoY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YSgpKSwgbV9zaXplLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICByZXR1cm4gU2hhcmVkTWVtb3J5Ojp3cmFwTWFw
KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEoKSksIG1fc2l6ZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IDNlYWRiMTVmNzJhMjU0NzJjN2I1NjA1NzdmOTI0ZTg3YjJkZjUwNjUuLjFkYzVh
ZmNmZGFlZDRjMmFjYTA2YmZiNDM3NGViZmM2NjUzZjhkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtOTQsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
d3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOworI2VsaWYgT1MoREFS
V0lOKQorICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXpl
X3QsIFByb3RlY3Rpb24pOwogI2VuZGlmCiAjaWYgT1MoV0lORE9XUykKICAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gYWRvcHQoSEFORExFLCBzaXplX3QsIFByb3RlY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApp
bmRleCAzNjNhZDMyYTcwYWM0MGMyOGY0MGY3NjkyYTc3NWM3MzAzM2I3ZGEwLi5lMDI4ODkxMjVm
MjRmYTY2NmZhZTFiYmRiY2U2M2JhMDI4NDI1MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBA
IHN0YXRpYyBXVEY6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNpemVfdCBzaXplLCB2
bV9vZmZzZXRfdCBvZmZzZXQsIFNoYXJlCiAgICAgcmV0dXJuIFdURjo6TWFjaFNlbmRSaWdodDo6
YWRvcHQocG9ydCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCitSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OndyYXBNYXAodm9pZCogZGF0YSwgc2l6ZV90
IHNpemUsIFByb3RlY3Rpb24gcHJvdGVjdGlvbikKIHsKICAgICBBU1NFUlQoc2l6ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRl
eCA1MjBlNzk3NTk5MmVkOWRlZTQ4YTA1NzdlMGFiMjk1MGQ5NGRjNWVkLi45ZDVjOGRiZDJmYmM1
NjJkYTBjZjUzNjVmMjJiZTUwODZkYTZlMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGlj
IGludCBjcmVhdGVTaGFyZWRNZW1vcnkoKQogICAgIHJldHVybiBmaWxlRGVzY3JpcHRvcjsKIH0K
IAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjpjcmVhdGUodm9pZCogYWRkcmVz
cywgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24gcHJvdGVjdGlvbikKK1JlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCiB7CiAgICAgaW50IGZpbGVE
ZXNjcmlwdG9yID0gY3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKGZpbGVEZXNjcmlwdG9y
ID09IC0xKSB7CkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5OjpjcmVhdGUodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24KICAg
ICAgICAgfQogICAgIH0KIAotICAgIHZvaWQqIGRhdGEgPSBtbWFwKGFkZHJlc3MsIHNpemUsIGFj
Y2Vzc01vZGVNTWFwKHByb3RlY3Rpb24pLCBNQVBfU0hBUkVELCBmaWxlRGVzY3JpcHRvciwgMCk7
CisgICAgdm9pZCogZGF0YSA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9X
UklURSwgTUFQX1NIQVJFRCwgZmlsZURlc2NyaXB0b3IsIDApOwogICAgIGlmIChkYXRhID09IE1B
UF9GQUlMRUQpIHsKICAgICAgICAgY2xvc2VXaXRoUmV0cnkoZmlsZURlc2NyaXB0b3IpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3NiwxMSArMTc2LDYgQEAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5OjpjcmVhdGUodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIFBy
b3RlY3Rpb24KICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+
IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCi17Ci0gICAgcmV0dXJuIFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlKG51bGxwdHIsIHNpemUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKTsKLX0KLQogUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjptYXAo
Y29uc3QgSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24gcHJvdGVjdGlvbikKIHsKICAgICBBU1NF
UlQoIWhhbmRsZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hh
cmVkTWVtb3J5V2luLmNwcAppbmRleCAyZDMyYzMzMTNjZDQzMmZhZGJkN2M0Njc2ZmEwNzUyZDUw
ZThlZTI5Li42MWRmMTlhMjU5MDZlOTRiZTI1OTE2MmI3ZDZlOGJkMzJkMTNjODFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKQEAgLTEzMiwx
NiArMTMyLDExIEBAIHN0YXRpYyBEV09SRCBwcm90ZWN0QXR0cmlidXRlKFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQogCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZShudWxscHRyLCBzaXplLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7
Ci19Ci0KLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGFk
ZHJlc3MsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCi17Ci0gICAgSEFORExF
IGhhbmRsZSA9IDo6Q3JlYXRlRmlsZU1hcHBpbmdXKElOVkFMSURfSEFORExFX1ZBTFVFLCAwLCBw
cm90ZWN0QXR0cmlidXRlKHByb3RlY3Rpb24pLCAwLCBzaXplLCAwKTsKKyAgICBIQU5ETEUgaGFu
ZGxlID0gOjpDcmVhdGVGaWxlTWFwcGluZ1coSU5WQUxJRF9IQU5ETEVfVkFMVUUsIDAsIHByb3Rl
Y3RBdHRyaWJ1dGUoU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpLCAwLCBzaXpl
LCAwKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB2
b2lkKiBiYXNlQWRkcmVzcyA9IDo6TWFwVmlld09mRmlsZUV4KGhhbmRsZSwgRklMRV9NQVBfQUxM
X0FDQ0VTUywgMCwgMCwgc2l6ZSwgYWRkcmVzcyk7CisgICAgdm9pZCogYmFzZUFkZHJlc3MgPSA6
Ok1hcFZpZXdPZkZpbGVFeChoYW5kbGUsIEZJTEVfTUFQX0FMTF9BQ0NFU1MsIDAsIDAsIHNpemUs
IG51bGxwdHIpOwogICAgIGlmICghYmFzZUFkZHJlc3MpIHsKICAgICAgICAgOjpDbG9zZUhhbmRs
ZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDI2
ZjBjMzM1MWQ3MTdjNTFhODQyZGVhOGYyYmZlNDZmZjZhNDBiOTYuLjM4ZjQyY2I5MWE1MzhlZGU2
OGUyMjU5NDEwNTBmOTZhZjY3Yjk2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMzY5LDcgKzM2OSwx
MSBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFdURjo6U3RyaW5nJiYg
anNvbiwgVmVjdG9yPFdlYkNvcmU6OkNvbnRlbgogCiBzdGF0aWMgUmVmPEFQSTo6Q29udGVudFJ1
bGVMaXN0PiBjcmVhdGVFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSwgY29uc3QgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEmIGZpbGVEYXRhKQogewotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShjb25zdF9jYXN0PHVpbnQ4X3QqPihmaWxlRGF0YS5k
YXRhKCkpLCBmaWxlRGF0YS5zaXplKCksIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgLy8gQ29udGVudCBleHRlbnNpb25zIGFyZSBhbHdheXMgY29tcGls
ZWQgdG8gZmlsZXMsIGFuZCBhdCB0aGlzIHBvaW50IHRoZSBmaWxlCisgICAgLy8gaGFzIGJlZW4g
YWxyZWFkeSBtYXBwZWQsIHRoZXJlZm9yZSB0cnlDcmVhdGVTaGFyZWRNZW1vcnkoKSBjYW5ub3Qg
ZmFpbC4KKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IGZpbGVEYXRhLnRyeUNyZWF0ZVNoYXJlZE1l
bW9yeSgpOworICAgIEFTU0VSVChzaGFyZWRNZW1vcnkpOworCiAgICAgY29uc3Qgc2l6ZV90IGhl
YWRlckFuZFNvdXJjZVNpemUgPSBDb250ZW50UnVsZUxpc3RGaWxlSGVhZGVyU2l6ZSArIG1ldGFE
YXRhLnNvdXJjZVNpemU7CiAgICAgYXV0byBjb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEgPSBX
ZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSgKICAgICAgICAgV1RGTW92ZShz
aGFyZWRNZW1vcnkpLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357419</attachid>
            <date>2018-12-16 12:39:05 -0800</date>
            <delta_ts>2018-12-16 14:29:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192714-20181217003733.patch</filename>
            <type>text/plain</type>
            <size>1877</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4ZGFmY2JkNmE0MjUxOWNl
M2Y0MzQyZWI2MjlmMzQwYmE4MWY3ZWEuLjE4YWE1YzExNTJjZWU5Y2RhYWQ1OTIzYTAyNmM3NDQ3
OGY5MmQ2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTItMTYgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBVbnJldmlld2Vk
IGZvbGxvdyB1cCBhZnRlciByMjM5MjYwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTI3MTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2NzYyNDA3
PgorCisgICAgICAgICogUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUpOiBVc2UgUEFHRV9SRUFEV1JJVEUgZGly
ZWN0bHkgaW5zdGVhZAorICAgICAgICBvZiBnb2luZyB0aHJvdWdoIHRoZSBwcm90ZWN0QXR0cmli
dXRlKCkgZnVuY3Rpb24sIHdoaWNoIGlzIHJlbW92ZWQKKyAgICAgICAgYmVjYXVzZSBpdCBpcyBu
b3cgdW51c2VkLgorCiAyMDE4LTEyLTE2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5pZnkgU2hhcmVkTWVtb3J5IGZhY3RvcnkgZnVuY3Rp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcApp
bmRleCA2MWRmMTlhMjU5MDZlOTRiZTI1OTE2MmI3ZDZlOGJkMzJkMTNjODFmLi44MWY3YjI4NzEy
YWZlODdjYjE3NGYxODQ1NDg1ZjRhYmJlY2MxMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKQEAgLTExNywyMiArMTE3LDkgQEAgYm9vbCBT
aGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxl
JiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBEV09SRCBwcm90ZWN0QXR0
cmlidXRlKFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQotewotICAgIHN3aXRj
aCAocHJvdGVjdGlvbikgewotICAgIGNhc2UgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seToKLSAgICAgICAgcmV0dXJuIFBBR0VfUkVBRE9OTFk7Ci0gICAgY2FzZSBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZToKLSAgICAgICAgcmV0dXJuIFBBR0VfUkVBRFdSSVRF
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQot
CiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVfdCBzaXpl
KQogewotICAgIEhBTkRMRSBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVNYXBwaW5nVyhJTlZBTElEX0hB
TkRMRV9WQUxVRSwgMCwgcHJvdGVjdEF0dHJpYnV0ZShTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRXcml0ZSksIDAsIHNpemUsIDApOworICAgIEhBTkRMRSBoYW5kbGUgPSA6OkNyZWF0ZUZp
bGVNYXBwaW5nVyhJTlZBTElEX0hBTkRMRV9WQUxVRSwgMCwgUEFHRV9SRUFEV1JJVEUsIDAsIHNp
emUsIDApOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>