<?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>173689</bug_id>
          
          <creation_ts>2017-06-21 19:49:25 -0700</creation_ts>
          <short_desc>REGRESSION (r218419): 3 NSMutableDictionary leaks calling -[WKProcessPool _pluginLoadClientPolicies]</short_desc>
          <delta_ts>2017-06-23 13:45:51 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173721</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>173472</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321736</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-21 19:49:25 -0700</bug_when>
    <thetext>Caught by the clang static analyzer.

* UIProcess/API/Cocoa/WKProcessPool.mm:
(policiesHashMapToDictionary): Switch from using
[[NSMutableDictionary alloc] init] which returns a +1 retained
object in MRR to [NSMutableDictionary new] which returns an
autoreleased object under MRR.  This bug caused 3 leaks when
calling -[WKProcessPool _pluginLoadClientPolicies], which should
return an autoreleased object based on its signature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321737</commentid>
    <comment_count>1</comment_count>
      <attachid>313578</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-21 19:51:13 -0700</bug_when>
    <thetext>Created attachment 313578
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321738</commentid>
    <comment_count>2</comment_count>
      <attachid>313578</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-21 19:52:29 -0700</bug_when>
    <thetext>Comment on attachment 313578
Patch v1

Thank you for fixing. Me and Objective C :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321739</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-21 20:10:14 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Comment on attachment 313578 [details]
&gt; Patch v1
&gt; 
&gt; Thank you for fixing. Me and Objective C :(

If it&apos;s any consolation, your code would have been fine had WebKit switched to ARC by now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321754</commentid>
    <comment_count>4</comment_count>
      <attachid>313578</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-21 21:46:45 -0700</bug_when>
    <thetext>Comment on attachment 313578
Patch v1

Clearing flags on attachment: 313578

Committed r218678: &lt;http://trac.webkit.org/changeset/218678&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321755</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-21 21:46:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321765</commentid>
    <comment_count>6</comment_count>
      <attachid>313578</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-21 22:39:51 -0700</bug_when>
    <thetext>Comment on attachment 313578
Patch v1

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        REGRESSION (r218419): 3 NSMutableDiciontary leaks calling -[WKProcessPool _pluginLoadClientPolicies]

Well, now this embarrassing typo is preserved forever!

NSMutableDiciontary =&gt; NSMutableDictionary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321852</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-22 06:47:44 -0700</bug_when>
    <thetext>I forgot; -new also returns +1 retained objects, so this isn&apos;t fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321854</commentid>
    <comment_count>8</comment_count>
      <attachid>313614</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-22 07:01:22 -0700</bug_when>
    <thetext>Created attachment 313614
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321922</commentid>
    <comment_count>9</comment_count>
      <attachid>313636</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-22 09:25:36 -0700</bug_when>
    <thetext>Created attachment 313636
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321941</commentid>
    <comment_count>10</comment_count>
      <attachid>313636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-22 10:07:56 -0700</bug_when>
    <thetext>Comment on attachment 313636
Patch v3

Clearing flags on attachment: 313636

Committed r218704: &lt;http://trac.webkit.org/changeset/218704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321942</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-22 10:07:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321948</commentid>
    <comment_count>12</comment_count>
      <attachid>313636</attachid>
    <who name="">mitz</who>
    <bug_when>2017-06-22 10:25:22 -0700</bug_when>
    <thetext>Comment on attachment 313636
Patch v3

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        (-[WKProcessPool _pluginLoadClientPolicies]): Remove &apos;copy&apos;
&gt; +        attribute from @property declaration since it is read-only.

The property being read-only is not in and of itself a reason to not specify the copy attribute. For example, NSString’s uppercaseString property is declared (readonly, copy). Please fix this.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:316
&gt; +    NSMutableDictionary *policies = [NSMutableDictionary dictionaryWithCapacity:map.size()];

We normally use RetainPtr rather than autorelease.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:319
&gt; +        policies[host] = [NSMutableDictionary dictionaryWithCapacity:hostPair.value.size()];

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:322
&gt; +            policies[host][bundlerIdentifier] = [NSMutableDictionary dictionaryWithCapacity:bundleIdentifierPair.value.size()];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321949</commentid>
    <comment_count>13</comment_count>
      <attachid>313636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 10:27:11 -0700</bug_when>
    <thetext>Comment on attachment 313636
Patch v3

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

&gt;&gt; Source/WebKit2/ChangeLog:15
&gt;&gt; +        attribute from @property declaration since it is read-only.
&gt; 
&gt; The property being read-only is not in and of itself a reason to not specify the copy attribute. For example, NSString’s uppercaseString property is declared (readonly, copy). Please fix this.

Can you please clarify for people like me what &apos;copy&apos; brings in this case, given that there is no setter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321956</commentid>
    <comment_count>14</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-06-22 10:38:02 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Comment on attachment 313636 [details]
&gt; Patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313636&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/ChangeLog:15
&gt; &gt;&gt; +        attribute from @property declaration since it is read-only.
&gt; &gt; 
&gt; &gt; The property being read-only is not in and of itself a reason to not specify the copy attribute. For example, NSString’s uppercaseString property is declared (readonly, copy). Please fix this.
&gt; 
&gt; Can you please clarify for people like me what &apos;copy&apos; brings in this case,
&gt; given that there is no setter?

In the context of a readonly property, copy is used to indicate that either the receiver has copied the incoming value (e.g. if it’s coming from an initializer), or effectively gives you a new value each time you access the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321962</commentid>
    <comment_count>15</comment_count>
      <attachid>313636</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-22 10:46:30 -0700</bug_when>
    <thetext>Comment on attachment 313636
Patch v3

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

&gt;&gt;&gt;&gt; Source/WebKit2/ChangeLog:15
&gt;&gt;&gt;&gt; +        attribute from @property declaration since it is read-only.
&gt;&gt;&gt; 
&gt;&gt;&gt; The property being read-only is not in and of itself a reason to not specify the copy attribute. For example, NSString’s uppercaseString property is declared (readonly, copy). Please fix this.
&gt;&gt; 
&gt;&gt; Can you please clarify for people like me what &apos;copy&apos; brings in this case, given that there is no setter?
&gt; 
&gt; In the context of a readonly property, copy is used to indicate that either the receiver has copied the incoming value (e.g. if it’s coming from an initializer), or effectively gives you a new value each time you access the property.

Is that a WebKit convention, or an Objective-C convention?

Does it have any effect on the generated code whatsoever?  (I was under the impression it had no effect, so this is basically the equivalent of a documentation change.)

Will post another patch shortly.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:316
&gt;&gt; +    NSMutableDictionary *policies = [NSMutableDictionary dictionaryWithCapacity:map.size()];
&gt; 
&gt; We normally use RetainPtr rather than autorelease.

Would we still switch to RetainPtr&lt;&gt; here if WebKit were compiled with ARC?

Just curious because adding RetainPtr&lt;&gt; only to remove it again when we switch to ARC seems like busywork.

I&apos;ll make these RetainPtr&lt;&gt; changes in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321964</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-22 10:46:53 -0700</bug_when>
    <thetext>Reopening to address comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321965</commentid>
    <comment_count>17</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-06-22 10:50:22 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #15)
&gt; Comment on attachment 313636 [details]
&gt; Patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313636&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit2/ChangeLog:15
&gt; &gt;&gt;&gt;&gt; +        attribute from @property declaration since it is read-only.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; The property being read-only is not in and of itself a reason to not specify the copy attribute. For example, NSString’s uppercaseString property is declared (readonly, copy). Please fix this.
&gt; &gt;&gt; 
&gt; &gt;&gt; Can you please clarify for people like me what &apos;copy&apos; brings in this case, given that there is no setter?
&gt; &gt; 
&gt; &gt; In the context of a readonly property, copy is used to indicate that either the receiver has copied the incoming value (e.g. if it’s coming from an initializer), or effectively gives you a new value each time you access the property.
&gt; 
&gt; Is that a WebKit convention, or an Objective-C convention?

It’s a Cocoa API convention that the Modern WebKit API follows.

&gt; 
&gt; Does it have any effect on the generated code whatsoever?

No.

&gt;  (I was under the
&gt; impression it had no effect, so this is basically the equivalent of a
&gt; documentation change.)

Correct.

&gt; 
&gt; Will post another patch shortly.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:316
&gt; &gt;&gt; +    NSMutableDictionary *policies = [NSMutableDictionary dictionaryWithCapacity:map.size()];
&gt; &gt; 
&gt; &gt; We normally use RetainPtr rather than autorelease.
&gt; 
&gt; Would we still switch to RetainPtr&lt;&gt; here if WebKit were compiled with ARC?

RetainPtr would no-op here in ARC so we probably wouldn’t use it if we were using ARC, but ARC wouldn’t necessarily place the object in an autorelease pool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321985</commentid>
    <comment_count>18</comment_count>
      <attachid>313644</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-22 11:34:02 -0700</bug_when>
    <thetext>Created attachment 313644
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322005</commentid>
    <comment_count>19</comment_count>
      <attachid>313644</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-22 12:23:33 -0700</bug_when>
    <thetext>Comment on attachment 313644
Patch v4

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        * UIProcess/API/Cocoa/WKProcessPool.mm:
&gt; +        (policiesHashMapToDictionary): Use RetainPtr&lt;&gt; to avoid
&gt; +        dumping objects into autoreleasepools unnecessarily.

This change seems unrelated to the leaks; I’m not sure why you are including it in this patch.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:320
&gt; +        RetainPtr&lt;NSMutableDictionary&gt; hostDictionary = adoptNS([[NSMutableDictionary alloc] initWithCapacity:hostPair.value.size()]);
&gt; +        policies.get()[host] = hostDictionary.get();

You don’t need to use a local variable to use RetainPtr. You can write:

    policies.get()[host] = adoptNS([[NSMutableDictionary alloc] initWithCapacity:hostPair.value.size()]).get();

That line of code is shorter than the first line of code here.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:324
&gt; +            RetainPtr&lt;NSMutableDictionary&gt; bundleIdentifierDictionary = adoptNS([[NSMutableDictionary alloc] initWithCapacity:bundleIdentifierPair.value.size()]);
&gt; +            policies.get()[host][bundlerIdentifier] = bundleIdentifierDictionary.get();

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:328
&gt; +                RetainPtr&lt;NSNumber&gt; policyNumber = adoptNS([[NSNumber alloc] initWithUnsignedInt:versionPair.value]);
&gt; +                policies.get()[host][bundlerIdentifier][version] = policyNumber.get();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322363</commentid>
    <comment_count>20</comment_count>
      <attachid>313731</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-23 11:40:11 -0700</bug_when>
    <thetext>Created attachment 313731
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322365</commentid>
    <comment_count>21</comment_count>
      <attachid>313644</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-23 11:44:04 -0700</bug_when>
    <thetext>Comment on attachment 313644
Patch v4

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

&gt;&gt; Source/WebKit2/ChangeLog:10
&gt;&gt; +        dumping objects into autoreleasepools unnecessarily.
&gt; 
&gt; This change seems unrelated to the leaks; I’m not sure why you are including it in this patch.

Because this object originally leaked in v1 of this patch (that landed in r218678), so this is a follow-up patch to fix feedback given by mitz.

I felt it was cleaner to keep all the follow-up changes associated with one bug.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:320
&gt;&gt; +        policies.get()[host] = hostDictionary.get();
&gt; 
&gt; You don’t need to use a local variable to use RetainPtr. You can write:
&gt; 
&gt;     policies.get()[host] = adoptNS([[NSMutableDictionary alloc] initWithCapacity:hostPair.value.size()]).get();
&gt; 
&gt; That line of code is shorter than the first line of code here.

See Patch v5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322366</commentid>
    <comment_count>22</comment_count>
      <attachid>313644</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-23 11:45:03 -0700</bug_when>
    <thetext>Comment on attachment 313644
Patch v4

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

&gt;&gt;&gt; Source/WebKit2/ChangeLog:10
&gt;&gt;&gt; +        dumping objects into autoreleasepools unnecessarily.
&gt;&gt; 
&gt;&gt; This change seems unrelated to the leaks; I’m not sure why you are including it in this patch.
&gt; 
&gt; Because this object originally leaked in v1 of this patch (that landed in r218678), so this is a follow-up patch to fix feedback given by mitz.
&gt; 
&gt; I felt it was cleaner to keep all the follow-up changes associated with one bug.

* Because this object originally leaked _BEFORE_ v1 of this patch (that landed in r218678).

&lt;https://trac.webkit.org/r218678&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322406</commentid>
    <comment_count>23</comment_count>
      <attachid>313731</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-23 13:35:35 -0700</bug_when>
    <thetext>Comment on attachment 313731
Patch v5

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        (policiesHashMapToDictionary): Use adoptNS().get() to avoid
&gt; +        dumping objects into autoreleasepools unnecessarily.

Why? Is this a wider policy we should have? We use autoreleased objects all over the place.

&gt; Source/WebKit2/ChangeLog:14
&gt; +        attribute to document that we&apos;re returning a new object on each
&gt; +        invocation.  I shouldn&apos;t have removed it in the v2 patch.

Quite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322412</commentid>
    <comment_count>24</comment_count>
      <attachid>313731</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-06-23 13:44:32 -0700</bug_when>
    <thetext>Comment on attachment 313731
Patch v5

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

&gt;&gt; Source/WebKit2/ChangeLog:10
&gt;&gt; +        dumping objects into autoreleasepools unnecessarily.
&gt; 
&gt; Why? Is this a wider policy we should have? We use autoreleased objects all over the place.

This is my interpretation of mitz&apos;s previous comment (see last item in Comment #17).  Perhaps I&apos;m reading into it too much?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322414</commentid>
    <comment_count>25</comment_count>
      <attachid>313731</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-23 13:45:49 -0700</bug_when>
    <thetext>Comment on attachment 313731
Patch v5

Clearing flags on attachment: 313731

Committed r218760: &lt;http://trac.webkit.org/changeset/218760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322415</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-23 13:45:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313578</attachid>
            <date>2017-06-21 19:51:13 -0700</date>
            <delta_ts>2017-06-23 11:40:08 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-173689-20170621195113.patch</filename>
            <type>text/plain</type>
            <size>2559</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTZjOTQ0YTM5NGMwNDAy
NDdlM2E1NWVjY2VhYTY4MGVmNzljMjI3OS4uZjdiNmEyZjUyNTMzYjFlMzczM2E3YzRkMGFiZWU3
NWQ2Y2EyMTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA2LTIxICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIx
ODQxOSk6IDMgTlNNdXRhYmxlRGljaW9udGFyeSBsZWFrcyBjYWxsaW5nIC1bV0tQcm9jZXNzUG9v
bCBfcGx1Z2luTG9hZENsaWVudFBvbGljaWVzXQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTczNjg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhdWdodCBieSB0aGUgY2xhbmcgc3RhdGljIGFuYWx5emVyLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAocG9saWNpZXNIYXNo
TWFwVG9EaWN0aW9uYXJ5KTogU3dpdGNoIGZyb20gdXNpbmcKKyAgICAgICAgW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSB3aGljaCByZXR1cm5zIGEgKzEgcmV0YWluZWQKKyAgICAg
ICAgb2JqZWN0IGluIE1SUiB0byBbTlNNdXRhYmxlRGljdGlvbmFyeSBuZXddIHdoaWNoIHJldHVy
bnMgYW4KKyAgICAgICAgYXV0b3JlbGVhc2VkIG9iamVjdCB1bmRlciBNUlIuICBUaGlzIGJ1ZyBj
YXVzZWQgMyBsZWFrcyB3aGVuCisgICAgICAgIGNhbGxpbmcgLVtXS1Byb2Nlc3NQb29sIF9wbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXNdLCB3aGljaCBzaG91bGQKKyAgICAgICAgcmV0dXJuIGFuIGF1
dG9yZWxlYXNlZCBvYmplY3QgYmFzZWQgb24gaXRzIHNpZ25hdHVyZS4KKwogMjAxNy0wNi0yMSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OIChyMjE4NjA2KTogM0QgVG91Y2ggYWN0aW9uIG1lbnUgZm9yIGxpbmtzIGlzIG1pc3Npbmcg
aXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQppbmRleCAyNDljMTJmNmFhZmY3NGQyODU2MWYxZmZlYjhhZDNkODljMDhhMTNl
Li44ZDNiODM1MzJhMzljMGMxMGVmYTBkNDY2ZjFlMjg2ZWE1ZTNjODU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0z
MTMsMTMgKzMxMywxMyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBI
YXNoTWFwPFN0cmluZywgdWludDhfdD4+PiB0b1BsdWdpbkxvYWRDbAogCiBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgbWFwKQogewotICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKnBvbGljaWVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwb2xpY2llcyA9IFtOU011dGFi
bGVEaWN0aW9uYXJ5IG5ld107CiAgICAgZm9yIChhdXRvJiBob3N0UGFpciA6IG1hcCkgewogICAg
ICAgICBOU1N0cmluZyAqaG9zdCA9IGhvc3RQYWlyLmtleTsKLSAgICAgICAgcG9saWNpZXNbaG9z
dF0gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICBwb2xpY2ll
c1tob3N0XSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IG5ld107CiAgICAgICAgIGZvciAoYXV0byYg
YnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkgewogICAgICAgICAgICAgTlNT
dHJpbmcgKmJ1bmRsZXJJZGVudGlmaWVyID0gYnVuZGxlSWRlbnRpZmllclBhaXIua2V5OwotICAg
ICAgICAgICAgcG9saWNpZXNbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIHBvbGljaWVzW2hvc3RdW2J1bmRs
ZXJJZGVudGlmaWVyXSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IG5ld107CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpIHsKICAg
ICAgICAgICAgICAgICBOU1N0cmluZyAqdmVyc2lvbiA9IHZlcnNpb25QYWlyLmtleTsKICAgICAg
ICAgICAgICAgICBwb2xpY2llc1tob3N0XVtidW5kbGVySWRlbnRpZmllcl1bdmVyc2lvbl0gPSBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnZlcnNpb25QYWlyLnZhbHVlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313614</attachid>
            <date>2017-06-22 07:01:22 -0700</date>
            <delta_ts>2017-06-22 09:25:48 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-173689-20170622070122.patch</filename>
            <type>text/plain</type>
            <size>2824</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDYyNDg2NjlmMDI5NWUz
NzEzODU1NWM5OTk0MjJkZTc0M2E2NGNjNy4uZDU2MTZlZWM5YmMxOGY4YWI4MGFkOWJlOTk3NWFl
YmQ4MjVjN2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgdjI6IFJFR1JFU1NJT04g
KHIyMTg0MTkpOiAzIE5TTXV0YWJsZURpY3Rpb25hcnkgbGVha3MgY2FsbGluZyAtW1dLUHJvY2Vz
c1Bvb2wgX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llc10KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE3MzY4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAg
KHBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeSk6IFVzZSAtZGljdGlvbmFyeVdpdGhDYXBhY2l0
eToKKyAgICAgICAgaW5zdGVhZCBvZiAtbmV3IHNpbmNlIHRoZSBmb3JtZXIgcmV0dXJucyBhbiBh
dXRvcmVsZWFzZWQgb2JqZWN0CisgICAgICAgIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcyBub3QuICBU
aGlzIGhhcyB0aGUgYWRkZWQgYmVuZWZpdCBvZiB0dW5pbmcKKyAgICAgICAgdGhlIHNpemUgb2Yg
ZWFjaCBOU011dGFibGVEaWN0aW9uYXJ5LgorCiAyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBEb3dubG9hZHMgbmV2
ZXIgaGF2ZSBhIHdlYiB2aWV3IGFzc29jaWF0ZWQgaW4gV1BFCkBAIC03Nyw3ICs5MCw3IEBACiAK
IDIwMTctMDYtMjEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAotICAgICAg
ICBSRUdSRVNTSU9OIChyMjE4NDE5KTogMyBOU011dGFibGVEaWNpb250YXJ5IGxlYWtzIGNhbGxp
bmcgLVtXS1Byb2Nlc3NQb29sIF9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNdCisgICAgICAgIFJF
R1JFU1NJT04gKHIyMTg0MTkpOiAzIE5TTXV0YWJsZURpY3Rpb25hcnkgbGVha3MgY2FsbGluZyAt
W1dLUHJvY2Vzc1Bvb2wgX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llc10KICAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE3MzY4OT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQppbmRleCA4ZDNiODM1MzJhMzljMGMxMGVmYTBkNDY2ZjFlMjg2ZWE1ZTNjODU4Li5j
YTViYzM3NjViNGZmYWY2YjU1NmQzYzkyYjc4ZTE4ZjdiODQ2YTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zMTMs
MTMgKzMxMywxMyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgdWludDhfdD4+PiB0b1BsdWdpbkxvYWRDbAogCiBzdGF0aWMgTlNEaWN0aW9u
YXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhh
c2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgbWFwKQogewotICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKnBvbGljaWVzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgbmV3XTsK
KyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwb2xpY2llcyA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6bWFwLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBob3N0
UGFpciA6IG1hcCkgewogICAgICAgICBOU1N0cmluZyAqaG9zdCA9IGhvc3RQYWlyLmtleTsKLSAg
ICAgICAgcG9saWNpZXNbaG9zdF0gPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBuZXddOworICAgICAg
ICBwb2xpY2llc1tob3N0XSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2Fw
YWNpdHk6aG9zdFBhaXIudmFsdWUuc2l6ZSgpXTsKICAgICAgICAgZm9yIChhdXRvJiBidW5kbGVJ
ZGVudGlmaWVyUGFpciA6IGhvc3RQYWlyLnZhbHVlKSB7CiAgICAgICAgICAgICBOU1N0cmluZyAq
YnVuZGxlcklkZW50aWZpZXIgPSBidW5kbGVJZGVudGlmaWVyUGFpci5rZXk7Ci0gICAgICAgICAg
ICBwb2xpY2llc1tob3N0XVtidW5kbGVySWRlbnRpZmllcl0gPSBbTlNNdXRhYmxlRGljdGlvbmFy
eSBuZXddOworICAgICAgICAgICAgcG9saWNpZXNbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdID0g
W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpidW5kbGVJZGVudGlm
aWVyUGFpci52YWx1ZS5zaXplKCldOwogICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uUGFp
ciA6IGJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJp
bmcgKnZlcnNpb24gPSB2ZXJzaW9uUGFpci5rZXk7CiAgICAgICAgICAgICAgICAgcG9saWNpZXNb
aG9zdF1bYnVuZGxlcklkZW50aWZpZXJdW3ZlcnNpb25dID0gW05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDp2ZXJzaW9uUGFpci52YWx1ZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313636</attachid>
            <date>2017-06-22 09:25:36 -0700</date>
            <delta_ts>2017-06-23 11:40:09 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-173689-20170622092536.patch</filename>
            <type>text/plain</type>
            <size>3859</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDYyNDg2NjlmMDI5NWUz
NzEzODU1NWM5OTk0MjJkZTc0M2E2NGNjNy4uNDhlNWFhZWE3YzU1ZWYxMzQyNjkwYjA1MTVkZjc5
YWQ5MDZjZTkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA2LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgdjI6IFJFR1JFU1NJT04g
KHIyMTg0MTkpOiAzIE5TTXV0YWJsZURpY3Rpb25hcnkgbGVha3MgY2FsbGluZyAtW1dLUHJvY2Vz
c1Bvb2wgX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llc10KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE3MzY4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAg
KHBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeSk6IFVzZSAtZGljdGlvbmFyeVdpdGhDYXBhY2l0
eToKKyAgICAgICAgaW5zdGVhZCBvZiAtbmV3IHNpbmNlIHRoZSBmb3JtZXIgcmV0dXJucyBhbiBh
dXRvcmVsZWFzZWQgb2JqZWN0CisgICAgICAgIHdoaWxlIHRoZSBsYXR0ZXIgZG9lcyBub3QuICBU
aGlzIGhhcyB0aGUgYWRkZWQgYmVuZWZpdCBvZiB0dW5pbmcKKyAgICAgICAgdGhlIHNpemUgb2Yg
ZWFjaCBOU011dGFibGVEaWN0aW9uYXJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzXSk6IFJlbW92ZSAnY29weScKKyAgICAgICAgYXR0cmlidXRlIGZy
b20gQHByb3BlcnR5IGRlY2xhcmF0aW9uIHNpbmNlIGl0IGlzIHJlYWQtb25seS4KKwogMjAxNy0w
Ni0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV0gRG93bmxvYWRzIG5ldmVyIGhhdmUgYSB3ZWIgdmlldyBhc3NvY2lhdGVkIGluIFdQ
RQpAQCAtNzcsNyArOTMsNyBAQAogCiAyMDE3LTA2LTIxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKLSAgICAgICAgUkVHUkVTU0lPTiAocjIxODQxOSk6IDMgTlNNdXRhYmxl
RGljaW9udGFyeSBsZWFrcyBjYWxsaW5nIC1bV0tQcm9jZXNzUG9vbCBfcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzXQorICAgICAgICBSRUdSRVNTSU9OIChyMjE4NDE5KTogMyBOU011dGFibGVEaWN0
aW9uYXJ5IGxlYWtzIGNhbGxpbmcgLVtXS1Byb2Nlc3NQb29sIF9wbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXNdCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzM2ODk+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggOGQzYjgzNTMyYTM5YzBjMTBlZmEw
ZDQ2NmYxZTI4NmVhNWUzYzg1OC4uY2E1YmMzNzY1YjRmZmFmNmI1NTZkM2M5MmI3OGUxOGY3Yjg0
NmE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQpAQCAtMzEzLDEzICszMTMsMTMgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5n
LCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+Pj4gdG9QbHVnaW5Mb2Fk
Q2wKIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4
X3Q+Pj4mIG1hcCkKIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwb2xpY2llcyA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IG5ld107CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcG9saWNpZXMg
PSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENhcGFjaXR5Om1hcC5zaXplKCld
OwogICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBtYXApIHsKICAgICAgICAgTlNTdHJpbmcgKmhv
c3QgPSBob3N0UGFpci5rZXk7Ci0gICAgICAgIHBvbGljaWVzW2hvc3RdID0gW05TTXV0YWJsZURp
Y3Rpb25hcnkgbmV3XTsKKyAgICAgICAgcG9saWNpZXNbaG9zdF0gPSBbTlNNdXRhYmxlRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aENhcGFjaXR5Omhvc3RQYWlyLnZhbHVlLnNpemUoKV07CiAgICAg
ICAgIGZvciAoYXV0byYgYnVuZGxlSWRlbnRpZmllclBhaXIgOiBob3N0UGFpci52YWx1ZSkgewog
ICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZXJJZGVudGlmaWVyID0gYnVuZGxlSWRlbnRpZmll
clBhaXIua2V5OwotICAgICAgICAgICAgcG9saWNpZXNbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJd
ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgbmV3XTsKKyAgICAgICAgICAgIHBvbGljaWVzW2hvc3Rd
W2J1bmRsZXJJZGVudGlmaWVyXSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
Q2FwYWNpdHk6YnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUuc2l6ZSgpXTsKICAgICAgICAgICAg
IGZvciAoYXV0byYgdmVyc2lvblBhaXIgOiBidW5kbGVJZGVudGlmaWVyUGFpci52YWx1ZSkgewog
ICAgICAgICAgICAgICAgIE5TU3RyaW5nICp2ZXJzaW9uID0gdmVyc2lvblBhaXIua2V5OwogICAg
ICAgICAgICAgICAgIHBvbGljaWVzW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXVt2ZXJzaW9uXSA9
IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6dmVyc2lvblBhaXIudmFsdWVdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCmluZGV4IDAxZTNlYWEwMGMwYzk1YTFkODEzMTQ0NTE2OGUzM2Q0Mzc5YTE2
NTQuLjY1ZDZhZWQzZDQ3NmVkYmMzNzcwMjIwODliYzkwZjA5NDQzOTMxNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgKQEAgLTU0LDcgKzU0LDcgQEAKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2
b2lkKV9yZXNldFBsdWdpbkxvYWRDbGllbnRQb2xpY2llczooTlNEaWN0aW9uYXJ5ICopcG9saWNp
ZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwotQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2FkQ2xpZW50UG9s
aWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2FkQ2xpZW50UG9saWNp
ZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313644</attachid>
            <date>2017-06-22 11:34:02 -0700</date>
            <delta_ts>2017-06-23 11:39:25 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-173689-20170622113403.patch</filename>
            <type>text/plain</type>
            <size>4614</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTgwODIwOTI0MzUwNjll
MjMwMjRiMGI0ODk0YjQ4MDc4MWYxOGQ0Ny4uMWRkYmI5ZTNlNjI0OWY1MTU3N2NiNzRiN2ViNjMy
ZWYxNGY5OTdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA2LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgdjM6IFJFR1JFU1NJT04g
KHIyMTg0MTkpOiAzIE5TTXV0YWJsZURpY3Rpb25hcnkgbGVha3MgY2FsbGluZyAtW1dLUHJvY2Vz
c1Bvb2wgX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llc10KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE3MzY4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAg
KHBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeSk6IFVzZSBSZXRhaW5QdHI8PiB0byBhdm9pZAor
ICAgICAgICBkdW1waW5nIG9iamVjdHMgaW50byBhdXRvcmVsZWFzZXBvb2xzIHVubmVjZXNzYXJp
bHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
OgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNdKTog
QWRkIGJhY2sgJ2NvcHknCisgICAgICAgIGF0dHJpYnV0ZSB0byBkb2N1bWVudCB0aGF0IHdlJ3Jl
IHJldHVybmluZyBhIG5ldyBvYmplY3Qgb24gZWFjaAorICAgICAgICBpbnZvY2F0aW9uLgorCiAy
MDE3LTA2LTIyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc29tZSB0aHJlYWQgc2FmZXR5IGd1YXJkcyB0byBHZW5lcmljQ2FsbGJhY2suCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5k
ZXggY2E1YmMzNzY1YjRmZmFmNmI1NTZkM2M5MmI3OGUxOGY3Yjg0NmE5YS4uMmNmMDY1NzU2Y2Vl
NjI3MzliNmM4ZTJiNzM1ZGUwNTE3MmU3Zjk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMTMsMjAgKzMxMywy
MyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmlu
ZywgdWludDhfdD4+PiB0b1BsdWdpbkxvYWRDbAogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xp
Y2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3Ry
aW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgbWFwKQogewotICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKnBvbGljaWVzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhD
YXBhY2l0eTptYXAuc2l6ZSgpXTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
cG9saWNpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTptYXAuc2l6ZSgpXSk7CiAgICAgZm9yIChhdXRvJiBob3N0UGFpciA6IG1hcCkgewog
ICAgICAgICBOU1N0cmluZyAqaG9zdCA9IGhvc3RQYWlyLmtleTsKLSAgICAgICAgcG9saWNpZXNb
aG9zdF0gPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENhcGFjaXR5Omhvc3RQ
YWlyLnZhbHVlLnNpemUoKV07CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBob3N0RGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5Omhvc3RQYWlyLnZhbHVlLnNpemUoKV0pOworICAgICAgICBwb2xpY2ll
cy5nZXQoKVtob3N0XSA9IGhvc3REaWN0aW9uYXJ5LmdldCgpOwogICAgICAgICBmb3IgKGF1dG8m
IGJ1bmRsZUlkZW50aWZpZXJQYWlyIDogaG9zdFBhaXIudmFsdWUpIHsKICAgICAgICAgICAgIE5T
U3RyaW5nICpidW5kbGVySWRlbnRpZmllciA9IGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleTsKLSAg
ICAgICAgICAgIHBvbGljaWVzW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXSA9IFtOU011dGFibGVE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6YnVuZGxlSWRlbnRpZmllclBhaXIudmFs
dWUuc2l6ZSgpXTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBi
dW5kbGVJZGVudGlmaWVyRGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVlLnNpemUo
KV0pOworICAgICAgICAgICAgcG9saWNpZXMuZ2V0KClbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJd
ID0gYnVuZGxlSWRlbnRpZmllckRpY3Rpb25hcnkuZ2V0KCk7CiAgICAgICAgICAgICBmb3IgKGF1
dG8mIHZlcnNpb25QYWlyIDogYnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUpIHsKICAgICAgICAg
ICAgICAgICBOU1N0cmluZyAqdmVyc2lvbiA9IHZlcnNpb25QYWlyLmtleTsKLSAgICAgICAgICAg
ICAgICBwb2xpY2llc1tob3N0XVtidW5kbGVySWRlbnRpZmllcl1bdmVyc2lvbl0gPSBbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnZlcnNpb25QYWlyLnZhbHVlXTsKKyAgICAgICAgICAg
ICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHBvbGljeU51bWJlciA9IGFkb3B0TlMoW1tOU051bWJl
ciBhbGxvY10gaW5pdFdpdGhVbnNpZ25lZEludDp2ZXJzaW9uUGFpci52YWx1ZV0pOworICAgICAg
ICAgICAgICAgIHBvbGljaWVzLmdldCgpW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXVt2ZXJzaW9u
XSA9IHBvbGljeU51bWJlci5nZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gcG9saWNpZXM7CisgICAgcmV0dXJuIHBvbGljaWVzLmF1dG9yZWxlYXNlKCk7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDY1ZDZhZWQzZDQ3NmVkYmMzNzcw
MjIwODliYzkwZjA5NDQzOTMxNjAuLjM2YTZjMjdkZDNjZWJmNzRmYjNjNDIyYzUxZDQ1MWUzZmY5
NDUxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQsNyBAQAogCiAjaWYgIVRBUkdFVF9P
U19JUEhPTkUKIC0gKHZvaWQpX3Jlc2V0UGx1Z2luTG9hZENsaWVudFBvbGljaWVzOihOU0RpY3Rp
b25hcnkgKilwb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRD
bGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxv
YWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAj
ZW5kaWYKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWRE
ZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313731</attachid>
            <date>2017-06-23 11:40:11 -0700</date>
            <delta_ts>2017-06-23 13:45:49 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-173689-20170623114012.patch</filename>
            <type>text/plain</type>
            <size>4420</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTM1M2FmMGZjYjc1MzQx
NjYzZDFhYzk1OGFhMGQ5YjE4Mjk5YjQ5Ny4uYzI3NmFhNjEwNTY5N2QyZTNlZGI0YzIwNDY2NThk
OTRjMDRkNTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA2LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgdjM6IFJFR1JFU1NJT04g
KHIyMTg0MTkpOiAzIE5TTXV0YWJsZURpY3Rpb25hcnkgbGVha3MgY2FsbGluZyAtW1dLUHJvY2Vz
c1Bvb2wgX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llc10KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE3MzY4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAg
KHBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeSk6IFVzZSBhZG9wdE5TKCkuZ2V0KCkgdG8gYXZv
aWQKKyAgICAgICAgZHVtcGluZyBvYmplY3RzIGludG8gYXV0b3JlbGVhc2Vwb29scyB1bm5lY2Vz
c2FyaWx5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcGx1Z2luTG9hZENsaWVudFBvbGljaWVz
XSk6IEFkZCBiYWNrICdjb3B5JworICAgICAgICBhdHRyaWJ1dGUgdG8gZG9jdW1lbnQgdGhhdCB3
ZSdyZSByZXR1cm5pbmcgYSBuZXcgb2JqZWN0IG9uIGVhY2gKKyAgICAgICAgaW52b2NhdGlvbi4g
IEkgc2hvdWxkbid0IGhhdmUgcmVtb3ZlZCBpdCBpbiB0aGUgdjIgcGF0Y2guCisKIDIwMTctMDYt
MjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
UyBEbkRdIFtXSzJdIEVuYWJsZSBpbi1hcHAgZHJhZ2dpbmcgZnJvbSBXS1dlYlZpZXcgb24gdGhl
IHBob25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KaW5kZXggY2E1YmMzNzY1YjRmZmFmNmI1NTZkM2M5MmI3OGUxOGY3Yjg0NmE5
YS4uZTkzYTQ2M2QwNWJiNjc2YTExNmViZDQ2YmY1MDdiMjllMGVlMjg2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMTMsMjAgKzMxMywyMCBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5n
LCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiB0b1BsdWdpbkxvYWRDbAogCiBzdGF0aWMgTlNE
aWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiYgbWFwKQogewot
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBvbGljaWVzID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhDYXBhY2l0eTptYXAuc2l6ZSgpXTsKKyAgICBhdXRvIHBvbGljaWVzID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWFw
LnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgaG9zdFBhaXIgOiBtYXApIHsKICAgICAgICAgTlNT
dHJpbmcgKmhvc3QgPSBob3N0UGFpci5rZXk7Ci0gICAgICAgIHBvbGljaWVzW2hvc3RdID0gW05T
TXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpob3N0UGFpci52YWx1ZS5z
aXplKCldOworICAgICAgICBwb2xpY2llcy5nZXQoKVtob3N0XSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Omhvc3RQYWlyLnZhbHVlLnNpemUo
KV0pLmdldCgpOwogICAgICAgICBmb3IgKGF1dG8mIGJ1bmRsZUlkZW50aWZpZXJQYWlyIDogaG9z
dFBhaXIudmFsdWUpIHsKICAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVySWRlbnRpZmllciA9
IGJ1bmRsZUlkZW50aWZpZXJQYWlyLmtleTsKLSAgICAgICAgICAgIHBvbGljaWVzW2hvc3RdW2J1
bmRsZXJJZGVudGlmaWVyXSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2Fw
YWNpdHk6YnVuZGxlSWRlbnRpZmllclBhaXIudmFsdWUuc2l6ZSgpXTsKKyAgICAgICAgICAgIHBv
bGljaWVzLmdldCgpW2hvc3RdW2J1bmRsZXJJZGVudGlmaWVyXSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmJ1bmRsZUlkZW50aWZpZXJQYWly
LnZhbHVlLnNpemUoKV0pLmdldCgpOwogICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uUGFp
ciA6IGJ1bmRsZUlkZW50aWZpZXJQYWlyLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJp
bmcgKnZlcnNpb24gPSB2ZXJzaW9uUGFpci5rZXk7Ci0gICAgICAgICAgICAgICAgcG9saWNpZXNb
aG9zdF1bYnVuZGxlcklkZW50aWZpZXJdW3ZlcnNpb25dID0gW05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDp2ZXJzaW9uUGFpci52YWx1ZV07CisgICAgICAgICAgICAgICAgcG9saWNpZXMu
Z2V0KClbaG9zdF1bYnVuZGxlcklkZW50aWZpZXJdW3ZlcnNpb25dID0gYWRvcHROUyhbW05TTnVt
YmVyIGFsbG9jXSBpbml0V2l0aFVuc2lnbmVkSW50OnZlcnNpb25QYWlyLnZhbHVlXSkuZ2V0KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHBvbGljaWVzOwor
ICAgIHJldHVybiBwb2xpY2llcy5hdXRvcmVsZWFzZSgpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAppbmRleCA2NWQ2YWVkM2Q0NzZlZGJjMzc3MDIyMDg5YmM5MGYwOTQ0MzkzMTYwLi4z
NmE2YzI3ZGQzY2ViZjc0ZmIzYzQyMmM1MWQ0NTFlM2ZmOTQ1MTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU0LDcgKzU0LDcgQEAKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKV9yZXNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY2llczooTlNEaWN0aW9uYXJ5ICopcG9saWNpZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogI2VuZGlmCiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxv
YWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>