<?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>183065</bug_id>
          
          <creation_ts>2018-02-22 15:07:02 -0800</creation_ts>
          <short_desc>Introduce ITP debug logging as an opt-in developer feature</short_desc>
          <delta_ts>2018-02-23 15:26:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>krollin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1401572</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-22 15:07:02 -0800</bug_when>
    <thetext>We should allow developers to opt in to ITP debug logging on the INFO level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401573</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-22 15:07:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/37803761&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401578</commentid>
    <comment_count>2</comment_count>
      <attachid>334481</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-22 15:15:28 -0800</bug_when>
    <thetext>Created attachment 334481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401790</commentid>
    <comment_count>3</comment_count>
      <attachid>334543</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-23 12:54:36 -0800</bug_when>
    <thetext>Created attachment 334543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401794</commentid>
    <comment_count>4</comment_count>
      <attachid>334543</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-02-23 13:08:37 -0800</bug_when>
    <thetext>Comment on attachment 334543
Patch

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

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:223
&gt; +        StringBuilder domainsToRemoveDataRecordsForBuilder;
&gt; +        domainsToRemoveDataRecordsForBuilder.appendLiteral(&quot;About to remove data records for &quot;);
&gt; +        bool firstDomain = true;
&gt; +        for (auto&amp; domain : prevalentResourceDomains) {
&gt; +            if (firstDomain)
&gt; +                firstDomain = false;
&gt; +            else
&gt; +                domainsToRemoveDataRecordsForBuilder.appendLiteral(&quot;, &quot;);
&gt; +            domainsToRemoveDataRecordsForBuilder.append(domain);
&gt; +        }
&gt; +        domainsToRemoveDataRecordsForBuilder.appendLiteral(&quot;.&quot;);
&gt; +        RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToRemoveDataRecordsForBuilder.toString().utf8().data());

It&apos;s probably not an issue in little-used debugging code, but it&apos;s better to put as much as possible in the format string, as it takes up less room in the logarchive file. That is specify &quot;About to remove data records for %s&quot; instead of just &quot;%s&quot;.

Also, if you want to collect these strings on external devices, you should specify &quot;%{public}s&quot;. Otherwise, the &quot;%s&quot; collects the string only on internal builds. On external builds, &quot;%s&quot; is replaced with &quot;&lt;PRIVATE&gt;&quot; or some such.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:239
&gt; +                RELEASE_LOG_INFO_IF(m_debugLoggingEnabled, ResourceLoadStatisticsDebug, &quot;Done removing data records.&quot;);

I don&apos;t know if it&apos;s relevant in this context, but it&apos;s sometimes a good idea to include some kind of token in the logging so that you can tie together related logging that occurs at different times. Especially if there could be multiple threads logging at the same time and interleaving their output. For instance, provide the address of the object doing the logging, or something like the page/frame/resource IDs used in resource loading.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:967
&gt; +            RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToPartitionBuilder.toString().utf8().data());

Ditto as for the previous block of logging under m_debugLoggingEnabled.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:982
&gt; +            RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToBlockBuilder.toString().utf8().data());

Ditto

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:997
&gt; +            RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToNeitherPartitionNorBlockBuilder.toString().utf8().data());

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401802</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-23 13:48:40 -0800</bug_when>
    <thetext>Thanks, Keith! See inline below.

(In reply to Keith Rollin from comment #4)
&gt; Comment on attachment 334543 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334543&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:223
&gt; &gt; +        StringBuilder domainsToRemoveDataRecordsForBuilder;
&gt; &gt; +        domainsToRemoveDataRecordsForBuilder.appendLiteral(&quot;About to remove data records for &quot;);
&gt; &gt; +        bool firstDomain = true;
&gt; &gt; +        for (auto&amp; domain : prevalentResourceDomains) {
&gt; &gt; +            if (firstDomain)
&gt; &gt; +                firstDomain = false;
&gt; &gt; +            else
&gt; &gt; +                domainsToRemoveDataRecordsForBuilder.appendLiteral(&quot;, &quot;);
&gt; &gt; +            domainsToRemoveDataRecordsForBuilder.append(domain);
&gt; &gt; +        }
&gt; &gt; +        domainsToRemoveDataRecordsForBuilder.appendLiteral(&quot;.&quot;);
&gt; &gt; +        RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToRemoveDataRecordsForBuilder.toString().utf8().data());
&gt; 
&gt; It&apos;s probably not an issue in little-used debugging code, but it&apos;s better to
&gt; put as much as possible in the format string, as it takes up less room in
&gt; the logarchive file. That is specify &quot;About to remove data records for %s&quot;
&gt; instead of just &quot;%s&quot;.

Will fix.

&gt; Also, if you want to collect these strings on external devices, you should
&gt; specify &quot;%{public}s&quot;. Otherwise, the &quot;%s&quot; collects the string only on
&gt; internal builds. On external builds, &quot;%s&quot; is replaced with &quot;&lt;PRIVATE&gt;&quot; or
&gt; some such.

Oh, that makes sense. Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:239
&gt; &gt; +                RELEASE_LOG_INFO_IF(m_debugLoggingEnabled, ResourceLoadStatisticsDebug, &quot;Done removing data records.&quot;);
&gt; 
&gt; I don&apos;t know if it&apos;s relevant in this context, but it&apos;s sometimes a good
&gt; idea to include some kind of token in the logging so that you can tie
&gt; together related logging that occurs at different times. Especially if there
&gt; could be multiple threads logging at the same time and interleaving their
&gt; output. For instance, provide the address of the object doing the logging,
&gt; or something like the page/frame/resource IDs used in resource loading.

I have come across such issues in previous jobs. However, these log statements are all from the central Resource Load Statistics Store in the UI process so they should not be confusing. Maybe across SafariViewController and Safari on iOS, or across Safari Technology Preview and Safari on macOS.

&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:967
&gt; &gt; +            RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToPartitionBuilder.toString().utf8().data());
&gt; 
&gt; Ditto as for the previous block of logging under m_debugLoggingEnabled.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:982
&gt; &gt; +            RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToBlockBuilder.toString().utf8().data());
&gt; 
&gt; Ditto

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:997
&gt; &gt; +            RELEASE_LOG_INFO(ResourceLoadStatisticsDebug, &quot;%s&quot;, domainsToNeitherPartitionNorBlockBuilder.toString().utf8().data());
&gt; 
&gt; Ditto

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401810</commentid>
    <comment_count>6</comment_count>
      <attachid>334548</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-23 14:45:09 -0800</bug_when>
    <thetext>Created attachment 334548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401812</commentid>
    <comment_count>7</comment_count>
      <attachid>334548</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-02-23 14:51:47 -0800</bug_when>
    <thetext>Comment on attachment 334548
Patch

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

Looks good, but please reduce the duplicated code as I suggested.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:43
&gt;  #include &lt;wtf/NeverDestroyed.h&gt;

You could #if !RELEASE_LOG_DISABLED this header include, which might help build perf for non-logging builds.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:219
&gt; +            domainsToRemoveDataRecordsForBuilder.append(domain);

You repeat this pattern a bunch of times. I suggest making it a static function:

static void appendWithDelimiter(StringBuilder&amp; builder, const String&amp; domain, bool firstItem)
{
    if (!firstItem)
        builder.appendLiteral(&quot;, &quot;);
    builder.append(domain);
}

Then this code would be:

StringBuilder domainsToRemoveDataRecordsForBuilder;
bool firstDomain = true;
for (auto&amp; domain : prevalentResourceDomains) {
    appendWithDelimiter(domainsToRemoveDataRecordsForBuilder, domain, firstDomain);
    firstDomain = false;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401823</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-23 15:22:21 -0800</bug_when>
    <thetext>Thanks, Brent! I will fix the duplicated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401826</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-02-23 15:26:42 -0800</bug_when>
    <thetext>Committed r228967: &lt;https://trac.webkit.org/changeset/228967&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334481</attachid>
            <date>2018-02-22 15:15:28 -0800</date>
            <delta_ts>2018-02-23 12:54:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183065-20180222151527.patch</filename>
            <type>text/plain</type>
            <size>9663</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjg5MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAyLTIyICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJVFAgZGVidWcgbG9nZ2luZyBh
cyBhbiBvcHQtaW4gZGV2ZWxvcGVyIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc4
MDM3NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAgICAgSW50cm9kdWNlcyBSRUxFQVNFX0xPR19J
TkZPKCkgYW5kIFJFTEVBU0VfTE9HX0lORk9fSUYoKS4KKwogMjAxOC0wMi0yMiAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgc2xlZXAoZG91
YmxlKSBhbmQgc2xlZXBNUyhkb3VibGUpIGludGVyZmFjZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgJ
KHJldmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDU2LDkgKzQ1NiwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJO
X0RVRV9UT19DUkFTCiAjZWxzZQogI2RlZmluZSBSRUxFQVNFX0xPRyggICAgICBjaGFubmVsLCBm
b3JtYXQsIC4uLikgb3NfbG9nKCAgICAgIExPR19DSEFOTkVMKGNoYW5uZWwpLm9zTG9nQ2hhbm5l
bCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUihjaGFu
bmVsLCBmb3JtYXQsIC4uLikgb3NfbG9nX2Vycm9yKExPR19DSEFOTkVMKGNoYW5uZWwpLm9zTG9n
Q2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19JTkZP
KGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBvc19sb2dfaW5mbyhMT0dfQ0hBTk5FTChjaGFubmVsKS5v
c0xvZ0NoYW5uZWwsIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmluZSBSRUxFQVNFX0xP
R19JRiggICAgICBpc0FsbG93ZWQsIGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBkbyB7IGlmIChpc0Fs
bG93ZWQpIFJFTEVBU0VfTE9HKCAgICAgIGNoYW5uZWwsIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXyk7
IH0gd2hpbGUgKDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWxsb3dlZCwgY2hh
bm5lbCwgZm9ybWF0LCAuLi4pIGRvIHsgaWYgKGlzQWxsb3dlZCkgUkVMRUFTRV9MT0dfRVJST1Io
Y2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVM
RUFTRV9MT0dfSU5GT19JRihpc0FsbG93ZWQsIGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBkbyB7IGlm
IChpc0FsbG93ZWQpIFJFTEVBU0VfTE9HX0lORk8oY2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJH
U19fKTsgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBSRUxFQVNFX0xPR19XSVRIX0xFVkVMKGNoYW5u
ZWwsIGxvZ0xldmVsLCBmb3JtYXQsIC4uLikgZG8geyBcCiAgICAgaWYgKExPR19DSEFOTkVMKGNo
YW5uZWwpLmxldmVsID49IChsb2dMZXZlbCkpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjg5
MzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1IEBACisyMDE4LTAyLTIyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBJVFAgZGVidWcgbG9nZ2luZyBhcyBhbiBvcHQtaW4gZGV2ZWxv
cGVyIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc4MDM3NjE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5l
ZWRlZCk6CisgICAgICAgICAgICBOb3cgcGlja3MgdXAgdGhlIHVzZXIgZGVmYXVsdCBzZXR0aW5n
IGZvcgorICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJs
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVt
b3ZlRGF0YVJlY29yZHMpOgorICAgICAgICAgICAgTm93IGxvZ3MgZm9yIHdoaWNoIGRvbWFpbnMg
aXQgcHVyZ2VzIHdlYnNpdGUgZGF0YSBpZgorICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTG9nZ2luZ0VuYWJsZWQgaXMgc2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAg
ICAgICAgICBOb3cgbG9ncyBmb3Igd2hpY2ggZG9tYWlucyBpdCBwYXJ0aXRpb25zIGFuZCBibG9j
a3MgY29va2llcworICAgICAgICAgICAgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgaWYgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJsZWQKKyAgICAgICAgICAgIGlzIHNldC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisK
IDIwMTgtMDItMjIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04gKHIyMjgzNDkpOiBJbWFnZUJpdG1hcCBidWlsdGlu
IGlzIG5vdyBydW50aW1lIGd1YXJkZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNp
b24gMjI4ODQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MjA2LDYgKzIwNywyMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVt
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9kZWJ1Z0xvZ2dpbmdFbmFibGVk
KSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgZG9tYWluc1RvUmVtb3ZlRGF0YVJlY29yZHNGb3JC
dWlsZGVyOworICAgICAgICBkb21haW5zVG9SZW1vdmVEYXRhUmVjb3Jkc0ZvckJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiQWJvdXQgdG8gcmVtb3ZlIGRhdGEgcmVjb3JkcyBmb3IgIik7CisgICAgICAg
IGJvb2wgZmlyc3REb21haW4gPSB0cnVlOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHBy
ZXZhbGVudFJlc291cmNlRG9tYWlucykgeworICAgICAgICAgICAgaWYgKGZpcnN0RG9tYWluKQor
ICAgICAgICAgICAgICAgIGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlRGF0YVJlY29yZHNGb3JCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICBkb21haW5zVG9SZW1vdmVEYXRhUmVjb3Jkc0Zv
ckJ1aWxkZXIuYXBwZW5kKGRvbWFpbik7CisgICAgICAgIH0KKyAgICAgICAgZG9tYWluc1RvUmVt
b3ZlRGF0YVJlY29yZHNGb3JCdWlsZGVyLmFwcGVuZExpdGVyYWwoIi4iKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfSU5GTyhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiJXMiLCBkb21haW5zVG9SZW1v
dmVEYXRhUmVjb3Jkc0ZvckJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9
CiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IGNyb3NzVGhyZWFkQ29w
eShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewpAQCAt
MjE3LDYgKzIzMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1Jl
bW92ZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2luZ0VuYWJsZWQsIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MsICJEb25lIHJlbW92aW5nIGRhdGEgcmVjb3Jkcy4iKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTkyOSw5ICs5NDUsNTcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZAogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKG1fZGVidWdMb2dnaW5nRW5hYmxlZCkgeworICAgICAgICBpZiAoIWRvbWFpbnNU
b1BhcnRpdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZG9tYWlu
c1RvUGFydGl0aW9uQnVpbGRlcjsKKyAgICAgICAgICAgIGRvbWFpbnNUb1BhcnRpdGlvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiQWJvdXQgdG8gcGFydGl0aW9uIGNvb2tpZXMgaW4gdGhpcmQtcGFy
dHkgY29udGV4dHMgZm9yICIpOworICAgICAgICAgICAgYm9vbCBmaXJzdERvbWFpbiA9IHRydWU7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1BhcnRpdGlvbikgewor
ICAgICAgICAgICAgICAgIGlmIChmaXJzdERvbWFpbikKKyAgICAgICAgICAgICAgICAgICAgZmly
c3REb21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGRvbWFpbnNUb1BhcnRpdGlvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAg
ICAgICAgICAgICBkb21haW5zVG9QYXJ0aXRpb25CdWlsZGVyLmFwcGVuZChkb21haW4pOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZG9tYWluc1RvUGFydGl0aW9uQnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIuIik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MsICIlcyIsIGRvbWFpbnNUb1BhcnRpdGlvbkJ1aWxkZXIudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZG9tYWluc1RvQmxvY2suaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGRvbWFpbnNUb0Jsb2NrQnVpbGRl
cjsKKyAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2NrQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBYm91
dCB0byBibG9jayBjb29raWVzIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzIGZvciAiKTsKKyAgICAg
ICAgICAgIGJvb2wgZmlyc3REb21haW4gPSB0cnVlOworICAgICAgICAgICAgZm9yIChhdXRvJiBk
b21haW4gOiBkb21haW5zVG9CbG9jaykgeworICAgICAgICAgICAgICAgIGlmIChmaXJzdERvbWFp
bikKKyAgICAgICAgICAgICAgICAgICAgZmlyc3REb21haW4gPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2NrQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2NrQnVpbGRlci5h
cHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2Nr
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIuIik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZP
KFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICIlcyIsIGRvbWFpbnNUb0Jsb2NrQnVpbGRlci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2suaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBTdHJp
bmdCdWlsZGVyIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9ja0J1aWxkZXI7CisgICAg
ICAgICAgICBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2tCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIkFib3V0IHRvIG5laXRoZXIgcGFydGl0aW9uIG5vciBibG9jayBjb29raWVzIGluIHRo
aXJkLXBhcnR5IGNvbnRleHRzIGZvciAiKTsKKyAgICAgICAgICAgIGJvb2wgZmlyc3REb21haW4g
PSB0cnVlOworICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9OZWl0aGVy
UGFydGl0aW9uTm9yQmxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3REb21haW4pCisg
ICAgICAgICAgICAgICAgICAgIGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2tCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAgZG9tYWluc1Rv
TmVpdGhlclBhcnRpdGlvbk5vckJsb2NrQnVpbGRlci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9ja0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLiIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLCAiJXMiLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxv
Y2tCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZG9tYWluc1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNU
b1BhcnRpdGlvbiksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Js
b2NrKSwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jayksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldICgpIHsKICAgICAgICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9j
aywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0OjpO
byk7CiAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYobV9k
ZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiRG9uZSB1cGRhdGlu
ZyBjb29raWUgcGFydGl0aW9uaW5nIGFuZCBibG9ja2luZy4iKTsKICAgICB9KTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzYsNiArMTc2LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzZXRDb29raWVQYXJ0aXRp
b25pbmdTdGF0ZSgpOwogCisgICAgdm9pZCBzZXREZWJ1Z0xvZ2dnaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpIHsgbV9kZWJ1Z0xvZ2dpbmdFbmFibGVkICA9IGVuYWJsZWQ7IH0KKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogI2Vu
ZGlmCkBAIC0yMjAsNiArMjIyLDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9kYXRh
UmVjb3Jkc0JlaW5nUmVtb3ZlZCB7IGZhbHNlIH07CiAKKyAgICBib29sIG1fZGVidWdMb2dnaW5n
RW5hYmxlZCB7IGZhbHNlIH07CisKICAgICBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4g
bV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlQ29jb2EubW0JKHJldmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWcKICAgICAgICAgU2Vjb25kcyBncmFuZGZhdGhlcmluZ1RpbWUoW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OkAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSJdKTsKICAgICAgICAgaWYgKGdyYW5k
ZmF0aGVyaW5nVGltZSA+IDBfcyAmJiBncmFuZGZhdGhlcmluZ1RpbWUgPD0gMjRfaCAqIDcpCiAg
ICAgICAgICAgICBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoZ3JhbmRmYXRoZXJpbmdUaW1lKTsKKwor
ICAgICAgICBzZXREZWJ1Z0xvZ2dnaW5nRW5hYmxlZChbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9n
Z2luZ0VuYWJsZWQiXSk7CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334543</attachid>
            <date>2018-02-23 12:54:36 -0800</date>
            <delta_ts>2018-02-23 14:45:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183065-20180223125435.patch</filename>
            <type>text/plain</type>
            <size>10546</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjg5MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAyLTIzICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJVFAgZGVidWcgbG9nZ2luZyBh
cyBhbiBvcHQtaW4gZGV2ZWxvcGVyIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc4
MDM3NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAgICAgSW50cm9kdWNlcyBSRUxFQVNFX0xPR19J
TkZPKCkgYW5kIFJFTEVBU0VfTE9HX0lORk9fSUYoKS4KKwogMjAxOC0wMi0yMiAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgc2xlZXAoZG91
YmxlKSBhbmQgc2xlZXBNUyhkb3VibGUpIGludGVyZmFjZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgJ
KHJldmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDU2LDkgKzQ1NiwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJO
X0RVRV9UT19DUkFTCiAjZWxzZQogI2RlZmluZSBSRUxFQVNFX0xPRyggICAgICBjaGFubmVsLCBm
b3JtYXQsIC4uLikgb3NfbG9nKCAgICAgIExPR19DSEFOTkVMKGNoYW5uZWwpLm9zTG9nQ2hhbm5l
bCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUihjaGFu
bmVsLCBmb3JtYXQsIC4uLikgb3NfbG9nX2Vycm9yKExPR19DSEFOTkVMKGNoYW5uZWwpLm9zTG9n
Q2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19JTkZP
KGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBvc19sb2dfaW5mbyhMT0dfQ0hBTk5FTChjaGFubmVsKS5v
c0xvZ0NoYW5uZWwsIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmluZSBSRUxFQVNFX0xP
R19JRiggICAgICBpc0FsbG93ZWQsIGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBkbyB7IGlmIChpc0Fs
bG93ZWQpIFJFTEVBU0VfTE9HKCAgICAgIGNoYW5uZWwsIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXyk7
IH0gd2hpbGUgKDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWxsb3dlZCwgY2hh
bm5lbCwgZm9ybWF0LCAuLi4pIGRvIHsgaWYgKGlzQWxsb3dlZCkgUkVMRUFTRV9MT0dfRVJST1Io
Y2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVM
RUFTRV9MT0dfSU5GT19JRihpc0FsbG93ZWQsIGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBkbyB7IGlm
IChpc0FsbG93ZWQpIFJFTEVBU0VfTE9HX0lORk8oY2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJH
U19fKTsgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBSRUxFQVNFX0xPR19XSVRIX0xFVkVMKGNoYW5u
ZWwsIGxvZ0xldmVsLCBmb3JtYXQsIC4uLikgZG8geyBcCiAgICAgaWYgKExPR19DSEFOTkVMKGNo
YW5uZWwpLmxldmVsID49IChsb2dMZXZlbCkpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjg5
NjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI5IEBACisyMDE4LTAyLTIzICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBJVFAgZGVidWcgbG9nZ2luZyBhcyBhbiBvcHQtaW4gZGV2ZWxv
cGVyIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc4MDM3NjE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5n
Lmg6CisgICAgICAgICAgICBBZGRlZCBhIGRlZGljYXRlZCBjaGFubmVsIGZvciBSZXNvdXJjZSBM
b2FkIFN0YXRpc3RpY3MgZGVidWcgbG9nZ2luZworICAgICAgICAgICAgc2luY2UgdGhpcyB3aWxs
IGJlIHBhcnQgb2YgYSBkZXZlbG9wZXItZmFjaW5nIGZlYXR1cmUgYW5kIHNob3VsZCBub3QKKyAg
ICAgICAgICAgIGJlIG1peGVkIHdpdGggZ2VuZXJhbCBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
bG9nZ2luZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6CisgICAgICAgICAgICBO
b3cgcGlja3MgdXAgdGhlIHVzZXIgZGVmYXVsdCBzZXR0aW5nIGZvcgorICAgICAgICAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJsZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMpOgorICAg
ICAgICAgICAgTm93IGxvZ3MgZm9yIHdoaWNoIGRvbWFpbnMgaXQgcHVyZ2VzIHdlYnNpdGUgZGF0
YSBpZgorICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJs
ZWQgaXMgc2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgICAgICBOb3cgbG9ncyBmb3Ig
d2hpY2ggZG9tYWlucyBpdCBwYXJ0aXRpb25zIGFuZCBibG9ja3MgY29va2llcworICAgICAgICAg
ICAgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgaWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TG9nZ2luZ0VuYWJsZWQKKyAgICAgICAgICAgIGlzIHNldC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKIDIwMTgtMDItMjMgIFlvdXN1a2Ug
S2ltb3RvICA8eW91c3VrZS5raW1vdG9Ac29ueS5jb20+CiAKICAgICAgICAgW01TVkNdIFVua25v
d24gYSB0eXBlIGRlZmluaXRpb24gZXJyb3IgaW4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIG9uIHdpbmNhaXJvIHdlYmtpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dn
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgJKHJl
dmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oUmVtb3RlTGF5
ZXJUcmVlKSBcCiAgICAgTShSZXNpemUpIFwKICAgICBNKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
IFwKKyAgICBNKFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZykgXAogICAgIE0oU2VsZWN0aW9u
KSBcCiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCiAgICAgTShTZXNzaW9uU3RhdGUpIFwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI4ODQ0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjA2LDYgKzIwNywyMyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkKSB7
CisgICAgICAgIFN0cmluZ0J1aWxkZXIgZG9tYWluc1RvUmVtb3ZlRGF0YVJlY29yZHNGb3JCdWls
ZGVyOworICAgICAgICBkb21haW5zVG9SZW1vdmVEYXRhUmVjb3Jkc0ZvckJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiQWJvdXQgdG8gcmVtb3ZlIGRhdGEgcmVjb3JkcyBmb3IgIik7CisgICAgICAgIGJv
b2wgZmlyc3REb21haW4gPSB0cnVlOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHByZXZh
bGVudFJlc291cmNlRG9tYWlucykgeworICAgICAgICAgICAgaWYgKGZpcnN0RG9tYWluKQorICAg
ICAgICAgICAgICAgIGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZG9tYWluc1RvUmVtb3ZlRGF0YVJlY29yZHNGb3JCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgICAgICAgICBkb21haW5zVG9SZW1vdmVEYXRhUmVjb3Jkc0ZvckJ1
aWxkZXIuYXBwZW5kKGRvbWFpbik7CisgICAgICAgIH0KKyAgICAgICAgZG9tYWluc1RvUmVtb3Zl
RGF0YVJlY29yZHNGb3JCdWlsZGVyLmFwcGVuZExpdGVyYWwoIi4iKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSU5GTyhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICIlcyIsIGRvbWFpbnNUb1Jl
bW92ZURhdGFSZWNvcmRzRm9yQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IH0KKyNlbmRpZgorCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IGNy
b3NzVGhyZWFkQ29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11
dGFibGUgewpAQCAtMjE3LDYgKzIzNSw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZW0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc2V0RGF0YVJl
Y29yZHNCZWluZ1JlbW92ZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Cisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5G
T19JRihtX2RlYnVnTG9nZ2luZ0VuYWJsZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Zywg
IkRvbmUgcmVtb3ZpbmcgZGF0YSByZWNvcmRzLiIpOworI2VuZGlmCiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC05MjksOSArOTUwLDYxIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGlmIChtX2RlYnVnTG9nZ2luZ0VuYWJsZWQpIHsK
KyAgICAgICAgaWYgKCFkb21haW5zVG9QYXJ0aXRpb24uaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIGRvbWFpbnNUb1BhcnRpdGlvbkJ1aWxkZXI7CisgICAgICAgICAgICBk
b21haW5zVG9QYXJ0aXRpb25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkFib3V0IHRvIHBhcnRpdGlv
biBjb29raWVzIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzIGZvciAiKTsKKyAgICAgICAgICAgIGJv
b2wgZmlyc3REb21haW4gPSB0cnVlOworICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zVG9QYXJ0aXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3REb21haW4pCisg
ICAgICAgICAgICAgICAgICAgIGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBkb21haW5zVG9QYXJ0aXRpb25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAgICAgZG9tYWluc1RvUGFydGl0aW9uQnVpbGRl
ci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvbWFpbnNUb1Bh
cnRpdGlvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLiIpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSU5GTyhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICIlcyIsIGRvbWFpbnNUb1BhcnRp
dGlvbkJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghZG9tYWluc1RvQmxvY2suaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBTdHJpbmdC
dWlsZGVyIGRvbWFpbnNUb0Jsb2NrQnVpbGRlcjsKKyAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2Nr
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJBYm91dCB0byBibG9jayBjb29raWVzIGluIHRoaXJkLXBh
cnR5IGNvbnRleHRzIGZvciAiKTsKKyAgICAgICAgICAgIGJvb2wgZmlyc3REb21haW4gPSB0cnVl
OworICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9CbG9jaykgeworICAg
ICAgICAgICAgICAgIGlmIChmaXJzdERvbWFpbikKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RE
b21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGRvbWFpbnNUb0Jsb2NrQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAg
ICAgIGRvbWFpbnNUb0Jsb2NrQnVpbGRlci5hcHBlbmQoZG9tYWluKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGRvbWFpbnNUb0Jsb2NrQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIuIik7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Zywg
IiVzIiwgZG9tYWluc1RvQmxvY2tCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9j
ay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZG9tYWluc1RvTmVpdGhl
clBhcnRpdGlvbk5vckJsb2NrQnVpbGRlcjsKKyAgICAgICAgICAgIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9ja0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQWJvdXQgdG8gbmVpdGhlciBw
YXJ0aXRpb24gbm9yIGJsb2NrIGNvb2tpZXMgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgZm9yICIp
OworICAgICAgICAgICAgYm9vbCBmaXJzdERvbWFpbiA9IHRydWU7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaykgeworICAg
ICAgICAgICAgICAgIGlmIChmaXJzdERvbWFpbikKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RE
b21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9ja0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCAiKTsKKyAgICAgICAgICAgICAgICBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2tC
dWlsZGVyLmFwcGVuZChkb21haW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIuIik7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Zywg
IiVzIiwgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrQnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZG9tYWluc1RvUGFydGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiks
IGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgp
IHsKICAgICAgICAgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llc0hhbmRsZXIoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1Rv
TmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgICAg
IGNhbGxiYWNrKCk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgIFJFTEVBU0Vf
TE9HX0lORk9fSUYobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWcsICJEb25lIHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRpb25pbmcgYW5kIGJsb2NraW5nLiIp
OworI2VuZGlmCiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAy
Mjg4NDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKTsKIAorICAgIHZvaWQgc2V0
RGVidWdMb2dnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZGVidWdMb2dnaW5nRW5hYmxl
ZCAgPSBlbmFibGVkOyB9CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lzdGVy
VXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKICNlbmRpZgpAQCAtMjIwLDYgKzIyMiw4IEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxzZSB9
OwogCisgICAgYm9vbCBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OworCiAgICAgRnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazsK
IH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tCShyZXZp
c2lvbiAyMjg4NDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
OCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnCiAgICAgICAgIFNl
Y29uZHMgZ3JhbmRmYXRoZXJpbmdUaW1lKFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIGRvdWJsZUZvcktleTpAIlJlc291cmNlTG9hZFN0YXRpc3RpY3NHcmFuZGZhdGhlcmlu
Z1RpbWUiXSk7CiAgICAgICAgIGlmIChncmFuZGZhdGhlcmluZ1RpbWUgPiAwX3MgJiYgZ3JhbmRm
YXRoZXJpbmdUaW1lIDw9IDI0X2ggKiA3KQogICAgICAgICAgICAgc2V0R3JhbmRmYXRoZXJpbmdU
aW1lKGdyYW5kZmF0aGVyaW5nVGltZSk7CisKKyAgICAgICAgc2V0RGVidWdMb2dnZ2luZ0VuYWJs
ZWQoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z0xvZ2dpbmdFbmFibGVkIl0pOwogICAgIH0pOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334548</attachid>
            <date>2018-02-23 14:45:09 -0800</date>
            <delta_ts>2018-02-23 14:51:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183065-20180223144509.patch</filename>
            <type>text/plain</type>
            <size>10078</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjg5MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAyLTIzICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJVFAgZGVidWcgbG9nZ2luZyBh
cyBhbiBvcHQtaW4gZGV2ZWxvcGVyIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc4
MDM3NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAgICAgSW50cm9kdWNlcyBSRUxFQVNFX0xPR19J
TkZPKCkgYW5kIFJFTEVBU0VfTE9HX0lORk9fSUYoKS4KKwogMjAxOC0wMi0yMiAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgc2xlZXAoZG91
YmxlKSBhbmQgc2xlZXBNUyhkb3VibGUpIGludGVyZmFjZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgJ
KHJldmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDU2LDkgKzQ1NiwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJO
X0RVRV9UT19DUkFTCiAjZWxzZQogI2RlZmluZSBSRUxFQVNFX0xPRyggICAgICBjaGFubmVsLCBm
b3JtYXQsIC4uLikgb3NfbG9nKCAgICAgIExPR19DSEFOTkVMKGNoYW5uZWwpLm9zTG9nQ2hhbm5l
bCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUihjaGFu
bmVsLCBmb3JtYXQsIC4uLikgb3NfbG9nX2Vycm9yKExPR19DSEFOTkVMKGNoYW5uZWwpLm9zTG9n
Q2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19JTkZP
KGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBvc19sb2dfaW5mbyhMT0dfQ0hBTk5FTChjaGFubmVsKS5v
c0xvZ0NoYW5uZWwsIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmluZSBSRUxFQVNFX0xP
R19JRiggICAgICBpc0FsbG93ZWQsIGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBkbyB7IGlmIChpc0Fs
bG93ZWQpIFJFTEVBU0VfTE9HKCAgICAgIGNoYW5uZWwsIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXyk7
IH0gd2hpbGUgKDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWxsb3dlZCwgY2hh
bm5lbCwgZm9ybWF0LCAuLi4pIGRvIHsgaWYgKGlzQWxsb3dlZCkgUkVMRUFTRV9MT0dfRVJST1Io
Y2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVM
RUFTRV9MT0dfSU5GT19JRihpc0FsbG93ZWQsIGNoYW5uZWwsIGZvcm1hdCwgLi4uKSBkbyB7IGlm
IChpc0FsbG93ZWQpIFJFTEVBU0VfTE9HX0lORk8oY2hhbm5lbCwgZm9ybWF0LCAjI19fVkFfQVJH
U19fKTsgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBSRUxFQVNFX0xPR19XSVRIX0xFVkVMKGNoYW5u
ZWwsIGxvZ0xldmVsLCBmb3JtYXQsIC4uLikgZG8geyBcCiAgICAgaWYgKExPR19DSEFOTkVMKGNo
YW5uZWwpLmxldmVsID49IChsb2dMZXZlbCkpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjg5
NjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI5IEBACisyMDE4LTAyLTIzICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBJVFAgZGVidWcgbG9nZ2luZyBhcyBhbiBvcHQtaW4gZGV2ZWxv
cGVyIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc4MDM3NjE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5n
Lmg6CisgICAgICAgICAgICBBZGRlZCBhIGRlZGljYXRlZCBjaGFubmVsIGZvciBSZXNvdXJjZSBM
b2FkIFN0YXRpc3RpY3MgZGVidWcgbG9nZ2luZworICAgICAgICAgICAgc2luY2UgdGhpcyB3aWxs
IGJlIHBhcnQgb2YgYSBkZXZlbG9wZXItZmFjaW5nIGZlYXR1cmUgYW5kIHNob3VsZCBub3QKKyAg
ICAgICAgICAgIGJlIG1peGVkIHdpdGggZ2VuZXJhbCBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
bG9nZ2luZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6CisgICAgICAgICAgICBO
b3cgcGlja3MgdXAgdGhlIHVzZXIgZGVmYXVsdCBzZXR0aW5nIGZvcgorICAgICAgICAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJsZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMpOgorICAg
ICAgICAgICAgTm93IGxvZ3MgZm9yIHdoaWNoIGRvbWFpbnMgaXQgcHVyZ2VzIHdlYnNpdGUgZGF0
YSBpZgorICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTG9nZ2luZ0VuYWJs
ZWQgaXMgc2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyk6CisgICAgICAgICAgICBOb3cgbG9ncyBmb3Ig
d2hpY2ggZG9tYWlucyBpdCBwYXJ0aXRpb25zIGFuZCBibG9ja3MgY29va2llcworICAgICAgICAg
ICAgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgaWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TG9nZ2luZ0VuYWJsZWQKKyAgICAgICAgICAgIGlzIHNldC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKIDIwMTgtMDItMjMgIFlvdXN1a2Ug
S2ltb3RvICA8eW91c3VrZS5raW1vdG9Ac29ueS5jb20+CiAKICAgICAgICAgW01TVkNdIFVua25v
d24gYSB0eXBlIGRlZmluaXRpb24gZXJyb3IgaW4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIG9uIHdpbmNhaXJvIHdlYmtpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dn
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgJKHJl
dmlzaW9uIDIyODg0NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oUmVtb3RlTGF5
ZXJUcmVlKSBcCiAgICAgTShSZXNpemUpIFwKICAgICBNKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
IFwKKyAgICBNKFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZykgXAogICAgIE0oU2VsZWN0aW9u
KSBcCiAgICAgTShTZXJ2aWNlV29ya2VyKSBcCiAgICAgTShTZXNzaW9uU3RhdGUpIFwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI4ODQ0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjA2LDYgKzIwNywyMSBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkKSB7
CisgICAgICAgIFN0cmluZ0J1aWxkZXIgZG9tYWluc1RvUmVtb3ZlRGF0YVJlY29yZHNGb3JCdWls
ZGVyOworICAgICAgICBib29sIGZpcnN0RG9tYWluID0gdHJ1ZTsKKyAgICAgICAgZm9yIChhdXRv
JiBkb21haW4gOiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpIHsKKyAgICAgICAgICAgIGlmIChm
aXJzdERvbWFpbikKKyAgICAgICAgICAgICAgICBmaXJzdERvbWFpbiA9IGZhbHNlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRvbWFpbnNUb1JlbW92ZURhdGFSZWNvcmRzRm9y
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICAgICAgZG9tYWluc1RvUmVtb3Zl
RGF0YVJlY29yZHNGb3JCdWlsZGVyLmFwcGVuZChkb21haW4pOworICAgICAgICB9CisgICAgICAg
IFJFTEVBU0VfTE9HX0lORk8oUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnLCAiQWJvdXQgdG8g
cmVtb3ZlIGRhdGEgcmVjb3JkcyBmb3IgJXtwdWJsaWN9cy4iLCBkb21haW5zVG9SZW1vdmVEYXRh
UmVjb3Jkc0ZvckJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHNldERhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKHRydWUpOwogCiAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBjcm9zc1RocmVh
ZENvcHkocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsK
QEAgLTIxNyw2ICsyMzMsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVtCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHNldERhdGFSZWNvcmRzQmVp
bmdSZW1vdmVkKGZhbHNlKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYobV9k
ZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJEb25lIHJl
bW92aW5nIGRhdGEgcmVjb3Jkcy4iKTsKKyNlbmRpZgogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwpAQCAtOTI5LDkgKzk0OCw1NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6dXBkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICBpZiAobV9kZWJ1Z0xvZ2dpbmdFbmFibGVkKSB7CisgICAgICAg
IGlmICghZG9tYWluc1RvUGFydGl0aW9uLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgU3RyaW5n
QnVpbGRlciBkb21haW5zVG9QYXJ0aXRpb25CdWlsZGVyOworICAgICAgICAgICAgYm9vbCBmaXJz
dERvbWFpbiA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNU
b1BhcnRpdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChmaXJzdERvbWFpbikKKyAgICAgICAg
ICAgICAgICAgICAgZmlyc3REb21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGRvbWFpbnNUb1BhcnRpdGlvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCAiKTsKKyAgICAgICAgICAgICAgICBkb21haW5zVG9QYXJ0aXRpb25CdWlsZGVyLmFwcGVu
ZChkb21haW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJBYm91dCB0byBwYXJ0aXRpb24gY29va2llcyBp
biB0aGlyZC1wYXJ0eSBjb250ZXh0cyBmb3IgJXtwdWJsaWN9cy4iLCBkb21haW5zVG9QYXJ0aXRp
b25CdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWRvbWFpbnNUb0Jsb2NrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgU3RyaW5nQnVp
bGRlciBkb21haW5zVG9CbG9ja0J1aWxkZXI7CisgICAgICAgICAgICBib29sIGZpcnN0RG9tYWlu
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWluc1RvQmxvY2sp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3REb21haW4pCisgICAgICAgICAgICAgICAgICAg
IGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBkb21haW5zVG9CbG9ja0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAg
ICAgICAgICAgICBkb21haW5zVG9CbG9ja0J1aWxkZXIuYXBwZW5kKGRvbWFpbik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1ZywgIkFib3V0IHRvIGJsb2NrIGNvb2tpZXMgaW4gdGhpcmQtcGFydHkgY29udGV4dHMg
Zm9yICV7cHVibGljfXMuIiwgZG9tYWluc1RvQmxvY2tCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZG9t
YWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrQnVpbGRlcjsKKyAgICAgICAgICAgIGJvb2wg
Zmlyc3REb21haW4gPSB0cnVlOworICAgICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAoZmly
c3REb21haW4pCisgICAgICAgICAgICAgICAgICAgIGZpcnN0RG9tYWluID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2tCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgICAgICAg
ICAgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrQnVpbGRlci5hcHBlbmQoZG9tYWlu
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnLCAiQWJvdXQgdG8gbmVpdGhlciBwYXJ0aXRpb24gbm9yIGJsb2Nr
IGNvb2tpZXMgaW4gdGhpcmQtcGFydHkgY29udGV4dHMgZm9yICV7cHVibGljfXMuIiwgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUGFy
dGl0aW9uID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb1BhcnRpdGlvbiksIGRvbWFpbnNUb0Js
b2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgZG9tYWluc1RvTmVpdGhlclBh
cnRpdGlvbk5vckJsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIHsKICAgICAgICAg
bV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIo
ZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRp
dGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgICAgIGNhbGxiYWNrKCk7
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgIFJFTEVBU0VfTE9HX0lORk9fSUYo
bV9kZWJ1Z0xvZ2dpbmdFbmFibGVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWcsICJEb25l
IHVwZGF0aW5nIGNvb2tpZSBwYXJ0aXRpb25pbmcgYW5kIGJsb2NraW5nLiIpOworI2VuZGlmCiAg
ICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjg4NDQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJl
c2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKTsKIAorICAgIHZvaWQgc2V0RGVidWdMb2dnZ2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZGVidWdMb2dnaW5nRW5hYmxlZCAgPSBlbmFibGVk
OyB9CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRz
SWZOZWVkZWQoKTsKICNlbmRpZgpAQCAtMjIwLDYgKzIyMiw4IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogCisgICAgYm9v
bCBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OworCiAgICAgRnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJik+IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyMjg4NDQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnCiAgICAgICAgIFNlY29uZHMgZ3JhbmRm
YXRoZXJpbmdUaW1lKFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJs
ZUZvcktleTpAIlJlc291cmNlTG9hZFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUiXSk7CiAg
ICAgICAgIGlmIChncmFuZGZhdGhlcmluZ1RpbWUgPiAwX3MgJiYgZ3JhbmRmYXRoZXJpbmdUaW1l
IDw9IDI0X2ggKiA3KQogICAgICAgICAgICAgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKGdyYW5kZmF0
aGVyaW5nVGltZSk7CisKKyAgICAgICAgc2V0RGVidWdMb2dnZ2luZ0VuYWJsZWQoW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z0xvZ2dpbmdFbmFibGVkIl0pOwogICAgIH0pOwogfQogCg==
</data>
<flag name="review"
          id="353305"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="353306"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>