<?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>123041</bug_id>
          
          <creation_ts>2013-10-18 15:04:58 -0700</creation_ts>
          <short_desc>Limit use of display sleep assertion when &lt;video&gt; element is off-screen.</short_desc>
          <delta_ts>2013-10-21 14:19:20 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941349</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-18 15:04:58 -0700</bug_when>
    <thetext>Limit use of display sleep assertion when &lt;video&gt; element is off-screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941353</commentid>
    <comment_count>1</comment_count>
      <attachid>214607</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-18 15:12:10 -0700</bug_when>
    <thetext>Created attachment 214607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941363</commentid>
    <comment_count>2</comment_count>
      <attachid>214607</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-18 15:47:51 -0700</bug_when>
    <thetext>Comment on attachment 214607
Patch

Why can&apos;t we just use Page Visibility to determine whether a &lt;video&gt; can prevent display sleep?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941364</commentid>
    <comment_count>3</comment_count>
      <attachid>214607</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-18 15:49:32 -0700</bug_when>
    <thetext>Comment on attachment 214607
Patch

Attachment 214607 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/6428014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941365</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-18 15:53:27 -0700</bug_when>
    <thetext>PageVisibility doesn&apos;t have a notification system outside dispatchEvent(), but it could be added to Page::setVisibilityState() pretty easily.  I&apos;ll modify my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941367</commentid>
    <comment_count>5</comment_count>
      <attachid>214607</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-18 15:57:00 -0700</bug_when>
    <thetext>Comment on attachment 214607
Patch

Attachment 214607 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/6478015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941393</commentid>
    <comment_count>6</comment_count>
      <attachid>214618</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-18 16:54:01 -0700</bug_when>
    <thetext>Created attachment 214618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941397</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 16:56:25 -0700</bug_when>
    <thetext>Attachment 214618 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;]&quot; exit_code: 1
Source/WebCore/html/HTMLMediaElement.cpp:5060:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941412</commentid>
    <comment_count>8</comment_count>
      <attachid>214624</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-18 17:50:46 -0700</bug_when>
    <thetext>Created attachment 214624
Patch

Protected updateDisableSleep() with a #ifdef guard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941413</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 17:53:39 -0700</bug_when>
    <thetext>Attachment 214624 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;]&quot; exit_code: 1
Source/WebCore/html/HTMLMediaElement.cpp:5062:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941925</commentid>
    <comment_count>10</comment_count>
      <attachid>214624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-21 11:27:36 -0700</bug_when>
    <thetext>Comment on attachment 214624
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1530
&gt; +void Document::registerForPageVisibilityStateCallbacks(Element* e)

Could you use the word &quot;element&quot; instead of the letter &quot;e&quot; for this?

&gt; Source/WebCore/dom/Document.cpp:1535
&gt; +void Document::unregisterForPageVisibilityStateCallbacks(Element* e)

Ditto.

&gt; Source/WebCore/dom/Document.cpp:1543
&gt; +    HashSet&lt;Element*&gt;::iterator end = m_pageVisibilityStateCallbackElements.end();

Should use auto for this too, like in the for loop, and also if you are willing put the end and begin both inside the for loop.

&gt; Source/WebCore/dom/Document.h:420
&gt; +    void pageVisibilityStateChanged();

Not sure the word “State” is helpful in this function name.

&gt; Source/WebCore/dom/Document.h:973
&gt; +    void registerForPageVisibilityStateCallbacks(Element*);
&gt; +    void unregisterForPageVisibilityStateCallbacks(Element*);

Not sure the word “State” is helpful in these function names.

&gt; Source/WebCore/dom/Document.h:1449
&gt; +    HashSet&lt;Element*&gt; m_pageVisibilityStateCallbackElements;

Not sure the word “State” is helpful in this data member name.

&gt; Source/WebCore/dom/Element.h:423
&gt; +    virtual void pageVisibilityStateChanged() { }

Not sure the word “State” is helpful in this function name.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4285
&gt; +    m_displaySleepDisablingSuspended = document().hidden();

It’s inconsistent that the Document::hidden function establishes the concept of a “hidden document”, yet the callback for changes to whether it’s hidden calls it “page visibility state”. It seems like we could just call this “visibility” from the point of view of the document rather than calling it “page visibility state”.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4288
&gt; +#if PLATFORM(MAC)
&gt; +    updateDisableSleep();
&gt; +#endif

This pre-existing function has an unpleasantly ungrammatical name. “Update disable sleep” should instead be “update sleep disabling” or something else that makes sense with English grammar. Also, it would be nicer to have this factored so it did not require an #if at the call site. Maybe an inline empty version of the function for non-Mac platforms?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5063
&gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; +        !m_displaySleepDisablingSuspended &amp;&amp;
&gt; +#endif

A nice way to avoid this awkward construction is to just add an early return.

#if ENABLE(PAGE_VISIBILITY_API)
    if (m_displaySleepDisablingSuspended)
        return false;
#endif

Then you could leave the boolean expression that follows it entirely alone.

&gt; Source/WebCore/html/HTMLMediaElement.h:738
&gt; +    bool m_displaySleepDisablingSuspended : 1;

This data member name sounds like a verb “display”. One way to fix that is to add an “is” prefix. There are probably other ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941931</commentid>
    <comment_count>11</comment_count>
      <attachid>214624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-21 11:28:49 -0700</bug_when>
    <thetext>Comment on attachment 214624
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1544
&gt; +    for (auto i = m_pageVisibilityStateCallbackElements.begin(); i != end; ++i)

We normally use “it” rather than “i” when it’s an iterator instead of an index.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:349
&gt;      document.registerForPrivateBrowsingStateChangedCallbacks(this);
&gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; +    document.registerForPageVisibilityStateCallbacks(this);
&gt; +#endif

I’d prefer to see a blank line before this.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:378
&gt;      document().unregisterForPrivateBrowsingStateChangedCallbacks(this);
&gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; +    document().unregisterForPageVisibilityStateCallbacks(this);
&gt; +#endif

I’d prefer to see a blank line before this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941982</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-21 13:05:02 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 214624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214624&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1530
&gt; &gt; +void Document::registerForPageVisibilityStateCallbacks(Element* e)
&gt; 
&gt; Could you use the word &quot;element&quot; instead of the letter &quot;e&quot; for this?

Absolutely.

&gt; &gt; Source/WebCore/dom/Document.cpp:1535
&gt; &gt; +void Document::unregisterForPageVisibilityStateCallbacks(Element* e)
&gt; 
&gt; Ditto.

Ditto.

&gt; &gt; Source/WebCore/dom/Document.cpp:1543
&gt; &gt; +    HashSet&lt;Element*&gt;::iterator end = m_pageVisibilityStateCallbackElements.end();
&gt; 
&gt; Should use auto for this too, like in the for loop, and also if you are willing put the end and begin both inside the for loop.

Will do.

&gt; &gt; Source/WebCore/dom/Document.h:420
&gt; &gt; +    void pageVisibilityStateChanged();
&gt; 
&gt; Not sure the word “State” is helpful in this function name.

Agreed.  This will become pageVisibilityChanged().

&gt; &gt; Source/WebCore/dom/Document.h:973
&gt; &gt; +    void registerForPageVisibilityStateCallbacks(Element*);
&gt; &gt; +    void unregisterForPageVisibilityStateCallbacks(Element*);
&gt; 
&gt; Not sure the word “State” is helpful in these function names.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1449
&gt; &gt; +    HashSet&lt;Element*&gt; m_pageVisibilityStateCallbackElements;
&gt; 
&gt; Not sure the word “State” is helpful in this data member name.
&gt; 
&gt; &gt; Source/WebCore/dom/Element.h:423
&gt; &gt; +    virtual void pageVisibilityStateChanged() { }
&gt; 
&gt; Not sure the word “State” is helpful in this function name.

Ditto to all.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4285
&gt; &gt; +    m_displaySleepDisablingSuspended = document().hidden();
&gt; 
&gt; It’s inconsistent that the Document::hidden function establishes the concept of a “hidden document”, yet the callback for changes to whether it’s hidden calls it “page visibility state”. It seems like we could just call this “visibility” from the point of view of the document rather than calling it “page visibility state”.

The justification is that hidden() is an easy, public alias for pageVisibilityState() != PageVisibilityStateVisible, where the pageVisibilityState() method is private.

I&apos;m not sure if you&apos;re suggesting we change the &quot;isHidden()&quot; method to &quot;isVisible()&quot;, or whether we should be calling pageVisibilityState() (and making that method public), or something else.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4288
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    updateDisableSleep();
&gt; &gt; +#endif
&gt; 
&gt; This pre-existing function has an unpleasantly ungrammatical name. “Update disable sleep” should instead be “update sleep disabling” or something else that makes sense with English grammar. Also, it would be nicer to have this factored so it did not require an #if at the call site. Maybe an inline empty version of the function for non-Mac platforms?

Sure thing; that would clean up a lot of call sites in this class.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5063
&gt; &gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; &gt; +        !m_displaySleepDisablingSuspended &amp;&amp;
&gt; &gt; +#endif
&gt; 
&gt; A nice way to avoid this awkward construction is to just add an early return.
&gt; 
&gt; #if ENABLE(PAGE_VISIBILITY_API)
&gt;     if (m_displaySleepDisablingSuspended)
&gt;         return false;
&gt; #endif
&gt; 
&gt; Then you could leave the boolean expression that follows it entirely alone.

Indeed, great suggestion.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:738
&gt; &gt; +    bool m_displaySleepDisablingSuspended : 1;
&gt; 
&gt; This data member name sounds like a verb “display”. One way to fix that is to add an “is” prefix. There are probably other ways.

But that one will do, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941983</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-21 13:06:06 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 214624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214624&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1544
&gt; &gt; +    for (auto i = m_pageVisibilityStateCallbackElements.begin(); i != end; ++i)
&gt; 
&gt; We normally use “it” rather than “i” when it’s an iterator instead of an index.

Changed.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:349
&gt; &gt;      document.registerForPrivateBrowsingStateChangedCallbacks(this);
&gt; &gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; &gt; +    document.registerForPageVisibilityStateCallbacks(this);
&gt; &gt; +#endif
&gt; 
&gt; I’d prefer to see a blank line before this.

Added.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:378
&gt; &gt;      document().unregisterForPrivateBrowsingStateChangedCallbacks(this);
&gt; &gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; &gt; +    document().unregisterForPageVisibilityStateCallbacks(this);
&gt; &gt; +#endif
&gt; 
&gt; I’d prefer to see a blank line before this.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941990</commentid>
    <comment_count>14</comment_count>
      <attachid>214624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-21 13:10:47 -0700</bug_when>
    <thetext>Comment on attachment 214624
Patch

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

&gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:4285
&gt;&gt;&gt; +    m_displaySleepDisablingSuspended = document().hidden();
&gt;&gt; 
&gt;&gt; It’s inconsistent that the Document::hidden function establishes the concept of a “hidden document”, yet the callback for changes to whether it’s hidden calls it “page visibility state”. It seems like we could just call this “visibility” from the point of view of the document rather than calling it “page visibility state”.
&gt; 
&gt; The justification is that hidden() is an easy, public alias for pageVisibilityState() != PageVisibilityStateVisible, where the pageVisibilityState() method is private.
&gt; 
&gt; I&apos;m not sure if you&apos;re suggesting we change the &quot;isHidden()&quot; method to &quot;isVisible()&quot;, or whether we should be calling pageVisibilityState() (and making that method public), or something else.

If we are comfortable with just calling this “hidden” or “isHidden”, then I suggest taking the word “page” out of all the other function names too. They can just be called things like “visibility changed”. Which I think would be great. If there is more than one kind of visibility a document might be talking about, then I suggest that the hidden function be renamed so it has the disambiguating word “page” in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941998</commentid>
    <comment_count>15</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-21 13:18:08 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 214624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214624&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:4285
&gt; &gt;&gt;&gt; +    m_displaySleepDisablingSuspended = document().hidden();
&gt; &gt;&gt; 
&gt; &gt;&gt; It’s inconsistent that the Document::hidden function establishes the concept of a “hidden document”, yet the callback for changes to whether it’s hidden calls it “page visibility state”. It seems like we could just call this “visibility” from the point of view of the document rather than calling it “page visibility state”.
&gt; &gt; 
&gt; &gt; The justification is that hidden() is an easy, public alias for pageVisibilityState() != PageVisibilityStateVisible, where the pageVisibilityState() method is private.
&gt; &gt; 
&gt; &gt; I&apos;m not sure if you&apos;re suggesting we change the &quot;isHidden()&quot; method to &quot;isVisible()&quot;, or whether we should be calling pageVisibilityState() (and making that method public), or something else.
&gt; 
&gt; If we are comfortable with just calling this “hidden” or “isHidden”, then I suggest taking the word “page” out of all the other function names too. They can just be called things like “visibility changed”. Which I think would be great. If there is more than one kind of visibility a document might be talking about, then I suggest that the hidden function be renamed so it has the disambiguating word “page” in it.

It looks like &quot;Document::hidden()&quot; is a requirement of the Page Visibility API: &lt;https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#sec-document-interface&gt;, which also requires visibilityState().  So I&apos;ll update these new APIs and callbacks to drop the &quot;page&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942022</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-21 14:19:20 -0700</bug_when>
    <thetext>Committed r157735: &lt;http://trac.webkit.org/changeset/157735&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214607</attachid>
            <date>2013-10-18 15:12:10 -0700</date>
            <delta_ts>2013-10-18 16:53:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123041-20131018151209.patch</filename>
            <type>text/plain</type>
            <size>16728</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU2ZjZjNDViZTA2NmJk
YWNiMTUwZmNmOGVkZWM0N2M2ZDYyNTlkYS4uODQ5ODUxNWQ0MjYwNTA5YmIxYThkNzQ4YTdkNDhm
OGNlODk5OTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIExpbWl0IHVzZSBvZiBkaXNw
bGF5IHNsZWVwIGFzc2VydGlvbiB3aGVuIDx2aWRlbz4gZWxlbWVudCBpcyBvZmYtc2NyZWVuLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMDQxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhv
ZHMgdG8gUGFnZSB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHRha2luZyBvZiBzbGVlcCBhc3Nl
cnRpb25zIGJ5CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQuCisKKyAgICAgICAgUGFnZSB3aWxs
IHByb3BvZ2F0ZSB0aGUgc3VzcGVuZCBhbmQgcmVzdW1lIG5vdGlmaWNhdGlvbnMgdG8gaXRzIERv
Y3VtZW50cywgd2hpY2gKKyAgICAgICAgd2lsbCBmdXJ0aGVyIHByb3BvZ2F0ZSB0aG9zZSBub3Rp
ZmljYXRpb25zIHRvIHJlZ2lzdGVyZWQgZWxlbWVudHMuICBVcG9uIHJlY2VpdmluZworICAgICAg
ICB0aGVzZSBub3RpZmljYXRpb25zLCBIVE1MTWVkaWFFbGVtZW50IHdpbGwgcmVsZWFzZSBvciB0
YWtlIGEgRGlzcGxheVNsZWVwRGlzYWJsZXIKKyAgICAgICAgdG9rZW4gaWYgbmVjZXNzYXJ5Lgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEFkZCBuZXcgbWV0aG9kcyB0byBleHBvcnRzIGxp
c3QuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZWdpc3RlckZvckRpc3BsYXlTbGVlcERpc2FibGluZ0NhbGxiYWNrcyk6IEFkZGVkIHJl
Z2lzdHJhdGlvbiBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dW5yZWdpc3Rl
ckZvckRpc3BsYXlTbGVlcERpc2FibGluZ0NhbGxiYWNrcyk6IEFkZGVkIHVucmVnaXN0cmF0aW9u
IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdXNwZW5kRGlzcGxheVNsZWVw
RGlzYWJsaW5nKTogQ2FsbCBhbGwgcmVnaXN0ZXJlZCBjbGllbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJlc3VtZURpc3BsYXlTbGVlcERpc2FibGluZyk6IERpdHRvLgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzdXNwZW5kRGlzcGxheVNsZWVwRGlzYWJsaW5nKTogQWRkZWQgZGVm
YXVsdCB2aXJ0dWFsIG1ldGhvZCB0byBiZSBvdmVycmlkZGVuCisgICAgICAgICAgICBieSBzdWJj
bGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVzdW1lRGlzcGxheVNsZWVwRGlz
YWJsaW5nKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBSZWdp
c3RlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiwgYW5kIGNoZWNrIHRoZQorICAgICAgICAgICAgY3Vy
cmVudCBzdGF0dXMgb2YgUGFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KTogVW5yZWdpc3RlciBmb3IgdGhlIG5vdGlmaWNhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmREaXNwbGF5U2xlZXBEaXNh
YmxpbmcpOiBTZXQgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQKKyAgICAgICAgICAg
IGFuZCBjYWxsIHVwZGF0ZURpc2FibGVTbGVlcCgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cmVzdW1lRGlzcGxheVNsZWVwRGlzYWJsaW5nKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGREaXNhYmxlU2xlZXApOiBBZGQgYSBj
aGVjayBmb3IgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQuCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOiBTZXQgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5k
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkaWRNb3ZlT25zY3JlZW4pOiBDYWxsIHJlc3Vt
ZURpc3BsYXlTbGVlcERpc2FibGluZygpLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6d2lsbE1v
dmVPZmZzY3JlZW4pOiBDYWxsIHN1c3BlbmREaXNwbGF5U2xlZXBEaXNhYmxpbmcoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnN1c3BlbmREaXNwbGF5U2xlZXBEaXNhYmxpbmcpOiBOb3RpZnkg
YWxsIGNoaWxkIGRvY3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlc3VtZURpc3Bs
YXlTbGVlcERpc2FibGluZyk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6aXNEaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQpOiBTaW1w
bGUgZ2V0dGVyLgorCiAyMDEzLTEwLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNZWRpYV0gUmVmYWN0b3Igc3VwcG9ydHNUeXBlKCkgZmFjdG9yeSBtZXRo
b2QgdG8gdGFrZSBhIHBhcmFtZXRlcnMgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY2YWRi
MTY2ZWYxMGQ4ZmNhZTcyYTE5ZTEzNDE2M2NkNzhjMGE4MDIuLjk3MTdjZWRmOTRhMmY0ODc3MWFm
OWQyZjA2YTVhNjUzMDkxN2IxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMy0xMC0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBM
aW1pdCB1c2Ugb2YgZGlzcGxheSBzbGVlcCBhc3NlcnRpb24gd2hlbiA8dmlkZW8+IGVsZW1lbnQg
aXMgb2ZmLXNjcmVlbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMzA0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlbGwgdGhlIHBhZ2UgdG8gc3VzcGVuZCBkaXNwbGF5IHNsZWVwIGRpc2FibGluZyB3
aGlsZSB0aGUgd2luZG93IGlzIG9mZiBzY3JlZW4uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3dpbmRvd1dpbGxPcmRlck9uU2NyZWVuOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF93aW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46XSk6CisKIDIwMTMt
MTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0g
W01hY10gRW5hYmxlIE1lZGlhU291cmNlIG9uIHRoZSBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTllNzc3
YWI0MzM4NGQ2ZmNhM2YyMzI5MzQ0OGZjNzQwMWQxZTE2Li5lODQxZGJhYjJiYWJkOWE0ODAyNGY5
YjBmNjkxYWVkNzdlYjAwYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTAt
MTggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgTGltaXQgdXNl
IG9mIGRpc3BsYXkgc2xlZXAgYXNzZXJ0aW9uIHdoZW4gPHZpZGVvPiBlbGVtZW50IGlzIG9mZi1z
Y3JlZW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjMwNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZWxsIHRoZSBwYWdlIHRvIHN1c3BlbmQgZGlzcGxheSBzbGVlcCBkaXNhYmxpbmcgd2hpbGUgcGFp
bnRpbmcgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKToKKwogMjAx
My0xMC0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNF
XSBbTWFjXSBFbmFibGUgTWVkaWFTb3VyY2Ugb24gdGhlIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBjOTAwZTlhNWUyYzY3ZDlkOTI5OTBkZjUwMTZiNzNkNDBkMGFkNzYyLi5iNTkwNzk4YzRh
M2U5ZDlhZjYyZDFlZDM5OWE1NjBmOWE0MjRiOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
OTQ3LDYgKzk0Nyw4IEBAIF9fWk43V2ViQ29yZTRQYWdlMjRmaW5kU3RyaW5nTWF0Y2hpbmdSYW5n
ZXNFUktOM1dURjZTdHJpbmdFamlQTlMxXzZWZWN0b3JJTlMxXzZSCiBfX1pON1dlYkNvcmU0UGFn
ZTI0cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMjRzY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRFdgogX19aTjdXZWJDb3JlNFBhZ2UyNXN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbnNFdgorX19aTjdXZWJDb3JlNFBhZ2UyN3Jlc3VtZURpc3BsYXlTbGVlcERpc2FibGlu
Z0V2CitfX1pON1dlYkNvcmU0UGFnZTI4c3VzcGVuZERpc3BsYXlTbGVlcERpc2FibGluZ0V2CiBf
X1pON1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZUVpCiBfX1pO
N1dlYkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheUVkCiBfX1pON1dl
YkNvcmU0UGFnZTMybWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYjAyY2I0ZTMwOWUzNTA0MGI2NjIzYzUwM2E3YTZhMDBjYWVlYTVk
Yi4uMmIyODI3Y2NhZmQ1NjkxNTM3ZDJlNTczMjAxZjU5M2M5NGYwMWU4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00MDAyLDYgKzQwMDIsMzAgQEAgdm9pZCBEb2N1bWVudDo6dW5yZWdp
c3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3MoRWxlbWVudCogZSkKICAgICBtX2Rv
Y3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOwogfQogCit2b2lkIERv
Y3VtZW50OjpyZWdpc3RlckZvckRpc3BsYXlTbGVlcERpc2FibGluZ0NhbGxiYWNrcyhFbGVtZW50
KiBlKQoreworICAgIG1fZGlzcGxheVNsZWVwRGlzYWJsaW5nQ2FsbGJhY2tFbGVtZW50cy5hZGQo
ZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JEaXNwbGF5U2xlZXBEaXNhYmxp
bmdDYWxsYmFja3MoRWxlbWVudCogZSkKK3sKKyAgICBtX2Rpc3BsYXlTbGVlcERpc2FibGluZ0Nh
bGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOworfQorCit2b2lkIERvY3VtZW50OjpzdXNwZW5kRGlz
cGxheVNsZWVwRGlzYWJsaW5nKCkKK3sKKyAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3Ig
ZW5kID0gbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdDYWxsYmFja0VsZW1lbnRzLmVuZCgpOworICAg
IGZvciAoYXV0byBpID0gbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdDYWxsYmFja0VsZW1lbnRzLmJl
Z2luKCk7IGkgIT0gZW5kOyArK2kpCisgICAgICAgICgqaSktPnN1c3BlbmREaXNwbGF5U2xlZXBE
aXNhYmxpbmcoKTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVzdW1lRGlzcGxheVNsZWVwRGlzYWJs
aW5nKCkKK3sKKyAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0gbV9kaXNwbGF5
U2xlZXBEaXNhYmxpbmdDYWxsYmFja0VsZW1lbnRzLmVuZCgpOworICAgIGZvciAoYXV0byBpID0g
bV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdDYWxsYmFja0VsZW1lbnRzLmJlZ2luKCk7IGkgIT0gZW5k
OyArK2kpCisgICAgICAgICgqaSktPnJlc3VtZURpc3BsYXlTbGVlcERpc2FibGluZygpOworfQor
CiB2b2lkIERvY3VtZW50OjptZWRpYVZvbHVtZURpZENoYW5nZSgpIAogewogICAgIEhhc2hTZXQ8
RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX21lZGlhVm9sdW1lQ2FsbGJhY2tFbGVtZW50cy5l
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNWQ0NzE2NTRmNzU0YjcwYzNhMjE0MjkwZTJj
NWIzYjUzYTYzMjM0ZS4uODc2ZDkxYjJiY2ViZWM1ODI2MjFmMGU0NmJiMTRiMzZkZTc0YjQ0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTk0OCw2ICs5NDgsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgcmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKEVsZW1lbnQqKTsKICAg
ICB2b2lkIHVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKEVsZW1lbnQq
KTsKIAorICAgIHZvaWQgcmVnaXN0ZXJGb3JEaXNwbGF5U2xlZXBEaXNhYmxpbmdDYWxsYmFja3Mo
RWxlbWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlckZvckRpc3BsYXlTbGVlcERpc2FibGluZ0Nh
bGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCBzdXNwZW5kRGlzcGxheVNsZWVwRGlzYWJsaW5n
KCk7CisgICAgdm9pZCByZXN1bWVEaXNwbGF5U2xlZXBEaXNhYmxpbmcoKTsKKwogICAgIHZvaWQg
ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICB2b2lkIGRvY3VtZW50V2lsbFN1c3Bl
bmRGb3JQYWdlQ2FjaGUoKTsKICAgICB2b2lkIGRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNo
ZSgpOwpAQCAtMTQzOCw2ICsxNDQzLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkRWxl
bWVudHM7CiAjZW5kaWYKKyAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX2Rpc3BsYXlTbGVlcERpc2Fi
bGluZ0NhbGxiYWNrRWxlbWVudHM7CiAKICAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBFbGVtZW50
KiwgQ2FzZUZvbGRpbmdIYXNoPiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXk7CiAgICAgYm9vbCBtX2Fj
Y2Vzc0tleU1hcFZhbGlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZTQ1Y2IwNDIzYjQ0NDVkOGVl
YjE0NmNjZWMxNGMwZGI1YTQ0YmQyMS4uYjU4NjliNmEzOWVkM2VhODJlMDkzYTFmNmU1MjE2OThk
YTZmMjJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MTgsNiArNDE4LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAKKyAgICAv
LyBVc2UgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yRGlzcGxheVNsZWVwRGlzYWJsaW5nQ2FsbGJhY2tz
KCkgdG8gc3Vic2NyaWJlIHRvIHRoaXMuCisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmREaXNwbGF5
U2xlZXBEaXNhYmxpbmcoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lRGlzcGxheVNsZWVw
RGlzYWJsaW5nKCkgeyB9CisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2
b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMDU3Mzc3YTI1N2JmZDFiYzg5ODdlZjZm
MzMwNzcxMDVjNTRhNTdjNy4uMzc3YWUyZTM1YmEzZmNmZThmYTc4YTA5OTI2MjZkMTc0OTRhZDk3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTcsNiAr
MzE3LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fY29tcGxldGVseUxvYWRl
ZChmYWxzZSkKICAgICAsIG1faGF2ZVByZXBhcmVkVG9QbGF5KGZhbHNlKQogICAgICwgbV9wYXJz
aW5nSW5Qcm9ncmVzcyhjcmVhdGVkQnlQYXJzZXIpCisgICAgLCBtX2Rpc3BsYXlTbGVlcERpc2Fi
bGluZ1N1c3BlbmRlZChmYWxzZSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3Ry
YWNrc0FyZVJlYWR5KHRydWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4dFRyYWNrKGZhbHNlKQpA
QCAtMzQxLDYgKzM0Miw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKICAgICBkb2N1bWVu
dC5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50LnJl
Z2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAg
IGRvY3VtZW50LnJlZ2lzdGVyRm9yRGlzcGxheVNsZWVwRGlzYWJsaW5nQ2FsbGJhY2tzKHRoaXMp
OwogCiAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkgJiYgZG9jdW1lbnQuc2V0dGluZ3MoKS0+
bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkgewogICAgICAgICBhZGRCZWhhdmlv
clJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7
CkBAIC0zNTQsNiArMzU2LDkgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICBpZiAoZG9j
dW1lbnQucGFnZSgpKQogICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IGRvY3VtZW50LnBh
Z2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkRpc3BsYXlNb2RlKCk7
CiAjZW5kaWYKKworICAgIGlmIChkb2N1bWVudC5wYWdlKCkpCisgICAgICAgIG1fZGlzcGxheVNs
ZWVwRGlzYWJsaW5nU3VzcGVuZGVkID0gZG9jdW1lbnQucGFnZSgpLT5pc0Rpc3BsYXlTbGVlcERp
c2FibGluZ1N1c3BlbmRlZCgpOwogfQogCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxl
bWVudCgpCkBAIC0zNjcsNiArMzcyLDggQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVs
ZW1lbnQoKQogICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICBkb2N1bWVu
dCgpLnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKICAgICBkb2N1bWVu
dCgpLnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhp
cyk7CisgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyRm9yRGlzcGxheVNsZWVwRGlzYWJsaW5nQ2Fs
bGJhY2tzKHRoaXMpOworCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGRvY3VtZW50KCku
dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAg
ICAgaWYgKG1fYXVkaW9UcmFja3MpIHsKQEAgLTQyNjgsNiArNDI3NSwyMCBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKICAgICB1cGRhdGVWb2x1bWUoKTsK
IH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kRGlzcGxheVNsZWVwRGlzYWJsaW5n
KCkKK3sKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kRGlzcGxheVNs
ZWVwRGlzYWJsaW5nIik7CisgICAgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQgPSB0
cnVlOworICAgIHVwZGF0ZURpc2FibGVTbGVlcCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnJlc3VtZURpc3BsYXlTbGVlcERpc2FibGluZygpCit7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6cmVzdW1lRGlzcGxheVNsZWVwRGlzYWJsaW5nIik7CisgICAgbV9kaXNw
bGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICB1cGRhdGVEaXNhYmxlU2xl
ZXAoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKIHsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTUw
MzYsNyArNTA1Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlRGlzYWJsZVNsZWVw
KCkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3BsYXllciAmJiAhbV9wbGF5ZXItPnBhdXNlZCgpICYmIGhhc1ZpZGVv
KCkgJiYgaGFzQXVkaW8oKSAmJiAhbG9vcCgpOworICAgIHJldHVybiAhbV9kaXNwbGF5U2xlZXBE
aXNhYmxpbmdTdXNwZW5kZWQgJiYgbV9wbGF5ZXIgJiYgIW1fcGxheWVyLT5wYXVzZWQoKSAmJiBo
YXNWaWRlbygpICYmIGhhc0F1ZGlvKCkgJiYgIWxvb3AoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDk3OWQyNTlkOGE4MTY2ZTAyNDE2NTg1
OTBhMDBjZjJkYjFlNzBiN2YuLmFlMWUxMGFlZTFmOTk0YmQ2NjE1MDM1ZWMwNzc0NDllMmVlNzFj
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NTgsNiArNDU4
LDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFWb2x1bWVEaWRDaGFu
Z2UoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kRGlzcGxheVNsZWVwRGlz
YWJsaW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZURpc3BsYXlTbGVlcERp
c2FibGluZygpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0
ZSgpIHsgfQogICAgIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSk7CkBAIC03MzAsNiArNzMzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29tcGxldGVs
eUxvYWRlZCA6IDE7CiAgICAgYm9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7CiAgICAgYm9v
bCBtX3BhcnNpbmdJblByb2dyZXNzIDogMTsKKyAgICBib29sIG1fZGlzcGxheVNsZWVwRGlzYWJs
aW5nU3VzcGVuZGVkIDogMTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIG1f
dHJhY2tzQXJlUmVhZHkgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMDNkZWNiNDY2YmFjZGI4
MGE3MDUzNDg1NGM0ODI3NGIxZGZjY2MxZi4uZGM4NzhhMjIwZjQ2MmQ0NzczZjU3YzRjOGJhYTA1
MTkzOWZlNzQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xODksNiArMTg5LDcgQEAgUGFnZTo6
UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2NvbnNvbGUoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlQ29uc29sZT4oKnRoaXMpKQogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRp
b25DYW5kaWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMg
Zm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0Jl
Zm9yZVVubG9hZEV2ZW50KDApCisgICAgLCBtX2Rpc3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRl
ZCgwKQogewogICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAKQEAgLTg2NSw2ICs4NjYsNyBA
QCB2b2lkIFBhZ2U6OmRpZE1vdmVPbnNjcmVlbigpCiAgICAgfQogICAgIAogICAgIHJlc3VtZVNj
cmlwdGVkQW5pbWF0aW9ucygpOworICAgIHJlc3VtZURpc3BsYXlTbGVlcERpc2FibGluZygpOwog
fQogCiB2b2lkIFBhZ2U6OndpbGxNb3ZlT2Zmc2NyZWVuKCkKQEAgLTg3Nyw2ICs4NzksNyBAQCB2
b2lkIFBhZ2U6OndpbGxNb3ZlT2Zmc2NyZWVuKCkKICAgICB9CiAgICAgCiAgICAgc3VzcGVuZFNj
cmlwdGVkQW5pbWF0aW9ucygpOworICAgIHN1c3BlbmREaXNwbGF5U2xlZXBEaXNhYmxpbmcoKTsK
IH0KIAogdm9pZCBQYWdlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKQEAgLTkxOCw2
ICs5MjEsMjQgQEAgdm9pZCBQYWdlOjpzZXRUaHJvdHRsZWQoYm9vbCB0aHJvdHRsZWQpCiAgICAg
bV9wYWdlVGhyb3R0bGVyLT5zZXRUaHJvdHRsZWQodGhyb3R0bGVkKTsKIH0KIAordm9pZCBQYWdl
OjpzdXNwZW5kRGlzcGxheVNsZWVwRGlzYWJsaW5nKCkKK3sKKyAgICBtX2Rpc3BsYXlTbGVlcERp
c2FibGluZ1N1c3BlbmRlZCA9IHRydWU7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPnN1c3BlbmREaXNwbGF5U2xlZXBEaXNhYmxpbmcoKTsKKyAgICB9Cit9CisKK3ZvaWQgUGFn
ZTo6cmVzdW1lRGlzcGxheVNsZWVwRGlzYWJsaW5nKCkKK3sKKyAgICBtX2Rpc3BsYXlTbGVlcERp
c2FibGluZ1N1c3BlbmRlZCA9IGZhbHNlOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Cisg
ICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5yZXN1bWVEaXNwbGF5U2xlZXBEaXNhYmxpbmcoKTsKKyAgICB9Cit9CisKIHZvaWQgUGFn
ZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBFdmVu
dHVhbGx5IHdlIHdpbGwgbW92ZSB0byBhIG1vZGVsIG9mIGp1c3QgYmVpbmcgaGFuZGVkIHRoZSBz
aGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCA1MTFiNmNlZDBhYTc4NTIyYTBlYTU0NzQyYzcxNTQyZDdm
OWM1MDk5Li43Yjg5Yzk1ZmRiZDVhMmQwOGY1MjE1OWY3M2FiYmJlMDJiZmQ4ZjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtMzA1LDYgKzMwNSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3JpcHRlZEFu
aW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1
c3BlbmRlZDsgfQogICAgIHZvaWQgc2V0VGhyb3R0bGVkKGJvb2wpOwogCisgICAgYm9vbCBpc0Rp
c3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheVNs
ZWVwRGlzYWJsaW5nU3VzcGVuZGVkOyB9CisgICAgdm9pZCBzdXNwZW5kRGlzcGxheVNsZWVwRGlz
YWJsaW5nKCk7CisgICAgdm9pZCByZXN1bWVEaXNwbGF5U2xlZXBEaXNhYmxpbmcoKTsKKwogICAg
IHZvaWQgdXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKTsKICAgICBjb25zdCBTdHJpbmcm
IHVzZXJTdHlsZVNoZWV0KCkgY29uc3Q7CiAKQEAgLTU0OCw2ICs1NTIsOCBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVzQ291bnQ7CiAg
ICAgdW5zaWduZWQgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9hZEV2ZW50OworCisgICAgYm9v
bCBtX2Rpc3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZDsKIH07CiAKIGlubGluZSBQYWdlR3Jv
dXAmIFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBk
ZmI2OTdlZTQ3M2JmNTg1ZTMwNzQ0YzA2MzNkMzUxODNmZDZlMjI5Li40YmM3NTc1M2EyNmZkNmNk
OTgzMDE1YzZiMGZhMzI4YTVhYjk3ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0zNzk3LDYgKzM3OTcsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5n
UHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogCiAgICAg
aWYgKF9wcml2YXRlICYmIF9wcml2YXRlLT5wYWdlKSB7CiAgICAgICAgIF9wcml2YXRlLT5wYWdl
LT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnMoKTsKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnJl
c3VtZURpc3BsYXlTbGVlcERpc2FibGluZygpOwogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuc2V0Q29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZSh0cnVlKTsKICAgICB9
CiB9CkBAIC0zODEwLDYgKzM4MTEsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5n
UHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogewogICAg
IGlmIChfcHJpdmF0ZSAmJiBfcHJpdmF0ZS0+cGFnZSkgewogICAgICAgICBfcHJpdmF0ZS0+cGFn
ZS0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpOworICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+
c3VzcGVuZERpc3BsYXlTbGVlcERpc2FibGluZygpOwogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuc2V0Q29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZShmYWxzZSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXgg
MDljZGJlYWNiMjU1ZTI5NWZiNjc0MDc4ZTU0MjYzZDU3NjEwMWEwOS4uNTA2ZTQzMmRhOGQ3Y2Qz
OGU0N2FhZDliNGY4ZjQ2ZDUxNjI5MTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCkBAIC0zOTAsNiArMzkwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkKICAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJE
aWRQYXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0Om1fcm9vdExheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOwog
CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7
CisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zdXNwZW5kRGlzcGxheVNsZWVwRGlzYWJsaW5n
KCk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50
aW5nKCkKQEAgLTQwNyw2ICs0MDgsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpyZXN1bWVQYWludGluZygpCiAgICAgaWYgKG1fd2ViUGFnZS0+d2luZG93SXNWaXNpYmxl
KCkpIHsKICAgICAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5yZXN1bWVTY3JpcHRlZEFuaW1h
dGlvbnMoKTsKICAgICAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5yZXN1bWVBbmltYXRpbmdJ
bWFnZXMoKTsKKyAgICAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5yZXN1bWVEaXNwbGF5U2xl
ZXBEaXNhYmxpbmcoKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214618</attachid>
            <date>2013-10-18 16:54:01 -0700</date>
            <delta_ts>2013-10-18 17:50:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123041-20131018165400.patch</filename>
            <type>text/plain</type>
            <size>9064</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU2ZjZjNDViZTA2NmJk
YWNiMTUwZmNmOGVkZWM0N2M2ZDYyNTlkYS4uNmMzM2U0ODk3ZmZmZGEwNTAxNDBiZTNhYzVmMWFj
MTRlYWQ2NTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIExpbWl0IHVzZSBvZiBkaXNw
bGF5IHNsZWVwIGFzc2VydGlvbiB3aGVuIDx2aWRlbz4gZWxlbWVudCBpcyBvZmYtc2NyZWVuLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMDQxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHBhZ2Ug
dmlzaWJpbGl0eSBjaGFuZ2VzIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgdXNlIG9mIHNsZWVw
IGFzc2VydGlvbnMgaW4KKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudC4KKworICAgICAgICBQYWdl
IHdpbGwgcHJvcG9nYXRlIHRoZSBwYWdlIHZpc2liaWxpdHkgY2hhbmdlIG5vdGlmaWNhdGlvbnMg
dG8gaXRzIERvY3VtZW50cywgd2hpY2gKKyAgICAgICAgd2lsbCBmdXJ0aGVyIHByb3BvZ2F0ZSB0
aG9zZSBub3RpZmljYXRpb25zIHRvIHJlZ2lzdGVyZWQgZWxlbWVudHMuICBVcG9uIHJlY2Vpdmlu
ZworICAgICAgICB0aGVzZSBub3RpZmljYXRpb25zLCBIVE1MTWVkaWFFbGVtZW50IHdpbGwgcmVs
ZWFzZSBvciB0YWtlIGEgRGlzcGxheVNsZWVwRGlzYWJsZXIKKyAgICAgICAgdG9rZW4gaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZWdpc3RlckZvclBhZ2VWaXNpYmlsaXR5U3RhdGVDYWxsYmFja3MpOiBBZGRl
ZCByZWdpc3RyYXRpb24gbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVn
aXN0ZXJGb3JQYWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tzKTogQWRkZWQgdW5yZWdpc3RyYXRp
b24gbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VWaXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKTogQ2FsbCBhbGwgcmVnaXN0ZXJlZCBjbGllbnRzLgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6IEFkZGVkIGRlZmF1bHQgdmlydHVh
bCBtZXRob2QgdG8gYmUgb3ZlcnJpZGRlbgorICAgICAgICAgICAgYnkgc3ViY2xhc3Nlcy4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IFJlZ2lzdGVyIGZvciB0aGUgbm90aWZp
Y2F0aW9uLCBhbmQgY2hlY2sgdGhlCisgICAgICAgICAgICBjdXJyZW50IHN0YXR1cyBvZiBEb2N1
bWVudDo6aGlkZGVuKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IFVucmVnaXN0ZXIgZm9yIHRoZSBub3RpZmljYXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6
IFNldCBtX2Rpc3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZAorICAgICAgICAgICAgYW5kIGNh
bGwgdXBkYXRlRGlzYWJsZVNsZWVwKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzaG91bGREaXNhYmxlU2xlZXApOiBBZGQgYSBjaGVjayBmb3IgbV9kaXNwbGF5U2xlZXBE
aXNhYmxpbmdTdXNwZW5kZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpc2li
aWxpdHlTdGF0ZSk6IFBhc3MgdG8gZXZlcnkgY2hpbGQgZG9jdW1lbnQuCisKIDIwMTMtMTAtMDcg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhXSBSZWZh
Y3RvciBzdXBwb3J0c1R5cGUoKSBmYWN0b3J5IG1ldGhvZCB0byB0YWtlIGEgcGFyYW1ldGVycyBv
YmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiMDJjYjRlMzA5ZTM1MDQwYjY2MjNj
NTAzYTdhNmEwMGNhZWVhNWRiLi4yM2Q3NTIwNzg5MmVmNzViM2JkMGRjMDI0OGQ1YzFjNzBiNGE1
OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MjcsNiArMTUyNywyNCBAQCB2b2lk
IERvY3VtZW50OjpyZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpCiB9CiAKICNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKK3ZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yUGFn
ZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrcyhFbGVtZW50KiBlKQoreworICAgIG1fcGFnZVZpc2li
aWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMuYWRkKGUpOworfQorCit2b2lkIERvY3VtZW50Ojp1
bnJlZ2lzdGVyRm9yUGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrcyhFbGVtZW50KiBlKQorewor
ICAgIG1fcGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOworfQor
Cit2b2lkIERvY3VtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQg
PSBtX3BhZ2VWaXNpYmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRzLmVuZCgpOworICAgIGZvciAo
YXV0byBpID0gbV9wYWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5iZWdpbigpOyBp
ICE9IGVuZDsgKytpKQorICAgICAgICAoKmkpLT5wYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgp
OworfQorCiBQYWdlVmlzaWJpbGl0eVN0YXRlIERvY3VtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRl
KCkgY29uc3QKIHsKICAgICAvLyBUaGUgdmlzaWJpbGl0eSBvZiB0aGUgZG9jdW1lbnQgaXMgaW5o
ZXJpdGVkIGZyb20gdGhlIHZpc2liaWxpdHkgb2YgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDVkNDcxNjU0Zjc1NGI3MGMzYTIxNDI5MGUyYzViM2I1M2E2MzIzNGUuLjA4NTY5OTgyYWZlNWU0
ZDNkZjAzNTI5YzY2ZjhlZDcyMTljMDUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00MTcs
NiArNDE3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBPVkVS
UklERTsKIAogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHZvaWQgcGFnZVZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKICAgICBTdHJpbmcgdmlzaWJpbGl0eVN0YXRlKCkgY29u
c3Q7CiAgICAgYm9vbCBoaWRkZW4oKSBjb25zdDsKICNlbmRpZgpAQCAtOTY3LDYgKzk2OCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHZvaWQgcmVnaXN0ZXJGb3JQ
YWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJGb3JQYWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRD
cmVhdGVSZW5kZXJlcnMoKTsKIApAQCAtMTQzOSw2ICsxNDQ1LDEwIEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxFbGVtZW50Kj4gbV9jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkRWxlbWVudHM7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIEhhc2hTZXQ8RWxl
bWVudCo+IG1fcGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHM7CisjZW5kaWYKKwog
ICAgIEhhc2hNYXA8U3RyaW5nSW1wbCosIEVsZW1lbnQqLCBDYXNlRm9sZGluZ0hhc2g+IG1fZWxl
bWVudHNCeUFjY2Vzc0tleTsKICAgICBib29sIG1fYWNjZXNzS2V5TWFwVmFsaWQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IGU0NWNiMDQyM2I0NDQ1ZDhlZWIxNDZjY2VjMTRjMGRiNWE0NGJkMjEu
Ljc5NjExZmNmZjdmM2RiZjRhYzY3M2NmNzljYzViMTk3N2Y4N2NiMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNDE4LDYgKzQxOCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJl
Y29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQmVp
bmdGdWxsc2NyZWVuRWxlbWVudCgpIHsgfQogCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9B
UEkpCisgICAgLy8gVXNlIERvY3VtZW50OjpyZWdpc3RlckZvclBhZ2VWaXNpYmlsaXR5U3RhdGVD
YWxsYmFja3MoKSB0byBzdWJzY3JpYmUgdG8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKSB7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgeyB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDA1NzM3
N2EyNTdiZmQxYmM4OTg3ZWY2ZjMzMDc3MTA1YzU0YTU3YzcuLjY3OGRlZTgxYmI2YmZkMTllNGNh
NGMwNmYzNzZlNjVkNDI3YjRkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMzE3LDYgKzMxNyw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAg
LCBtX2NvbXBsZXRlbHlMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVQcmVwYXJlZFRvUGxheShm
YWxzZSkKICAgICAsIG1fcGFyc2luZ0luUHJvZ3Jlc3MoY3JlYXRlZEJ5UGFyc2VyKQorI2lmIEVO
QUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgICwgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdT
dXNwZW5kZWQoZG9jdW1lbnQuaGlkZGVuKCkpCisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRydWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4
dFRyYWNrKGZhbHNlKQpAQCAtMzQxLDYgKzM0NCw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
CiAKICAgICBkb2N1bWVudC5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwog
ICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJh
Y2tzKHRoaXMpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGRvY3VtZW50
LnJlZ2lzdGVyRm9yUGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrcyh0aGlzKTsKKyNlbmRpZgog
CiAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkgJiYgZG9jdW1lbnQuc2V0dGluZ3MoKS0+bWVk
aWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkgewogICAgICAgICBhZGRCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CkBA
IC0zNjcsNiArMzczLDEwIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkK
ICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgZG9jdW1lbnQoKS51bnJl
Z2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS51bnJl
Z2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworI2lm
IEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGRvY3VtZW50KCkudW5yZWdpc3RlckZv
clBhZ2VWaXNpYmlsaXR5U3RhdGVDYWxsYmFja3ModGhpcyk7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogICAgIGlmIChtX2F1ZGlvVHJhY2tzKSB7CkBA
IC00MjY4LDYgKzQyNzgsMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVZvbHVtZURp
ZENoYW5nZSgpCiAgICAgdXBkYXRlVm9sdW1lKCk7CiB9CiAKKyNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZVZpc2liaWxpdHlTdGF0ZUNo
YW5nZWQoKQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhZ2VWaXNpYmls
aXR5U3RhdGVDaGFuZ2VkIik7CisgICAgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQg
PSBkb2N1bWVudCgpLmhpZGRlbigpOworICAgIHVwZGF0ZURpc2FibGVTbGVlcCgpOworfQorI2Vu
ZGlmCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiB7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC01MDM2LDcg
KzUwNTUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVEaXNhYmxlU2xlZXAoKQog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcGxheWVyICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlkZW8oKSAm
JiBoYXNBdWRpbygpICYmICFsb29wKCk7CisgICAgcmV0dXJuCisjaWYgRU5BQkxFKFBBR0VfVklT
SUJJTElUWV9BUEkpCisgICAgICAgICFtX2Rpc3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZCAm
JgorI2VuZGlmCisgICAgICAgIG1fcGxheWVyICYmICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFz
VmlkZW8oKSAmJiBoYXNBdWRpbygpICYmICFsb29wKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5NzlkMjU5ZDhhODE2NmUwMjQxNjU4NTkw
YTAwY2YyZGIxZTcwYjdmLi42OTliNGYwZTRjNWQ3NDEyMDM5MDA5MDgyOWYyYTJhODdlNjRjNGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDU4LDYgKzQ1OCwx
MCBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVZvbHVtZURpZENoYW5n
ZSgpIE9WRVJSSURFOwogCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgdmly
dHVhbCB2b2lkIHBhZ2VWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREU7CisjZW5kaWYK
KwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSB7IH0KICAgICAKICAgICB2
b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOwpAQCAtNzMwLDYgKzcz
NCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbXBsZXRlbHlMb2FkZWQgOiAxOwogICAgIGJv
b2wgbV9oYXZlUHJlcGFyZWRUb1BsYXkgOiAxOwogICAgIGJvb2wgbV9wYXJzaW5nSW5Qcm9ncmVz
cyA6IDE7CisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgYm9vbCBtX2Rpc3Bs
YXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZCA6IDE7CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICBib29sIG1fdHJhY2tzQXJlUmVhZHkgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggMDNkZWNiNDY2YmFjZGI4MGE3MDUzNDg1NGM0ODI3NGIxZGZjY2MxZi4uZGEyMjg2MzYw
MDJjMDRlZjU1MTVkZDQ3OGE0YWQ5MzQ2MjAyZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
MjQ0LDcgKzEyNDQsNyBAQCB2b2lkIFBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJp
bGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYQogICAgICAgICAgICAgZG9j
dW1lbnRzLmFwcGVuZCgqZnJhbWUtPmRvY3VtZW50KCkpOwogCiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBzaXplID0gZG9jdW1lbnRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
ICAgIGRvY3VtZW50c1tpXS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICAgICAgZG9j
dW1lbnRzW2ldLT5wYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KICNlbmRpZgog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214624</attachid>
            <date>2013-10-18 17:50:46 -0700</date>
            <delta_ts>2013-10-21 13:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123041-20131018175045.patch</filename>
            <type>text/plain</type>
            <size>9091</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU2ZjZjNDViZTA2NmJk
YWNiMTUwZmNmOGVkZWM0N2M2ZDYyNTlkYS4uNmMzM2U0ODk3ZmZmZGEwNTAxNDBiZTNhYzVmMWFj
MTRlYWQ2NTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIExpbWl0IHVzZSBvZiBkaXNw
bGF5IHNsZWVwIGFzc2VydGlvbiB3aGVuIDx2aWRlbz4gZWxlbWVudCBpcyBvZmYtc2NyZWVuLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMDQxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHBhZ2Ug
dmlzaWJpbGl0eSBjaGFuZ2VzIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgdXNlIG9mIHNsZWVw
IGFzc2VydGlvbnMgaW4KKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudC4KKworICAgICAgICBQYWdl
IHdpbGwgcHJvcG9nYXRlIHRoZSBwYWdlIHZpc2liaWxpdHkgY2hhbmdlIG5vdGlmaWNhdGlvbnMg
dG8gaXRzIERvY3VtZW50cywgd2hpY2gKKyAgICAgICAgd2lsbCBmdXJ0aGVyIHByb3BvZ2F0ZSB0
aG9zZSBub3RpZmljYXRpb25zIHRvIHJlZ2lzdGVyZWQgZWxlbWVudHMuICBVcG9uIHJlY2Vpdmlu
ZworICAgICAgICB0aGVzZSBub3RpZmljYXRpb25zLCBIVE1MTWVkaWFFbGVtZW50IHdpbGwgcmVs
ZWFzZSBvciB0YWtlIGEgRGlzcGxheVNsZWVwRGlzYWJsZXIKKyAgICAgICAgdG9rZW4gaWYgbmVj
ZXNzYXJ5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZWdpc3RlckZvclBhZ2VWaXNpYmlsaXR5U3RhdGVDYWxsYmFja3MpOiBBZGRl
ZCByZWdpc3RyYXRpb24gbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVn
aXN0ZXJGb3JQYWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tzKTogQWRkZWQgdW5yZWdpc3RyYXRp
b24gbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VWaXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKTogQ2FsbCBhbGwgcmVnaXN0ZXJlZCBjbGllbnRzLgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6IEFkZGVkIGRlZmF1bHQgdmlydHVh
bCBtZXRob2QgdG8gYmUgb3ZlcnJpZGRlbgorICAgICAgICAgICAgYnkgc3ViY2xhc3Nlcy4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IFJlZ2lzdGVyIGZvciB0aGUgbm90aWZp
Y2F0aW9uLCBhbmQgY2hlY2sgdGhlCisgICAgICAgICAgICBjdXJyZW50IHN0YXR1cyBvZiBEb2N1
bWVudDo6aGlkZGVuKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRN
TE1lZGlhRWxlbWVudCk6IFVucmVnaXN0ZXIgZm9yIHRoZSBub3RpZmljYXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6
IFNldCBtX2Rpc3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZAorICAgICAgICAgICAgYW5kIGNh
bGwgdXBkYXRlRGlzYWJsZVNsZWVwKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzaG91bGREaXNhYmxlU2xlZXApOiBBZGQgYSBjaGVjayBmb3IgbV9kaXNwbGF5U2xlZXBE
aXNhYmxpbmdTdXNwZW5kZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpc2li
aWxpdHlTdGF0ZSk6IFBhc3MgdG8gZXZlcnkgY2hpbGQgZG9jdW1lbnQuCisKIDIwMTMtMTAtMDcg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhXSBSZWZh
Y3RvciBzdXBwb3J0c1R5cGUoKSBmYWN0b3J5IG1ldGhvZCB0byB0YWtlIGEgcGFyYW1ldGVycyBv
YmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiMDJjYjRlMzA5ZTM1MDQwYjY2MjNj
NTAzYTdhNmEwMGNhZWVhNWRiLi4yM2Q3NTIwNzg5MmVmNzViM2JkMGRjMDI0OGQ1YzFjNzBiNGE1
OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MjcsNiArMTUyNywyNCBAQCB2b2lk
IERvY3VtZW50OjpyZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpCiB9CiAKICNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKK3ZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yUGFn
ZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrcyhFbGVtZW50KiBlKQoreworICAgIG1fcGFnZVZpc2li
aWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMuYWRkKGUpOworfQorCit2b2lkIERvY3VtZW50Ojp1
bnJlZ2lzdGVyRm9yUGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrcyhFbGVtZW50KiBlKQorewor
ICAgIG1fcGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOworfQor
Cit2b2lkIERvY3VtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQg
PSBtX3BhZ2VWaXNpYmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRzLmVuZCgpOworICAgIGZvciAo
YXV0byBpID0gbV9wYWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5iZWdpbigpOyBp
ICE9IGVuZDsgKytpKQorICAgICAgICAoKmkpLT5wYWdlVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgp
OworfQorCiBQYWdlVmlzaWJpbGl0eVN0YXRlIERvY3VtZW50OjpwYWdlVmlzaWJpbGl0eVN0YXRl
KCkgY29uc3QKIHsKICAgICAvLyBUaGUgdmlzaWJpbGl0eSBvZiB0aGUgZG9jdW1lbnQgaXMgaW5o
ZXJpdGVkIGZyb20gdGhlIHZpc2liaWxpdHkgb2YgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDVkNDcxNjU0Zjc1NGI3MGMzYTIxNDI5MGUyYzViM2I1M2E2MzIzNGUuLjA4NTY5OTgyYWZlNWU0
ZDNkZjAzNTI5YzY2ZjhlZDcyMTljMDUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00MTcs
NiArNDE3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBPVkVS
UklERTsKIAogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHZvaWQgcGFnZVZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKICAgICBTdHJpbmcgdmlzaWJpbGl0eVN0YXRlKCkgY29u
c3Q7CiAgICAgYm9vbCBoaWRkZW4oKSBjb25zdDsKICNlbmRpZgpAQCAtOTY3LDYgKzk2OCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHZvaWQgcmVnaXN0ZXJGb3JQ
YWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJGb3JQYWdlVmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRD
cmVhdGVSZW5kZXJlcnMoKTsKIApAQCAtMTQzOSw2ICsxNDQ1LDEwIEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxFbGVtZW50Kj4gbV9jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkRWxlbWVudHM7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIEhhc2hTZXQ8RWxl
bWVudCo+IG1fcGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHM7CisjZW5kaWYKKwog
ICAgIEhhc2hNYXA8U3RyaW5nSW1wbCosIEVsZW1lbnQqLCBDYXNlRm9sZGluZ0hhc2g+IG1fZWxl
bWVudHNCeUFjY2Vzc0tleTsKICAgICBib29sIG1fYWNjZXNzS2V5TWFwVmFsaWQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IGU0NWNiMDQyM2I0NDQ1ZDhlZWIxNDZjY2VjMTRjMGRiNWE0NGJkMjEu
Ljc5NjExZmNmZjdmM2RiZjRhYzY3M2NmNzljYzViMTk3N2Y4N2NiMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNDE4LDYgKzQxOCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJl
Y29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQmVp
bmdGdWxsc2NyZWVuRWxlbWVudCgpIHsgfQogCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9B
UEkpCisgICAgLy8gVXNlIERvY3VtZW50OjpyZWdpc3RlckZvclBhZ2VWaXNpYmlsaXR5U3RhdGVD
YWxsYmFja3MoKSB0byBzdWJzY3JpYmUgdG8gdGhpcy4KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKSB7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkgeyB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDA1NzM3
N2EyNTdiZmQxYmM4OTg3ZWY2ZjMzMDc3MTA1YzU0YTU3YzcuLjAwOGFiY2EzMWJhMjg1Y2YyZWEx
MDdiYzc4ZGJkMTlmZjUwYTRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMzE3LDYgKzMxNyw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAg
LCBtX2NvbXBsZXRlbHlMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVQcmVwYXJlZFRvUGxheShm
YWxzZSkKICAgICAsIG1fcGFyc2luZ0luUHJvZ3Jlc3MoY3JlYXRlZEJ5UGFyc2VyKQorI2lmIEVO
QUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgICwgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdT
dXNwZW5kZWQoZG9jdW1lbnQuaGlkZGVuKCkpCisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRydWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4
dFRyYWNrKGZhbHNlKQpAQCAtMzQxLDYgKzM0NCw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
CiAKICAgICBkb2N1bWVudC5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwog
ICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJh
Y2tzKHRoaXMpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGRvY3VtZW50
LnJlZ2lzdGVyRm9yUGFnZVZpc2liaWxpdHlTdGF0ZUNhbGxiYWNrcyh0aGlzKTsKKyNlbmRpZgog
CiAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkgJiYgZG9jdW1lbnQuc2V0dGluZ3MoKS0+bWVk
aWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkgewogICAgICAgICBhZGRCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CkBA
IC0zNjcsNiArMzczLDEwIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkK
ICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgZG9jdW1lbnQoKS51bnJl
Z2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS51bnJl
Z2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworI2lm
IEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGRvY3VtZW50KCkudW5yZWdpc3RlckZv
clBhZ2VWaXNpYmlsaXR5U3RhdGVDYWxsYmFja3ModGhpcyk7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogICAgIGlmIChtX2F1ZGlvVHJhY2tzKSB7CkBA
IC00MjY4LDYgKzQyNzgsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVZvbHVtZURp
ZENoYW5nZSgpCiAgICAgdXBkYXRlVm9sdW1lKCk7CiB9CiAKKyNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZVZpc2liaWxpdHlTdGF0ZUNo
YW5nZWQoKQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhZ2VWaXNpYmls
aXR5U3RhdGVDaGFuZ2VkIik7CisgICAgbV9kaXNwbGF5U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQg
PSBkb2N1bWVudCgpLmhpZGRlbigpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB1cGRhdGVEaXNh
YmxlU2xlZXAoKTsKKyNlbmRpZgorfQorI2VuZGlmCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pCkBAIC01MDM2LDcgKzUwNTcsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVEaXNhYmxlU2xlZXAoKQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3Vs
ZERpc2FibGVTbGVlcCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGxheWVyICYmICFtX3BsYXll
ci0+cGF1c2VkKCkgJiYgaGFzVmlkZW8oKSAmJiBoYXNBdWRpbygpICYmICFsb29wKCk7CisgICAg
cmV0dXJuCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgICAgICFtX2Rpc3Bs
YXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZCAmJgorI2VuZGlmCisgICAgICAgIG1fcGxheWVyICYm
ICFtX3BsYXllci0+cGF1c2VkKCkgJiYgaGFzVmlkZW8oKSAmJiBoYXNBdWRpbygpICYmICFsb29w
KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRl
eCA5NzlkMjU5ZDhhODE2NmUwMjQxNjU4NTkwYTAwY2YyZGIxZTcwYjdmLi42OTliNGYwZTRjNWQ3
NDEyMDM5MDA5MDgyOWYyYTJhODdlNjRjNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaApAQCAtNDU4LDYgKzQ1OCwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVZvbHVtZURpZENoYW5nZSgpIE9WRVJSSURFOwogCisjaWYgRU5BQkxFKFBB
R0VfVklTSUJJTElUWV9BUEkpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VWaXNpYmlsaXR5U3RhdGVD
aGFuZ2VkKCkgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNw
bGF5U3RhdGUoKSB7IH0KICAgICAKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUpOwpAQCAtNzMwLDYgKzczNCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Nv
bXBsZXRlbHlMb2FkZWQgOiAxOwogICAgIGJvb2wgbV9oYXZlUHJlcGFyZWRUb1BsYXkgOiAxOwog
ICAgIGJvb2wgbV9wYXJzaW5nSW5Qcm9ncmVzcyA6IDE7CisjaWYgRU5BQkxFKFBBR0VfVklTSUJJ
TElUWV9BUEkpCisgICAgYm9vbCBtX2Rpc3BsYXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZCA6IDE7
CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29sIG1fdHJhY2tzQXJl
UmVhZHkgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMDNkZWNiNDY2YmFjZGI4MGE3MDUzNDg1
NGM0ODI3NGIxZGZjY2MxZi4uZGEyMjg2MzYwMDJjMDRlZjU1MTVkZDQ3OGE0YWQ5MzQ2MjAyZGQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCB2b2lkIFBhZ2U6OnNl
dFZpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwgYm9v
bCBpc0luaXRpYQogICAgICAgICAgICAgZG9jdW1lbnRzLmFwcGVuZCgqZnJhbWUtPmRvY3VtZW50
KCkpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZG9jdW1lbnRzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIGRvY3VtZW50c1tpXS0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworICAgICAgICAgICAgZG9jdW1lbnRzW2ldLT5wYWdlVmlzaWJpbGl0eVN0YXRl
Q2hhbmdlZCgpOwogICAgIH0KICNlbmRpZgogCg==
</data>
<flag name="review"
          id="237190"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>