<?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>209186</bug_id>
          
          <creation_ts>2020-03-17 10:58:50 -0700</creation_ts>
          <short_desc>[GTK][WPE] Check the cgroups memory limits (v1 and v2) to calculate the systemMemoryUsedAsPercentage() in the MemoryPressureMonitor</short_desc>
          <delta_ts>2020-03-23 06:33:58 -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>WebKitGTK</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="Pablo Saavedra">psaavedra</reporter>
          <assigned_to name="Pablo Saavedra">psaavedra</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1630786</commentid>
    <comment_count>0</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-17 10:58:50 -0700</bug_when>
    <thetext>The support to check the merory pressure level using with cgroups was dropped in 184261 [1]:

   [GTK][WPE] Memory pressure monitor doesn&apos;t reliable notify all the subprocesses

[1] https://bugs.webkit.org/show_bug.cgi?id=184261


This patch adds some additional logic in the MemoryPressureMonitor::systemMemoryUsedAsPercentage() to check the cgroups memory limits if the system  has available the cgroups mountpoint (`/sys/fs/cgroup/memory/`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630795</commentid>
    <comment_count>1</comment_count>
      <attachid>393768</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-17 11:14:44 -0700</bug_when>
    <thetext>Created attachment 393768
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630928</commentid>
    <comment_count>2</comment_count>
      <attachid>393768</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-17 15:32:05 -0700</bug_when>
    <thetext>Comment on attachment 393768
patch

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

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:145
&gt; +        line = fgets(buffer, 128, file);
&gt; +        token = strtok(line, &quot;\0&quot;);

Is this really needed ?
Wouldn&apos;t it suffice with:
token = fgets(buffer, 128, file);
?

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:153
&gt; +        line = fgets(buffer, 128, file);
&gt; +        token = strtok(line, &quot;\0&quot;);

ditto

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:163
&gt; +        line = fgets(buffer, 128, file);
&gt; +        token = strtok(line, &quot;\0&quot;);

ditto

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:171
&gt; +        line = fgets(buffer, 128, file);
&gt; +        token = strtok(line, &quot;\0&quot;);

ditto

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:239
&gt; +    while (char* line = fgets(buffer, 128, file)) {
&gt; +        char* token = strtok(line, &quot;\n&quot;);
&gt; +        if (!token)
&gt; +            break;

128 seems low value here? What happens if there is a line with more than 128 characters?

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:244
&gt; +        if (!strcmp(token, controllerName)) {
&gt; +            if (nullptr != token) {

is this  &quot;if (nullptr != token)&quot; really needed given the previous if?

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:246
&gt; +                memoryControllerName = (char*) malloc(sizeof(char) * strlen(token));

This its perhaps leaking the (previously) dynamic allocated char[] on each loop iteration that doesn&apos;t break the loop? or the loop assumes to enter here only once?
Maybe its better to use a C++ WTF::CString() instead a char* for storing and passing memoryControllerName between function calls?

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:258
&gt; +                snprintf(cgroupPath, maxCgroupPath, s_cgroupMemoryPath, memoryControllerName, &quot;memory.limit_in_bytes&quot;);
&gt; +                FILE* fileMemoryTotal = fopen(cgroupPath, &quot;r&quot;);
&gt; +                if (!fileMemoryTotal)
&gt; +                    break;
&gt; +                fclose(fileMemoryTotal);
&gt; +                snprintf(cgroupPath, maxCgroupPath, s_cgroupMemoryPath, memoryControllerName, &quot;memory.usage_in_bytes&quot;);
&gt; +                FILE* fileMemoryUsage = fopen(cgroupPath, &quot;r&quot;);
&gt; +                if (!fileMemoryUsage)
&gt; +                    break;
&gt; +                fclose(fileMemoryUsage);

What is the purpose of opening a file and then closing it?
To simply check for the existence of a file (and about if its readable) I would use access() or something like that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631011</commentid>
    <comment_count>3</comment_count>
      <attachid>393768</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-17 20:00:14 -0700</bug_when>
    <thetext>Comment on attachment 393768
patch

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

&gt;&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:258
&gt;&gt; +                fclose(fileMemoryUsage);
&gt; 
&gt; What is the purpose of opening a file and then closing it?
&gt; To simply check for the existence of a file (and about if its readable) I would use access() or something like that

I think stat() is used more often for this purpose</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631072</commentid>
    <comment_count>4</comment_count>
      <attachid>393830</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 03:11:12 -0700</bug_when>
    <thetext>Created attachment 393830
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631079</commentid>
    <comment_count>5</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 03:29:13 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #2)
&gt; Comment on attachment 393768 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393768&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:145
&gt; &gt; +        line = fgets(buffer, 128, file);
&gt; &gt; +        token = strtok(line, &quot;\0&quot;);
&gt; 
&gt; Is this really needed ?
&gt; Wouldn&apos;t it suffice with:
&gt; token = fgets(buffer, 128, file);
&gt; ?

Done.

&gt; 128 seems low value here? What happens if there is a line with more than 128
&gt; characters?

Adjusted to PAGE_SIZE=4096 like `int proc_read_strstr()` in Linux kernel `tools/testing/selftests/cgroup/cgroup_util.c`

&gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:244
&gt; &gt; +        if (!strcmp(token, controllerName)) {
&gt; &gt; +            if (nullptr != token) {
&gt; 
&gt; is this  &quot;if (nullptr != token)&quot; really needed given the previous if?
&gt; 

Fixed.


&gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:246
&gt; &gt; +                memoryControllerName = (char*) malloc(sizeof(char) * strlen(token));
&gt; 
&gt; This its perhaps leaking the (previously) dynamic allocated char[] on each
&gt; loop iteration that doesn&apos;t break the loop? or the loop assumes to enter
&gt; here only once?
&gt; Maybe its better to use a C++ WTF::CString() instead a char* for storing and
&gt; passing memoryControllerName between function calls?

bug. Added a break at the end of the `if`.


&gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:258
&gt; &gt; +                snprintf(cgroupPath, maxCgroupPath, s_cgroupMemoryPath, memoryControllerName, &quot;memory.limit_in_bytes&quot;);
&gt; &gt; +                FILE* fileMemoryTotal = fopen(cgroupPath, &quot;r&quot;);
&gt; &gt; +                if (!fileMemoryTotal)
&gt; &gt; +                    break;
&gt; &gt; +                fclose(fileMemoryTotal);
&gt; &gt; +                snprintf(cgroupPath, maxCgroupPath, s_cgroupMemoryPath, memoryControllerName, &quot;memory.usage_in_bytes&quot;);
&gt; &gt; +                FILE* fileMemoryUsage = fopen(cgroupPath, &quot;r&quot;);
&gt; &gt; +                if (!fileMemoryUsage)
&gt; &gt; +                    break;
&gt; &gt; +                fclose(fileMemoryUsage);
&gt; 
&gt; What is the purpose of opening a file and then closing it?
&gt; To simply check for the existence of a file (and about if its readable) I
&gt; would use access() or something like that

Not needed anymore since these are already checked the other functions where they are actually used. Removed in the new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631080</commentid>
    <comment_count>6</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 03:29:38 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #3)
&gt; Comment on attachment 393768 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393768&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:258
&gt; &gt;&gt; +                fclose(fileMemoryUsage);
&gt; &gt; 
&gt; &gt; What is the purpose of opening a file and then closing it?
&gt; &gt; To simply check for the existence of a file (and about if its readable) I would use access() or something like that
&gt; 
&gt; I think stat() is used more often for this purpose

I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631134</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-18 07:59:00 -0700</bug_when>
    <thetext>(In reply to Pablo Saavedra from comment #5)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #2)
&gt; &gt; Comment on attachment 393768 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393768&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:145
&gt; &gt; &gt; +        line = fgets(buffer, 128, file);
&gt; &gt; &gt; +        token = strtok(line, &quot;\0&quot;);
&gt; &gt; 
&gt; &gt; Is this really needed ?
&gt; &gt; Wouldn&apos;t it suffice with:
&gt; &gt; token = fgets(buffer, 128, file);
&gt; &gt; ?
&gt; 
&gt; Done.
&gt; 
&gt; &gt; 128 seems low value here? What happens if there is a line with more than 128
&gt; &gt; characters?
&gt; 
&gt; Adjusted to PAGE_SIZE=4096 like `int proc_read_strstr()` in Linux kernel
&gt; `tools/testing/selftests/cgroup/cgroup_util.c`
&gt; 

The value 4096 seems right, but I think it should be PATH_MAX and not PAGE_SIZE.
I can see how PATH_MAX limits the maximum length of a line on /proc/self/cgroups,
but I can&apos;t make the same connection with PAGE_SIZE. Can you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631143</commentid>
    <comment_count>8</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-18 08:11:14 -0700</bug_when>
    <thetext>Page size must not be assumed to be 4K everywhere, it can easily be 64K on some systems. Actual page size can be found via sysconf(_SC_PAGESIZE), as it&apos;s done in other places in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631145</commentid>
    <comment_count>9</comment_count>
      <attachid>393830</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-18 08:14:22 -0700</bug_when>
    <thetext>Comment on attachment 393830
patch

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

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:52
&gt; +static const unsigned maxCgroupPath = 4096; // PATH_MAX from (Linux) include/uapi/linux/limits.h
&gt; +static const unsigned maxCgroupLine = 4096; // PAGE_SIZE 4096 from (Linux)

I would use only one variable for this, since its the same value.
I think the one right its PATH_MAX.
Also, since the value of this variable its only needed at compilation time I would use a #define instead of a variable.

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:241
&gt; +            memoryControllerName = (char*) malloc(sizeof(char) * strlen(token));

I&apos;m still not happy with this.
I think it continues to leak because (even when the loop now only enters here once) this function gets called each few seconds by the thread monitor (it calls systemMemoryUsedAsPercentage(), which now calls this), so it leaks strlen(token) bytes per call.
If you want to allocate dynamic memory then I suggest to use a C++ String object with automatic memory lifetime cleanup.
Other option (if you can define a maximum possible length for the length of token) is to use a stack variable (like you are doing with buffer) and return the address to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631151</commentid>
    <comment_count>10</comment_count>
      <attachid>393830</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2020-03-18 08:22:31 -0700</bug_when>
    <thetext>Comment on attachment 393830
patch

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

&gt;&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:52
&gt;&gt; +static const unsigned maxCgroupLine = 4096; // PAGE_SIZE 4096 from (Linux)
&gt; 
&gt; I would use only one variable for this, since its the same value.
&gt; I think the one right its PATH_MAX.
&gt; Also, since the value of this variable its only needed at compilation time I would use a #define instead of a variable.

No, you should use C++ constants instead of preprocessor macros, because they are typed and generally safer to use.
&quot;static&quot; keyword, though, is an overkill here - all global constants in C++ have internal linkage by standard, even without static keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631211</commentid>
    <comment_count>11</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 09:55:33 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #7)
&gt; (In reply to Pablo Saavedra from comment #5)
&gt; &gt; (In reply to Carlos Alberto Lopez Perez from comment #2)
&gt; &gt; &gt; Comment on attachment 393768 [details]
&gt; &gt; &gt; patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393768&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:145
&gt; &gt; &gt; &gt; +        line = fgets(buffer, 128, file);
&gt; &gt; &gt; &gt; +        token = strtok(line, &quot;\0&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this really needed ?
&gt; &gt; &gt; Wouldn&apos;t it suffice with:
&gt; &gt; &gt; token = fgets(buffer, 128, file);
&gt; &gt; &gt; ?
&gt; &gt; 
&gt; &gt; Done.
&gt; &gt; 
&gt; &gt; &gt; 128 seems low value here? What happens if there is a line with more than 128
&gt; &gt; &gt; characters?
&gt; &gt; 
&gt; &gt; Adjusted to PAGE_SIZE=4096 like `int proc_read_strstr()` in Linux kernel
&gt; &gt; `tools/testing/selftests/cgroup/cgroup_util.c`
&gt; &gt; 
&gt; 
&gt; The value 4096 seems right, but I think it should be PATH_MAX and not
&gt; PAGE_SIZE.
&gt; I can see how PATH_MAX limits the maximum length of a line on
&gt; /proc/self/cgroups,
&gt; but I can&apos;t make the same connection with PAGE_SIZE. Can you?

For example, in Linux, in the `migrating_thread_fn()` in `tools/testing/selftests/cgroup/test_core.c` uses:

  proc_read_strstr(0, 1, &quot;cgroup&quot;, lines[(i % 2) + 1]))

and `proc_read_strstr()` uses `char buf[PAGE_SIZE]`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631219</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-18 10:06:11 -0700</bug_when>
    <thetext>(In reply to Pablo Saavedra from comment #11)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #7)
&gt; &gt; (In reply to Pablo Saavedra from comment #5)
&gt; &gt; &gt; (In reply to Carlos Alberto Lopez Perez from comment #2)
&gt; &gt; &gt; &gt; Comment on attachment 393768 [details]
&gt; &gt; &gt; &gt; patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393768&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:145
&gt; &gt; &gt; &gt; &gt; +        line = fgets(buffer, 128, file);
&gt; &gt; &gt; &gt; &gt; +        token = strtok(line, &quot;\0&quot;);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Is this really needed ?
&gt; &gt; &gt; &gt; Wouldn&apos;t it suffice with:
&gt; &gt; &gt; &gt; token = fgets(buffer, 128, file);
&gt; &gt; &gt; &gt; ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Done.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 128 seems low value here? What happens if there is a line with more than 128
&gt; &gt; &gt; &gt; characters?
&gt; &gt; &gt; 
&gt; &gt; &gt; Adjusted to PAGE_SIZE=4096 like `int proc_read_strstr()` in Linux kernel
&gt; &gt; &gt; `tools/testing/selftests/cgroup/cgroup_util.c`
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; The value 4096 seems right, but I think it should be PATH_MAX and not
&gt; &gt; PAGE_SIZE.
&gt; &gt; I can see how PATH_MAX limits the maximum length of a line on
&gt; &gt; /proc/self/cgroups,
&gt; &gt; but I can&apos;t make the same connection with PAGE_SIZE. Can you?
&gt; 
&gt; For example, in Linux, in the `migrating_thread_fn()` in
&gt; `tools/testing/selftests/cgroup/test_core.c` uses:
&gt; 
&gt;   proc_read_strstr(0, 1, &quot;cgroup&quot;, lines[(i % 2) + 1]))
&gt; 
&gt; and `proc_read_strstr()` uses `char buf[PAGE_SIZE]`

I saw that, but I think that this is either a mistake or in their use case they don&apos;t care about reading whole lines at once. Why would the length of a line in the file /proc/self/cgroup depend on the value of PAGE_SIZE? Which one is the explanation for that dependency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631271</commentid>
    <comment_count>13</comment_count>
      <attachid>393878</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 11:29:51 -0700</bug_when>
    <thetext>Created attachment 393878
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631316</commentid>
    <comment_count>14</comment_count>
      <attachid>393891</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 12:50:28 -0700</bug_when>
    <thetext>Created attachment 393891
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631324</commentid>
    <comment_count>15</comment_count>
      <attachid>393893</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 13:16:39 -0700</bug_when>
    <thetext>Created attachment 393893
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631345</commentid>
    <comment_count>16</comment_count>
      <attachid>393898</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 13:51:08 -0700</bug_when>
    <thetext>Created attachment 393898
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631356</commentid>
    <comment_count>17</comment_count>
      <attachid>393902</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 14:15:53 -0700</bug_when>
    <thetext>Created attachment 393902
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631380</commentid>
    <comment_count>18</comment_count>
      <attachid>393902</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-18 15:08:40 -0700</bug_when>
    <thetext>Comment on attachment 393902
patch

This needs a bit of testing, which I did and doesn&apos;t seem to be working:

I applied this patch over this: http://sprunge.us/Siqbdt
and ran:
sudo cgcreate -a $USER:$USER -s 777 -g memory:/testmemorycontroller
echo 2G &gt; /sys/fs/cgroup/memory/testmemorycontroller/memory.limit_in_bytes
echo 3G &gt; /sys/fs/cgroup/memory/testmemorycontroller/memory.memsw.limit_in_bytes
cgexec -g memory:testmemorycontroller Tools/Scripts/run-minibrowser --gtk
Starting MiniBrowser.
GLib-GIO-Message: 23:05:13.451: Using the &apos;memory&apos; GSettings backend.  Your settings will not be saved or shared with other applications.
returning controller value /testmemorycontrolle
memory usage with cgroup is 0
memoryUsagePercentageWithCgroup is -2147483648 and memoryUsagePercentage was 52
final memoryUsagePercentage is 52
returning controller value /testmemorycontrolle
memory usage with cgroup is 0
memoryUsagePercentageWithCgroup is -2147483648 and memoryUsagePercentage was 52
final memoryUsagePercentage is 52
[...]

Notice how it gets wrong the name of the controller (it eats the last char, the &quot;r&quot;).

I also noticed this warnings when building the patch (with clang):


In file included from DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-28.cpp:6:
../../Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:175:8: warning: &apos;const&apos; type qualifier on return type has no effect [-Wignored-qualifiers]
static const size_t getMemoryUsageWithCgroup(const char* memoryControllerName)
       ^~~~~~
../../Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:245:20: warning: address of stack memory associated with local variable &apos;memoryControllerName&apos; returned [-Wreturn-stack-address]
            return memoryControllerName;
                   ^~~~~~~~~~~~~~~~~~~~

It seems returning the addres of a stack variable its not ok, so I guess its better to use a c++ string object and dynamic allocate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631427</commentid>
    <comment_count>19</comment_count>
      <attachid>393919</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-18 16:58:27 -0700</bug_when>
    <thetext>Created attachment 393919
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631490</commentid>
    <comment_count>20</comment_count>
      <attachid>393919</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-18 18:59:06 -0700</bug_when>
    <thetext>Comment on attachment 393919
patch

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

&gt; Source/WebKit/ChangeLog:28
&gt; +2020-03-18  Pablo Saavedra  &lt;psaavedra@igalia.com&gt;
&gt; +
&gt; +        [GTK][WPE] Check the cgroups memory limits (v1 and v2) to calculate the systemMemoryUsedAsPercentage() in the MemoryPressureMonitor
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=209186
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * UIProcess/linux/MemoryPressureMonitor.cpp:
&gt; +        (WebKit::getMemoryTotalWithCgroup):
&gt; +        (WebKit::getMemoryUsageWithCgroup):
&gt; +        (WebKit::getCgroupController):
&gt; +        (WebKit::systemMemoryUsedAsPercentage):
&gt; +
&gt; +2020-03-17  Pablo Saavedra  &lt;psaavedra@igalia.com&gt;
&gt; +
&gt; +        [GTK][WPE] Check the cgroups memory limits (v1 and v2) to calculate the systemMemoryUsedAsPercentage() in the MemoryPressureMonitor
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=209186
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        No new tests.
&gt; +
&gt; +        * UIProcess/linux/MemoryPressureMonitor.cpp:
&gt; +        (WebKit::getMemoryTotalWithCgroup):
&gt; +        (WebKit::getMemoryUsageWithCgroup):
&gt; +        (WebKit::getCgroupController):
&gt; +        (WebKit::systemMemoryUsedAsPercentage):
&gt; +

Double changelog.
Also, if possible please explain a bit what this patch does in the changelog.

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:134
&gt; +size_t getMemoryTotalWithCgroup(CString memoryControllerName)

Please add an &quot;#include &lt;wtf/text/CString.h&gt;&quot; at the top of the file.
Otherwise this will likely fail to build without unified builds.

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:321
&gt; +        memoryTotal = getMemoryTotalWithCgroup(memoryControllerName);
&gt; +        size_t memoryUsage = getMemoryUsageWithCgroup(memoryControllerName);
&gt; +        int memoryUsagePercentageWithCgroup = 100 * (float) memoryUsage / (float) memoryTotal;

What happens if getMemoryTotalWithCgroup(memoryControllerName) returns 0 (for example, because no permission to read the cgroup memory info files) ?
Add a if-check here for that to avoid a division by zero.
Also: I don&apos;t think the casts to float are needed.

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:322
&gt; +        if (memoryTotal &amp;&amp; (memoryUsagePercentageWithCgroup &gt; memoryUsagePercentage))

I see you check here for memoryTotal to be non-zero, so just move that check above to avoid the division by zero in that case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631568</commentid>
    <comment_count>21</comment_count>
      <attachid>393956</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-19 01:19:09 -0700</bug_when>
    <thetext>Created attachment 393956
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631626</commentid>
    <comment_count>22</comment_count>
      <attachid>393956</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-19 06:32:55 -0700</bug_when>
    <thetext>Comment on attachment 393956
patch

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

&gt; Source/WebKit/ChangeLog:31
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

This line has to go just below the bug URL. See other changelogs for how we do it.

&gt; Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp:323
&gt; +            int memoryUsagePercentageWithCgroup = 100 * (float) memoryUsage / (float) memoryTotal;

Are the float casts needed given that the result its stored in an int?
This gives the same result to me:
int x = 10 * 3 / 5;
int x = 10 * (float) 3 / (float) 5;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631629</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-19 06:39:21 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #22)

&gt; Are the float casts needed given that the result its stored in an int?
&gt; This gives the same result to me:
&gt; int x = 10 * 3 / 5;
&gt; int x = 10 * (float) 3 / (float) 5;

I correct myself, it doesn&apos;t give the same result, but you have to use parenthesis to make the division happen first. 

int x = 10* (5 / 3); // gives 10
int x = 10* ((float) 5 / (float) 3); // gives 16

In this specific case it seems it didn&apos;t mattered because we are multiplying by 100 before doing the division</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631737</commentid>
    <comment_count>24</comment_count>
      <attachid>393996</attachid>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-19 11:00:57 -0700</bug_when>
    <thetext>Created attachment 393996
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632755</commentid>
    <comment_count>25</comment_count>
    <who name="Pablo Saavedra">psaavedra</who>
    <bug_when>2020-03-23 01:34:38 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #23)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #22)
&gt; 
&gt; &gt; Are the float casts needed given that the result its stored in an int?
&gt; &gt; This gives the same result to me:
&gt; &gt; int x = 10 * 3 / 5;
&gt; &gt; int x = 10 * (float) 3 / (float) 5;
&gt; 
&gt; I correct myself, it doesn&apos;t give the same result, but you have to use
&gt; parenthesis to make the division happen first. 
&gt; 
&gt; int x = 10* (5 / 3); // gives 10
&gt; int x = 10* ((float) 5 / (float) 3); // gives 16
&gt; 
&gt; In this specific case it seems it didn&apos;t mattered because we are multiplying
&gt; by 100 before doing the division

The last patch reflects your ideas. Could you confirm this is ok for you? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632811</commentid>
    <comment_count>26</comment_count>
      <attachid>393996</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-03-23 06:10:45 -0700</bug_when>
    <thetext>Comment on attachment 393996
patch

thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632816</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-23 06:33:57 -0700</bug_when>
    <thetext>Committed r258835: &lt;https://trac.webkit.org/changeset/258835&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 393996.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393768</attachid>
            <date>2020-03-17 11:14:44 -0700</date>
            <delta_ts>2020-03-18 03:10:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200317191442.patch</filename>
            <type>text/plain</type>
            <size>7619</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uOTQwMjgzYmE0NDgwNTk1YzdmZTViZmE1YTMxNWM4ZWFiMWQ0M2ZkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0Niw5IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgc19taW5Vc2VkTWVt
b3J5UGVyY2VudGFnZUZvclBvbGxpbmcgPSA1MDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc19tYXhV
c2VkTWVtb3J5UGVyY2VudGFnZUZvclBvbGxpbmcgPSA4NTsKIHN0YXRpYyBjb25zdCBpbnQgc19t
ZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZCA9IDkwOwogc3RhdGljIGNvbnN0IGludCBz
X21lbW9yeVByZXN1cmVQZXJjZW50YWdlVGhyZXNob2xkQ3JpdGljYWwgPSA5NTsKK3N0YXRpYyBj
b25zdCBjaGFyKiBzX2Nncm91cE1lbW9yeVBhdGggPSAiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5LyVz
LyVzIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBzX2Nncm91cENvbnRyb2xsZXIgPSAiL3Byb2Mvc2Vs
Zi9jZ3JvdXAiOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heENncm91cFBhdGggPSAyNTU7CiAK
IHN0YXRpYyBzaXplX3QgbG93V2F0ZXJtYXJrUGFnZXMoKQogewpAQCAtMTI2LDYgKzEyOSwxNDEg
QEAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlBdmFpbGFibGUoc2l6ZV90IG1lbW9yeUZy
ZWUsIHNpemVfdCBhY3RpdmVGaWxlLCBzaXoKICAgICByZXR1cm4gbWVtb3J5QXZhaWxhYmxlOwog
fQogCitzaXplX3QgZ2V0TWVtb3J5VG90YWxXaXRoQ2dyb3VwKGNvbnN0IGNoYXIqIG1lbW9yeUNv
bnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEyOF07CisgICAgY2hhciBjZ3JvdXBQ
YXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIGxpbmU7CisgICAgY2hhciogdG9rZW47Cisg
ICAgRklMRSogZmlsZTsKKworICAgIC8vIENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjIK
KyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBh
dGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5Lm1lbXN3Lm1heCIpOworICAgIGZpbGUg
PSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAgICAgIGxpbmUg
PSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIHRva2VuID0gc3RydG9rKGxpbmUs
ICJcMCIpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tl
bik7CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dy
b3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkubWF4Iik7CisgICAg
ZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGUpIHsKKyAgICAgICAg
bGluZSA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2so
bGluZSwgIlwwIik7CisgICAgICAgIGZjbG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xs
KHRva2VuKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYx
CisgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQ
YXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZSwgIm1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRlcyIp
OworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7Cisg
ICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIHRva2VuID0g
c3RydG9rKGxpbmUsICJcMCIpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVy
biBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91
cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnku
bGltaXRfaW5fYnl0ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAg
ICBpZiAoZmlsZSkgeworICAgICAgICBsaW5lID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOwor
ICAgICAgICB0b2tlbiA9IHN0cnRvayhsaW5lLCAiXDAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGUp
OworICAgICAgICByZXR1cm4gYXRvbGwodG9rZW4pOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIGNvbnN0IHNpemVfdCBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAoY29uc3QgY2hh
ciogbWVtb3J5Q29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciBidWZmZXJbMTI4XTsKKyAgICBj
aGFyIGNncm91cFBhdGhbbWF4Q2dyb3VwUGF0aF07CisgICAgY2hhciogdG9rZW47CisgICAgY2hh
ciogbGluZTsKKyAgICBGSUxFKiBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXM7CisKKyAgICAvLyBD
aGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYyCisgICAgc25wcmludGYoY2dyb3VwUGF0aCwg
bWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZSwg
Im1lbW9yeS5jdXJyZW50Iik7CisgICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4o
Y2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7Cisg
ICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVz
KTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZp
bGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7Cisg
ICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNucHJp
bnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5
Q29udHJvbGxlck5hbWUsICJtZW1vcnkudXNhZ2VfaW5fYnl0ZXMiKTsKKyAgICBmaWxlQ2dyb3Vw
UGF0aFVzYWdlQnl0ZXMgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlQ2dy
b3VwUGF0aFVzYWdlQnl0ZXMpIHsKKyAgICAgICAgbGluZSA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBm
aWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAgICAgICB0b2tlbiA9IHN0cnRvayhsaW5lLCAi
ICIpOworICAgICAgICBmY2xvc2UoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAg
cmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIFRoaXMg
ZmlsZSBkZXNjcmliZXMgY29udHJvbCBncm91cHMgdG8gd2hpY2ggdGhlIHByb2Nlc3Mgd2l0aAor
Ly8gdGhlIGNvcnJlc3BvbmRpbmcgUElEIGJlbG9uZ3MuIFRoZSBkaXNwbGF5ZWQgaW5mb3JtYXRp
b24gZGlmZmVycworLy8gZm9yIGNncm91cHMgdmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgaGllcmFy
Y2hpZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAkIGNhdCAvcHJvYy9zZWxmL2Nncm91cAor
Ly8gMTI6aHVnZXRsYjovCisvLyAxMTpyZG1hOi8KKy8vIDEwOm5ldF9jbHMsbmV0X3ByaW86Lwor
Ly8gOTpkZXZpY2VzOi91c2VyLnNsaWNlCisvLyA4Om1lbW9yeTovdXNlci5zbGljZQorLy8gNzpm
cmVlemVyOi91c2VyL3BzYWF2ZWRyYS8wCisvLyA2OnBpZHM6L3VzZXIuc2xpY2UvdXNlci0xMDAw
LnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlCisvLyA1OmJsa2lvOi91c2VyLnNsaWNlCisvLyA0OnBl
cmZfZXZlbnQ6LworLy8gMzpjcHUsY3B1YWNjdDovdXNlci5zbGljZQorLy8gMjpjcHVzZXQ6Lwor
Ly8gMTpuYW1lPXN5c3RlbWQ6L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5z
ZXJ2aWNlL2dub21lLXRlcm1pbmFsLXNlcnZlci5zZXJ2aWNlCisvLyAwOjovdXNlci5zbGljZS91
c2VyLTEwMDAuc2xpY2UvdXNlckAxMDAwLnNlcnZpY2UvZ25vbWUtdGVybWluYWwtc2VydmVyLnNl
cnZpY2UKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZ2V0Q2dyb3VwQ29udHJvbGxlcihjb25z
dCBjaGFyKiBjb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyKiBtZW1vcnlDb250cm9sbGVyTmFt
ZSA9IG51bGxwdHI7CisgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfY2dyb3VwQ29udHJvbGxlciwg
InIiKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY2hh
ciBidWZmZXJbMTI4XTsKKyAgICB3aGlsZSAoY2hhciogbGluZSA9IGZnZXRzKGJ1ZmZlciwgMTI4
LCBmaWxlKSkgeworICAgICAgICBjaGFyKiB0b2tlbiA9IHN0cnRvayhsaW5lLCAiXG4iKTsKKyAg
ICAgICAgaWYgKCF0b2tlbikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHRva2VuID0g
c3RydG9rKHRva2VuLCAiOiIpOworICAgICAgICB0b2tlbiA9IHN0cnRvayhudWxscHRyLCAiOiIp
OworICAgICAgICBpZiAoIXN0cmNtcCh0b2tlbiwgY29udHJvbGxlck5hbWUpKSB7CisgICAgICAg
ICAgICBpZiAobnVsbHB0ciAhPSB0b2tlbikgeworICAgICAgICAgICAgICAgIHRva2VuID0gc3Ry
dG9rKG51bGxwdHIsICI6Iik7CisgICAgICAgICAgICAgICAgbWVtb3J5Q29udHJvbGxlck5hbWUg
PSAoY2hhciopIG1hbGxvYyhzaXplb2YoY2hhcikgKiBzdHJsZW4odG9rZW4pKTsKKyAgICAgICAg
ICAgICAgICBzbnByaW50ZihtZW1vcnlDb250cm9sbGVyTmFtZSwgc3RybGVuKHRva2VuKSwgIiVz
IiwgdG9rZW4pOworICAgICAgICAgICAgICAgIGNoYXIgY2dyb3VwUGF0aFttYXhDZ3JvdXBQYXRo
XTsKKyAgICAgICAgICAgICAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBz
X2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LmxpbWl0X2lu
X2J5dGVzIik7CisgICAgICAgICAgICAgICAgRklMRSogZmlsZU1lbW9yeVRvdGFsID0gZm9wZW4o
Y2dyb3VwUGF0aCwgInIiKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZpbGVNZW1vcnlUb3RhbCkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZmNsb3NlKGZpbGVN
ZW1vcnlUb3RhbCk7CisgICAgICAgICAgICAgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dy
b3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZSwgIm1lbW9y
eS51c2FnZV9pbl9ieXRlcyIpOworICAgICAgICAgICAgICAgIEZJTEUqIGZpbGVNZW1vcnlVc2Fn
ZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgICAgICAgICAgICAgaWYgKCFmaWxlTWVt
b3J5VXNhZ2UpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZj
bG9zZShmaWxlTWVtb3J5VXNhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7Cit9CisK
Kwogc3RhdGljIGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkKIHsKICAgICBGSUxF
KiBmaWxlID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwpAQCAtMTkwLDcgKzMyOCwxNiBA
QCBzdGF0aWMgaW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNlbnRhZ2UoKQogICAgIGlmIChtZW1v
cnlBdmFpbGFibGUgPiBtZW1vcnlUb3RhbCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgcmV0
dXJuICgobWVtb3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUpICogMTAwKSAvIG1lbW9yeVRvdGFs
OworICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSAoKG1lbW9yeVRvdGFsIC0gbWVtb3J5
QXZhaWxhYmxlKSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAgICBjb25zdCBjaGFyKiBtZW1vcnlD
b250cm9sbGVyTmFtZSA9IGdldENncm91cENvbnRyb2xsZXIoIm1lbW9yeSIpOworICAgIGlmICht
ZW1vcnlDb250cm9sbGVyTmFtZSkgeworICAgICAgICBtZW1vcnlUb3RhbCA9IGdldE1lbW9yeVRv
dGFsV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAgICAgIHNpemVfdCBtZW1v
cnlVc2FnZSA9IGdldE1lbW9yeVVzYWdlV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7
CisgICAgICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwID0gMTAwICogKGZs
b2F0KSBtZW1vcnlVc2FnZSAvIChmbG9hdCkgbWVtb3J5VG90YWw7CisgICAgICAgIGlmIChtZW1v
cnlUb3RhbCAmJiAobWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0aENncm91cCA+IG1lbW9yeVVzYWdl
UGVyY2VudGFnZSkpCisgICAgICAgICAgICBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSBtZW1vcnlV
c2FnZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwOworICAgIH0KKyAgICByZXR1cm4gbWVtb3J5VXNhZ2VQ
ZXJjZW50YWdlOwogfQogCiBzdGF0aWMgaW5saW5lIFNlY29uZHMgcG9sbEludGVydmFsRm9yVXNl
ZE1lbW9yeVBlcmNlbnRhZ2UoaW50IHVzZWRQZXJjZW50YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393830</attachid>
            <date>2020-03-18 03:11:12 -0700</date>
            <delta_ts>2020-03-18 10:18:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200318111111.patch</filename>
            <type>text/plain</type>
            <size>6926</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uZjdkYWVmZjYyYTkzYmYyNjI5YjE0ZmNlNzc3ZDVhMDAzNjNmMTJmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0NiwxMCBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWluVXNlZE1l
bW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gNTA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWF4
VXNlZE1lbW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gODU7CiBzdGF0aWMgY29uc3QgaW50IHNf
bWVtb3J5UHJlc3VyZVBlcmNlbnRhZ2VUaHJlc2hvbGQgPSA5MDsKIHN0YXRpYyBjb25zdCBpbnQg
c19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZENyaXRpY2FsID0gOTU7CitzdGF0aWMg
Y29uc3QgY2hhciogc19jZ3JvdXBNZW1vcnlQYXRoID0gIi9zeXMvZnMvY2dyb3VwL21lbW9yeS8l
cy8lcyI7CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBDb250cm9sbGVyID0gIi9wcm9jL3Nl
bGYvY2dyb3VwIjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDZ3JvdXBQYXRoID0gNDA5Njsg
Ly8gUEFUSF9NQVggZnJvbSAoTGludXgpIGluY2x1ZGUvdWFwaS9saW51eC9saW1pdHMuaAorc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heENncm91cExpbmUgPSA0MDk2OyAvLyBQQUdFX1NJWkUgNDA5
NiBmcm9tIChMaW51eCkKIAogc3RhdGljIHNpemVfdCBsb3dXYXRlcm1hcmtQYWdlcygpCiB7CkBA
IC0xMjYsNiArMTMwLDEyNCBAQCBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUF2YWlsYWJs
ZShzaXplX3QgbWVtb3J5RnJlZSwgc2l6ZV90IGFjdGl2ZUZpbGUsIHNpegogICAgIHJldHVybiBt
ZW1vcnlBdmFpbGFibGU7CiB9CiAKK3NpemVfdCBnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXAoY29u
c3QgY2hhciogbWVtb3J5Q29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciBidWZmZXJbMTI4XTsK
KyAgICBjaGFyIGNncm91cFBhdGhbbWF4Q2dyb3VwUGF0aF07CisgICAgY2hhciogdG9rZW47Cisg
ICAgRklMRSogZmlsZTsKKworICAgIC8vIENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjIK
KyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBh
dGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5Lm1lbXN3Lm1heCIpOworICAgIGZpbGUg
PSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2Vu
ID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAg
ICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgs
IG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUs
ICJtZW1vcnkubWF4Iik7CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAg
aWYgKGZpbGUpIHsKKyAgICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7Cisg
ICAgICAgIGZjbG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9
CisKKyAgICAvLyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYxCisgICAgc25wcmludGYo
Y2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250
cm9sbGVyTmFtZSwgIm1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRlcyIpOworICAgIGZpbGUgPSBm
b3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0g
ZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAg
IHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1h
eENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJt
ZW1vcnkubGltaXRfaW5fYnl0ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwgInIi
KTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBm
aWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9rZW4p
OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHNpemVfdCBnZXRNZW1v
cnlVc2FnZVdpdGhDZ3JvdXAoY29uc3QgY2hhciogbWVtb3J5Q29udHJvbGxlck5hbWUpCit7Cisg
ICAgY2hhciBidWZmZXJbMTI4XTsKKyAgICBjaGFyIGNncm91cFBhdGhbbWF4Q2dyb3VwUGF0aF07
CisgICAgY2hhciogdG9rZW47CisgICAgY2hhciogbGluZTsKKyAgICBGSUxFKiBmaWxlQ2dyb3Vw
UGF0aFVzYWdlQnl0ZXM7CisKKyAgICAvLyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYy
CisgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQ
YXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZSwgIm1lbW9yeS5jdXJyZW50Iik7CisgICAgZmlsZUNn
cm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmls
ZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEy
OCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGlu
ZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAg
ICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxp
bWl0cyBpbiBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgs
IHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkudXNhZ2Vf
aW5fYnl0ZXMiKTsKKyAgICBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMgPSBmb3BlbihjZ3JvdXBQ
YXRoLCAiciIpOworICAgIGlmIChmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpIHsKKyAgICAgICAg
bGluZSA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAg
ICAgICB0b2tlbiA9IHN0cnRvayhsaW5lLCAiICIpOworICAgICAgICBmY2xvc2UoZmlsZUNncm91
cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vIFRoaXMgZmlsZSBkZXNjcmliZXMgY29udHJvbCBncm91cHMg
dG8gd2hpY2ggdGhlIHByb2Nlc3Mgd2l0aAorLy8gdGhlIGNvcnJlc3BvbmRpbmcgUElEIGJlbG9u
Z3MuIFRoZSBkaXNwbGF5ZWQgaW5mb3JtYXRpb24gZGlmZmVycworLy8gZm9yIGNncm91cHMgdmVy
c2lvbiAxIGFuZCB2ZXJzaW9uIDIgaGllcmFyY2hpZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisv
LyAkIGNhdCAvcHJvYy9zZWxmL2Nncm91cAorLy8gMTI6aHVnZXRsYjovCisvLyAxMTpyZG1hOi8K
Ky8vIDEwOm5ldF9jbHMsbmV0X3ByaW86LworLy8gOTpkZXZpY2VzOi91c2VyLnNsaWNlCisvLyA4
Om1lbW9yeTovdXNlci5zbGljZQorLy8gNzpmcmVlemVyOi91c2VyL3BzYWF2ZWRyYS8wCisvLyA2
OnBpZHM6L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlCisvLyA1
OmJsa2lvOi91c2VyLnNsaWNlCisvLyA0OnBlcmZfZXZlbnQ6LworLy8gMzpjcHUsY3B1YWNjdDov
dXNlci5zbGljZQorLy8gMjpjcHVzZXQ6LworLy8gMTpuYW1lPXN5c3RlbWQ6L3VzZXIuc2xpY2Uv
dXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1pbmFsLXNlcnZlci5z
ZXJ2aWNlCisvLyAwOjovdXNlci5zbGljZS91c2VyLTEwMDAuc2xpY2UvdXNlckAxMDAwLnNlcnZp
Y2UvZ25vbWUtdGVybWluYWwtc2VydmVyLnNlcnZpY2UKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hh
ciogZ2V0Q2dyb3VwQ29udHJvbGxlcihjb25zdCBjaGFyKiBjb250cm9sbGVyTmFtZSkKK3sKKyAg
ICBjaGFyKiBtZW1vcnlDb250cm9sbGVyTmFtZSA9IG51bGxwdHI7CisgICAgRklMRSogZmlsZSA9
IGZvcGVuKHNfY2dyb3VwQ29udHJvbGxlciwgInIiKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgY2hhciBidWZmZXJbbWF4Q2dyb3VwTGluZV07CisgICAg
d2hpbGUgKGNoYXIqIGxpbmUgPSBmZ2V0cyhidWZmZXIsIG1heENncm91cExpbmUsIGZpbGUpKSB7
CisgICAgICAgIGNoYXIqIHRva2VuID0gc3RydG9rKGxpbmUsICJcbiIpOworICAgICAgICBpZiAo
IXRva2VuKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sodG9r
ZW4sICI6Iik7CisgICAgICAgIHRva2VuID0gc3RydG9rKG51bGxwdHIsICI6Iik7CisgICAgICAg
IGlmICghc3RyY21wKHRva2VuLCBjb250cm9sbGVyTmFtZSkpIHsKKyAgICAgICAgICAgIHRva2Vu
ID0gc3RydG9rKG51bGxwdHIsICI6Iik7CisgICAgICAgICAgICBtZW1vcnlDb250cm9sbGVyTmFt
ZSA9IChjaGFyKikgbWFsbG9jKHNpemVvZihjaGFyKSAqIHN0cmxlbih0b2tlbikpOworICAgICAg
ICAgICAgc25wcmludGYobWVtb3J5Q29udHJvbGxlck5hbWUsIHN0cmxlbih0b2tlbiksICIlcyIs
IHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9z
ZShmaWxlKTsKKyAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7Cit9CisKKwogc3RhdGlj
IGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkKIHsKICAgICBGSUxFKiBmaWxlID0g
Zm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwpAQCAtMTkwLDcgKzMxMiwxNiBAQCBzdGF0aWMg
aW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNlbnRhZ2UoKQogICAgIGlmIChtZW1vcnlBdmFpbGFi
bGUgPiBtZW1vcnlUb3RhbCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgcmV0dXJuICgobWVt
b3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUpICogMTAwKSAvIG1lbW9yeVRvdGFsOworICAgIGlu
dCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSAoKG1lbW9yeVRvdGFsIC0gbWVtb3J5QXZhaWxhYmxl
KSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAgICBjb25zdCBjaGFyKiBtZW1vcnlDb250cm9sbGVy
TmFtZSA9IGdldENncm91cENvbnRyb2xsZXIoIm1lbW9yeSIpOworICAgIGlmIChtZW1vcnlDb250
cm9sbGVyTmFtZSkgeworICAgICAgICBtZW1vcnlUb3RhbCA9IGdldE1lbW9yeVRvdGFsV2l0aENn
cm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAgICAgIHNpemVfdCBtZW1vcnlVc2FnZSA9
IGdldE1lbW9yeVVzYWdlV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAgICAg
IGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwID0gMTAwICogKGZsb2F0KSBtZW1v
cnlVc2FnZSAvIChmbG9hdCkgbWVtb3J5VG90YWw7CisgICAgICAgIGlmIChtZW1vcnlUb3RhbCAm
JiAobWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0aENncm91cCA+IG1lbW9yeVVzYWdlUGVyY2VudGFn
ZSkpCisgICAgICAgICAgICBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSBtZW1vcnlVc2FnZVBlcmNl
bnRhZ2VXaXRoQ2dyb3VwOworICAgIH0KKyAgICByZXR1cm4gbWVtb3J5VXNhZ2VQZXJjZW50YWdl
OwogfQogCiBzdGF0aWMgaW5saW5lIFNlY29uZHMgcG9sbEludGVydmFsRm9yVXNlZE1lbW9yeVBl
cmNlbnRhZ2UoaW50IHVzZWRQZXJjZW50YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393878</attachid>
            <date>2020-03-18 11:29:51 -0700</date>
            <delta_ts>2020-03-18 12:50:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200318192949.patch</filename>
            <type>text/plain</type>
            <size>6834</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uMzllODY5NjRlZDY0YjkzMGY1MmIyYjE5OTRlZDYxM2JhZTFlNTRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0NiwxMCBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWluVXNlZE1l
bW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gNTA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWF4
VXNlZE1lbW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gODU7CiBzdGF0aWMgY29uc3QgaW50IHNf
bWVtb3J5UHJlc3VyZVBlcmNlbnRhZ2VUaHJlc2hvbGQgPSA5MDsKIHN0YXRpYyBjb25zdCBpbnQg
c19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZENyaXRpY2FsID0gOTU7CitzdGF0aWMg
Y29uc3QgY2hhciogc19jZ3JvdXBNZW1vcnlQYXRoID0gIi9zeXMvZnMvY2dyb3VwL21lbW9yeS8l
cy8lcyI7CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBDb250cm9sbGVyID0gIi9wcm9jL3Nl
bGYvY2dyb3VwIjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDZ3JvdXBQYXRoID0gNDA5Njsg
Ly8gUEFUSF9NQVggZnJvbSAoTGludXgpIGluY2x1ZGUvdWFwaS9saW51eC9saW1pdHMuaAorc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heENncm91cExpbmUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7
CiAKIHN0YXRpYyBzaXplX3QgbG93V2F0ZXJtYXJrUGFnZXMoKQogewpAQCAtMTI2LDYgKzEzMCwx
MjMgQEAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlBdmFpbGFibGUoc2l6ZV90IG1lbW9y
eUZyZWUsIHNpemVfdCBhY3RpdmVGaWxlLCBzaXoKICAgICByZXR1cm4gbWVtb3J5QXZhaWxhYmxl
OwogfQogCitzaXplX3QgZ2V0TWVtb3J5VG90YWxXaXRoQ2dyb3VwKGNvbnN0IGNoYXIqIG1lbW9y
eUNvbnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEyOF07CisgICAgY2hhciBjZ3Jv
dXBQYXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIHRva2VuOworICAgIEZJTEUqIGZpbGU7
CisKKyAgICAvLyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYyCisgICAgc25wcmludGYo
Y2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250
cm9sbGVyTmFtZSwgIm1lbW9yeS5tZW1zdy5tYXgiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3Vw
UGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZl
ciwgMTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRv
bGwodG9rZW4pOworICAgIH0KKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRo
LCBzX2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5Lm1heCIp
OworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7Cisg
ICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2Uo
ZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAgLy8gQ2hl
Y2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1h
eENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJt
ZW1vcnkubWVtc3cubGltaXRfaW5fYnl0ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0
aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwg
MTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwo
dG9rZW4pOworICAgIH0KKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBz
X2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LmxpbWl0X2lu
X2J5dGVzIik7CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZp
bGUpIHsKKyAgICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAg
IGZjbG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzaXplX3QgZ2V0TWVtb3J5VXNhZ2VXaXRoQ2dy
b3VwKGNvbnN0IGNoYXIqIG1lbW9yeUNvbnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVy
WzEyOF07CisgICAgY2hhciBjZ3JvdXBQYXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIHRv
a2VuOworICAgIGNoYXIqIGxpbmU7CisgICAgRklMRSogZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVz
OworCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMgorICAgIHNucHJpbnRm
KGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29u
dHJvbGxlck5hbWUsICJtZW1vcnkuY3VycmVudCIpOworICAgIGZpbGVDZ3JvdXBQYXRoVXNhZ2VC
eXRlcyA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGVDZ3JvdXBQYXRoVXNh
Z2VCeXRlcykgeworICAgICAgICBsaW5lID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGVDZ3JvdXBQ
YXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHRva2VuID0gc3RydG9rKGxpbmUsICIgIik7CisgICAg
ICAgIGZjbG9zZShmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAgICAgICByZXR1cm4gYXRv
bGwodG9rZW4pOworICAgIH0KKworICAgIC8vIENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3Vw
VjEKKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9y
eVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LnVzYWdlX2luX2J5dGVzIik7Cisg
ICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAg
ICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhi
dWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBz
dHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRl
cyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCisvLyBUaGlzIGZpbGUgZGVzY3JpYmVzIGNvbnRyb2wgZ3JvdXBzIHRvIHdoaWNoIHRoZSBw
cm9jZXNzIHdpdGgKKy8vIHRoZSBjb3JyZXNwb25kaW5nIFBJRCBiZWxvbmdzLiBUaGUgZGlzcGxh
eWVkIGluZm9ybWF0aW9uIGRpZmZlcnMKKy8vIGZvciBjZ3JvdXBzIHZlcnNpb24gMSBhbmQgdmVy
c2lvbiAyIGhpZXJhcmNoaWVzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gJCBjYXQgL3Byb2Mv
c2VsZi9jZ3JvdXAKKy8vIDEyOmh1Z2V0bGI6LworLy8gMTE6cmRtYTovCisvLyAxMDpuZXRfY2xz
LG5ldF9wcmlvOi8KKy8vIDk6ZGV2aWNlczovdXNlci5zbGljZQorLy8gODptZW1vcnk6L3VzZXIu
c2xpY2UKKy8vIDc6ZnJlZXplcjovdXNlci9wc2FhdmVkcmEvMAorLy8gNjpwaWRzOi91c2VyLnNs
aWNlL3VzZXItMTAwMC5zbGljZS91c2VyQDEwMDAuc2VydmljZQorLy8gNTpibGtpbzovdXNlci5z
bGljZQorLy8gNDpwZXJmX2V2ZW50Oi8KKy8vIDM6Y3B1LGNwdWFjY3Q6L3VzZXIuc2xpY2UKKy8v
IDI6Y3B1c2V0Oi8KKy8vIDE6bmFtZT1zeXN0ZW1kOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGlj
ZS91c2VyQDEwMDAuc2VydmljZS9nbm9tZS10ZXJtaW5hbC1zZXJ2ZXIuc2VydmljZQorLy8gMDo6
L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1p
bmFsLXNlcnZlci5zZXJ2aWNlCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGdldENncm91cENv
bnRyb2xsZXIoY29uc3QgY2hhciogY29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciogbWVtb3J5
Q29udHJvbGxlck5hbWVbbWF4Q2dyb3VwUGF0aF0KKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19j
Z3JvdXBDb250cm9sbGVyLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhDZ3JvdXBMaW5lXTsKKyAgICB3aGlsZSAoY2hh
ciogbGluZSA9IGZnZXRzKGJ1ZmZlciwgbWF4Q2dyb3VwTGluZSwgZmlsZSkpIHsKKyAgICAgICAg
Y2hhciogdG9rZW4gPSBzdHJ0b2sobGluZSwgIlxuIik7CisgICAgICAgIGlmICghdG9rZW4pCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICB0b2tlbiA9IHN0cnRvayh0b2tlbiwgIjoiKTsK
KyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgaWYgKCFzdHJj
bXAodG9rZW4sIGNvbnRyb2xsZXJOYW1lKSkgeworICAgICAgICAgICAgdG9rZW4gPSBzdHJ0b2so
bnVsbHB0ciwgIjoiKTsKKyAgICAgICAgICAgIHNucHJpbnRmKG1lbW9yeUNvbnRyb2xsZXJOYW1l
LCBzdHJsZW4odG9rZW4pLCAiJXMiLCB0b2tlbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBmY2xvc2UoZmlsZSk7CisgICAgcmV0dXJuIG1lbW9yeUNvbnRyb2xs
ZXJOYW1lOworfQorCisKIHN0YXRpYyBpbnQgc3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgp
CiB7CiAgICAgRklMRSogZmlsZSA9IGZvcGVuKCIvcHJvYy9tZW1pbmZvIiwgInIiKTsKQEAgLTE5
MCw3ICszMTEsMTYgQEAgc3RhdGljIGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkK
ICAgICBpZiAobWVtb3J5QXZhaWxhYmxlID4gbWVtb3J5VG90YWwpCiAgICAgICAgIHJldHVybiAt
MTsKIAotICAgIHJldHVybiAoKG1lbW9yeVRvdGFsIC0gbWVtb3J5QXZhaWxhYmxlKSAqIDEwMCkg
LyBtZW1vcnlUb3RhbDsKKyAgICBpbnQgbWVtb3J5VXNhZ2VQZXJjZW50YWdlID0gKChtZW1vcnlU
b3RhbCAtIG1lbW9yeUF2YWlsYWJsZSkgKiAxMDApIC8gbWVtb3J5VG90YWw7CisgICAgY29uc3Qg
Y2hhciogbWVtb3J5Q29udHJvbGxlck5hbWUgPSBnZXRDZ3JvdXBDb250cm9sbGVyKCJtZW1vcnki
KTsKKyAgICBpZiAobWVtb3J5Q29udHJvbGxlck5hbWUpIHsKKyAgICAgICAgbWVtb3J5VG90YWwg
PSBnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXAobWVtb3J5Q29udHJvbGxlck5hbWUpOworICAgICAg
ICBzaXplX3QgbWVtb3J5VXNhZ2UgPSBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAobWVtb3J5Q29u
dHJvbGxlck5hbWUpOworICAgICAgICBpbnQgbWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0aENncm91
cCA9IDEwMCAqIChmbG9hdCkgbWVtb3J5VXNhZ2UgLyAoZmxvYXQpIG1lbW9yeVRvdGFsOworICAg
ICAgICBpZiAobWVtb3J5VG90YWwgJiYgKG1lbW9yeVVzYWdlUGVyY2VudGFnZVdpdGhDZ3JvdXAg
PiBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UpKQorICAgICAgICAgICAgbWVtb3J5VXNhZ2VQZXJjZW50
YWdlID0gbWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0aENncm91cDsKKyAgICB9CisgICAgcmV0dXJu
IG1lbW9yeVVzYWdlUGVyY2VudGFnZTsKIH0KIAogc3RhdGljIGlubGluZSBTZWNvbmRzIHBvbGxJ
bnRlcnZhbEZvclVzZWRNZW1vcnlQZXJjZW50YWdlKGludCB1c2VkUGVyY2VudGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393891</attachid>
            <date>2020-03-18 12:50:28 -0700</date>
            <delta_ts>2020-03-18 13:16:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200318205026.patch</filename>
            <type>text/plain</type>
            <size>6898</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uZTAyOTUxNDRjMDgyMWFhNDUzZDBlNTRlMGFmNGEyZWM3MjkwN2Y1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0NiwxMSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWluVXNlZE1l
bW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gNTA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWF4
VXNlZE1lbW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gODU7CiBzdGF0aWMgY29uc3QgaW50IHNf
bWVtb3J5UHJlc3VyZVBlcmNlbnRhZ2VUaHJlc2hvbGQgPSA5MDsKIHN0YXRpYyBjb25zdCBpbnQg
c19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZENyaXRpY2FsID0gOTU7CisvLyBjZ3Jv
dXBzLjc6IFRoZSB1c3VhbCBwbGFjZSBmb3Igc3VjaCBtb3VudHMgaXMgdW5kZXIgYSB0bXBmcyg1
KQorLy8gZmlsZXN5c3RlbSBtb3VudGVkIGF0IC9zeXMvZnMvY2dyb3VwLgorc3RhdGljIGNvbnN0
IGNoYXIqIHNfY2dyb3VwTWVtb3J5UGF0aCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvJXMvJXMi
Oworc3RhdGljIGNvbnN0IGNoYXIqIHNfY2dyb3VwQ29udHJvbGxlciA9ICIvcHJvYy9zZWxmL2Nn
cm91cCI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2dyb3VwUGF0aCA9IDQwOTY7IC8vIFBB
VEhfTUFYIGZyb20gKExpbnV4KSBpbmNsdWRlL3VhcGkvbGludXgvbGltaXRzLmgKIAogc3RhdGlj
IHNpemVfdCBsb3dXYXRlcm1hcmtQYWdlcygpCiB7CkBAIC0xMjYsNiArMTMxLDEyMyBAQCBzdGF0
aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUF2YWlsYWJsZShzaXplX3QgbWVtb3J5RnJlZSwgc2l6
ZV90IGFjdGl2ZUZpbGUsIHNpegogICAgIHJldHVybiBtZW1vcnlBdmFpbGFibGU7CiB9CiAKK3Np
emVfdCBnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXAoY29uc3QgY2hhciogbWVtb3J5Q29udHJvbGxl
ck5hbWUpCit7CisgICAgY2hhciBidWZmZXJbMTI4XTsKKyAgICBjaGFyIGNncm91cFBhdGhbbWF4
Q2dyb3VwUGF0aF07CisgICAgY2hhciogdG9rZW47CisgICAgRklMRSogZmlsZTsKKworICAgIC8v
IENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjIKKyAgICBzbnByaW50ZihjZ3JvdXBQYXRo
LCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1l
LCAibWVtb3J5Lm1lbXN3Lm1heCIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIp
OworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZp
bGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7
CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3Vw
TWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkubWF4Iik7CisgICAgZmls
ZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGUpIHsKKyAgICAgICAgdG9r
ZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIGZjbG9zZShmaWxlKTsKKyAg
ICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBtZW1vcnkg
bGltaXRzIGluIGNncm91cFYxCisgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0
aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZSwgIm1lbW9yeS5tZW1z
dy5saW1pdF9pbl9ieXRlcyIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOwor
ICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUp
OworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7Cisg
ICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVt
b3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkubGltaXRfaW5fYnl0ZXMiKTsK
KyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAg
ICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZp
bGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9rZW4pOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIGNvbnN0IHNpemVfdCBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAoY29uc3Qg
Y2hhciogbWVtb3J5Q29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciBidWZmZXJbMTI4XTsKKyAg
ICBjaGFyIGNncm91cFBhdGhbbWF4Q2dyb3VwUGF0aF07CisgICAgY2hhciogdG9rZW47CisgICAg
Y2hhciogbGluZTsKKyAgICBGSUxFKiBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXM7CisKKyAgICAv
LyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYyCisgICAgc25wcmludGYoY2dyb3VwUGF0
aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFt
ZSwgIm1lbW9yeS5jdXJyZW50Iik7CisgICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9w
ZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7
CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5
dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3Nl
KGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNu
cHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVt
b3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkudXNhZ2VfaW5fYnl0ZXMiKTsKKyAgICBmaWxlQ2dy
b3VwUGF0aFVzYWdlQnl0ZXMgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxl
Q2dyb3VwUGF0aFVzYWdlQnl0ZXMpIHsKKyAgICAgICAgbGluZSA9IGZnZXRzKGJ1ZmZlciwgMTI4
LCBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAgICAgICB0b2tlbiA9IHN0cnRvayhsaW5l
LCAiICIpOworICAgICAgICBmY2xvc2UoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAg
ICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIFRo
aXMgZmlsZSBkZXNjcmliZXMgY29udHJvbCBncm91cHMgdG8gd2hpY2ggdGhlIHByb2Nlc3Mgd2l0
aAorLy8gdGhlIGNvcnJlc3BvbmRpbmcgUElEIGJlbG9uZ3MuIFRoZSBkaXNwbGF5ZWQgaW5mb3Jt
YXRpb24gZGlmZmVycworLy8gZm9yIGNncm91cHMgdmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgaGll
cmFyY2hpZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAkIGNhdCAvcHJvYy9zZWxmL2Nncm91
cAorLy8gMTI6aHVnZXRsYjovCisvLyAxMTpyZG1hOi8KKy8vIDEwOm5ldF9jbHMsbmV0X3ByaW86
LworLy8gOTpkZXZpY2VzOi91c2VyLnNsaWNlCisvLyA4Om1lbW9yeTovdXNlci5zbGljZQorLy8g
NzpmcmVlemVyOi91c2VyL3BzYWF2ZWRyYS8wCisvLyA2OnBpZHM6L3VzZXIuc2xpY2UvdXNlci0x
MDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlCisvLyA1OmJsa2lvOi91c2VyLnNsaWNlCisvLyA0
OnBlcmZfZXZlbnQ6LworLy8gMzpjcHUsY3B1YWNjdDovdXNlci5zbGljZQorLy8gMjpjcHVzZXQ6
LworLy8gMTpuYW1lPXN5c3RlbWQ6L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAw
MC5zZXJ2aWNlL2dub21lLXRlcm1pbmFsLXNlcnZlci5zZXJ2aWNlCisvLyAwOjovdXNlci5zbGlj
ZS91c2VyLTEwMDAuc2xpY2UvdXNlckAxMDAwLnNlcnZpY2UvZ25vbWUtdGVybWluYWwtc2VydmVy
LnNlcnZpY2UKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZ2V0Q2dyb3VwQ29udHJvbGxlcihj
b25zdCBjaGFyKiBjb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyKiBtZW1vcnlDb250cm9sbGVy
TmFtZVttYXhDZ3JvdXBQYXRoXQorICAgIEZJTEUqIGZpbGUgPSBmb3BlbihzX2Nncm91cENvbnRy
b2xsZXIsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGNoYXIgYnVmZmVyW21heENncm91cFBhdGhdOworICAgIHdoaWxlIChjaGFyKiBsaW5lID0g
ZmdldHMoYnVmZmVyLCBtYXhDZ3JvdXBQYXRoLCBmaWxlKSkgeworICAgICAgICBjaGFyKiB0b2tl
biA9IHN0cnRvayhsaW5lLCAiXG4iKTsKKyAgICAgICAgaWYgKCF0b2tlbikKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIHRva2VuID0gc3RydG9rKHRva2VuLCAiOiIpOworICAgICAgICB0
b2tlbiA9IHN0cnRvayhudWxscHRyLCAiOiIpOworICAgICAgICBpZiAoIXN0cmNtcCh0b2tlbiwg
Y29udHJvbGxlck5hbWUpKSB7CisgICAgICAgICAgICB0b2tlbiA9IHN0cnRvayhudWxscHRyLCAi
OiIpOworICAgICAgICAgICAgc25wcmludGYobWVtb3J5Q29udHJvbGxlck5hbWUsIHN0cmxlbih0
b2tlbiksICIlcyIsIHRva2VuKTsKKyAgICAgICAgICAgIGZjbG9zZShmaWxlKTsKKyAgICAgICAg
ICAgIHJldHVybiBtZW1vcnlDb250cm9sbGVyTmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworCiBzdGF0aWMgaW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNl
bnRhZ2UoKQogewogICAgIEZJTEUqIGZpbGUgPSBmb3BlbigiL3Byb2MvbWVtaW5mbyIsICJyIik7
CkBAIC0xOTAsNyArMzEyLDE2IEBAIHN0YXRpYyBpbnQgc3lzdGVtTWVtb3J5VXNlZEFzUGVyY2Vu
dGFnZSgpCiAgICAgaWYgKG1lbW9yeUF2YWlsYWJsZSA+IG1lbW9yeVRvdGFsKQogICAgICAgICBy
ZXR1cm4gLTE7CiAKLSAgICByZXR1cm4gKChtZW1vcnlUb3RhbCAtIG1lbW9yeUF2YWlsYWJsZSkg
KiAxMDApIC8gbWVtb3J5VG90YWw7CisgICAgaW50IG1lbW9yeVVzYWdlUGVyY2VudGFnZSA9ICgo
bWVtb3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUpICogMTAwKSAvIG1lbW9yeVRvdGFsOworICAg
IGNvbnN0IGNoYXIqIG1lbW9yeUNvbnRyb2xsZXJOYW1lID0gZ2V0Q2dyb3VwQ29udHJvbGxlcigi
bWVtb3J5Iik7CisgICAgaWYgKG1lbW9yeUNvbnRyb2xsZXJOYW1lKSB7CisgICAgICAgIG1lbW9y
eVRvdGFsID0gZ2V0TWVtb3J5VG90YWxXaXRoQ2dyb3VwKG1lbW9yeUNvbnRyb2xsZXJOYW1lKTsK
KyAgICAgICAgc2l6ZV90IG1lbW9yeVVzYWdlID0gZ2V0TWVtb3J5VXNhZ2VXaXRoQ2dyb3VwKG1l
bW9yeUNvbnRyb2xsZXJOYW1lKTsKKyAgICAgICAgaW50IG1lbW9yeVVzYWdlUGVyY2VudGFnZVdp
dGhDZ3JvdXAgPSAxMDAgKiAoZmxvYXQpIG1lbW9yeVVzYWdlIC8gKGZsb2F0KSBtZW1vcnlUb3Rh
bDsKKyAgICAgICAgaWYgKG1lbW9yeVRvdGFsICYmIChtZW1vcnlVc2FnZVBlcmNlbnRhZ2VXaXRo
Q2dyb3VwID4gbWVtb3J5VXNhZ2VQZXJjZW50YWdlKSkKKyAgICAgICAgICAgIG1lbW9yeVVzYWdl
UGVyY2VudGFnZSA9IG1lbW9yeVVzYWdlUGVyY2VudGFnZVdpdGhDZ3JvdXA7CisgICAgfQorICAg
IHJldHVybiBtZW1vcnlVc2FnZVBlcmNlbnRhZ2U7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU2Vjb25k
cyBwb2xsSW50ZXJ2YWxGb3JVc2VkTWVtb3J5UGVyY2VudGFnZShpbnQgdXNlZFBlcmNlbnRhZ2Up
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393893</attachid>
            <date>2020-03-18 13:16:39 -0700</date>
            <delta_ts>2020-03-18 13:51:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200318211637.patch</filename>
            <type>text/plain</type>
            <size>6899</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uNTdhMjkyMzc2M2I2NmRmNzJlMjNkYjY3MjZkMDYwOGMzODMwMzk5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0NiwxMSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWluVXNlZE1l
bW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gNTA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWF4
VXNlZE1lbW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gODU7CiBzdGF0aWMgY29uc3QgaW50IHNf
bWVtb3J5UHJlc3VyZVBlcmNlbnRhZ2VUaHJlc2hvbGQgPSA5MDsKIHN0YXRpYyBjb25zdCBpbnQg
c19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZENyaXRpY2FsID0gOTU7CisvLyBjZ3Jv
dXBzLjc6IFRoZSB1c3VhbCBwbGFjZSBmb3Igc3VjaCBtb3VudHMgaXMgdW5kZXIgYSB0bXBmcyg1
KQorLy8gZmlsZXN5c3RlbSBtb3VudGVkIGF0IC9zeXMvZnMvY2dyb3VwLgorc3RhdGljIGNvbnN0
IGNoYXIqIHNfY2dyb3VwTWVtb3J5UGF0aCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvJXMvJXMi
Oworc3RhdGljIGNvbnN0IGNoYXIqIHNfY2dyb3VwQ29udHJvbGxlciA9ICIvcHJvYy9zZWxmL2Nn
cm91cCI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2dyb3VwUGF0aCA9IDQwOTY7IC8vIFBB
VEhfTUFYIGZyb20gKExpbnV4KSBpbmNsdWRlL3VhcGkvbGludXgvbGltaXRzLmgKIAogc3RhdGlj
IHNpemVfdCBsb3dXYXRlcm1hcmtQYWdlcygpCiB7CkBAIC0xMjYsNiArMTMxLDEyMyBAQCBzdGF0
aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUF2YWlsYWJsZShzaXplX3QgbWVtb3J5RnJlZSwgc2l6
ZV90IGFjdGl2ZUZpbGUsIHNpegogICAgIHJldHVybiBtZW1vcnlBdmFpbGFibGU7CiB9CiAKK3Np
emVfdCBnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXAoY29uc3QgY2hhciogbWVtb3J5Q29udHJvbGxl
ck5hbWUpCit7CisgICAgY2hhciBidWZmZXJbMTI4XTsKKyAgICBjaGFyIGNncm91cFBhdGhbbWF4
Q2dyb3VwUGF0aF07CisgICAgY2hhciogdG9rZW47CisgICAgRklMRSogZmlsZTsKKworICAgIC8v
IENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjIKKyAgICBzbnByaW50ZihjZ3JvdXBQYXRo
LCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1l
LCAibWVtb3J5Lm1lbXN3Lm1heCIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIp
OworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZp
bGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7
CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3Vw
TWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkubWF4Iik7CisgICAgZmls
ZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGUpIHsKKyAgICAgICAgdG9r
ZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIGZjbG9zZShmaWxlKTsKKyAg
ICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBtZW1vcnkg
bGltaXRzIGluIGNncm91cFYxCisgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0
aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZSwgIm1lbW9yeS5tZW1z
dy5saW1pdF9pbl9ieXRlcyIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOwor
ICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUp
OworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7Cisg
ICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVt
b3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkubGltaXRfaW5fYnl0ZXMiKTsK
KyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAg
ICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZp
bGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9rZW4pOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIGNvbnN0IHNpemVfdCBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAoY29uc3Qg
Y2hhciogbWVtb3J5Q29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciBidWZmZXJbMTI4XTsKKyAg
ICBjaGFyIGNncm91cFBhdGhbbWF4Q2dyb3VwUGF0aF07CisgICAgY2hhciogdG9rZW47CisgICAg
Y2hhciogbGluZTsKKyAgICBGSUxFKiBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXM7CisKKyAgICAv
LyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYyCisgICAgc25wcmludGYoY2dyb3VwUGF0
aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFt
ZSwgIm1lbW9yeS5jdXJyZW50Iik7CisgICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9w
ZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7
CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5
dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3Nl
KGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNu
cHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVt
b3J5Q29udHJvbGxlck5hbWUsICJtZW1vcnkudXNhZ2VfaW5fYnl0ZXMiKTsKKyAgICBmaWxlQ2dy
b3VwUGF0aFVzYWdlQnl0ZXMgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxl
Q2dyb3VwUGF0aFVzYWdlQnl0ZXMpIHsKKyAgICAgICAgbGluZSA9IGZnZXRzKGJ1ZmZlciwgMTI4
LCBmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAgICAgICB0b2tlbiA9IHN0cnRvayhsaW5l
LCAiICIpOworICAgICAgICBmY2xvc2UoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAg
ICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIFRo
aXMgZmlsZSBkZXNjcmliZXMgY29udHJvbCBncm91cHMgdG8gd2hpY2ggdGhlIHByb2Nlc3Mgd2l0
aAorLy8gdGhlIGNvcnJlc3BvbmRpbmcgUElEIGJlbG9uZ3MuIFRoZSBkaXNwbGF5ZWQgaW5mb3Jt
YXRpb24gZGlmZmVycworLy8gZm9yIGNncm91cHMgdmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgaGll
cmFyY2hpZXMuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAkIGNhdCAvcHJvYy9zZWxmL2Nncm91
cAorLy8gMTI6aHVnZXRsYjovCisvLyAxMTpyZG1hOi8KKy8vIDEwOm5ldF9jbHMsbmV0X3ByaW86
LworLy8gOTpkZXZpY2VzOi91c2VyLnNsaWNlCisvLyA4Om1lbW9yeTovdXNlci5zbGljZQorLy8g
NzpmcmVlemVyOi91c2VyL3BzYWF2ZWRyYS8wCisvLyA2OnBpZHM6L3VzZXIuc2xpY2UvdXNlci0x
MDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlCisvLyA1OmJsa2lvOi91c2VyLnNsaWNlCisvLyA0
OnBlcmZfZXZlbnQ6LworLy8gMzpjcHUsY3B1YWNjdDovdXNlci5zbGljZQorLy8gMjpjcHVzZXQ6
LworLy8gMTpuYW1lPXN5c3RlbWQ6L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAw
MC5zZXJ2aWNlL2dub21lLXRlcm1pbmFsLXNlcnZlci5zZXJ2aWNlCisvLyAwOjovdXNlci5zbGlj
ZS91c2VyLTEwMDAuc2xpY2UvdXNlckAxMDAwLnNlcnZpY2UvZ25vbWUtdGVybWluYWwtc2VydmVy
LnNlcnZpY2UKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZ2V0Q2dyb3VwQ29udHJvbGxlcihj
b25zdCBjaGFyKiBjb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyKiBtZW1vcnlDb250cm9sbGVy
TmFtZVttYXhDZ3JvdXBQYXRoXTsKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19jZ3JvdXBDb250
cm9sbGVyLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBjaGFyIGJ1ZmZlclttYXhDZ3JvdXBQYXRoXTsKKyAgICB3aGlsZSAoY2hhciogbGluZSA9
IGZnZXRzKGJ1ZmZlciwgbWF4Q2dyb3VwUGF0aCwgZmlsZSkpIHsKKyAgICAgICAgY2hhciogdG9r
ZW4gPSBzdHJ0b2sobGluZSwgIlxuIik7CisgICAgICAgIGlmICghdG9rZW4pCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICB0b2tlbiA9IHN0cnRvayh0b2tlbiwgIjoiKTsKKyAgICAgICAg
dG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgaWYgKCFzdHJjbXAodG9rZW4s
IGNvbnRyb2xsZXJOYW1lKSkgeworICAgICAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwg
IjoiKTsKKyAgICAgICAgICAgIHNucHJpbnRmKG1lbW9yeUNvbnRyb2xsZXJOYW1lLCBzdHJsZW4o
dG9rZW4pLCAiJXMiLCB0b2tlbik7CisgICAgICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAg
ICAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKKwogc3RhdGljIGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJj
ZW50YWdlKCkKIHsKICAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIp
OwpAQCAtMTkwLDcgKzMxMiwxNiBAQCBzdGF0aWMgaW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNl
bnRhZ2UoKQogICAgIGlmIChtZW1vcnlBdmFpbGFibGUgPiBtZW1vcnlUb3RhbCkKICAgICAgICAg
cmV0dXJuIC0xOwogCi0gICAgcmV0dXJuICgobWVtb3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUp
ICogMTAwKSAvIG1lbW9yeVRvdGFsOworICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSAo
KG1lbW9yeVRvdGFsIC0gbWVtb3J5QXZhaWxhYmxlKSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAg
ICBjb25zdCBjaGFyKiBtZW1vcnlDb250cm9sbGVyTmFtZSA9IGdldENncm91cENvbnRyb2xsZXIo
Im1lbW9yeSIpOworICAgIGlmIChtZW1vcnlDb250cm9sbGVyTmFtZSkgeworICAgICAgICBtZW1v
cnlUb3RhbCA9IGdldE1lbW9yeVRvdGFsV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7
CisgICAgICAgIHNpemVfdCBtZW1vcnlVc2FnZSA9IGdldE1lbW9yeVVzYWdlV2l0aENncm91cCht
ZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAgICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2VX
aXRoQ2dyb3VwID0gMTAwICogKGZsb2F0KSBtZW1vcnlVc2FnZSAvIChmbG9hdCkgbWVtb3J5VG90
YWw7CisgICAgICAgIGlmIChtZW1vcnlUb3RhbCAmJiAobWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0
aENncm91cCA+IG1lbW9yeVVzYWdlUGVyY2VudGFnZSkpCisgICAgICAgICAgICBtZW1vcnlVc2Fn
ZVBlcmNlbnRhZ2UgPSBtZW1vcnlVc2FnZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwOworICAgIH0KKyAg
ICByZXR1cm4gbWVtb3J5VXNhZ2VQZXJjZW50YWdlOwogfQogCiBzdGF0aWMgaW5saW5lIFNlY29u
ZHMgcG9sbEludGVydmFsRm9yVXNlZE1lbW9yeVBlcmNlbnRhZ2UoaW50IHVzZWRQZXJjZW50YWdl
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393898</attachid>
            <date>2020-03-18 13:51:08 -0700</date>
            <delta_ts>2020-03-18 14:15:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200318215106.patch</filename>
            <type>text/plain</type>
            <size>6905</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uYWFjMDlhZTE0ODYzZDk3ODAxY2E2OWIwY2Q0NjZiNDEwZmVkZTE5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0NiwxMSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWluVXNlZE1l
bW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gNTA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWF4
VXNlZE1lbW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gODU7CiBzdGF0aWMgY29uc3QgaW50IHNf
bWVtb3J5UHJlc3VyZVBlcmNlbnRhZ2VUaHJlc2hvbGQgPSA5MDsKIHN0YXRpYyBjb25zdCBpbnQg
c19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZENyaXRpY2FsID0gOTU7CisvLyBjZ3Jv
dXBzLjc6IFRoZSB1c3VhbCBwbGFjZSBmb3Igc3VjaCBtb3VudHMgaXMgdW5kZXIgYSB0bXBmcyg1
KQorLy8gZmlsZXN5c3RlbSBtb3VudGVkIGF0IC9zeXMvZnMvY2dyb3VwLgorc3RhdGljIGNvbnN0
IGNoYXIqIHNfY2dyb3VwTWVtb3J5UGF0aCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvJXMvJXMi
Oworc3RhdGljIGNvbnN0IGNoYXIqIHNfY2dyb3VwQ29udHJvbGxlciA9ICIvcHJvYy9zZWxmL2Nn
cm91cCI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2dyb3VwUGF0aCA9IDQwOTY7IC8vIFBB
VEhfTUFYID0gNDA5NiBmcm9tIChMaW51eCkgaW5jbHVkZS91YXBpL2xpbnV4L2xpbWl0cy5oCiAK
IHN0YXRpYyBzaXplX3QgbG93V2F0ZXJtYXJrUGFnZXMoKQogewpAQCAtMTI2LDYgKzEzMSwxMjMg
QEAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlBdmFpbGFibGUoc2l6ZV90IG1lbW9yeUZy
ZWUsIHNpemVfdCBhY3RpdmVGaWxlLCBzaXoKICAgICByZXR1cm4gbWVtb3J5QXZhaWxhYmxlOwog
fQogCitzaXplX3QgZ2V0TWVtb3J5VG90YWxXaXRoQ2dyb3VwKGNvbnN0IGNoYXIqIG1lbW9yeUNv
bnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEyOF07CisgICAgY2hhciBjZ3JvdXBQ
YXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIHRva2VuOworICAgIEZJTEUqIGZpbGU7CisK
KyAgICAvLyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYyCisgICAgc25wcmludGYoY2dy
b3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9s
bGVyTmFtZSwgIm1lbW9yeS5tZW1zdy5tYXgiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0
aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwg
MTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwo
dG9rZW4pOworICAgIH0KKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBz
X2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5Lm1heCIpOwor
ICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAg
ICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmls
ZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAgLy8gQ2hlY2sg
bWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENn
cm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1v
cnkubWVtc3cubGltaXRfaW5fYnl0ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwg
InIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4
LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9r
ZW4pOworICAgIH0KKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nn
cm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LmxpbWl0X2luX2J5
dGVzIik7CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGUp
IHsKKyAgICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIGZj
bG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzaXplX3QgZ2V0TWVtb3J5VXNhZ2VXaXRoQ2dyb3Vw
KGNvbnN0IGNoYXIqIG1lbW9yeUNvbnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEy
OF07CisgICAgY2hhciBjZ3JvdXBQYXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIHRva2Vu
OworICAgIGNoYXIqIGxpbmU7CisgICAgRklMRSogZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzOwor
CisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMgorICAgIHNucHJpbnRmKGNn
cm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJv
bGxlck5hbWUsICJtZW1vcnkuY3VycmVudCIpOworICAgIGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRl
cyA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGVDZ3JvdXBQYXRoVXNhZ2VC
eXRlcykgeworICAgICAgICBsaW5lID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGVDZ3JvdXBQYXRo
VXNhZ2VCeXRlcyk7CisgICAgICAgIHRva2VuID0gc3RydG9rKGxpbmUsICIgIik7CisgICAgICAg
IGZjbG9zZShmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAgICAgICByZXR1cm4gYXRvbGwo
dG9rZW4pOworICAgIH0KKworICAgIC8vIENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjEK
KyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBh
dGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LnVzYWdlX2luX2J5dGVzIik7CisgICAg
ZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBp
ZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZm
ZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0
b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7
CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CisvLyBUaGlzIGZpbGUgZGVzY3JpYmVzIGNvbnRyb2wgZ3JvdXBzIHRvIHdoaWNoIHRoZSBwcm9j
ZXNzIHdpdGgKKy8vIHRoZSBjb3JyZXNwb25kaW5nIFBJRCBiZWxvbmdzLiBUaGUgZGlzcGxheWVk
IGluZm9ybWF0aW9uIGRpZmZlcnMKKy8vIGZvciBjZ3JvdXBzIHZlcnNpb24gMSBhbmQgdmVyc2lv
biAyIGhpZXJhcmNoaWVzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gJCBjYXQgL3Byb2Mvc2Vs
Zi9jZ3JvdXAKKy8vIDEyOmh1Z2V0bGI6LworLy8gMTE6cmRtYTovCisvLyAxMDpuZXRfY2xzLG5l
dF9wcmlvOi8KKy8vIDk6ZGV2aWNlczovdXNlci5zbGljZQorLy8gODptZW1vcnk6L3VzZXIuc2xp
Y2UKKy8vIDc6ZnJlZXplcjovdXNlci9wc2FhdmVkcmEvMAorLy8gNjpwaWRzOi91c2VyLnNsaWNl
L3VzZXItMTAwMC5zbGljZS91c2VyQDEwMDAuc2VydmljZQorLy8gNTpibGtpbzovdXNlci5zbGlj
ZQorLy8gNDpwZXJmX2V2ZW50Oi8KKy8vIDM6Y3B1LGNwdWFjY3Q6L3VzZXIuc2xpY2UKKy8vIDI6
Y3B1c2V0Oi8KKy8vIDE6bmFtZT1zeXN0ZW1kOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGljZS91
c2VyQDEwMDAuc2VydmljZS9nbm9tZS10ZXJtaW5hbC1zZXJ2ZXIuc2VydmljZQorLy8gMDo6L3Vz
ZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1pbmFs
LXNlcnZlci5zZXJ2aWNlCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGdldENncm91cENvbnRy
b2xsZXIoY29uc3QgY2hhciogY29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciBtZW1vcnlDb250
cm9sbGVyTmFtZVttYXhDZ3JvdXBQYXRoXTsKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19jZ3Jv
dXBDb250cm9sbGVyLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhDZ3JvdXBQYXRoXTsKKyAgICB3aGlsZSAoY2hhciog
bGluZSA9IGZnZXRzKGJ1ZmZlciwgbWF4Q2dyb3VwUGF0aCwgZmlsZSkpIHsKKyAgICAgICAgY2hh
ciogdG9rZW4gPSBzdHJ0b2sobGluZSwgIlxuIik7CisgICAgICAgIGlmICghdG9rZW4pCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICB0b2tlbiA9IHN0cnRvayh0b2tlbiwgIjoiKTsKKyAg
ICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgaWYgKCFzdHJjbXAo
dG9rZW4sIGNvbnRyb2xsZXJOYW1lKSkgeworICAgICAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVs
bHB0ciwgIjoiKTsKKyAgICAgICAgICAgIHNucHJpbnRmKG1lbW9yeUNvbnRyb2xsZXJOYW1lLCBz
dHJsZW4odG9rZW4pLCAiJXMiLCB0b2tlbik7CisgICAgICAgICAgICBmY2xvc2UoZmlsZSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKwogc3RhdGljIGludCBzeXN0ZW1NZW1vcnlVc2Vk
QXNQZXJjZW50YWdlKCkKIHsKICAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9jL21lbWluZm8i
LCAiciIpOwpAQCAtMTkwLDcgKzMxMiwxNiBAQCBzdGF0aWMgaW50IHN5c3RlbU1lbW9yeVVzZWRB
c1BlcmNlbnRhZ2UoKQogICAgIGlmIChtZW1vcnlBdmFpbGFibGUgPiBtZW1vcnlUb3RhbCkKICAg
ICAgICAgcmV0dXJuIC0xOwogCi0gICAgcmV0dXJuICgobWVtb3J5VG90YWwgLSBtZW1vcnlBdmFp
bGFibGUpICogMTAwKSAvIG1lbW9yeVRvdGFsOworICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRh
Z2UgPSAoKG1lbW9yeVRvdGFsIC0gbWVtb3J5QXZhaWxhYmxlKSAqIDEwMCkgLyBtZW1vcnlUb3Rh
bDsKKyAgICBjb25zdCBjaGFyKiBtZW1vcnlDb250cm9sbGVyTmFtZSA9IGdldENncm91cENvbnRy
b2xsZXIoIm1lbW9yeSIpOworICAgIGlmIChtZW1vcnlDb250cm9sbGVyTmFtZSkgeworICAgICAg
ICBtZW1vcnlUb3RhbCA9IGdldE1lbW9yeVRvdGFsV2l0aENncm91cChtZW1vcnlDb250cm9sbGVy
TmFtZSk7CisgICAgICAgIHNpemVfdCBtZW1vcnlVc2FnZSA9IGdldE1lbW9yeVVzYWdlV2l0aENn
cm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAgICAgIGludCBtZW1vcnlVc2FnZVBlcmNl
bnRhZ2VXaXRoQ2dyb3VwID0gMTAwICogKGZsb2F0KSBtZW1vcnlVc2FnZSAvIChmbG9hdCkgbWVt
b3J5VG90YWw7CisgICAgICAgIGlmIChtZW1vcnlUb3RhbCAmJiAobWVtb3J5VXNhZ2VQZXJjZW50
YWdlV2l0aENncm91cCA+IG1lbW9yeVVzYWdlUGVyY2VudGFnZSkpCisgICAgICAgICAgICBtZW1v
cnlVc2FnZVBlcmNlbnRhZ2UgPSBtZW1vcnlVc2FnZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwOworICAg
IH0KKyAgICByZXR1cm4gbWVtb3J5VXNhZ2VQZXJjZW50YWdlOwogfQogCiBzdGF0aWMgaW5saW5l
IFNlY29uZHMgcG9sbEludGVydmFsRm9yVXNlZE1lbW9yeVBlcmNlbnRhZ2UoaW50IHVzZWRQZXJj
ZW50YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393902</attachid>
            <date>2020-03-18 14:15:53 -0700</date>
            <delta_ts>2020-03-18 16:58:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200318221551.patch</filename>
            <type>text/plain</type>
            <size>6924</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjdhMzc3OGZiOWNhMzBjMDVhYzQ2OTM5ZDdhN2I5ZWYy
OGZmOGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTcgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpnZXRDZ3JvdXBDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3lzdGVtTWVtb3J5VXNl
ZEFzUGVyY2VudGFnZSk6CisKIDIwMjAtMDMtMTcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRGlzYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNz
dXJlTW9uaXRvci5jcHAKaW5kZXggY2ZmZThiOTU3YzEyMzhkY2YwNGU0OTE0OGM0MjI5YTBiYTdh
Y2EzOS4uZmI2NDA5NGIzMjQxMDc1NzcxNTU0NTIxOTdiYjkxNTY2YmZlMjI0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwCkBAIC00Niw2ICs0NiwxMSBAQCBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWluVXNlZE1l
bW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gNTA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNfbWF4
VXNlZE1lbW9yeVBlcmNlbnRhZ2VGb3JQb2xsaW5nID0gODU7CiBzdGF0aWMgY29uc3QgaW50IHNf
bWVtb3J5UHJlc3VyZVBlcmNlbnRhZ2VUaHJlc2hvbGQgPSA5MDsKIHN0YXRpYyBjb25zdCBpbnQg
c19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZENyaXRpY2FsID0gOTU7CisvLyBjZ3Jv
dXBzLjc6IFRoZSB1c3VhbCBwbGFjZSBmb3Igc3VjaCBtb3VudHMgaXMgdW5kZXIgYSB0bXBmcyg1
KQorLy8gZmlsZXN5c3RlbSBtb3VudGVkIGF0IC9zeXMvZnMvY2dyb3VwLgorc3RhdGljIGNvbnN0
IGNoYXIqIHNfY2dyb3VwTWVtb3J5UGF0aCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvJXMvJXMi
Oworc3RhdGljIGNvbnN0IGNoYXIqIHNfY2dyb3VwQ29udHJvbGxlciA9ICIvcHJvYy9zZWxmL2Nn
cm91cCI7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2dyb3VwUGF0aCA9IDQwOTY7IC8vIFBB
VEhfTUFYID0gNDA5NiBmcm9tIChMaW51eCkgaW5jbHVkZS91YXBpL2xpbnV4L2xpbWl0cy5oCiAK
IHN0YXRpYyBzaXplX3QgbG93V2F0ZXJtYXJrUGFnZXMoKQogewpAQCAtMTI2LDYgKzEzMSwxMjQg
QEAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlBdmFpbGFibGUoc2l6ZV90IG1lbW9yeUZy
ZWUsIHNpemVfdCBhY3RpdmVGaWxlLCBzaXoKICAgICByZXR1cm4gbWVtb3J5QXZhaWxhYmxlOwog
fQogCitzaXplX3QgZ2V0TWVtb3J5VG90YWxXaXRoQ2dyb3VwKGNvbnN0IGNoYXIqIG1lbW9yeUNv
bnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEyOF07CisgICAgY2hhciBjZ3JvdXBQ
YXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIHRva2VuOworICAgIEZJTEUqIGZpbGU7CisK
KyAgICAvLyBDaGVjayBtZW1vcnkgbGltaXRzIGluIGNncm91cFYyCisgICAgc25wcmludGYoY2dy
b3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250cm9s
bGVyTmFtZSwgIm1lbW9yeS5tZW1zdy5tYXgiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0
aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwg
MTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwo
dG9rZW4pOworICAgIH0KKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBz
X2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5Lm1heCIpOwor
ICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAg
ICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmls
ZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAgLy8gQ2hlY2sg
bWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENn
cm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUsICJtZW1v
cnkubWVtc3cubGltaXRfaW5fYnl0ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwg
InIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4
LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9r
ZW4pOworICAgIH0KKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nn
cm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LmxpbWl0X2luX2J5
dGVzIik7CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGUp
IHsKKyAgICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIGZj
bG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzaXplX3QgZ2V0TWVtb3J5VXNhZ2VXaXRoQ2dyb3Vw
KGNvbnN0IGNoYXIqIG1lbW9yeUNvbnRyb2xsZXJOYW1lKQoreworICAgIGNoYXIgYnVmZmVyWzEy
OF07CisgICAgY2hhciBjZ3JvdXBQYXRoW21heENncm91cFBhdGhdOworICAgIGNoYXIqIHRva2Vu
OworICAgIGNoYXIqIGxpbmU7CisgICAgRklMRSogZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzOwor
CisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMgorICAgIHNucHJpbnRmKGNn
cm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJv
bGxlck5hbWUsICJtZW1vcnkuY3VycmVudCIpOworICAgIGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRl
cyA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGVDZ3JvdXBQYXRoVXNhZ2VC
eXRlcykgeworICAgICAgICBsaW5lID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGVDZ3JvdXBQYXRo
VXNhZ2VCeXRlcyk7CisgICAgICAgIHRva2VuID0gc3RydG9rKGxpbmUsICIgIik7CisgICAgICAg
IGZjbG9zZShmaWxlQ2dyb3VwUGF0aFVzYWdlQnl0ZXMpOworICAgICAgICByZXR1cm4gYXRvbGwo
dG9rZW4pOworICAgIH0KKworICAgIC8vIENoZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjEK
KyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBh
dGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLCAibWVtb3J5LnVzYWdlX2luX2J5dGVzIik7CisgICAg
ZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBp
ZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZm
ZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0
b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7
CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CisvLyBUaGlzIGZpbGUgZGVzY3JpYmVzIGNvbnRyb2wgZ3JvdXBzIHRvIHdoaWNoIHRoZSBwcm9j
ZXNzIHdpdGgKKy8vIHRoZSBjb3JyZXNwb25kaW5nIFBJRCBiZWxvbmdzLiBUaGUgZGlzcGxheWVk
IGluZm9ybWF0aW9uIGRpZmZlcnMKKy8vIGZvciBjZ3JvdXBzIHZlcnNpb24gMSBhbmQgdmVyc2lv
biAyIGhpZXJhcmNoaWVzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gJCBjYXQgL3Byb2Mvc2Vs
Zi9jZ3JvdXAKKy8vIDEyOmh1Z2V0bGI6LworLy8gMTE6cmRtYTovCisvLyAxMDpuZXRfY2xzLG5l
dF9wcmlvOi8KKy8vIDk6ZGV2aWNlczovdXNlci5zbGljZQorLy8gODptZW1vcnk6L3VzZXIuc2xp
Y2UKKy8vIDc6ZnJlZXplcjovdXNlci9wc2FhdmVkcmEvMAorLy8gNjpwaWRzOi91c2VyLnNsaWNl
L3VzZXItMTAwMC5zbGljZS91c2VyQDEwMDAuc2VydmljZQorLy8gNTpibGtpbzovdXNlci5zbGlj
ZQorLy8gNDpwZXJmX2V2ZW50Oi8KKy8vIDM6Y3B1LGNwdWFjY3Q6L3VzZXIuc2xpY2UKKy8vIDI6
Y3B1c2V0Oi8KKy8vIDE6bmFtZT1zeXN0ZW1kOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGljZS91
c2VyQDEwMDAuc2VydmljZS9nbm9tZS10ZXJtaW5hbC1zZXJ2ZXIuc2VydmljZQorLy8gMDo6L3Vz
ZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1pbmFs
LXNlcnZlci5zZXJ2aWNlCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGdldENncm91cENvbnRy
b2xsZXIoY29uc3QgY2hhciogY29udHJvbGxlck5hbWUpCit7CisgICAgY2hhciBtZW1vcnlDb250
cm9sbGVyTmFtZVttYXhDZ3JvdXBQYXRoXTsKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19jZ3Jv
dXBDb250cm9sbGVyLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhDZ3JvdXBQYXRoXTsKKyAgICB3aGlsZSAoY2hhciog
bGluZSA9IGZnZXRzKGJ1ZmZlciwgbWF4Q2dyb3VwUGF0aCwgZmlsZSkpIHsKKyAgICAgICAgY2hh
ciogdG9rZW4gPSBzdHJ0b2sobGluZSwgIlxuIik7CisgICAgICAgIGlmICghdG9rZW4pCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICB0b2tlbiA9IHN0cnRvayh0b2tlbiwgIjoiKTsKKyAg
ICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgaWYgKCFzdHJjbXAo
dG9rZW4sIGNvbnRyb2xsZXJOYW1lKSkgeworICAgICAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVs
bHB0ciwgIjoiKTsKKyAgICAgICAgICAgIHNucHJpbnRmKG1lbW9yeUNvbnRyb2xsZXJOYW1lLCBz
dHJsZW4odG9rZW4pLCAiJXMiLCB0b2tlbik7CisgICAgICAgICAgICBmY2xvc2UoZmlsZSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgZmNsb3NlKGZpbGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCisKIHN0YXRpYyBp
bnQgc3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpCiB7CiAgICAgRklMRSogZmlsZSA9IGZv
cGVuKCIvcHJvYy9tZW1pbmZvIiwgInIiKTsKQEAgLTE5MCw3ICszMTMsMTYgQEAgc3RhdGljIGlu
dCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkKICAgICBpZiAobWVtb3J5QXZhaWxhYmxl
ID4gbWVtb3J5VG90YWwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHJldHVybiAoKG1lbW9y
eVRvdGFsIC0gbWVtb3J5QXZhaWxhYmxlKSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAgICBpbnQg
bWVtb3J5VXNhZ2VQZXJjZW50YWdlID0gKChtZW1vcnlUb3RhbCAtIG1lbW9yeUF2YWlsYWJsZSkg
KiAxMDApIC8gbWVtb3J5VG90YWw7CisgICAgY29uc3QgY2hhciogbWVtb3J5Q29udHJvbGxlck5h
bWUgPSBnZXRDZ3JvdXBDb250cm9sbGVyKCJtZW1vcnkiKTsKKyAgICBpZiAobWVtb3J5Q29udHJv
bGxlck5hbWUpIHsKKyAgICAgICAgbWVtb3J5VG90YWwgPSBnZXRNZW1vcnlUb3RhbFdpdGhDZ3Jv
dXAobWVtb3J5Q29udHJvbGxlck5hbWUpOworICAgICAgICBzaXplX3QgbWVtb3J5VXNhZ2UgPSBn
ZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAobWVtb3J5Q29udHJvbGxlck5hbWUpOworICAgICAgICBp
bnQgbWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0aENncm91cCA9IDEwMCAqIChmbG9hdCkgbWVtb3J5
VXNhZ2UgLyAoZmxvYXQpIG1lbW9yeVRvdGFsOworICAgICAgICBpZiAobWVtb3J5VG90YWwgJiYg
KG1lbW9yeVVzYWdlUGVyY2VudGFnZVdpdGhDZ3JvdXAgPiBtZW1vcnlVc2FnZVBlcmNlbnRhZ2Up
KQorICAgICAgICAgICAgbWVtb3J5VXNhZ2VQZXJjZW50YWdlID0gbWVtb3J5VXNhZ2VQZXJjZW50
YWdlV2l0aENncm91cDsKKyAgICB9CisgICAgcmV0dXJuIG1lbW9yeVVzYWdlUGVyY2VudGFnZTsK
IH0KIAogc3RhdGljIGlubGluZSBTZWNvbmRzIHBvbGxJbnRlcnZhbEZvclVzZWRNZW1vcnlQZXJj
ZW50YWdlKGludCB1c2VkUGVyY2VudGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393919</attachid>
            <date>2020-03-18 16:58:27 -0700</date>
            <delta_ts>2020-03-19 01:19:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200319005825.patch</filename>
            <type>text/plain</type>
            <size>7445</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLjhlMGExNmVjNzNiMWFjMmJlMjY1ZjM0MTUwNmZhYmZm
YzQxNjhmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDMtMTggIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmdldE1lbW9yeVRvdGFsV2l0aENncm91cCk6CisgICAgICAgIChXZWJLaXQ6OmdldE1lbW9yeVVz
YWdlV2l0aENncm91cCk6CisgICAgICAgIChXZWJLaXQ6OmdldENncm91cENvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKToKKworMjAyMC0w
My0xNyAgUGFibG8gU2FhdmVkcmEgIDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXVtXUEVdIENoZWNrIHRoZSBjZ3JvdXBzIG1lbW9yeSBsaW1pdHMgKHYxIGFuZCB2MikgdG8g
Y2FsY3VsYXRlIHRoZSBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkgaW4gdGhlIE1lbW9y
eVByZXNzdXJlTW9uaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA5MTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL2xpbnV4L01lbW9y
eVByZXNzdXJlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE1lbW9yeVRvdGFsV2l0
aENncm91cCk6CisgICAgICAgIChXZWJLaXQ6OmdldE1lbW9yeVVzYWdlV2l0aENncm91cCk6Cisg
ICAgICAgIChXZWJLaXQ6OmdldENncm91cENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0Ojpz
eXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKToKKwogMjAyMC0wMy0xNyAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBEaXNhYmxlIENGIHBy
ZWZzIGRpcmVjdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51
eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGlu
dXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcAppbmRleCBjZmZlOGI5NTdjMTIzOGRjZjA0ZTQ5
MTQ4YzQyMjlhMGJhN2FjYTM5Li42MTk1M2Y5NDM5MDg3NjVkOGFiZmMwMTdhZDFkNGNhOWZmNTM0
ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9y
eVByZXNzdXJlTW9uaXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDExIEBAIHN0YXRpYyBjb25zdCBkb3Vi
bGUgc19taW5Vc2VkTWVtb3J5UGVyY2VudGFnZUZvclBvbGxpbmcgPSA1MDsKIHN0YXRpYyBjb25z
dCBkb3VibGUgc19tYXhVc2VkTWVtb3J5UGVyY2VudGFnZUZvclBvbGxpbmcgPSA4NTsKIHN0YXRp
YyBjb25zdCBpbnQgc19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRocmVzaG9sZCA9IDkwOwogc3Rh
dGljIGNvbnN0IGludCBzX21lbW9yeVByZXN1cmVQZXJjZW50YWdlVGhyZXNob2xkQ3JpdGljYWwg
PSA5NTsKKy8vIGNncm91cHMuNzogVGhlIHVzdWFsIHBsYWNlIGZvciBzdWNoIG1vdW50cyBpcyB1
bmRlciBhIHRtcGZzKDUpCisvLyBmaWxlc3lzdGVtIG1vdW50ZWQgYXQgL3N5cy9mcy9jZ3JvdXAu
CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBNZW1vcnlQYXRoID0gIi9zeXMvZnMvY2dyb3Vw
L21lbW9yeS8lcy8lcyI7CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBDb250cm9sbGVyID0g
Ii9wcm9jL3NlbGYvY2dyb3VwIjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDZ3JvdXBQYXRo
ID0gNDA5NjsgLy8gUEFUSF9NQVggPSA0MDk2IGZyb20gKExpbnV4KSBpbmNsdWRlL3VhcGkvbGlu
dXgvbGltaXRzLmgKIAogc3RhdGljIHNpemVfdCBsb3dXYXRlcm1hcmtQYWdlcygpCiB7CkBAIC0x
MjYsNiArMTMxLDEyNCBAQCBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUF2YWlsYWJsZShz
aXplX3QgbWVtb3J5RnJlZSwgc2l6ZV90IGFjdGl2ZUZpbGUsIHNpegogICAgIHJldHVybiBtZW1v
cnlBdmFpbGFibGU7CiB9CiAKK3NpemVfdCBnZXRNZW1vcnlUb3RhbFdpdGhDZ3JvdXAoQ1N0cmlu
ZyBtZW1vcnlDb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyIGJ1ZmZlclsxMjhdOworICAgIGNo
YXIgY2dyb3VwUGF0aFttYXhDZ3JvdXBQYXRoXTsKKyAgICBjaGFyKiB0b2tlbjsKKyAgICBGSUxF
KiBmaWxlOworCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMgorICAgIHNu
cHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVt
b3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1lbXN3Lm1heCIpOworICAgIGZpbGUg
PSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2Vu
ID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAg
ICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHNucHJpbnRmKGNncm91cFBhdGgs
IG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUu
ZGF0YSgpLCAibWVtb3J5Lm1heCIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIp
OworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZp
bGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNu
cHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVt
b3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1lbXN3LmxpbWl0X2luX2J5dGVzIik7
CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7CisgICAgaWYgKGZpbGUpIHsKKyAg
ICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7CisgICAgICAgIGZjbG9zZShm
aWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAgICB9CisgICAgc25wcmludGYo
Y2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1vcnlQYXRoLCBtZW1vcnlDb250
cm9sbGVyTmFtZS5kYXRhKCksICJtZW1vcnkubGltaXRfaW5fYnl0ZXMiKTsKKyAgICBmaWxlID0g
Zm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZSkgeworICAgICAgICB0b2tlbiA9
IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlKTsKKyAgICAgICAgZmNsb3NlKGZpbGUpOworICAgICAg
ICByZXR1cm4gYXRvbGwodG9rZW4pOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IHNpemVfdCBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAoQ1N0cmluZyBtZW1vcnlDb250cm9sbGVy
TmFtZSkKK3sKKyAgICBjaGFyIGJ1ZmZlclsxMjhdOworICAgIGNoYXIgY2dyb3VwUGF0aFttYXhD
Z3JvdXBQYXRoXTsKKyAgICBjaGFyKiB0b2tlbjsKKyAgICBjaGFyKiBsaW5lOworICAgIEZJTEUq
IGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlczsKKworICAgIC8vIENoZWNrIG1lbW9yeSBsaW1pdHMg
aW4gY2dyb3VwVjIKKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBtYXhDZ3JvdXBQYXRoLCBzX2Nn
cm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLmRhdGEoKSwgIm1lbW9yeS5jdXJy
ZW50Iik7CisgICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwg
InIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUg
PSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAg
dG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRo
VXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAg
Ly8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBh
dGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5h
bWUuZGF0YSgpLCAibWVtb3J5LnVzYWdlX2luX2J5dGVzIik7CisgICAgZmlsZUNncm91cFBhdGhV
c2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBh
dGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNn
cm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsK
KyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVy
biBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvLyBUaGlzIGZpbGUg
ZGVzY3JpYmVzIGNvbnRyb2wgZ3JvdXBzIHRvIHdoaWNoIHRoZSBwcm9jZXNzIHdpdGgKKy8vIHRo
ZSBjb3JyZXNwb25kaW5nIFBJRCBiZWxvbmdzLiBUaGUgZGlzcGxheWVkIGluZm9ybWF0aW9uIGRp
ZmZlcnMKKy8vIGZvciBjZ3JvdXBzIHZlcnNpb24gMSBhbmQgdmVyc2lvbiAyIGhpZXJhcmNoaWVz
LgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gJCBjYXQgL3Byb2Mvc2VsZi9jZ3JvdXAKKy8vIDEy
Omh1Z2V0bGI6LworLy8gMTE6cmRtYTovCisvLyAxMDpuZXRfY2xzLG5ldF9wcmlvOi8KKy8vIDk6
ZGV2aWNlczovdXNlci5zbGljZQorLy8gODptZW1vcnk6L3VzZXIuc2xpY2UKKy8vIDc6ZnJlZXpl
cjovdXNlci9wc2FhdmVkcmEvMAorLy8gNjpwaWRzOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGlj
ZS91c2VyQDEwMDAuc2VydmljZQorLy8gNTpibGtpbzovdXNlci5zbGljZQorLy8gNDpwZXJmX2V2
ZW50Oi8KKy8vIDM6Y3B1LGNwdWFjY3Q6L3VzZXIuc2xpY2UKKy8vIDI6Y3B1c2V0Oi8KKy8vIDE6
bmFtZT1zeXN0ZW1kOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGljZS91c2VyQDEwMDAuc2Vydmlj
ZS9nbm9tZS10ZXJtaW5hbC1zZXJ2ZXIuc2VydmljZQorLy8gMDo6L3VzZXIuc2xpY2UvdXNlci0x
MDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1pbmFsLXNlcnZlci5zZXJ2aWNl
CitzdGF0aWMgQ1N0cmluZyBnZXRDZ3JvdXBDb250cm9sbGVyKGNvbnN0IGNoYXIqIGNvbnRyb2xs
ZXJOYW1lKQoreworICAgIENTdHJpbmcgbWVtb3J5Q29udHJvbGxlck5hbWU7CisgICAgRklMRSog
ZmlsZSA9IGZvcGVuKHNfY2dyb3VwQ29udHJvbGxlciwgInIiKTsKKyAgICBpZiAoIWZpbGUpCisg
ICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1ZmZlclttYXhDZ3JvdXBQYXRo
XTsKKyAgICB3aGlsZSAoY2hhciogbGluZSA9IGZnZXRzKGJ1ZmZlciwgbWF4Q2dyb3VwUGF0aCwg
ZmlsZSkpIHsKKyAgICAgICAgY2hhciogdG9rZW4gPSBzdHJ0b2sobGluZSwgIlxuIik7CisgICAg
ICAgIGlmICghdG9rZW4pCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB0b2tlbiA9IHN0
cnRvayh0b2tlbiwgIjoiKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsK
KyAgICAgICAgaWYgKCFzdHJjbXAodG9rZW4sIGNvbnRyb2xsZXJOYW1lKSkgeworICAgICAgICAg
ICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgICAgIG1lbW9yeUNvbnRy
b2xsZXJOYW1lID0gQ1N0cmluZyh0b2tlbik7CisgICAgICAgICAgICBmY2xvc2UoZmlsZSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgZmNsb3NlKGZpbGUpOworICAgIHJldHVybiBDU3RyaW5nKCk7Cit9CisKKwogc3RhdGlj
IGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkKIHsKICAgICBGSUxFKiBmaWxlID0g
Zm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwpAQCAtMTkwLDcgKzMxMywxNiBAQCBzdGF0aWMg
aW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNlbnRhZ2UoKQogICAgIGlmIChtZW1vcnlBdmFpbGFi
bGUgPiBtZW1vcnlUb3RhbCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgcmV0dXJuICgobWVt
b3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUpICogMTAwKSAvIG1lbW9yeVRvdGFsOworICAgIGlu
dCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSAoKG1lbW9yeVRvdGFsIC0gbWVtb3J5QXZhaWxhYmxl
KSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAgICBDU3RyaW5nIG1lbW9yeUNvbnRyb2xsZXJOYW1l
ID0gZ2V0Q2dyb3VwQ29udHJvbGxlcigibWVtb3J5Iik7CisgICAgaWYgKCFtZW1vcnlDb250cm9s
bGVyTmFtZS5pc051bGwoKSkgeworICAgICAgICBtZW1vcnlUb3RhbCA9IGdldE1lbW9yeVRvdGFs
V2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAgICAgIHNpemVfdCBtZW1vcnlV
c2FnZSA9IGdldE1lbW9yeVVzYWdlV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7Cisg
ICAgICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwID0gMTAwICogKGZsb2F0
KSBtZW1vcnlVc2FnZSAvIChmbG9hdCkgbWVtb3J5VG90YWw7CisgICAgICAgIGlmIChtZW1vcnlU
b3RhbCAmJiAobWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0aENncm91cCA+IG1lbW9yeVVzYWdlUGVy
Y2VudGFnZSkpCisgICAgICAgICAgICBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSBtZW1vcnlVc2Fn
ZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwOworICAgIH0KKyAgICByZXR1cm4gbWVtb3J5VXNhZ2VQZXJj
ZW50YWdlOwogfQogCiBzdGF0aWMgaW5saW5lIFNlY29uZHMgcG9sbEludGVydmFsRm9yVXNlZE1l
bW9yeVBlcmNlbnRhZ2UoaW50IHVzZWRQZXJjZW50YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393956</attachid>
            <date>2020-03-19 01:19:09 -0700</date>
            <delta_ts>2020-03-19 11:00:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200319091907.patch</filename>
            <type>text/plain</type>
            <size>8238</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLmI4NmM5ZjNiZGViYTJjZGVmZWIzNDM0NjUyZGNmMGEw
MGM0NGZhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDMtMTkgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIE1vZGlmaWVzIHRoZSBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkg
ZnVuY3Rpb24gYWRkaW5nIHRoZSBsb2dpYworICAgICAgICB0byByZWFkIHRoZSBtZW1vcnkgbGlt
aXRzIGFuZCB0aGUgY3VycmVudCBtZW1vcnkgdXNlZCBpbiB0aGUgY2dyb3VwCisgICAgICAgIGFz
c29jaWF0ZWQgdG8gdGhlIFdlYktpdCBwcm9jZXNzOgorCisgICAgICAgIC0gbWVtb3J5Lm1lbXN3
LnVzYWdlX2luX2J5dGVzIChvciBtZW1vcnkubWVtc3cubWF4IGluIGNncm91cFYyKToKKyAgICAg
ICAgICBjdXJyZW50IHVzYWdlIGZvciBtZW1vcnkrU3dhcAorICAgICAgICAtIG1lbW9yeS5saW1p
dF9pbl9ieXRlcyAob3IgbWVtb3J5LmN1cnJlbnQgaW4gY2dyb3VwVjIpOgorICAgICAgICAgIGxp
bWl0IG9mIG1lbW9yeSB1c2FnZQorICAgICAgICAtIG1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRl
cyAob3IgbWVtb3J5Lm1heCBpbiBjZ3JvdXBWMik6CisgICAgICAgICAgbGltaXQgb2YgbWVtb3J5
K1N3YXAgdXNhZ2UKKworICAgICAgICBJbiBjYXNlIG9mIHRoZSBXSyBwcm9jZXNzZXMgYXJlIGFz
c29jaWF0ZWQgdG8gYSBjZ3JvdXAgd2l0aCBtZW1vcnkKKyAgICAgICAgY29udHJvbGxlciwgdGhl
IGZ1bmN0aW9uIHJlYWRzIHRoZSBtZW1vcnkubGltaXRfaW5fYnl0ZXMgb3IKKyAgICAgICAgdGhl
IG1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRlcyBhbmQgdGhlIGFuZCBtZW1vcnkudXNhZ2VfaW5f
Ynl0ZXMKKyAgICAgICAgZnJvbSB0aGUgY2dyb3VwIG1vdW50IHBvaW50IGFuZCBjYWxjdWxhdGVz
IHRoZSBwZXJjZW50YWdlIG9mCisgICAgICAgIG1lbW9yeSB1c2VkLgorCisgICAgICAgIEluIG90
aGVyIGNhc2VzIChubyBjZ3JvdXAgbWVtb3J5IGNvbnRyb2xsZXIgYXNzb2NpYXRlZCBvciBsaW1p
dHMKKyAgICAgICAgaGlnaGVyIHRoYW4gdGhlIHJlYWwgbWVtb3J5IGF2YWlsYWJsZSksIHRoZSBm
dW5jdGlvbiB3aWxsIHJldHVybiB0aGUKKyAgICAgICAgcGVyY2VudGFnZSBiYXNlZCBvbiB0aGUg
cmVhbCBtZW1vcnkgYXZhaWxhYmxlIGFuZCByZWFsIHRvdGFsIG1lbW9yeQorICAgICAgICBpbiB0
aGUgc3lzdGVtLgorCisgICAgICAgIFRoZSBsb2dpYyBzdXBwb3J0cyBzdXBwb3J0cyBib3RoIGNn
cm91cFYxIGFuZCBjZ3JvdXBWMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmdldE1lbW9yeVRvdGFsV2l0aENncm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OmdldE1lbW9yeVVzYWdlV2l0aENncm91cCk6CisgICAgICAgIChXZWJLaXQ6OmdldENn
cm91cENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpzeXN0ZW1NZW1vcnlVc2VkQXNQZXJj
ZW50YWdlKToKKwogMjAyMC0wMy0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBEaXNhYmxlIENGIHByZWZzIGRpcmVjdCBtb2RlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25p
dG9yLmNwcAppbmRleCBjZmZlOGI5NTdjMTIzOGRjZjA0ZTQ5MTQ4YzQyMjlhMGJhN2FjYTM5Li40
MmViNzY0MDQ4ZGE5NDA2YWEwZTZiNmQyNzZmNDVmMGU4YjAzZTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ2LDYgKzQ3LDExIEBA
IHN0YXRpYyBjb25zdCBkb3VibGUgc19taW5Vc2VkTWVtb3J5UGVyY2VudGFnZUZvclBvbGxpbmcg
PSA1MDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc19tYXhVc2VkTWVtb3J5UGVyY2VudGFnZUZvclBv
bGxpbmcgPSA4NTsKIHN0YXRpYyBjb25zdCBpbnQgc19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRo
cmVzaG9sZCA9IDkwOwogc3RhdGljIGNvbnN0IGludCBzX21lbW9yeVByZXN1cmVQZXJjZW50YWdl
VGhyZXNob2xkQ3JpdGljYWwgPSA5NTsKKy8vIGNncm91cHMuNzogVGhlIHVzdWFsIHBsYWNlIGZv
ciBzdWNoIG1vdW50cyBpcyB1bmRlciBhIHRtcGZzKDUpCisvLyBmaWxlc3lzdGVtIG1vdW50ZWQg
YXQgL3N5cy9mcy9jZ3JvdXAuCitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBNZW1vcnlQYXRo
ID0gIi9zeXMvZnMvY2dyb3VwL21lbW9yeS8lcy8lcyI7CitzdGF0aWMgY29uc3QgY2hhciogc19j
Z3JvdXBDb250cm9sbGVyID0gIi9wcm9jL3NlbGYvY2dyb3VwIjsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhDZ3JvdXBQYXRoID0gNDA5NjsgLy8gUEFUSF9NQVggPSA0MDk2IGZyb20gKExpbnV4
KSBpbmNsdWRlL3VhcGkvbGludXgvbGltaXRzLmgKIAogc3RhdGljIHNpemVfdCBsb3dXYXRlcm1h
cmtQYWdlcygpCiB7CkBAIC0xMjYsNiArMTMyLDEyNCBAQCBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0
ZU1lbW9yeUF2YWlsYWJsZShzaXplX3QgbWVtb3J5RnJlZSwgc2l6ZV90IGFjdGl2ZUZpbGUsIHNp
egogICAgIHJldHVybiBtZW1vcnlBdmFpbGFibGU7CiB9CiAKK3NpemVfdCBnZXRNZW1vcnlUb3Rh
bFdpdGhDZ3JvdXAoQ1N0cmluZyBtZW1vcnlDb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyIGJ1
ZmZlclsxMjhdOworICAgIGNoYXIgY2dyb3VwUGF0aFttYXhDZ3JvdXBQYXRoXTsKKyAgICBjaGFy
KiB0b2tlbjsKKyAgICBGSUxFKiBmaWxlOworCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBp
biBjZ3JvdXBWMgorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dy
b3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1lbXN3
Lm1heCIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxl
KSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBm
Y2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHNu
cHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVt
b3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1heCIpOworICAgIGZpbGUgPSBmb3Bl
bihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdl
dHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJl
dHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBp
biBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dy
b3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1lbXN3
LmxpbWl0X2luX2J5dGVzIik7CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7Cisg
ICAgaWYgKGZpbGUpIHsKKyAgICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7
CisgICAgICAgIGZjbG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAg
ICB9CisgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1v
cnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZS5kYXRhKCksICJtZW1vcnkubGltaXRfaW5fYnl0
ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZSkg
eworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlKTsKKyAgICAgICAgZmNs
b3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9rZW4pOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKworc3RhdGljIHNpemVfdCBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAoQ1N0cmlu
ZyBtZW1vcnlDb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyIGJ1ZmZlclsxMjhdOworICAgIGNo
YXIgY2dyb3VwUGF0aFttYXhDZ3JvdXBQYXRoXTsKKyAgICBjaGFyKiB0b2tlbjsKKyAgICBjaGFy
KiBsaW5lOworICAgIEZJTEUqIGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlczsKKworICAgIC8vIENo
ZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjIKKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBt
YXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLmRh
dGEoKSwgIm1lbW9yeS5jdXJyZW50Iik7CisgICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0g
Zm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVz
KSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2Fn
ZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNs
b3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tl
bik7CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAg
IHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwg
bWVtb3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5LnVzYWdlX2luX2J5dGVzIik7Cisg
ICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAg
ICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhi
dWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBz
dHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRl
cyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCisvLyBUaGlzIGZpbGUgZGVzY3JpYmVzIGNvbnRyb2wgZ3JvdXBzIHRvIHdoaWNoIHRoZSBw
cm9jZXNzIHdpdGgKKy8vIHRoZSBjb3JyZXNwb25kaW5nIFBJRCBiZWxvbmdzLiBUaGUgZGlzcGxh
eWVkIGluZm9ybWF0aW9uIGRpZmZlcnMKKy8vIGZvciBjZ3JvdXBzIHZlcnNpb24gMSBhbmQgdmVy
c2lvbiAyIGhpZXJhcmNoaWVzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gJCBjYXQgL3Byb2Mv
c2VsZi9jZ3JvdXAKKy8vIDEyOmh1Z2V0bGI6LworLy8gMTE6cmRtYTovCisvLyAxMDpuZXRfY2xz
LG5ldF9wcmlvOi8KKy8vIDk6ZGV2aWNlczovdXNlci5zbGljZQorLy8gODptZW1vcnk6L3VzZXIu
c2xpY2UKKy8vIDc6ZnJlZXplcjovdXNlci9wc2FhdmVkcmEvMAorLy8gNjpwaWRzOi91c2VyLnNs
aWNlL3VzZXItMTAwMC5zbGljZS91c2VyQDEwMDAuc2VydmljZQorLy8gNTpibGtpbzovdXNlci5z
bGljZQorLy8gNDpwZXJmX2V2ZW50Oi8KKy8vIDM6Y3B1LGNwdWFjY3Q6L3VzZXIuc2xpY2UKKy8v
IDI6Y3B1c2V0Oi8KKy8vIDE6bmFtZT1zeXN0ZW1kOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGlj
ZS91c2VyQDEwMDAuc2VydmljZS9nbm9tZS10ZXJtaW5hbC1zZXJ2ZXIuc2VydmljZQorLy8gMDo6
L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1p
bmFsLXNlcnZlci5zZXJ2aWNlCitzdGF0aWMgQ1N0cmluZyBnZXRDZ3JvdXBDb250cm9sbGVyKGNv
bnN0IGNoYXIqIGNvbnRyb2xsZXJOYW1lKQoreworICAgIENTdHJpbmcgbWVtb3J5Q29udHJvbGxl
ck5hbWU7CisgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfY2dyb3VwQ29udHJvbGxlciwgInIiKTsK
KyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1
ZmZlclttYXhDZ3JvdXBQYXRoXTsKKyAgICB3aGlsZSAoY2hhciogbGluZSA9IGZnZXRzKGJ1ZmZl
ciwgbWF4Q2dyb3VwUGF0aCwgZmlsZSkpIHsKKyAgICAgICAgY2hhciogdG9rZW4gPSBzdHJ0b2so
bGluZSwgIlxuIik7CisgICAgICAgIGlmICghdG9rZW4pCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICB0b2tlbiA9IHN0cnRvayh0b2tlbiwgIjoiKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0
b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgaWYgKCFzdHJjbXAodG9rZW4sIGNvbnRyb2xsZXJO
YW1lKSkgeworICAgICAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAg
ICAgICAgIG1lbW9yeUNvbnRyb2xsZXJOYW1lID0gQ1N0cmluZyh0b2tlbik7CisgICAgICAgICAg
ICBmY2xvc2UoZmlsZSk7CisgICAgICAgICAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgZmNsb3NlKGZpbGUpOworICAgIHJldHVybiBDU3RyaW5n
KCk7Cit9CisKKwogc3RhdGljIGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkKIHsK
ICAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwpAQCAtMTkwLDcg
KzMxNCwxOCBAQCBzdGF0aWMgaW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNlbnRhZ2UoKQogICAg
IGlmIChtZW1vcnlBdmFpbGFibGUgPiBtZW1vcnlUb3RhbCkKICAgICAgICAgcmV0dXJuIC0xOwog
Ci0gICAgcmV0dXJuICgobWVtb3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUpICogMTAwKSAvIG1l
bW9yeVRvdGFsOworICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSAoKG1lbW9yeVRvdGFs
IC0gbWVtb3J5QXZhaWxhYmxlKSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAgICBDU3RyaW5nIG1l
bW9yeUNvbnRyb2xsZXJOYW1lID0gZ2V0Q2dyb3VwQ29udHJvbGxlcigibWVtb3J5Iik7CisgICAg
aWYgKCFtZW1vcnlDb250cm9sbGVyTmFtZS5pc051bGwoKSkgeworICAgICAgICBtZW1vcnlUb3Rh
bCA9IGdldE1lbW9yeVRvdGFsV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAg
ICAgIHNpemVfdCBtZW1vcnlVc2FnZSA9IGdldE1lbW9yeVVzYWdlV2l0aENncm91cChtZW1vcnlD
b250cm9sbGVyTmFtZSk7CisgICAgICAgIGlmIChtZW1vcnlUb3RhbCkgeworICAgICAgICAgICAg
aW50IG1lbW9yeVVzYWdlUGVyY2VudGFnZVdpdGhDZ3JvdXAgPSAxMDAgKiAoZmxvYXQpIG1lbW9y
eVVzYWdlIC8gKGZsb2F0KSBtZW1vcnlUb3RhbDsKKyAgICAgICAgICAgIGlmIChtZW1vcnlVc2Fn
ZVBlcmNlbnRhZ2VXaXRoQ2dyb3VwID4gbWVtb3J5VXNhZ2VQZXJjZW50YWdlKQorICAgICAgICAg
ICAgICAgIG1lbW9yeVVzYWdlUGVyY2VudGFnZSA9IG1lbW9yeVVzYWdlUGVyY2VudGFnZVdpdGhD
Z3JvdXA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1lbW9yeVVzYWdlUGVyY2VudGFn
ZTsKIH0KIAogc3RhdGljIGlubGluZSBTZWNvbmRzIHBvbGxJbnRlcnZhbEZvclVzZWRNZW1vcnlQ
ZXJjZW50YWdlKGludCB1c2VkUGVyY2VudGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393996</attachid>
            <date>2020-03-19 11:00:57 -0700</date>
            <delta_ts>2020-03-23 06:33:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-209186-20200319190055.patch</filename>
            <type>text/plain</type>
            <size>8240</size>
            <attacher name="Pablo Saavedra">psaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiNjQxYTQyNDIzZmMwZDNh
ZjUxMDAzOWE0NjE4OTQ1NjExZGU4NjIuLmFkYzkwYmI3ZmFiM2MxNjlmMWZhNzllYTZmZDUyMDNm
NzczYmUxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDMtMTkgIFBhYmxvIFNh
YXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBDaGVj
ayB0aGUgY2dyb3VwcyBtZW1vcnkgbGltaXRzICh2MSBhbmQgdjIpIHRvIGNhbGN1bGF0ZSB0aGUg
c3lzdGVtTWVtb3J5VXNlZEFzUGVyY2VudGFnZSgpIGluIHRoZSBNZW1vcnlQcmVzc3VyZU1vbml0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTE4
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlm
aWVzIHRoZSBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkgZnVuY3Rpb24gYWRkaW5nIHRo
ZSBsb2dpYworICAgICAgICB0byByZWFkIHRoZSBtZW1vcnkgbGltaXRzIGFuZCB0aGUgY3VycmVu
dCBtZW1vcnkgdXNlZCBpbiB0aGUgY2dyb3VwCisgICAgICAgIGFzc29jaWF0ZWQgdG8gdGhlIFdl
YktpdCBwcm9jZXNzOgorCisgICAgICAgIC0gbWVtb3J5Lm1lbXN3LnVzYWdlX2luX2J5dGVzIChv
ciBtZW1vcnkubWVtc3cubWF4IGluIGNncm91cFYyKToKKyAgICAgICAgICBjdXJyZW50IHVzYWdl
IGZvciBtZW1vcnkrU3dhcAorICAgICAgICAtIG1lbW9yeS5saW1pdF9pbl9ieXRlcyAob3IgbWVt
b3J5LmN1cnJlbnQgaW4gY2dyb3VwVjIpOgorICAgICAgICAgIGxpbWl0IG9mIG1lbW9yeSB1c2Fn
ZQorICAgICAgICAtIG1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRlcyAob3IgbWVtb3J5Lm1heCBp
biBjZ3JvdXBWMik6CisgICAgICAgICAgbGltaXQgb2YgbWVtb3J5K1N3YXAgdXNhZ2UKKworICAg
ICAgICBJbiBjYXNlIG9mIHRoZSBXSyBwcm9jZXNzZXMgYXJlIGFzc29jaWF0ZWQgdG8gYSBjZ3Jv
dXAgd2l0aCBtZW1vcnkKKyAgICAgICAgY29udHJvbGxlciwgdGhlIGZ1bmN0aW9uIHJlYWRzIHRo
ZSBtZW1vcnkubGltaXRfaW5fYnl0ZXMgb3IKKyAgICAgICAgdGhlIG1lbW9yeS5tZW1zdy5saW1p
dF9pbl9ieXRlcyBhbmQgdGhlIGFuZCBtZW1vcnkudXNhZ2VfaW5fYnl0ZXMKKyAgICAgICAgZnJv
bSB0aGUgY2dyb3VwIG1vdW50IHBvaW50IGFuZCBjYWxjdWxhdGVzIHRoZSBwZXJjZW50YWdlIG9m
CisgICAgICAgIG1lbW9yeSB1c2VkLgorCisgICAgICAgIEluIG90aGVyIGNhc2VzIChubyBjZ3Jv
dXAgbWVtb3J5IGNvbnRyb2xsZXIgYXNzb2NpYXRlZCBvciBsaW1pdHMKKyAgICAgICAgaGlnaGVy
IHRoYW4gdGhlIHJlYWwgbWVtb3J5IGF2YWlsYWJsZSksIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVy
biB0aGUKKyAgICAgICAgcGVyY2VudGFnZSBiYXNlZCBvbiB0aGUgcmVhbCBtZW1vcnkgYXZhaWxh
YmxlIGFuZCByZWFsIHRvdGFsIG1lbW9yeQorICAgICAgICBpbiB0aGUgc3lzdGVtLgorCisgICAg
ICAgIFRoZSBsb2dpYyBzdXBwb3J0cyBzdXBwb3J0cyBib3RoIGNncm91cFYxIGFuZCBjZ3JvdXBW
MgorCisgICAgICAgICogVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmdldE1lbW9yeVRvdGFsV2l0aENncm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OmdldE1lbW9yeVVzYWdlV2l0aENncm91cCk6CisgICAgICAgIChXZWJLaXQ6OmdldENn
cm91cENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpzeXN0ZW1NZW1vcnlVc2VkQXNQZXJj
ZW50YWdlKToKKwogMjAyMC0wMy0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBEaXNhYmxlIENGIHByZWZzIGRpcmVjdCBtb2RlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25p
dG9yLmNwcAppbmRleCBjZmZlOGI5NTdjMTIzOGRjZjA0ZTQ5MTQ4YzQyMjlhMGJhN2FjYTM5Li5k
NjlhNmI4ZmE0NjRkYTM5NDY4ZGM2ODE1MGRhYTVjNzk4MmRkODg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2xpbnV4L01lbW9yeVByZXNzdXJlTW9uaXRvci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ2LDYgKzQ3LDExIEBA
IHN0YXRpYyBjb25zdCBkb3VibGUgc19taW5Vc2VkTWVtb3J5UGVyY2VudGFnZUZvclBvbGxpbmcg
PSA1MDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc19tYXhVc2VkTWVtb3J5UGVyY2VudGFnZUZvclBv
bGxpbmcgPSA4NTsKIHN0YXRpYyBjb25zdCBpbnQgc19tZW1vcnlQcmVzdXJlUGVyY2VudGFnZVRo
cmVzaG9sZCA9IDkwOwogc3RhdGljIGNvbnN0IGludCBzX21lbW9yeVByZXN1cmVQZXJjZW50YWdl
VGhyZXNob2xkQ3JpdGljYWwgPSA5NTsKKy8vIGNncm91cHMuNzogVGhlIHVzdWFsIHBsYWNlIGZv
ciBzdWNoIG1vdW50cyBpcyB1bmRlciBhIHRtcGZzKDUpCisvLyBmaWxlc3lzdGVtIG1vdW50ZWQg
YXQgL3N5cy9mcy9jZ3JvdXAuCitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBNZW1vcnlQYXRo
ID0gIi9zeXMvZnMvY2dyb3VwL21lbW9yeS8lcy8lcyI7CitzdGF0aWMgY29uc3QgY2hhciogc19j
Z3JvdXBDb250cm9sbGVyID0gIi9wcm9jL3NlbGYvY2dyb3VwIjsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhDZ3JvdXBQYXRoID0gNDA5NjsgLy8gUEFUSF9NQVggPSA0MDk2IGZyb20gKExpbnV4
KSBpbmNsdWRlL3VhcGkvbGludXgvbGltaXRzLmgKIAogc3RhdGljIHNpemVfdCBsb3dXYXRlcm1h
cmtQYWdlcygpCiB7CkBAIC0xMjYsNiArMTMyLDEyNCBAQCBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0
ZU1lbW9yeUF2YWlsYWJsZShzaXplX3QgbWVtb3J5RnJlZSwgc2l6ZV90IGFjdGl2ZUZpbGUsIHNp
egogICAgIHJldHVybiBtZW1vcnlBdmFpbGFibGU7CiB9CiAKK3NpemVfdCBnZXRNZW1vcnlUb3Rh
bFdpdGhDZ3JvdXAoQ1N0cmluZyBtZW1vcnlDb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyIGJ1
ZmZlclsxMjhdOworICAgIGNoYXIgY2dyb3VwUGF0aFttYXhDZ3JvdXBQYXRoXTsKKyAgICBjaGFy
KiB0b2tlbjsKKyAgICBGSUxFKiBmaWxlOworCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBp
biBjZ3JvdXBWMgorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dy
b3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1lbXN3
Lm1heCIpOworICAgIGZpbGUgPSBmb3BlbihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxl
KSB7CisgICAgICAgIHRva2VuID0gZmdldHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBm
Y2xvc2UoZmlsZSk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHNu
cHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwgbWVt
b3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1heCIpOworICAgIGZpbGUgPSBmb3Bl
bihjZ3JvdXBQYXRoLCAiciIpOworICAgIGlmIChmaWxlKSB7CisgICAgICAgIHRva2VuID0gZmdl
dHMoYnVmZmVyLCAxMjgsIGZpbGUpOworICAgICAgICBmY2xvc2UoZmlsZSk7CisgICAgICAgIHJl
dHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBp
biBjZ3JvdXBWMQorICAgIHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dy
b3VwTWVtb3J5UGF0aCwgbWVtb3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5Lm1lbXN3
LmxpbWl0X2luX2J5dGVzIik7CisgICAgZmlsZSA9IGZvcGVuKGNncm91cFBhdGgsICJyIik7Cisg
ICAgaWYgKGZpbGUpIHsKKyAgICAgICAgdG9rZW4gPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZSk7
CisgICAgICAgIGZjbG9zZShmaWxlKTsKKyAgICAgICAgcmV0dXJuIGF0b2xsKHRva2VuKTsKKyAg
ICB9CisgICAgc25wcmludGYoY2dyb3VwUGF0aCwgbWF4Q2dyb3VwUGF0aCwgc19jZ3JvdXBNZW1v
cnlQYXRoLCBtZW1vcnlDb250cm9sbGVyTmFtZS5kYXRhKCksICJtZW1vcnkubGltaXRfaW5fYnl0
ZXMiKTsKKyAgICBmaWxlID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZSkg
eworICAgICAgICB0b2tlbiA9IGZnZXRzKGJ1ZmZlciwgMTI4LCBmaWxlKTsKKyAgICAgICAgZmNs
b3NlKGZpbGUpOworICAgICAgICByZXR1cm4gYXRvbGwodG9rZW4pOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKworc3RhdGljIHNpemVfdCBnZXRNZW1vcnlVc2FnZVdpdGhDZ3JvdXAoQ1N0cmlu
ZyBtZW1vcnlDb250cm9sbGVyTmFtZSkKK3sKKyAgICBjaGFyIGJ1ZmZlclsxMjhdOworICAgIGNo
YXIgY2dyb3VwUGF0aFttYXhDZ3JvdXBQYXRoXTsKKyAgICBjaGFyKiB0b2tlbjsKKyAgICBjaGFy
KiBsaW5lOworICAgIEZJTEUqIGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlczsKKworICAgIC8vIENo
ZWNrIG1lbW9yeSBsaW1pdHMgaW4gY2dyb3VwVjIKKyAgICBzbnByaW50ZihjZ3JvdXBQYXRoLCBt
YXhDZ3JvdXBQYXRoLCBzX2Nncm91cE1lbW9yeVBhdGgsIG1lbW9yeUNvbnRyb2xsZXJOYW1lLmRh
dGEoKSwgIm1lbW9yeS5jdXJyZW50Iik7CisgICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0g
Zm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAgICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVz
KSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2Fn
ZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNs
b3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRlcyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tl
bik7CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWVtb3J5IGxpbWl0cyBpbiBjZ3JvdXBWMQorICAg
IHNucHJpbnRmKGNncm91cFBhdGgsIG1heENncm91cFBhdGgsIHNfY2dyb3VwTWVtb3J5UGF0aCwg
bWVtb3J5Q29udHJvbGxlck5hbWUuZGF0YSgpLCAibWVtb3J5LnVzYWdlX2luX2J5dGVzIik7Cisg
ICAgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzID0gZm9wZW4oY2dyb3VwUGF0aCwgInIiKTsKKyAg
ICBpZiAoZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKSB7CisgICAgICAgIGxpbmUgPSBmZ2V0cyhi
dWZmZXIsIDEyOCwgZmlsZUNncm91cFBhdGhVc2FnZUJ5dGVzKTsKKyAgICAgICAgdG9rZW4gPSBz
dHJ0b2sobGluZSwgIiAiKTsKKyAgICAgICAgZmNsb3NlKGZpbGVDZ3JvdXBQYXRoVXNhZ2VCeXRl
cyk7CisgICAgICAgIHJldHVybiBhdG9sbCh0b2tlbik7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCisvLyBUaGlzIGZpbGUgZGVzY3JpYmVzIGNvbnRyb2wgZ3JvdXBzIHRvIHdoaWNoIHRoZSBw
cm9jZXNzIHdpdGgKKy8vIHRoZSBjb3JyZXNwb25kaW5nIFBJRCBiZWxvbmdzLiBUaGUgZGlzcGxh
eWVkIGluZm9ybWF0aW9uIGRpZmZlcnMKKy8vIGZvciBjZ3JvdXBzIHZlcnNpb24gMSBhbmQgdmVy
c2lvbiAyIGhpZXJhcmNoaWVzLgorLy8KKy8vIEV4YW1wbGU6CisvLworLy8gJCBjYXQgL3Byb2Mv
c2VsZi9jZ3JvdXAKKy8vIDEyOmh1Z2V0bGI6LworLy8gMTE6cmRtYTovCisvLyAxMDpuZXRfY2xz
LG5ldF9wcmlvOi8KKy8vIDk6ZGV2aWNlczovdXNlci5zbGljZQorLy8gODptZW1vcnk6L3VzZXIu
c2xpY2UKKy8vIDc6ZnJlZXplcjovdXNlci9wc2FhdmVkcmEvMAorLy8gNjpwaWRzOi91c2VyLnNs
aWNlL3VzZXItMTAwMC5zbGljZS91c2VyQDEwMDAuc2VydmljZQorLy8gNTpibGtpbzovdXNlci5z
bGljZQorLy8gNDpwZXJmX2V2ZW50Oi8KKy8vIDM6Y3B1LGNwdWFjY3Q6L3VzZXIuc2xpY2UKKy8v
IDI6Y3B1c2V0Oi8KKy8vIDE6bmFtZT1zeXN0ZW1kOi91c2VyLnNsaWNlL3VzZXItMTAwMC5zbGlj
ZS91c2VyQDEwMDAuc2VydmljZS9nbm9tZS10ZXJtaW5hbC1zZXJ2ZXIuc2VydmljZQorLy8gMDo6
L3VzZXIuc2xpY2UvdXNlci0xMDAwLnNsaWNlL3VzZXJAMTAwMC5zZXJ2aWNlL2dub21lLXRlcm1p
bmFsLXNlcnZlci5zZXJ2aWNlCitzdGF0aWMgQ1N0cmluZyBnZXRDZ3JvdXBDb250cm9sbGVyKGNv
bnN0IGNoYXIqIGNvbnRyb2xsZXJOYW1lKQoreworICAgIENTdHJpbmcgbWVtb3J5Q29udHJvbGxl
ck5hbWU7CisgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfY2dyb3VwQ29udHJvbGxlciwgInIiKTsK
KyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBjaGFyIGJ1
ZmZlclttYXhDZ3JvdXBQYXRoXTsKKyAgICB3aGlsZSAoY2hhciogbGluZSA9IGZnZXRzKGJ1ZmZl
ciwgbWF4Q2dyb3VwUGF0aCwgZmlsZSkpIHsKKyAgICAgICAgY2hhciogdG9rZW4gPSBzdHJ0b2so
bGluZSwgIlxuIik7CisgICAgICAgIGlmICghdG9rZW4pCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICB0b2tlbiA9IHN0cnRvayh0b2tlbiwgIjoiKTsKKyAgICAgICAgdG9rZW4gPSBzdHJ0
b2sobnVsbHB0ciwgIjoiKTsKKyAgICAgICAgaWYgKCFzdHJjbXAodG9rZW4sIGNvbnRyb2xsZXJO
YW1lKSkgeworICAgICAgICAgICAgdG9rZW4gPSBzdHJ0b2sobnVsbHB0ciwgIjoiKTsKKyAgICAg
ICAgICAgIG1lbW9yeUNvbnRyb2xsZXJOYW1lID0gQ1N0cmluZyh0b2tlbik7CisgICAgICAgICAg
ICBmY2xvc2UoZmlsZSk7CisgICAgICAgICAgICByZXR1cm4gbWVtb3J5Q29udHJvbGxlck5hbWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgZmNsb3NlKGZpbGUpOworICAgIHJldHVybiBDU3RyaW5n
KCk7Cit9CisKKwogc3RhdGljIGludCBzeXN0ZW1NZW1vcnlVc2VkQXNQZXJjZW50YWdlKCkKIHsK
ICAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwpAQCAtMTkwLDcg
KzMxNCwxOCBAQCBzdGF0aWMgaW50IHN5c3RlbU1lbW9yeVVzZWRBc1BlcmNlbnRhZ2UoKQogICAg
IGlmIChtZW1vcnlBdmFpbGFibGUgPiBtZW1vcnlUb3RhbCkKICAgICAgICAgcmV0dXJuIC0xOwog
Ci0gICAgcmV0dXJuICgobWVtb3J5VG90YWwgLSBtZW1vcnlBdmFpbGFibGUpICogMTAwKSAvIG1l
bW9yeVRvdGFsOworICAgIGludCBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UgPSAoKG1lbW9yeVRvdGFs
IC0gbWVtb3J5QXZhaWxhYmxlKSAqIDEwMCkgLyBtZW1vcnlUb3RhbDsKKyAgICBDU3RyaW5nIG1l
bW9yeUNvbnRyb2xsZXJOYW1lID0gZ2V0Q2dyb3VwQ29udHJvbGxlcigibWVtb3J5Iik7CisgICAg
aWYgKCFtZW1vcnlDb250cm9sbGVyTmFtZS5pc051bGwoKSkgeworICAgICAgICBtZW1vcnlUb3Rh
bCA9IGdldE1lbW9yeVRvdGFsV2l0aENncm91cChtZW1vcnlDb250cm9sbGVyTmFtZSk7CisgICAg
ICAgIHNpemVfdCBtZW1vcnlVc2FnZSA9IGdldE1lbW9yeVVzYWdlV2l0aENncm91cChtZW1vcnlD
b250cm9sbGVyTmFtZSk7CisgICAgICAgIGlmIChtZW1vcnlUb3RhbCkgeworICAgICAgICAgICAg
aW50IG1lbW9yeVVzYWdlUGVyY2VudGFnZVdpdGhDZ3JvdXAgPSAxMDAgKiAoKGZsb2F0KSBtZW1v
cnlVc2FnZSAvIChmbG9hdCkgbWVtb3J5VG90YWwpOworICAgICAgICAgICAgaWYgKG1lbW9yeVVz
YWdlUGVyY2VudGFnZVdpdGhDZ3JvdXAgPiBtZW1vcnlVc2FnZVBlcmNlbnRhZ2UpCisgICAgICAg
ICAgICAgICAgbWVtb3J5VXNhZ2VQZXJjZW50YWdlID0gbWVtb3J5VXNhZ2VQZXJjZW50YWdlV2l0
aENncm91cDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWVtb3J5VXNhZ2VQZXJjZW50
YWdlOwogfQogCiBzdGF0aWMgaW5saW5lIFNlY29uZHMgcG9sbEludGVydmFsRm9yVXNlZE1lbW9y
eVBlcmNlbnRhZ2UoaW50IHVzZWRQZXJjZW50YWdlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>