<?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>135688</bug_id>
          
          <creation_ts>2014-08-06 22:09:38 -0700</creation_ts>
          <short_desc>Sometimes Gmail cannot load messages, particularly on refresh (&quot;...the application ran into an unexpected error...&quot;)</short_desc>
          <delta_ts>2015-09-02 17:32:42 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>135882</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>jeffrey+webkit</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mark.lam</cc>
    
    <cc>psolanki</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1027415</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-06 22:09:38 -0700</bug_when>
    <thetext>On iOS, sometimes Gmail cannot load the list of messages. This visually manifests itself with Gmail showing a spinner icon and subsequently showing an error message after approximately 1 minute with the following text: &quot;Oops, the application ran into an unexpected error. Please refresh this page in your browser and try again.&quot;

This bug is difficult to reproduce. Perform the following steps, stopping at the step that first reproduces this bug:

1. Open Safari and navigate to gmail.com and sign in.
2. Force quit Safari.
3. Open Safari and let it load gmail.com.
4. If the list of messages appears then tap the reload button in the browser.
5. If the list of messages appears then close the tab, open a new tab and navigate to gmail.com.
6. If the list of messages appears then repeat from step 4.

Additional remark:

This bug is a caused by a side effect of the patch for bug #49401. Bug #84488 was filed to address the side effects of bug #49401 via refactoring of the page load deferrer code. I&apos;m breaking out the issue of tasks placed into the pending task queue when loading is deferred from bug #84488, comment 0, from the larger refactoring effort of that bug as it seems sufficient address such a side effect in a separate bug (this bug). Reprinting the relevant remark from bug #84488, comment 0, here for convenience:

[[
One example is Document::[postTask() (http://trac.webkit.org/browser/trunk/Source/WebCore/dom/Document.cpp?rev=171886#L4908)]. If page-&gt;defersLoading() is true, it throws the task on a pending queue.  But that queue is only flushed when a PageGroupLoadDeferrer is destroyed, and not when the state of page-&gt;defersLoading() otherwise changes.  This was introduced in [&lt;http://trac.webkit.org/changeset/102278&gt;] and caused a lot of bizarre little side effects.
]]

It seems sufficient to only enqueue tasks in the pending task queue of a document when the active DOM objects of the document are active. Reprinting the relevant remark from bug #84488, comment 0, here for convenience:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027416</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-06 22:10:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/17886686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027419</commentid>
    <comment_count>2</comment_count>
      <attachid>236173</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-06 22:15:37 -0700</bug_when>
    <thetext>Created attachment 236173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027420</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-06 22:19:35 -0700</bug_when>
    <thetext>I&apos;m unclear how to write a test for this change without exposing WebCore internals or using a timer with an arbitrary timeout interval to detect if we don&apos;t process the list of pending tasks. I&apos;m open to suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027429</commentid>
    <comment_count>4</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2014-08-06 23:23:58 -0700</bug_when>
    <thetext>Just commenting not reviewing :)

I have been assuming that no JS execution is allowed when &quot;defers loading&quot; flag is on. But according to your change log, I&apos;m no longer certain. I would try to find out where JS execution is triggered even when page loading is deferred, and fix the code there.

Traditionally and ideally, when a page is deferred, all substitute loading tasks will be deferred (the underlying networking data may be cached, but it shouldn&apos;t call back to the loader until &quot;defersLoading&quot; flag is cleared. However, not all developers are aware of this &quot;defersLoading&quot; stuff, so people keep adding code that break this. 

It seems Safari allows client to call setDefersLoading on a single page and it doesn&apos;t suspend active DOM objects. I don&apos;t know what this API is supposed to do. Then I&apos;m no longer clear what &quot;defersLoading&quot; means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027437</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 00:31:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I have been assuming that no JS execution is allowed when &quot;defers loading&quot; flag is on. But according to your change log, I&apos;m no longer certain. I would try to find out where JS execution is triggered even when page loading is deferred, and fix the code there.
&gt; 
&gt; Traditionally and ideally, when a page is deferred, all substitute loading tasks will be deferred (the underlying networking data may be cached, but it shouldn&apos;t call back to the loader until &quot;defersLoading&quot; flag is cleared. However, not all developers are aware of this &quot;defersLoading&quot; stuff, so people keep adding code that break this. 
&gt; 

Right, Page::setDefersLoading(true) is broken at least with respect to deferring loading of substitute data. (It doesn&apos;t defer such loads). We should look to fix this such that setting Page::setDefersLoading(true) defers all loads as its name implies, including loading of substitute data. I haven&apos;t thought through the changes required to implement such a fix. For now, I thought it would be sufficient to workaround this issue with the proposed patch. (I&apos;ll file a bug for fixing defersLoading for substitute data and update the patch with a FIXME comment that reference the bug).

&gt; It seems Safari allows client to call setDefersLoading on a single page and it doesn&apos;t suspend active DOM objects. I don&apos;t know what this API is supposed to do. Then I&apos;m no longer clear what &quot;defersLoading&quot; means.

I&apos;m not familiar with the historical nature of Page::setDefersLoading() or the WebKit API/SPI that uses it. I&apos;ll further investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027538</commentid>
    <comment_count>6</comment_count>
      <attachid>236173</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-08-07 11:10:58 -0700</bug_when>
    <thetext>Comment on attachment 236173
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027543</commentid>
    <comment_count>7</comment_count>
      <attachid>236201</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 11:26:44 -0700</bug_when>
    <thetext>Created attachment 236201
Alternative Patch - Make Page::setDefersLoading() defer substitute data load

For completeness, attached an alternative patch that fixes this bug by making Page::setDefersLoading() defer loading of substitute data. Obviously, this patch would change the behavior of WebKit API/SPI (e.g. -[WebView setDefersCallbacks:YES]).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027544</commentid>
    <comment_count>8</comment_count>
      <attachid>236173</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 11:47:13 -0700</bug_when>
    <thetext>Comment on attachment 236173
Patch

Clearing flags on attachment: 236173

Committed r172219: &lt;http://trac.webkit.org/changeset/172219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027545</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 11:47:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027563</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 12:44:50 -0700</bug_when>
    <thetext>Reverted r172219 for reason:

Caused some /fast/workers tests to fail; will investigate offline.

Committed r172225: &lt;http://trac.webkit.org/changeset/172225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027598</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-07 13:48:58 -0700</bug_when>
    <thetext>It&apos;s pretty straightforward to test something like this by adding a test-only API to &quot;window.internals&quot;. It&apos;s OK for the API to do something very low level. For example, you could expose &quot;window.internals.setDefersLoading(bool)&quot; directly to a purpose-built test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027623</commentid>
    <comment_count>12</comment_count>
      <attachid>236223</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 14:30:03 -0700</bug_when>
    <thetext>Created attachment 236223
Patch

Updated patch whose test results for fast/workers is materially consist with the output of the same tests in a build without the patch and on the build.webkit.org build bots prior to &lt;http://trac.webkit.org/changeset/172219&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027636</commentid>
    <comment_count>13</comment_count>
      <attachid>236223</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 14:39:39 -0700</bug_when>
    <thetext>Comment on attachment 236223
Patch

Clearing flags on attachment: 236223

Committed r172275: &lt;http://trac.webkit.org/changeset/172275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027637</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-07 14:39:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028803</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-13 08:52:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; It&apos;s pretty straightforward to test something like this by adding a test-only API to &quot;window.internals&quot;. It&apos;s OK for the API to do something very low level. For example, you could expose &quot;window.internals.setDefersLoading(bool)&quot; directly to a purpose-built test.

Filed bug #135882 to write a test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236173</attachid>
            <date>2014-08-06 22:15:37 -0700</date>
            <delta_ts>2014-08-07 14:29:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135688-20140806221520.patch</filename>
            <type>text/plain</type>
            <size>3111</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU1YmQwNmRkM2M5YWI5
MWM2MmRiMTY1ZmJhMTE4NDVkNzRhYThmYS4uNTNhYWUxNDRhN2E0ZDY1YTFjNGU4ZjhiNDBhMmIw
NDk0OGQ4ODEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTA4LTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTb21ldGltZXMgR21haWwg
Y2Fubm90IGxvYWQgbWVzc2FnZXMsIHBhcnRpY3VsYXJseSBvbiByZWZyZXNoICgiLi4udGhlIGFw
cGxpY2F0aW9uIHJhbiBpbnRvIGFuIHVuZXhwZWN0ZWQgZXJyb3IuLi4iKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1Njg4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNzg4NjY4Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBnbWFpbC5jb20gbWF5IGZhaWwgdG8g
bG9hZCB0aGUgbGlzdCBvZiBtZXNzYWdlcy4gSW4gcGFydGljdWxhciwgYSBTUUxUcmFuc2FjdGlv
bkNhbGxiYWNrCisgICAgICAgIGZ1bmN0aW9uIG1heSBub3QgYmUgZXhlY3V0ZWQgYW5kIGhlbmNl
IEdtYWlsIHdpbGwgbm90IGRpc3BsYXkgdGhlIGxpc3Qgb2YgbWVzc2FnZXMgYW5kCisgICAgICAg
IHdpbGwgc3Vic2VxdWVudGx5IGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS4KKworICAgICAgICBX
aGVuIGEgV2ViS2l0IGNsaWVudCBkZWZlcnMgbG9hZGluZyBvZiBhIHBhZ2UgKGUuZy4gLVtXZWJW
aWV3IHNldERlZmVyc0NhbGxiYWNrczpZRVNdKSwgV2ViQ29yZQorICAgICAgICBtYXkgc3RpbGwg
bG9hZCB0aGUgbWFpbiByZXNvdXJjZSwgc2F5IGlmIHN1YnN0aXR1dGUgZGF0YSBpcyBhdmFpbGFi
bGUgZm9yIGl0LCBhbmQgZGVmZXIgZXhlY3V0aW5nCisgICAgICAgIHRhc2tzLCBzdWNoIGFzIGEg
U1FMVHJhbnNhY3Rpb25DYWxsYmFjayBmdW5jdGlvbiwgYnkgYXBwZW5kaW5nIHN1Y2ggdGFza3Mg
dG8gdGhlIGVuZCBvZiB0aGUgbGlzdAorICAgICAgICBvZiBwZW5kaW5nIHRhc2tzIGZvciB0aGUg
YXNzb2NpYXRlZCBEb2N1bWVudC4gVGhpcyBsaXN0IG9mIHBlbmRpbmcgdGFza3MgaXMgbmV2ZXIg
cHJvY2Vzc2VkIHdoZW4KKyAgICAgICAgYSBjbGllbnQgc3Vic2VxdWVudGx5IGFsbG93cyBsb2Fk
aW5nIChlLmcuIC1bV2ViVmlldyBzZXREZWZlcnNDYWxsYmFja3M6Tk9dKSkuIFRoZXJlZm9yZSwg
d2UgbmV2ZXIKKyAgICAgICAgZXhlY3V0ZSBhIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgZnVuY3Rp
b24gdGhhdCB3YXMgZGVmZXJyZWQuCisKKyAgICAgICAgSWRlYWxseSBXZWJDb3JlIHdvdWxkIGRl
ZmVyIGxvYWRpbmcgb2Ygc3Vic3RpdHV0ZSBkYXRhIHdoZW4gYSBXZWJLaXQgY2xpZW50IHJlcXVl
c3RzIHRoYXQgbG9hZGluZworICAgICAgICBiZSBkZWZlcnJlZCBhbmQgaGVuY2UgYSBTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrIGZ1bmN0aW9uIHdvdWxkIGJlIGRlZmVycmVkIGFzIGEgY29uc2VxdWVu
Y2Ugb2YgdGhlCisgICAgICAgIGxhY2sgb2YgSmF2YVNjcmlwdCBzY3JpcHQgZXhlY3V0aW9uIChz
aW5jZSBzdWJzdGl0dXRlIGRhdGEgd2Fzbid0IGxvYWRlZCBhbmQgaGVuY2UgYW55IEphdmFTY3Jp
cHQKKyAgICAgICAgc2NyaXB0IGNvbnRhaW5lZCBpbiB0aGUgc3Vic3RpdHV0ZSBkYXRhIHRoYXQg
aW5pdGlhdGVzIGEgU1FMIHRyYW5zYWN0aW9uIGlzbid0IGV4ZWN1dGVkKS4gRm9yIG5vdywKKyAg
ICAgICAgaXQncyBzdWZmaWNpZW50IHRvIG9ubHkgZGVmZXIgZXhlY3V0aW5nIHRhc2tzIHdoZW4g
ZWl0aGVyIHRoZXJlIGFyZSBleGlzdGluZyBwZW5kaW5nIHRhc2tzIG9yIHRoZQorICAgICAgICBh
Y3RpdmUgRE9NIG9iamVjdHMgZm9yIHRoZSBkb2N1bWVudCBhcmUgc3VzcGVuZGVkIChlLmcuIERv
Y3VtZW50OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpIHdhcyBjYWxsZWQpLgorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwb3N0VGFz
ayk6CisKIDIwMTQtMDgtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT046IEV4dHJlbWVseSBmbGFzaHkgc2Nyb2xsaW5nIHdoaWxlIGEgcGFn
ZSBpcyBzdGlsbCBsb2FkaW5nIChiZWNhdXNlIG9mIGZsdXNoIHRocm90dGxpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA5MjMwOTRkN2ZmYThmNDU4ODI0ZDU4ZGJkZGE0NjcyOTc4ODM3
NWYzLi41ZmQyOWNjYTAxZDMwZTFiYzRkYzlhMDkyMGMzMDE4YzhmZDJiYjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTQ5MTgsOCArNDkxOCwxMCBAQCB2b2lkIERvY3VtZW50Ojpwb3N0
VGFzayhUYXNrIHRhc2spCiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7Ci0gICAgICAgIGlm
ICgocGFnZSAmJiBwYWdlLT5kZWZlcnNMb2FkaW5nKCkpIHx8ICFkb2N1bWVudC0+bV9wZW5kaW5n
VGFza3MuaXNFbXB0eSgpKQorICAgICAgICBpZiAoZG9jdW1lbnQtPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGRvY3VtZW50
LT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdU
YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBw
ZW5kKFdURjo6bW92ZSgqdGFzay5yZWxlYXNlKCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdGFzay0+cGVyZm9ybVRhc2soKmRvY3VtZW50KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236201</attachid>
            <date>2014-08-07 11:26:44 -0700</date>
            <delta_ts>2014-08-07 14:29:58 -0700</delta_ts>
            <desc>Alternative Patch - Make Page::setDefersLoading() defer substitute data load</desc>
            <filename>Bug135688-AlternativeFix.patch</filename>
            <type>text/plain</type>
            <size>9410</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA1MmRkNTg1ZDdkN2FiMTQzMGM3ZjhjNDQzMzJiN2FmZGI3MWI5MTYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBUaHUsIDcgQXVnIDIwMTQgMTE6MTk6MjYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBTb21ldGlt
ZXMgR21haWwgY2Fubm90IGxvYWQgbWVzc2FnZXMsIHBhcnRpY3VsYXJseSBvbiByZWZyZXNoCiAo
Ii4uLnRoZSBhcHBsaWNhdGlvbiByYW4gaW50byBhbiB1bmV4cGVjdGVkIGVycm9yLi4uIikKIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU2ODggPHJkYXI6Ly9wcm9i
bGVtLzE3ODg2Njg2PgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpGaXhlcyBhbiBpc3N1
ZSB3aGVyZSBnbWFpbC5jb20gbWF5IGZhaWwgdG8gbG9hZCB0aGUgbGlzdCBvZiBtZXNzYWdlcy4g
SW4gcGFydGljdWxhciwgYSBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrCmZ1bmN0aW9uIG1heSBub3Qg
YmUgZXhlY3V0ZWQgYW5kIGhlbmNlIEdtYWlsIHdpbGwgbm90IGRpc3BsYXkgdGhlIGxpc3Qgb2Yg
bWVzc2FnZXMgYW5kCndpbGwgc3Vic2VxdWVudGx5IGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS4K
CldoZW4gYSBXZWJLaXQgY2xpZW50IGRlZmVycyBsb2FkaW5nIG9mIGEgcGFnZSAoZS5nLiAtW1dl
YlZpZXcgc2V0RGVmZXJzQ2FsbGJhY2tzOllFU10pLCBXZWJDb3JlCm1heSBzdGlsbCBsb2FkIHRo
ZSBtYWluIHJlc291cmNlLCBzYXkgaWYgc3Vic3RpdHV0ZSBkYXRhIGlzIGF2YWlsYWJsZSBmb3Ig
aXQsIGFuZCBkZWZlciBleGVjdXRpbmcKdGFza3MsIHN1Y2ggYXMgYSBTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrIGZ1bmN0aW9uLCBieSBhcHBlbmRpbmcgc3VjaCB0YXNrcyB0byB0aGUgZW5kIG9mIHRo
ZSBsaXN0Cm9mIHBlbmRpbmcgdGFza3MgZm9yIHRoZSBhc3NvY2lhdGVkIERvY3VtZW50LiBUaGlz
IGxpc3Qgb2YgcGVuZGluZyB0YXNrcyBpcyBuZXZlciBwcm9jZXNzZWQgd2hlbgphIGNsaWVudCBz
dWJzZXF1ZW50bHkgYWxsb3dzIGxvYWRpbmcgKGUuZy4gLVtXZWJWaWV3IHNldERlZmVyc0NhbGxi
YWNrczpOT10pKS4gVGhlcmVmb3JlLCB3ZSBuZXZlcgpleGVjdXRlIGEgU1FMVHJhbnNhY3Rpb25D
YWxsYmFjayBmdW5jdGlvbiB0aGF0IHdhcyBkZWZlcnJlZC4gSW5zdGVhZCwgd2Ugc2hvdWxkIGRl
ZmVyIGxvYWRpbmcgYWxsCmxvYWRzLCBpbmNsdWRpbmcgbG9hZHMgb2Ygc3Vic3RpdHV0ZSBkYXRh
LCB3aGVuIGEgY2xpZW50IGRlZmVycyBsb2FkaW5nIG9mIGEgcGFnZS4KCiogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcDoKKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6
IEluaXRpYWxpemUgdGhlIHdhaXRpbmcgdG8gbG9hZCBzdWJzdGl0dXRlIGRhdGEgZmxhZywKbV9p
c1dhaXRpbmdUb0xvYWRTdWJzdGl0dXRlRGF0YSwgdG8gZmFsc2UuCihXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbklmTm90RGVmZXJzTG9hZGluZyk6
IEFkZGVkOyBvbmx5IGxvYWQgdGhlCnN1YnN0aXR1dGUgZGF0YSBpZiBsb2FkaW5nIGZvciB0aGUg
cGFnZSBpcyBhbGxvd2VkIChpLmUuIFBhZ2U6OmRlZmVyc0xvYWRpbmcoKSA9PSBmYWxzZSkuIE90
aGVyd2lzZSwKbWFyayB0aGF0IHdlJ3JlIHdhaXRpbmcgdG8gbG9hZCBzdWJzdGl0dXRlIGRhdGEu
IFdlJ2xsIGxvYWQgdGhlIHN1YnN0aXR1dGUgZGF0YSB3aGVuIGxvYWRpbmcgaXMKYWxsb3dlZCAo
aS5lLiBEb2N1bWVudExvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhmYWxzZSkgaXMgY2FsbGVkKS4K
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSk6
IE1vZGlmaWVkIHRvIGNhbGwgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZFNvb25JZk5vdERlZmVyc0xvYWRpbmcoKS4KKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRE
ZWZlcnNMb2FkaW5nKTogTW9kaWZpZWQgdG8gc3RhcnQgdGhlIHN1YnN0aXR1dGUgZGF0YSBsb2Fk
IHNvb24gaWYgd2UKYWxsb3cgbG9hZGluZyBhbmQgd2VyZSB3YWl0aW5nIHRvIHN0YXJ0IHN1Y2gg
YSBsb2FkLgooV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJj
ZSk6IE1vZGlmaWVkIHRvIGNhbGwgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRh
TG9hZFNvb25JZk5vdERlZmVyc0xvYWRpbmcoKS4KKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkKTogQ2xlYXIgdGhlIHdhaXRpbmcgdG8gbG9hZCBzdWJzdGl0
dXRlIGRhdGEgZmxhZy4KKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKLS0tCiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgfCAy
MyArKysrKysrKysrKysrKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oICAgfCAgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NTViZDA2Li5kYWY4MmI0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE0LTA4LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBTb21ldGltZXMgR21haWwgY2Fubm90IGxvYWQgbWVzc2FnZXMsIHBh
cnRpY3VsYXJseSBvbiByZWZyZXNoICgiLi4udGhlIGFwcGxpY2F0aW9uIHJhbiBpbnRvIGFuIHVu
ZXhwZWN0ZWQgZXJyb3IuLi4iKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1Njg4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNzg4NjY4Nj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBhbiBp
c3N1ZSB3aGVyZSBnbWFpbC5jb20gbWF5IGZhaWwgdG8gbG9hZCB0aGUgbGlzdCBvZiBtZXNzYWdl
cy4gSW4gcGFydGljdWxhciwgYSBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrCisgICAgICAgIGZ1bmN0
aW9uIG1heSBub3QgYmUgZXhlY3V0ZWQgYW5kIGhlbmNlIEdtYWlsIHdpbGwgbm90IGRpc3BsYXkg
dGhlIGxpc3Qgb2YgbWVzc2FnZXMgYW5kCisgICAgICAgIHdpbGwgc3Vic2VxdWVudGx5IGRpc3Bs
YXkgYW4gZXJyb3IgbWVzc2FnZS4KKworICAgICAgICBXaGVuIGEgV2ViS2l0IGNsaWVudCBkZWZl
cnMgbG9hZGluZyBvZiBhIHBhZ2UgKGUuZy4gLVtXZWJWaWV3IHNldERlZmVyc0NhbGxiYWNrczpZ
RVNdKSwgV2ViQ29yZQorICAgICAgICBtYXkgc3RpbGwgbG9hZCB0aGUgbWFpbiByZXNvdXJjZSwg
c2F5IGlmIHN1YnN0aXR1dGUgZGF0YSBpcyBhdmFpbGFibGUgZm9yIGl0LCBhbmQgZGVmZXIgZXhl
Y3V0aW5nCisgICAgICAgIHRhc2tzLCBzdWNoIGFzIGEgU1FMVHJhbnNhY3Rpb25DYWxsYmFjayBm
dW5jdGlvbiwgYnkgYXBwZW5kaW5nIHN1Y2ggdGFza3MgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAor
ICAgICAgICBvZiBwZW5kaW5nIHRhc2tzIGZvciB0aGUgYXNzb2NpYXRlZCBEb2N1bWVudC4gVGhp
cyBsaXN0IG9mIHBlbmRpbmcgdGFza3MgaXMgbmV2ZXIgcHJvY2Vzc2VkIHdoZW4KKyAgICAgICAg
YSBjbGllbnQgc3Vic2VxdWVudGx5IGFsbG93cyBsb2FkaW5nIChlLmcuIC1bV2ViVmlldyBzZXRE
ZWZlcnNDYWxsYmFja3M6Tk9dKSkuIFRoZXJlZm9yZSwgd2UgbmV2ZXIKKyAgICAgICAgZXhlY3V0
ZSBhIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3YXMgZGVmZXJyZWQuIElu
c3RlYWQsIHdlIHNob3VsZCBkZWZlciBsb2FkaW5nIGFsbAorICAgICAgICBsb2FkcywgaW5jbHVk
aW5nIGxvYWRzIG9mIHN1YnN0aXR1dGUgZGF0YSwgd2hlbiBhIGNsaWVudCBkZWZlcnMgbG9hZGlu
ZyBvZiBhIHBhZ2UuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKTogSW5pdGlhbGl6
ZSB0aGUgd2FpdGluZyB0byBsb2FkIHN1YnN0aXR1dGUgZGF0YSBmbGFnLAorICAgICAgICBtX2lz
V2FpdGluZ1RvTG9hZFN1YnN0aXR1dGVEYXRhLCB0byBmYWxzZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uSWZOb3REZWZlcnNM
b2FkaW5nKTogQWRkZWQ7IG9ubHkgbG9hZCB0aGUKKyAgICAgICAgc3Vic3RpdHV0ZSBkYXRhIGlm
IGxvYWRpbmcgZm9yIHRoZSBwYWdlIGlzIGFsbG93ZWQgKGkuZS4gUGFnZTo6ZGVmZXJzTG9hZGlu
ZygpID09IGZhbHNlKS4gT3RoZXJ3aXNlLAorICAgICAgICBtYXJrIHRoYXQgd2UncmUgd2FpdGlu
ZyB0byBsb2FkIHN1YnN0aXR1dGUgZGF0YS4gV2UnbGwgbG9hZCB0aGUgc3Vic3RpdHV0ZSBkYXRh
IHdoZW4gbG9hZGluZyBpcworICAgICAgICBhbGxvd2VkIChpLmUuIERvY3VtZW50TG9hZGVyOjpz
ZXREZWZlcnNMb2FkaW5nKGZhbHNlKSBpcyBjYWxsZWQpLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KTogTW9kaWZpZWQgdG8g
Y2FsbCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbklmTm90RGVm
ZXJzTG9hZGluZygpLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldERlZmVy
c0xvYWRpbmcpOiBNb2RpZmllZCB0byBzdGFydCB0aGUgc3Vic3RpdHV0ZSBkYXRhIGxvYWQgc29v
biBpZiB3ZQorICAgICAgICBhbGxvdyBsb2FkaW5nIGFuZCB3ZXJlIHdhaXRpbmcgdG8gc3RhcnQg
c3VjaCBhIGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKTogTW9kaWZpZWQgdG8gY2FsbCBEb2N1bWVudExvYWRlcjo6aGFuZGxl
U3Vic3RpdHV0ZURhdGFMb2FkU29vbklmTm90RGVmZXJzTG9hZGluZygpLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWQpOiBDbGVhciB0aGUg
d2FpdGluZyB0byBsb2FkIHN1YnN0aXR1dGUgZGF0YSBmbGFnLgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5oOgorCiAyMDE0LTA4LTA1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBFeHRyZW1lbHkgZmxhc2h5IHNjcm9sbGlu
ZyB3aGlsZSBhIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVjYXVzZSBvZiBmbHVzaCB0aHJvdHRs
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggY2Y3MDVm
Yi4uZjEwNjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0xNDIsNiArMTQyLDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYKICAgICAsIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoMCkKICAgICAsIG1fZGF0YUxvYWRUaW1l
cih0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKICAg
ICAsIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCisgICAgLCBtX2lzV2FpdGluZ1Rv
TG9hZFN1YnN0aXR1dGVEYXRhKGZhbHNlKQogICAgICwgbV9zdWJyZXNvdXJjZUxvYWRlcnNBcmVQ
YWdlQ2FjaGVBY2NlcHRhYmxlKGZhbHNlKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChh
ZG9wdFB0cihuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QoKnRoaXMpKSkKIHsKQEAgLTQ4Niw2ICs0
ODcsMTUgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKCkKICNlbmRp
ZgogfQogCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29u
SWZOb3REZWZlcnNMb2FkaW5nKCkKK3sKKyAgICBpZiAobV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNM
b2FkaW5nKCkpIHsKKyAgICAgICAgbV9pc1dhaXRpbmdUb0xvYWRTdWJzdGl0dXRlRGF0YSA9IHRy
dWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2Fk
U29vbigpOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxv
YWRTb29uKCkKIHsKICAgICBpZiAoIW1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCB8fCBmcmFt
ZUxvYWRlcigpLT5sb2Fkc1N5bmNocm9ub3VzbHkoKSkKQEAgLTU4Nyw3ICs1OTcsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBib29sCiAgICAgICAgIHJlc291cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJh
Y2tQb2xpY3koRG9Ob3RTZW5kQ2FsbGJhY2tzKTsKICAgICAgICAgY2xlYXJNYWluUmVzb3VyY2Uo
KTsKICAgICAgICAgcmVzb3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShTZW5kQ2Fs
bGJhY2tzKTsKLSAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbigpOworICAgICAg
ICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uSWZOb3REZWZlcnNMb2FkaW5nKCk7CiAgICAg
fQogfQogCkBAIC0xMzEyLDggKzEzMjIsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0RGVm
ZXJzTG9hZGluZyhib29sIGRlZmVycykKIAogICAgIHNldEFsbERlZmVyc0xvYWRpbmcobV9zdWJy
ZXNvdXJjZUxvYWRlcnMsIGRlZmVycyk7CiAgICAgc2V0QWxsRGVmZXJzTG9hZGluZyhtX3BsdWdJ
blN0cmVhbUxvYWRlcnMsIGRlZmVycyk7Ci0gICAgaWYgKCFkZWZlcnMpCisgICAgaWYgKCFkZWZl
cnMpIHsKKyAgICAgICAgaWYgKG1faXNXYWl0aW5nVG9Mb2FkU3Vic3RpdHV0ZURhdGEpIHsKKyAg
ICAgICAgICAgIG1faXNXYWl0aW5nVG9Mb2FkU3Vic3RpdHV0ZURhdGEgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oKTsKKyAgICAgICAgfQogICAgICAg
ICBkZWxpdmVyU3Vic3RpdHV0ZVJlc291cmNlc0FmdGVyRGVsYXkoKTsKKyAgICB9CiB9CiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldE1haW5SZXNvdXJjZURhdGFCdWZmZXJpbmdQb2xpY3koRGF0
YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5KQpAQCAtMTQyNyw3ICsxNDQyLDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAg
ICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBh
Z2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgdGhpcywgbV9yZXF1ZXN0KTsK
ICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dCh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBtX3JlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UoKSk7Ci0gICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZFNvb24oKTsKKyAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbklmTm90RGVmZXJz
TG9hZGluZygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDcyLDcgKzE0ODcsOSBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0
KCp0aGlzKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gcmVzb3VyY2VFcnJvci5pc051bGwo
KSA/IGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkgOiByZXNvdXJjZUVy
cm9yOwogCisgICAgbV9pc1dhaXRpbmdUb0xvYWRTdWJzdGl0dXRlRGF0YSA9IGZhbHNlOwogICAg
IG1fZGF0YUxvYWRUaW1lci5zdG9wKCk7CisKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGVudFBv
bGljeSkgewogICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2FuY2VsQ2hl
Y2soKTsKICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA5NWFiZDdjLi43MmQyOTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzA3LDYgKzMwNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNlbHNlCiAgICAgICAgIHR5cGVkZWYgVGltZXI8RG9jdW1lbnRM
b2FkZXI+IERvY3VtZW50TG9hZGVyVGltZXI7CiAjZW5kaWYKKyAgICAgICAgdm9pZCBoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWRTb29uSWZOb3REZWZlcnNMb2FkaW5nKCk7CiAgICAgICAgIHZvaWQg
aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbigpOwogICAgICAgICB2b2lkIGhhbmRsZVN1YnN0
aXR1dGVEYXRhTG9hZE5vdyhEb2N1bWVudExvYWRlclRpbWVyKik7CiAgICAgICAgIHZvaWQgc3Rh
cnREYXRhTG9hZFRpbWVyKCk7CkBAIC00MDAsNiArNDAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOwogICAgICAg
ICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7CisgICAgICAgIGJvb2wgbV9pc1dhaXRp
bmdUb0xvYWRTdWJzdGl0dXRlRGF0YTsKIAogICAgICAgICBSZWZQdHI8SWNvbkxvYWREZWNpc2lv
bkNhbGxiYWNrPiBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFjazsKICAgICAgICAgUmVmUHRyPElj
b25EYXRhQ2FsbGJhY2s+IG1faWNvbkRhdGFDYWxsYmFjazsKLS0gCjEuOS4zIChBcHBsZSBHaXQt
NTApCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236223</attachid>
            <date>2014-08-07 14:30:03 -0700</date>
            <delta_ts>2014-08-07 14:39:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135688-20140807142951.patch</filename>
            <type>text/plain</type>
            <size>3068</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU1YmQwNmRkM2M5YWI5
MWM2MmRiMTY1ZmJhMTE4NDVkNzRhYThmYS4uN2E1YTQ3NDkwZmFiZmVmMmM4MDliYzc0ODRkOWNk
OGRmMGU2OGNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTA4LTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBTb21ldGltZXMgR21haWwg
Y2Fubm90IGxvYWQgbWVzc2FnZXMsIHBhcnRpY3VsYXJseSBvbiByZWZyZXNoICgiLi4udGhlIGFw
cGxpY2F0aW9uIHJhbiBpbnRvIGFuIHVuZXhwZWN0ZWQgZXJyb3IuLi4iKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1Njg4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNzg4NjY4Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBnbWFpbC5jb20gbWF5IGZhaWwgdG8g
bG9hZCB0aGUgbGlzdCBvZiBtZXNzYWdlcy4gSW4gcGFydGljdWxhciwgYSBTUUxUcmFuc2FjdGlv
bkNhbGxiYWNrCisgICAgICAgIGZ1bmN0aW9uIG1heSBub3QgYmUgZXhlY3V0ZWQgYW5kIGhlbmNl
IEdtYWlsIHdpbGwgbm90IGRpc3BsYXkgdGhlIGxpc3Qgb2YgbWVzc2FnZXMgYW5kCisgICAgICAg
IHdpbGwgc3Vic2VxdWVudGx5IGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS4KKworICAgICAgICBX
aGVuIGEgV2ViS2l0IGNsaWVudCBkZWZlcnMgbG9hZGluZyBvZiBhIHBhZ2UgKGUuZy4gLVtXZWJW
aWV3IHNldERlZmVyc0NhbGxiYWNrczpZRVNdKSwgV2ViQ29yZQorICAgICAgICBtYXkgc3RpbGwg
bG9hZCB0aGUgbWFpbiByZXNvdXJjZSwgc2F5IGlmIHN1YnN0aXR1dGUgZGF0YSBpcyBhdmFpbGFi
bGUgZm9yIGl0LCBhbmQgZGVmZXIgZXhlY3V0aW5nCisgICAgICAgIHRhc2tzLCBzdWNoIGFzIGEg
U1FMVHJhbnNhY3Rpb25DYWxsYmFjayBmdW5jdGlvbiwgYnkgYXBwZW5kaW5nIHN1Y2ggdGFza3Mg
dG8gdGhlIGVuZCBvZiB0aGUgbGlzdAorICAgICAgICBvZiBwZW5kaW5nIHRhc2tzIGZvciB0aGUg
YXNzb2NpYXRlZCBEb2N1bWVudC4gVGhpcyBsaXN0IG9mIHBlbmRpbmcgdGFza3MgaXMgbmV2ZXIg
cHJvY2Vzc2VkIHdoZW4KKyAgICAgICAgYSBjbGllbnQgc3Vic2VxdWVudGx5IGFsbG93cyBsb2Fk
aW5nIChlLmcuIC1bV2ViVmlldyBzZXREZWZlcnNDYWxsYmFja3M6Tk9dKSkuIFRoZXJlZm9yZSwg
d2UgbmV2ZXIKKyAgICAgICAgZXhlY3V0ZSBhIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgZnVuY3Rp
b24gdGhhdCB3YXMgZGVmZXJyZWQuCisKKyAgICAgICAgSWRlYWxseSBXZWJDb3JlIHdvdWxkIGRl
ZmVyIGxvYWRpbmcgb2Ygc3Vic3RpdHV0ZSBkYXRhIHdoZW4gYSBXZWJLaXQgY2xpZW50IHJlcXVl
c3RzIHRoYXQgbG9hZGluZworICAgICAgICBiZSBkZWZlcnJlZCBhbmQgaGVuY2UgYSBTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrIGZ1bmN0aW9uIHdvdWxkIGJlIGRlZmVycmVkIGFzIGEgY29uc2VxdWVu
Y2Ugb2YgdGhlCisgICAgICAgIGxhY2sgb2YgSmF2YVNjcmlwdCBzY3JpcHQgZXhlY3V0aW9uIChz
aW5jZSBzdWJzdGl0dXRlIGRhdGEgd2Fzbid0IGxvYWRlZCBhbmQgaGVuY2UgYW55IEphdmFTY3Jp
cHQKKyAgICAgICAgc2NyaXB0IGNvbnRhaW5lZCBpbiB0aGUgc3Vic3RpdHV0ZSBkYXRhIHRoYXQg
aW5pdGlhdGVzIGEgU1FMIHRyYW5zYWN0aW9uIGlzbid0IGV4ZWN1dGVkKS4gRm9yIG5vdywKKyAg
ICAgICAgaXQncyBzdWZmaWNpZW50IHRvIG9ubHkgZGVmZXIgZXhlY3V0aW5nIHRhc2tzIHdoZW4g
ZWl0aGVyIHRoZXJlIGFyZSBleGlzdGluZyBwZW5kaW5nIHRhc2tzIG9yIHRoZQorICAgICAgICBw
YWdlIGRlZmVycyBsb2FkaW5nIGFuZCBhY3RpdmUgRE9NIG9iamVjdHMgaW4gdGhlIGRvY3VtZW50
IGFyZSBzdXNwZW5kZWQgKGUuZy4gRG9jdW1lbnQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkg
d2FzIGNhbGxlZCkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnBvc3RUYXNrKToKKwogMjAxNC0wOC0wNSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogRXh0cmVtZWx5IGZsYXNo
eSBzY3JvbGxpbmcgd2hpbGUgYSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlY2F1c2Ugb2YgZmx1
c2ggdGhyb3R0bGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkyMzA5NGQ3ZmZhOGY0
NTg4MjRkNThkYmRkYTQ2NzI5Nzg4Mzc1ZjMuLmUwNmU2YWI3M2FkOWM3ZWQ0ZmJhMmQyZDE5OTNk
MTQ0MzdmODhkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDkxOSw3ICs0OTE5LDcg
QEAgdm9pZCBEb2N1bWVudDo6cG9zdFRhc2soVGFzayB0YXNrKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgICAgICBpZiAo
KHBhZ2UgJiYgcGFnZS0+ZGVmZXJzTG9hZGluZygpKSB8fCAhZG9jdW1lbnQtPm1fcGVuZGluZ1Rh
c2tzLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKChwYWdlICYmIHBhZ2UtPmRlZmVyc0xvYWRpbmco
KSAmJiBkb2N1bWVudC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKSB8fCAhZG9jdW1l
bnQtPm1fcGVuZGluZ1Rhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5tX3Bl
bmRpbmdUYXNrcy5hcHBlbmQoV1RGOjptb3ZlKCp0YXNrLnJlbGVhc2UoKSkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygqZG9jdW1lbnQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>