<?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>116893</bug_id>
          
          <creation_ts>2013-05-28 15:03:02 -0700</creation_ts>
          <short_desc>Add more accurate activity state tracking</short_desc>
          <delta_ts>2013-05-29 16:17:44 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rakuco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>894547</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 15:03:02 -0700</bug_when>
    <thetext>Add more accurate activity state tracking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894555</commentid>
    <comment_count>1</comment_count>
      <attachid>203098</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 15:10:00 -0700</bug_when>
    <thetext>Created attachment 203098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894560</commentid>
    <comment_count>2</comment_count>
      <attachid>203098</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-28 15:16:38 -0700</bug_when>
    <thetext>Comment on attachment 203098
Patch

Attachment 203098 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/740117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894561</commentid>
    <comment_count>3</comment_count>
      <attachid>203098</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-28 15:16:44 -0700</bug_when>
    <thetext>Comment on attachment 203098
Patch

Attachment 203098 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/700108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894564</commentid>
    <comment_count>4</comment_count>
      <attachid>203099</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 15:19:47 -0700</bug_when>
    <thetext>Created attachment 203099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894572</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 15:31:12 -0700</bug_when>
    <thetext>rdar://13920766</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894574</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 15:33:50 -0700</bug_when>
    <thetext>&lt;rdar://13785764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894576</commentid>
    <comment_count>7</comment_count>
      <attachid>203099</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-28 15:38:48 -0700</bug_when>
    <thetext>Comment on attachment 203099
Patch

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

Here are some high-level comments.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:350
&gt; +        m_pageThrottler.clear();

Please use = nullptr instead of .clear().

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2485
&gt; +PageThrottler* HTMLMediaElement::getThrottler()

We don’t use the get prefix for simple getters. I think this should be called throttler().

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2557
&gt; +        if (PageThrottler* throttler = throttlerIfPresent())

I think you can just access m_pageThrottler here.

&gt; Source/WebCore/page/Page.h:116
&gt; +    static PassRefPtr&lt;PageThrottler&gt; create(Page* page, ChromeClient* chromeClient)

This doesn’t have to take both a page and a chrome client. You can get to the chrome client from its page.

&gt; Source/WebCore/page/Page.h:143
&gt; +    static const unsigned kThrottleHysteresis = 2;

This should just go into the implementation file. We also don’t use the k prefix fro constants in WebKit.

&gt; Source/WebCore/page/Page.h:158
&gt; +    PageThrottler(Page*, ChromeClient*);
&gt; +    Page* m_page;
&gt; +    ChromeClient* m_chromeClient;
&gt; +
&gt; +    void throttleTheWorld();
&gt; +    void unthrottleTheWorld();
&gt; +
&gt; +    bool m_scriptedAnimationsSuspended;
&gt; +    unsigned m_activeThrottleBlockers;
&gt; +    PageThrottleState m_throttleState;
&gt; +    void startThrottleHysteresisTimer();
&gt; +    void stopThrottleHysteresisTimer();
&gt; +    void throttleHysteresisTimerFired(DeferrableOneShotTimer&lt;PageThrottler&gt;*);
&gt; +    DeferrableOneShotTimer&lt;PageThrottler&gt; m_throttleHysteresisTimer;

Don’t mix member variables and member function declarations, put the member functions first and then the member variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894592</commentid>
    <comment_count>8</comment_count>
      <attachid>203099</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-05-28 16:18:50 -0700</bug_when>
    <thetext>Comment on attachment 203099
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        exiting throttling state, and adds a hysteresis to we can

&quot;to we can&quot; -&gt; &quot;so we can&quot;

&gt; Source/WebCore/html/HTMLMediaElement.h:759
&gt; +    PageThrottler* getThrottler();

We don&apos;t use get in function names unless there&apos;s an out param. Can this be |const|?

&gt; Source/WebCore/html/HTMLMediaElement.h:760
&gt; +    PageThrottler* throttlerIfPresent();

existingPageThrottler()?

&gt; Source/WebCore/html/HTMLMediaElement.h:761
&gt; +    RefPtr&lt;PageThrottler&gt; m_pageThrottler;

Why do you need to store a reference to this? Why not just get it from Page when you need it?

&gt; Source/WebCore/page/ChromeClient.h:370
&gt; +    virtual void incrementActivePageCount() { }
&gt; +    virtual void decrementActivePageCount() { }

What does &quot;active&quot; mean?

&gt; Source/WebCore/page/Page.cpp:234
&gt; +    m_pageThrottler-&gt;clearPage();

Why not just m_pageThrottler = nullptr?

&gt; Source/WebCore/page/Page.h:114
&gt; +class PageThrottler : public RefCounted&lt;PageThrottler&gt; {

PageThrottler is such an awkward name.

It&apos;s not clear to me that you gain much by putting throttle-related logic into its own class, since it has the same lifetime as Page. You just add ambiguity about lifetimes and aliasing.

&gt; Source/WebCore/page/Page.h:122
&gt; +    void suspendScriptedAnimations() { m_scriptedAnimationsSuspended = true; }
&gt; +    void resumeScriptedAnimations() { m_scriptedAnimationsSuspended = false; }

suspendScriptedAnimations and resumeScriptedAnimations are function names that imply that they do work, but these don&apos;t, so the names are confusing. Maybe noteScriptedAnimationsSuspended() etc?

&gt; Source/WebCore/page/Page.h:129
&gt; +    void startUnthrottledEvent();

What does this mean?

I think it means &quot;preventThrottling&quot;.

&gt; Source/WebCore/page/Page.h:130
&gt; +    void reportInterestingEvent();

&quot;interesting&quot;?

&gt; Source/WebCore/page/Page.h:131
&gt; +    void stopUnthrottledEvent();

allowThrottling?

&gt; Source/WebCore/page/Page.h:150
&gt; +    void throttleTheWorld();
&gt; +    void unthrottleTheWorld();

Really, the world? All Pages? All Documents?

&gt; Source/WebCore/page/Page.h:582
&gt; +    RefPtr&lt;PageThrottler&gt; m_pageThrottler;

Is Page the correct scope for this throttling behavior? What happens on navigation? What about the Page Cache?

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:62
&gt; +static const double kSuspensionHysteresis = 2.0;

Is this a time value? The name should make it clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894606</commentid>
    <comment_count>9</comment_count>
      <attachid>203107</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 16:59:46 -0700</bug_when>
    <thetext>Created attachment 203107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894607</commentid>
    <comment_count>10</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2013-05-28 17:05:22 -0700</bug_when>
    <thetext>The content of attachment 203107 has been deleted by
    Lucas Forschler &lt;lforschler@apple.com&gt;
who provided the following reason:

invalid patch

The token used to delete this attachment was generated at 2013-05-28 17:05:10 PST.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894611</commentid>
    <comment_count>11</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-28 17:16:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 203099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203099&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        exiting throttling state, and adds a hysteresis to we can
&gt; 
&gt; &quot;to we can&quot; -&gt; &quot;so we can&quot;
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:759
&gt; &gt; +    PageThrottler* getThrottler();
&gt; 
&gt; We don&apos;t use get in function names unless there&apos;s an out param. Can this be |const|?
&gt;

Can&apos;t be const, this does real work.

 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:760
&gt; &gt; +    PageThrottler* throttlerIfPresent();
&gt; 
&gt; existingPageThrottler()?
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:761
&gt; &gt; +    RefPtr&lt;PageThrottler&gt; m_pageThrottler;
&gt; 
&gt; Why do you need to store a reference to this? Why not just get it from Page when you need it?
&gt; 

Because we may have been detached from the page.

&gt; &gt; Source/WebCore/page/Page.cpp:234
&gt; &gt; +    m_pageThrottler-&gt;clearPage();
&gt; 
&gt; Why not just m_pageThrottler = nullptr?
&gt;

Because PageThrottler has a weak reference to page, so those need to be cleared out in the Page destructor.
 
&gt; &gt; Source/WebCore/page/Page.h:114
&gt; &gt; +class PageThrottler : public RefCounted&lt;PageThrottler&gt; {
&gt; 
&gt; PageThrottler is such an awkward name.

Yes

&gt; 
&gt; It&apos;s not clear to me that you gain much by putting throttle-related logic into its own class, since it has the same lifetime as Page. You just add ambiguity about lifetimes and aliasing.
&gt; 

No it doesn&apos;t - elements can float around without being attached to a page.

&gt; &gt; Source/WebCore/page/Page.h:122
&gt; &gt; +    void suspendScriptedAnimations() { m_scriptedAnimationsSuspended = true; }
&gt; &gt; +    void resumeScriptedAnimations() { m_scriptedAnimationsSuspended = false; }
&gt; 
&gt; suspendScriptedAnimations and resumeScriptedAnimations are function names that imply that they do work, but these don&apos;t, so the names are confusing. Maybe noteScriptedAnimationsSuspended() etc?
&gt; 
&gt; &gt; Source/WebCore/page/Page.h:129
&gt; &gt; +    void startUnthrottledEvent();
&gt; 
&gt; What does this mean?
&gt; 
&gt; I think it means &quot;preventThrottling&quot;.
&gt; 
&gt; &gt; Source/WebCore/page/Page.h:130
&gt; &gt; +    void reportInterestingEvent();
&gt; 
&gt; &quot;interesting&quot;?
&gt; 
&gt; &gt; Source/WebCore/page/Page.h:131
&gt; &gt; +    void stopUnthrottledEvent();
&gt; 
&gt; allowThrottling?
&gt; 
&gt; &gt; Source/WebCore/page/Page.h:150
&gt; &gt; +    void throttleTheWorld();
&gt; &gt; +    void unthrottleTheWorld();
&gt; 
&gt; Really, the world? All Pages? All Documents?
&gt; 
&gt; &gt; Source/WebCore/page/Page.h:582
&gt; &gt; +    RefPtr&lt;PageThrottler&gt; m_pageThrottler;
&gt; 
&gt; Is Page the correct scope for this throttling behavior? What happens on navigation? What about the Page Cache?

Throttling is per page.

&gt; 
&gt; &gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:62
&gt; &gt; +static const double kSuspensionHysteresis = 2.0;
&gt; 
&gt; Is this a time value? The name should make it clear.

righto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895029</commentid>
    <comment_count>12</comment_count>
      <attachid>203219</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-29 11:14:29 -0700</bug_when>
    <thetext>Created attachment 203219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895109</commentid>
    <comment_count>13</comment_count>
      <attachid>203219</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-29 11:48:29 -0700</bug_when>
    <thetext>Comment on attachment 203219
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:760
&gt; +    PageThrottler* pageThrottlerIfPossible();
&gt; +    RefPtr&lt;PageThrottler&gt; m_pageThrottler;

Why does this need a member? Can&apos;t it just be accessed through the page?

&gt; Source/WebCore/page/ChromeClient.h:370
&gt; +    virtual void incrementActivePageCount() { }
&gt; +    virtual void decrementActivePageCount() { }

These aren&apos;t the most descriptive names.  If we can&apos;t come up with something more descriptive, can you add comments explaining what these mean?

&gt; Source/WebCore/page/Page.h:115
&gt; +class Page;
&gt; +
&gt; +class PageThrottler : public RefCounted&lt;PageThrottler&gt; {
&gt; +public:

Please put this in its own header.

&gt; Source/WebCore/page/Page.h:119
&gt; +    static PassRefPtr&lt;PageThrottler&gt; create(Page* page, ChromeClient* chromeClient)
&gt; +    {
&gt; +        return adoptRef(new PageThrottler(page, chromeClient));
&gt; +    }

If you have the Page, why do you need the ChromeClient?

&gt; Source/WebCore/page/Page.h:138
&gt; +    typedef enum {
&gt; +        PageNotThrottledState,
&gt; +        PageWaitingToThrottleState,
&gt; +        PageThrottledState
&gt; +    } PageThrottleState;

C++ doesn&apos;t require enum&apos;s to use this typedef notation.

&gt; Source/WebKit2/Shared/ChildProcess.h:74
&gt; +#else
&gt; +    void incrementActiveTaskCount() { }
&gt; +    void decrementActiveTaskCount() { }
&gt;  #endif

If these are called from shared code, please put their empty implementations in ChildProcess.cpp with other functions that only have Mac implementations.

&gt; Source/WebKit2/Shared/ChildProcess.h:122
&gt; +    void suspensionHysteresisTimerFired();
&gt; +    void setProcessSuppressionEnabledInternal(bool);
&gt; +    size_t m_activeTaskCount;
&gt; +    bool m_shouldSuspend;
&gt; +    WebCore::RunLoop::Timer&lt;ChildProcess&gt; m_suspensionHysteresisTimer;
&gt;      RetainPtr&lt;id&gt; m_processSuppressionAssertion;

Are we doing this for more than the WebProcess?  If not, can this move to WebProcess?

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h:102
&gt; +    RefPtr&lt;WebCore::PageThrottler&gt; m_pageThrottler;

Why can&apos;t we just access this view the PluginView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895121</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-29 12:08:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 203219 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203219&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:760
&gt; &gt; +    PageThrottler* pageThrottlerIfPossible();
&gt; &gt; +    RefPtr&lt;PageThrottler&gt; m_pageThrottler;
&gt; 
&gt; Why does this need a member? Can&apos;t it just be accessed through the page?

See my earlier comment - we don&apos;t necessarily have a page.

&gt; 
&gt; &gt; Source/WebCore/page/ChromeClient.h:370
&gt; &gt; +    virtual void incrementActivePageCount() { }
&gt; &gt; +    virtual void decrementActivePageCount() { }
&gt; 
&gt; These aren&apos;t the most descriptive names.  If we can&apos;t come up with something more descriptive, can you add comments explaining what these mean?
&gt; 
&gt; &gt; Source/WebCore/page/Page.h:115
&gt; &gt; +class Page;
&gt; &gt; +
&gt; &gt; +class PageThrottler : public RefCounted&lt;PageThrottler&gt; {
&gt; &gt; +public:
&gt; 
&gt; Please put this in its own header.


Urgh, okay.

&gt; 
&gt; &gt; Source/WebCore/page/Page.h:119
&gt; &gt; +    static PassRefPtr&lt;PageThrottler&gt; create(Page* page, ChromeClient* chromeClient)
&gt; &gt; +    {
&gt; &gt; +        return adoptRef(new PageThrottler(page, chromeClient));
&gt; &gt; +    }
&gt; 
&gt; If you have the Page, why do you need the ChromeClient?
&gt; 

Will change, there was a time that i thought chrome client was per process, so thought i could use that alone.

&gt; &gt; Source/WebCore/page/Page.h:138
&gt; &gt; +    typedef enum {
&gt; &gt; +        PageNotThrottledState,
&gt; &gt; +        PageWaitingToThrottleState,
&gt; &gt; +        PageThrottledState
&gt; &gt; +    } PageThrottleState;
&gt; 
&gt; C++ doesn&apos;t require enum&apos;s to use this typedef notation.
&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.h:74
&gt; &gt; +#else
&gt; &gt; +    void incrementActiveTaskCount() { }
&gt; &gt; +    void decrementActiveTaskCount() { }
&gt; &gt;  #endif
&gt; 
&gt; If these are called from shared code, please put their empty implementations in ChildProcess.cpp with other functions that only have Mac implementations.
&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.h:122
&gt; &gt; +    void suspensionHysteresisTimerFired();
&gt; &gt; +    void setProcessSuppressionEnabledInternal(bool);
&gt; &gt; +    size_t m_activeTaskCount;
&gt; &gt; +    bool m_shouldSuspend;
&gt; &gt; +    WebCore::RunLoop::Timer&lt;ChildProcess&gt; m_suspensionHysteresisTimer;
&gt; &gt;      RetainPtr&lt;id&gt; m_processSuppressionAssertion;
&gt; 
&gt; Are we doing this for more than the WebProcess?  If not, can this move to WebProcess?
&gt;

I thought we might want to use it in other processes in the future.
 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h:102
&gt; &gt; +    RefPtr&lt;WebCore::PageThrottler&gt; m_pageThrottler;
&gt; 
&gt; Why can&apos;t we just access this view the PluginView?

Because i can&apos;t find any evidence to indicate that the page will outlast the plugin view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895179</commentid>
    <comment_count>15</comment_count>
      <attachid>203266</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-29 13:23:01 -0700</bug_when>
    <thetext>Created attachment 203266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895253</commentid>
    <comment_count>16</comment_count>
      <attachid>203266</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-05-29 16:12:03 -0700</bug_when>
    <thetext>Comment on attachment 203266
Patch

R+ with the discussed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895259</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-29 16:17:44 -0700</bug_when>
    <thetext>Committed r150935: &lt;http://trac.webkit.org/changeset/150935&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203098</attachid>
            <date>2013-05-28 15:10:00 -0700</date>
            <delta_ts>2013-05-28 15:19:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116893-20130528150911.patch</filename>
            <type>text/plain</type>
            <size>28327</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI2ODA1MDYzOGZiZDVl
ZjI3YzQzMDM5NmE1YjEzYjg5NDE4MmM1Ny4uYWQyN2E2MjdjNGQ1ZTc5OTA2ZjRkYzlhN2IyOTk3
NzI2ZmQ5MjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEzLTA1LTI4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgYWNjdXJhdGUg
YWN0aXZpdHkgc3RhdGUgdHJhY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGh5c3RlcmVzaXMgdG8gUGFnZSBhY3Rpdml0eSB0aHJvdHRs
aW5nLiAgV2UgZG8gdGhpcworICAgICAgICB0aHJvdWdoIGEgUGFnZVRocm90dGxlciBjbGFzcyB0
aGF0IG5vdyBoYW5kbGVzIGVudGVyaW5nIGFuZAorICAgICAgICBleGl0aW5nIHRocm90dGxpbmcg
c3RhdGUsIGFuZCBhZGRzIGEgaHlzdGVyZXNpcyB0byB3ZSBjYW4KKyAgICAgICAgbGltaXQgdGhl
IGFtb3VudCBvZiBvbi9vZmYgYm91bmNpbmcgb24gdGhlIHRocm90dGxlLgorCisgICAgICAgIE1l
ZGlhIGVsZW1lbnRzIG5vdyBtYWtlIHVzZSBvZiB0aGlzIHRvIGRpc2FibGUgdGltZXIgdGhyb3R0
bGluZworICAgICAgICB3aGlsZSB0aGV5IGFyZSBwbGF5aW5nLCBhbmQgcGx1Z2lucyB1c2UgaXQg
dG8gbW9tZW50YXJpbHkgYm91bmNlCisgICAgICAgIGZyb20gdGhyb3R0bGVkIHRvIHVudGhyb3R0
bGVkIHN0YXRlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmdldFRocm90dGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnRocm90dGxlcklmUHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UpOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmluY3Jl
bWVudEFjdGl2ZVBhZ2VDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRl
Y3JlbWVudEFjdGl2ZVBhZ2VDb3VudCk6CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN1c3Bl
bmRTY3JpcHRlZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVzdW1lU2Ny
aXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFRocm90dGxlZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OlBh
Z2VUaHJvdHRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6flBhZ2VUaHJv
dHRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6dGhyb3R0bGVUaGVXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp1bnRocm90dGxlVGhlV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c2V0VGhyb3R0bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnN0YXJ0VW50aHJvdHRsZWRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdG9wVW50aHJvdHRsZWRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6cmVwb3J0SW50ZXJlc3RpbmdFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdGFydFRocm90dGxlSHlzdGVy
ZXNpc1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlz
dGVyZXNpc1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChQYWdlVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdXNw
ZW5kU2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6
OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0
bGVyOjpzY3JpcHRlZEFuaW1hdGlvblN1c3BlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
VGhyb3R0bGVyOjpzaG91bGRUaHJvdHRsZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6c2hvdWxkVGhyb3R0bGVUaW1lcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6Y2xlYXJQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNjcmlw
dGVkQW5pbWF0aW9uc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwYWdlVGhy
b3R0bGVyKToKKyAgICAgICAgKFBhZ2UpOgorCiAyMDEzLTA1LTI4ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hZGUgQXVkaW9Ob2RlIGFuIEV2ZW50VGFyZ2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYmNlMjYyZjM2N2ZjZDhiMTU0MGFlZGFmYzU4NDNmMGYyMTNkMWQyOC4u
NmFiNmE5YzhmYTAwMWFlMzllMzBjNjRlNmZkMzRjNTkyOWZiZmQxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ3IEBACisyMDEzLTA1LTI4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIG1vcmUgYWNjdXJhdGUgYWN0aXZpdHkgc3RhdGUgdHJhY2tpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjg5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZXh0ZW5k
cyB0aGUgbG9naWMgaW4gV2ViQ29yZSBmcm9tIGEgUGFnZSB0byBQcm9jZXNzCisgICAgICAgIGdy
YW51bGFyaXR5LCBzbyB3ZSB3aWxsIGF2b2lkIGxvd2VyaW5nIHRoZSBjaGlsZCBwcm9jZXNzCisg
ICAgICAgIHByaW9yaXR5IGlmIHRoZXJlIGlzIGFjdGl2ZSBjb250ZW50LiAgVGhpcyBhbHNvIHBs
dW1icyBpbgorICAgICAgICB0aGUgbG9naWMgdG8gYWxsb3cgcGx1Z2lucyB0byByZXBvcnQgdGhh
dCB0aGV5IGhhdmUgZG9uZQorICAgICAgICBzb21ldGhpbmcgImludGVyZXN0aW5nIi4gIEN1cnJl
bnRseSB0aGlzIGlzIHNvbWV3aGF0IGNvbnNlcnZhdGl2ZQorICAgICAgICBidXQgZXZlbiB0aGlz
IGlzIHN1ZmZpY2llbnQgdG8gZml4IHNvbWUgc3R1dHRlcmluZyBpc3N1ZXMKKyAgICAgICAgdGhh
dCB3ZSd2ZSBzZWVuLgorCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKToKKyAgICAgICAgKiBTaGFy
ZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChDaGlsZFByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpDaGlsZFByb2Nlc3M6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCk6CisgICAgICAg
IChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbmNyZW1l
bnRBY3RpdmVUYXNrQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmRlY3Jl
bWVudEFjdGl2ZVRhc2tDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c3Vz
cGVuc2lvbkh5c3RlcmVzaXNUaW1lckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBS
dW50aW1lT2JqZWN0TWFwOjpOUFJ1bnRpbWVPYmplY3RNYXApOgorICAgICAgICAoV2ViS2l0OjpO
UFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKE5QUnVudGltZU9iamVjdE1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aW5jcmVtZW50QWN0aXZlUGFn
ZUNvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6ZGVjcmVtZW50QWN0aXZlUGFnZUNvdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
KToKKwogMjAxMy0wNS0yOCAgTGF1cm8gTmV0byA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIFtHVEtdIENvbm5lY3Rpb24gaXNzdWVzIGluIHJlcGVhdGVkIFdlYlByb2Nlc3Mg
Y3Jhc2gvcmVsb2Fkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNTQwN2Y2MDUyZTdjN2JhYzY3
NmIyOGUwYjA4NGVhMGMzNGYxYTg2Ni4uMWM4ZWE4YTFiNTZkYWRmOGRiYzNiM2RlMTFmM2I2YWQ2
ZDc3ZWZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI3NSw2ICsyNzUsOCBAQCBfX1pON1dl
YkNvcmUxM0tleWJvYXJkRXZlbnRDMUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJQTlNfOURPTVdp
bmRvd0VSS05TMV82U3RyaQogX19aTjdXZWJDb3JlMTNLZXlib2FyZEV2ZW50QzFFUktOU18yMVBs
YXRmb3JtS2V5Ym9hcmRFdmVudEVQTlNfOURPTVdpbmRvd0UKIF9fWk43V2ViQ29yZTEzTm9kZVRy
YXZlcnNhbDE5bmV4dEFuY2VzdG9yU2libGluZ0VQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTNO
b2RlVHJhdmVyc2FsOHByZXZpb3VzRVBLTlNfNE5vZGVFUzNfCitfX1pON1dlYkNvcmUxM1BhZ2VU
aHJvdHRsZXIyMnJlcG9ydEludGVyZXN0aW5nRXZlbnRFdgorX19aTjdXZWJDb3JlMTNQYWdlVGhy
b3R0bGVyRDFFdgogX19aTjdXZWJDb3JlMTNRdWFsaWZpZWROYW1lRDFFdgogX19aTjdXZWJDb3Jl
MTNSZXNvdXJjZUVycm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JD
MUVQOV9fQ0ZFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYWMyYjcyYWMyZmNkNGFiM2ZiYzI0NWI3NmEwZTFjMWIxNDNkZjgxMy4uODgzNGNjMTYyYTIz
M2FlMDJhNDUwNzcyNWRmMDVkZTljNGI4Yjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0zNDQsNiArMzQ0LDExIEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhU
TUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQiKTsKKworICAgIGlmICgh
bV9wYXVzZWQgJiYgbV9wYWdlVGhyb3R0bGVyKSB7CisgICAgICAgIG1fcGFnZVRocm90dGxlci0+
c3RvcFVudGhyb3R0bGVkRXZlbnQoKTsKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyLmNsZWFyKCk7
CisgICAgfQogICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAg
ZG9jdW1lbnQoKS0+cmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogICAgIHNldFNo
b3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKQEAgLTI0NzcsNiArMjQ4MiwyNSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXkoKQogICAgIHBsYXlJbnRlcm5hbCgpOwogfQogCitQYWdlVGhy
b3R0bGVyKiBIVE1MTWVkaWFFbGVtZW50OjpnZXRUaHJvdHRsZXIoKQoreworICAgIGlmIChtX3Bh
Z2VUaHJvdHRsZXIpCisgICAgICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7CisKKyAg
ICBpZiAoIWRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIG1fcGFnZVRocm90dGxlciA9IHBhZ2Ut
PnBhZ2VUaHJvdHRsZXIoKTsKKyAgICAKKyAgICByZXR1cm4gbV9wYWdlVGhyb3R0bGVyLmdldCgp
OworfQorCitQYWdlVGhyb3R0bGVyKiBIVE1MTWVkaWFFbGVtZW50Ojp0aHJvdHRsZXJJZlByZXNl
bnQoKQoreworICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7Cit9CisKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpwbGF5SW50ZXJuYWwiKTsKQEAgLTI0OTIsNiArMjUxNiw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXIt
PmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKIAogICAgIGlmIChtX3BhdXNlZCkgeworICAg
ICAgICBpZiAoUGFnZVRocm90dGxlciogdGhyb3R0bGVyID0gZ2V0VGhyb3R0bGVyKCkpCisgICAg
ICAgICAgICB0aHJvdHRsZXItPnN0YXJ0VW50aHJvdHRsZWRFdmVudCgpOwogICAgICAgICBtX3Bh
dXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwpAQCAtMjUwMiw3ICsyNTI4LDYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KTsKICAgICB9CiAgICAgbV9hdXRv
cGxheWluZyA9IGZhbHNlOwotCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiAgICAgdXBkYXRlTWVk
aWFDb250cm9sbGVyKCk7CiB9CkBAIC0yNTI5LDYgKzI1NTQsOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAg
IGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAgaWYgKFBhZ2VUaHJvdHRsZXIqIHRocm90dGxlciA9
IHRocm90dGxlcklmUHJlc2VudCgpKQorICAgICAgICAgICAgdGhyb3R0bGVyLT5zdG9wVW50aHJv
dHRsZWRFdmVudCgpOwogICAgICAgICBtX3BhdXNlZCA9IHRydWU7CiAgICAgICAgIHNjaGVkdWxl
VGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkucGF1c2VFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGMxYTgyZmRiNDE2ZmYyM2FiYzkyZmIzNDQxYzgzYWEwOTJiZDY2MTMuLmExMDEwZjdkODRhODk2
NzI4YzU2ZDRiYzY4NWJjYzQwYTJhMjk1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC01OSwxMCArNTksMTEgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNsYXNzIEhU
TUxUcmFja0VsZW1lbnQ7CitjbGFzcyBLVVJMOwogY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xh
c3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
UGFnZVRocm90dGxlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiBjbGFzcyBXaWRnZXQ7CkBAIC03NTUsNiArNzU2LDEwIEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKICAgICBSZWZQdHI8TWVkaWFDb250
cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIAorICAgIFBhZ2VUaHJvdHRsZXIqIGdldFRocm90
dGxlcigpOworICAgIFBhZ2VUaHJvdHRsZXIqIHRocm90dGxlcklmUHJlc2VudCgpOworICAgIFJl
ZlB0cjxQYWdlVGhyb3R0bGVyPiBtX3BhZ2VUaHJvdHRsZXI7CisKICNpZiBQTEFURk9STShNQUMp
CiAgICAgT3duUHRyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCAzM2M2M2E2NmRh
NjEwNzlmNzAwZTlhNzRmMjVlMmNiZWQyYjY2NzM2Li5jYmZhMjFkMDA2MzY0OGUzY2Y0ZDIzNTQ1
MGE4YTBiNDczYTZmYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3Bw
CkBAIC0xODMsNyArMTgzLDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UoKQogICAg
IC8vIFdoZW4gdGhlIHVucGF1c2UoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29u
dHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAogICAgIGlmICghbV9wYXVzZWQp
CiAgICAgICAgIHJldHVybjsKLQogICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwKICAgICBt
X3BhdXNlZCA9IGZhbHNlOwogICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IDEwN2Y0YzBjZmU1MmNiM2VjOGJkOGJjMGVlNWJiOTIxYTI3NTQ0ZDku
LmVkOGI5NzI3ZjgwYjE1ODM5ZWY3ODQ5NzFjY2MyZGM5ZGFkZjk0ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtMzY2LDYgKzM2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkSGVhZGVyTGF5ZXIoR3JhcGhpY3NMYXllciopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRGb290ZXJMYXllcihHcmFwaGljc0xheWVyKikgeyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgaW5jcmVtZW50QWN0aXZlUGFnZUNvdW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZTg4NDUyNDA1MmZh
YjllNWQ3NGU0NjBmZWMyNGNjYTYxY2NjMDYzOS4uYjc4MmYzYzJhMTIzYWU5NWJiYjA5YjVkYjg4
NDk3YzY4ZGQ5OTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgUGFn
ZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2lzUGFpbnRpbmcoZmFs
c2UpCiAjZW5kaWYKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDbGllbnRzLmFs
dGVybmF0aXZlVGV4dENsaWVudCkKLSAgICAsIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVk
KGZhbHNlKQorICAgICwgbV9wYWdlVGhyb3R0bGVyKFBhZ2VUaHJvdHRsZXI6OmNyZWF0ZSh0aGlz
LCBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpKQogICAgICwgbV9jb25zb2xlKFBhZ2VDb25zb2xl
OjpjcmVhdGUodGhpcykpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKQEAgLTIzMSw2
ICsyMzEsNyBAQCBQYWdlOjp+UGFnZSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHBhZ2VDb3VudGVy
LmRlY3JlbWVudCgpOwogI2VuZGlmCisgICAgbV9wYWdlVGhyb3R0bGVyLT5jbGVhclBhZ2UoKTsK
IAogfQogCkBAIC05NDEsNyArOTQyLDcgQEAgdm9pZCBQYWdlOjp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogCiB2b2lkIFBhZ2U6OnN1c3BlbmRTY3Jp
cHRlZEFuaW1hdGlvbnMoKQogewotICAgIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkID0g
dHJ1ZTsKKyAgICBtX3BhZ2VUaHJvdHRsZXItPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKTsK
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50
KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwpAQCAtOTUwLDIxICs5NTEsMTM1IEBAIHZvaWQgUGFn
ZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCiAKIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25zKCkKIHsKLSAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZh
bHNlOworICAgIG1fcGFnZVRocm90dGxlci0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
KQogICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KIH0KIAotdm9pZCBQYWdlOjpzZXRUaHJvdHRs
ZWQoYm9vbCBpc1Rocm90dGxlZCkKK3ZvaWQgUGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgdGhyb3R0
bGVkKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgbV9wYWdlVGhyb3R0bGVy
LT5zZXRUaHJvdHRsZWQodGhyb3R0bGVkKTsKK30KKworUGFnZVRocm90dGxlcjo6UGFnZVRocm90
dGxlcihQYWdlKiBwYWdlLCBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCkKKyAgICA6IG1fcGFn
ZShwYWdlKQorICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQorICAgICwgbV9zY3Jp
cHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQoZmFsc2UpCisgICAgLCBtX2FjdGl2ZVRocm90dGxlQmxv
Y2tlcnMoMCkKKyAgICAsIG1fdGhyb3R0bGVTdGF0ZShQYWdlTm90VGhyb3R0bGVkU3RhdGUpCisg
ICAgLCBtX3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyKHRoaXMsICZQYWdlVGhyb3R0bGVyOjp0aHJv
dHRsZUh5c3RlcmVzaXNUaW1lckZpcmVkLCBrVGhyb3R0bGVIeXN0ZXJlc2lzKQoreworICAgIGlm
IChtX2Nocm9tZUNsaWVudCkKKyAgICAgICAgbV9jaHJvbWVDbGllbnQtPmluY3JlbWVudEFjdGl2
ZVBhZ2VDb3VudCgpOworfQorCitQYWdlVGhyb3R0bGVyOjp+UGFnZVRocm90dGxlcigpCit7Cisg
ICAgaWYgKG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlVGhyb3R0bGVkU3RhdGUpIHsKKyAgICAgICAg
aWYgKG1fY2hyb21lQ2xpZW50KQorICAgICAgICAgICAgbV9jaHJvbWVDbGllbnQtPmRlY3JlbWVu
dEFjdGl2ZVBhZ2VDb3VudCgpOworICAgIH0KK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjp0aHJv
dHRsZVRoZVdvcmxkKCkKK3sKKyAgICBpZiAobV9jaHJvbWVDbGllbnQpCisgICAgICAgIG1fY2hy
b21lQ2xpZW50LT5kZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKTsKKyAgICBtX3Rocm90dGxlU3Rh
dGUgPSBQYWdlVGhyb3R0bGVkU3RhdGU7CisKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZy
YW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZCh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQg
UGFnZVRocm90dGxlcjo6dW50aHJvdHRsZVRoZVdvcmxkKCkKK3sKKyAgICBpZiAobV9jaHJvbWVD
bGllbnQpCisgICAgICAgIG1fY2hyb21lQ2xpZW50LT5pbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQo
KTsKKyAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlTm90VGhyb3R0bGVkU3RhdGU7CisKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZChp
c1Rocm90dGxlZCk7CisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyU2V0VGhyb3R0bGVkKGZhbHNlKTsKICAgICB9CiB9CiAKK3ZvaWQgUGFn
ZVRocm90dGxlcjo6c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCit7CisgICAgaWYgKGlz
VGhyb3R0bGVkKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKQorICAg
ICAgICAgICAgdGhyb3R0bGVUaGVXb3JsZCgpOworICAgICAgICBlbHNlIGlmIChtX3Rocm90dGxl
U3RhdGUgIT0gUGFnZVRocm90dGxlZFN0YXRlKSB7CisgICAgICAgICAgICBtX3Rocm90dGxlU3Rh
dGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICAgICAgICAgIHN0YXJ0VGhyb3R0
bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICB1bnRo
cm90dGxlVGhlV29ybGQoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpzdGFydFVudGhyb3R0
bGVkRXZlbnQoKQoreworICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGV2ZW50cyB0aGF0IGJs
b2NrIHRocm90dGxpbmcgd2UgY2FuIGluY3JlbWVudAorICAgIC8vIGFuZCByZXR1cm4gZWFybHkK
KyAgICBpZiAobV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKyspCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX3Rocm90dGxlU3RhdGUgPT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VUaHJvdHRsZWRTdGF0
ZSkKKyAgICAgICAgdW50aHJvdHRsZVRoZVdvcmxkKCk7CisKKyAgICBtX3Rocm90dGxlU3RhdGUg
PSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lz
VGltZXIoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpzdG9wVW50aHJvdHRsZWRFdmVudCgp
Cit7CisgICAgQVNTRVJUKG1fYWN0aXZlVGhyb3R0bGVCbG9ja2VycyA+IDApOworICAgIGlmICgh
LS1tX2FjdGl2ZVRocm90dGxlQmxvY2tlcnMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X3Rocm90dGxlU3RhdGUgPT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQobV90aHJvdHRsZVN0YXRlID09IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0
YXRlKTsKKyAgICBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Cit9CisKK3ZvaWQgUGFn
ZVRocm90dGxlcjo6c3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKK3sKKyAgICBtX3Rocm90
dGxlSHlzdGVyZXNpc1RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpyZXBv
cnRJbnRlcmVzdGluZ0V2ZW50KCkKK3sKKyAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VO
b3RUaHJvdHRsZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Rocm90dGxlU3Rh
dGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQorICAgICAgICB1bnRocm90dGxlVGhlV29ybGQoKTsK
KyAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICBt
X3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyLnJlc3RhcnQoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0
bGVyOjpzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKK3sKKyAgICBtX3Rocm90dGxlSHlz
dGVyZXNpc1RpbWVyLnJlc3RhcnQoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjp0aHJvdHRs
ZUh5c3RlcmVzaXNUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UGFnZVRocm90dGxl
cj4qKQoreworICAgIEFTU0VSVCghbV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKTsKKyAgICB0aHJv
dHRsZVRoZVdvcmxkKCk7Cit9CisKIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNo
YW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSB0byBhIG1v
ZGVsIG9mIGp1c3QgYmVpbmcgaGFuZGVkIHRoZSBzaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjZTcw
MzczYmUyMDA5MzFiZDAzNjM4YzdiZWQzMTY1OGY2NTdmNDdiLi43NmQyMGNmMmNlNTZlMzQ4YTVj
MWQyMzUzOGRjOGM2MWZjNTBjMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtMTA3LDYgKzEwOCw1NSBAQCBzdHJ1Y3QgQXJlbmFTaXplIHsKICAgICBz
aXplX3QgYWxsb2NhdGVkOwogfTsKIAorY2xhc3MgUGFnZTsKKworY2xhc3MgUGFnZVRocm90dGxl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFBhZ2VUaHJvdHRsZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQYWdlVGhyb3R0bGVyPiBjcmVhdGUoUGFnZSogcGFnZSwgQ2hyb21lQ2xp
ZW50KiBjaHJvbWVDbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBh
Z2VUaHJvdHRsZXIocGFnZSwgY2hyb21lQ2xpZW50KSk7CisgICAgfQorCisgICAgdm9pZCBzdXNw
ZW5kU2NyaXB0ZWRBbmltYXRpb25zKCkgeyBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9
IHRydWU7IH0KKyAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpIHsgbV9zY3JpcHRl
ZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSBmYWxzZTsgfQorICAgIGJvb2wgc2NyaXB0ZWRBbmltYXRp
b25TdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRl
ZDsgfQorICAgIGJvb2wgc2hvdWxkVGhyb3R0bGVBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV90aHJvdHRsZVN0YXRlICE9IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZTsgfQorICAgIGJvb2wgc2hv
dWxkVGhyb3R0bGVUaW1lcnMoKSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxlU3RhdGUgPT0gUGFn
ZU5vdFRocm90dGxlZFN0YXRlOyB9CisKKyAgICB2b2lkIHNldFRocm90dGxlZChib29sKTsKKwor
ICAgIHZvaWQgc3RhcnRVbnRocm90dGxlZEV2ZW50KCk7CisgICAgdm9pZCByZXBvcnRJbnRlcmVz
dGluZ0V2ZW50KCk7CisgICAgdm9pZCBzdG9wVW50aHJvdHRsZWRFdmVudCgpOworICAgIHZvaWQg
Y2xlYXJQYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CisKKyAgICB+UGFnZVRocm90dGxlcigpOworCitw
cml2YXRlOgorICAgIHR5cGVkZWYgZW51bSB7CisgICAgICAgIFBhZ2VOb3RUaHJvdHRsZWRTdGF0
ZSwKKyAgICAgICAgUGFnZVdhaXRpbmdUb1Rocm90dGxlU3RhdGUsCisgICAgICAgIFBhZ2VUaHJv
dHRsZWRTdGF0ZQorICAgIH0gUGFnZVRocm90dGxlU3RhdGU7CisKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQga1Rocm90dGxlSHlzdGVyZXNpcyA9IDI7CisKKyAgICBQYWdlVGhyb3R0bGVyKFBh
Z2UqLCBDaHJvbWVDbGllbnQqKTsKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAgQ2hyb21lQ2xpZW50
KiBtX2Nocm9tZUNsaWVudDsKKworICAgIHZvaWQgdGhyb3R0bGVUaGVXb3JsZCgpOworICAgIHZv
aWQgdW50aHJvdHRsZVRoZVdvcmxkKCk7CisKKyAgICBib29sIG1fc2NyaXB0ZWRBbmltYXRpb25z
U3VzcGVuZGVkOworICAgIHVuc2lnbmVkIG1fYWN0aXZlVGhyb3R0bGVCbG9ja2VyczsKKyAgICBQ
YWdlVGhyb3R0bGVTdGF0ZSBtX3Rocm90dGxlU3RhdGU7CisgICAgdm9pZCBzdGFydFRocm90dGxl
SHlzdGVyZXNpc1RpbWVyKCk7CisgICAgdm9pZCBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIo
KTsKKyAgICB2b2lkIHRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNo
b3RUaW1lcjxQYWdlVGhyb3R0bGVyPiopOworICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8UGFn
ZVRocm90dGxlcj4gbV90aHJvdHRsZUh5c3RlcmVzaXNUaW1lcjsKK307CisKIGNsYXNzIFBhZ2Ug
OiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBhZ2UpOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKQEAgLTMwMSw3ICszNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKTsKICAgICB2b2lk
IHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwotICAgIGJvb2wgc2NyaXB0ZWRBbmltYXRpb25z
U3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7
IH0KKyAgICBib29sIHNjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZVRocm90dGxlci0+c2NyaXB0ZWRBbmltYXRpb25TdXNwZW5kZWQoKTsgfQogICAgIHZv
aWQgc2V0VGhyb3R0bGVkKGJvb2wpOwogCiAgICAgdm9pZCB1c2VyU3R5bGVTaGVldExvY2F0aW9u
Q2hhbmdlZCgpOwpAQCAtMzg5LDYgKzQzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhd01lZGlh
RW5naW5lKGNvbnN0IFN0cmluZyYgZW5naW5lTmFtZSk7CiAgICAgdm9pZCByZXNldFNlZW5NZWRp
YUVuZ2luZXMoKTsKIAorICAgIFBhZ2VUaHJvdHRsZXIqIHBhZ2VUaHJvdHRsZXIoKSB7IHJldHVy
biBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7IH0KKwogICAgIFBhZ2VDb25zb2xlKiBjb25zb2xlKCkg
eyByZXR1cm4gbV9jb25zb2xlLmdldCgpOyB9CiAKICNpZiBFTkFCTEUoSElEREVOX1BBR0VfRE9N
X1RJTUVSX1RIUk9UVExJTkcpCkBAIC01MjYsNyArNTc4LDggQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiAKLSAg
ICBib29sIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkOworICAgIFJlZlB0cjxQYWdlVGhy
b3R0bGVyPiBtX3BhZ2VUaHJvdHRsZXI7CisKICAgICBPd25QdHI8UGFnZUNvbnNvbGU+IG1fY29u
c29sZTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5QbHVnaW5zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCBhOWE4NzZhMWFkN2QwNjQwZGM2NTMyOGYwN2Fj
MTczNDBiZGMyNWQxLi43YzI3MGU4NzY2OThlYTg0Nzg2NWQ3OWZiNDJmOTUwM2I3MTU1OTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcApAQCAtNDAsNiArNDAsMTEgQEAg
Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQogICAgIDogbV90ZXJtaW5hdGlvblRpbWVvdXQo
MCkKICAgICAsIG1fdGVybWluYXRpb25Db3VudGVyKDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGlvblRpbWVy
RmlyZWQpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9hY3RpdmVUYXNrQ291bnQoMCkKKyAg
ICAsIG1fc2hvdWxkU3VzcGVuZChmYWxzZSkKKyAgICAsIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDaGlsZFByb2Nlc3M6OnN1c3BlbnNpb25IeXN0
ZXJlc2lzVGltZXJGaXJlZCkKKyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQ
cm9jZXNzLmgKaW5kZXggYzFhODY3M2FkNmUzYjFkYjEyN2QyMzQ1ZTkyMTgxYjM1NDNkYmQzNi4u
YmQyZTBhNDI2YjQwMjE2NjUxNTYyODA1MzQ4N2NmYTRjOTFmNmUwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuaApAQCAtNjIsMTAgKzYyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gIW1f
cHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uOyB9CiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKGJvb2wpOworICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuICFtX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbjsgfQorICAgIHZv
aWQgaW5jcmVtZW50QWN0aXZlVGFza0NvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVU
YXNrQ291bnQoKTsKIAogICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0RhZW1vbigpOworI2Vsc2UK
KyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpIHsgfQorICAgIHZvaWQgZGVjcmVt
ZW50QWN0aXZlVGFza0NvdW50KCkgeyB9CiAjZW5kaWYKIAogICAgIENvcmVJUEM6OkNvbm5lY3Rp
b24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
LmdldCgpOyB9CkBAIC0xMDksNiArMTE0LDExIEBAIHByaXZhdGU6CiAgICAgQ29yZUlQQzo6TWVz
c2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAjaWYgUExBVEZPUk0oTUFD
KQorICAgIHZvaWQgc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lckZpcmVkKCk7CisgICAgdm9pZCBz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwoYm9vbCk7CisgICAgc2l6ZV90IG1f
YWN0aXZlVGFza0NvdW50OworICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kOworICAgIFdlYkNvcmU6
OlJ1bkxvb3A6OlRpbWVyPENoaWxkUHJvY2Vzcz4gbV9zdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVy
OwogICAgIFJldGFpblB0cjxpZD4gbV9wcm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb247CiAjZW5k
aWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmlu
ZGV4IDAwMzgxZjQyMjA5NTZkYjRmZDMwOGRjMzhmZGU5MGMxZGM2MTQ4M2MuLjIzZTYxNDFmYmNj
MzEwYTM2YzMzYTU2ZWQ1NDkwNzYzMGI0ZmU1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCkBAIC01OSwxMyArNTksMTYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIENoaWxkUHJvY2Vzczo6
c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQpCitzdGF0aWMgY29uc3QgZG91YmxlIGtTdXNwZW5zaW9uSHlzdGVyZXNpcyA9IDIuMDsKKwor
dm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbChi
b29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCiB7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaWYgKHRoaXMtPnByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoKSA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkgeworICAgICAgICBBU1NFUlQoIW1f
YWN0aXZlVGFza0NvdW50KTsKICAgICAgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBl
bmRBY3Rpdml0eTptX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbi5nZXQoKV07CiAgICAgICAg
IG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uLmNsZWFyKCk7CiAgICAgfSBlbHNlIHsKQEAg
LTc3LDYgKzgwLDQ3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKICNlbmRpZgogfQogCit2b2lk
IENoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQpCit7CisgICAgaWYgKHRoaXMtPnByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoKSA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKG1fc2hvdWxkU3VzcGVuZCA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQorICAg
ICAgICByZXR1cm47CisgICAgbV9zaG91bGRTdXNwZW5kID0gcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZDsKKyAgICBpZiAobV9zaG91bGRTdXNwZW5kKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVU
YXNrQ291bnQpCisgICAgICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIuc3RhcnRP
bmVTaG90KGtTdXNwZW5zaW9uSHlzdGVyZXNpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKK30KKwordm9p
ZCBDaGlsZFByb2Nlc3M6OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCit7CisgICAgbV9hY3Rp
dmVUYXNrQ291bnQrKzsKKyAgICBpZiAobV9zdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdG9wKCk7CisgICAg
aWYgKG1fYWN0aXZlVGFza0NvdW50KQorICAgICAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkSW50ZXJuYWwoZmFsc2UpOworfQorCit2b2lkIENoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0
aXZlVGFza0NvdW50KCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVUYXNrQ291bnQpOworICAgIG1f
YWN0aXZlVGFza0NvdW50LS07CisgICAgaWYgKG1fYWN0aXZlVGFza0NvdW50KQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fc2hvdWxkU3VzcGVuZCkKKyAgICAgICAgbV9zdXNwZW5zaW9uSHlz
dGVyZXNpc1RpbWVyLnN0YXJ0T25lU2hvdChrU3VzcGVuc2lvbkh5c3RlcmVzaXMpOworfQorCit2
b2lkIENoaWxkUHJvY2Vzczo6c3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lckZpcmVkKCkKK3sKKyAg
ICBBU1NFUlQoIW1fYWN0aXZlVGFza0NvdW50KTsKKyAgICBBU1NFUlQobV9zaG91bGRTdXNwZW5k
KTsKKyAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwodHJ1ZSk7Cit9CisK
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVUaW1lckNvYWxlc2NpbmdQb2xpY3koKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1l
T2JqZWN0TWFwLmNwcAppbmRleCAxNjY3MTEyOTRjZDA3NzE5YWMzMjg5NzFmNTc0YjQ4YTk3ZTkz
ZmIzLi40Yzg3ZDQzOWNlMWI5ODVmNmZiMWI0NjQ5YjUyNWM4OTFhYTBiZWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2Jq
ZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBw
ZXJXb3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKQEAgLTQ5LDggKzUwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogCi1OUFJ1bnRpbWVPYmplY3RNYXA6Ok5QUnVudGltZU9i
amVjdE1hcChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQorTlBSdW50aW1lT2JqZWN0TWFwOjpOUFJ1
bnRpbWVPYmplY3RNYXAoUGx1Z2luVmlldyogcGx1Z2luVmlldywgUGFnZVRocm90dGxlciogcGFn
ZVRocm90dGxlcikKICAgICA6IG1fcGx1Z2luVmlldyhwbHVnaW5WaWV3KQorICAgICwgbV9wYWdl
VGhyb3R0bGVyKHBhZ2VUaHJvdHRsZXIpCiAgICAgLCBtX2ZpbmFsaXphdGlvblRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJk5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZVF1ZXVlZE9i
amVjdHMpCiB7CiB9CkBAIC0xODIsNiArMTg0LDcgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6
OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUK
IAogYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0KQogeworICAgIG1f
cGFnZVRocm90dGxlci0+cmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOwogICAgIFN0cm9uZzxKU0ds
b2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0KHRoaXMtPmdsb2JhbE9iamVjdCgpLT52bSgpLCB0aGlz
LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAppbmRleCA4NzQ0Mjg5ZmNiYWM5
Y2ZjNzVkNWFkNDFhNTFkYTc3MjA4ZjllZWZmLi43NTg1YWZlY2U1OGJhZTY4NzAwNGQ0NjA3NDU4
MGYzMGQzYTU5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCkBAIC00NSw2ICs0
NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1ZhbHVlOwogfQogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgY2xhc3MgUGFnZVRocm90dGxlcjsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEpTTlBPYmplY3Q7CkBAIC01NCw3ICs1OCw3IEBAIGNsYXNzIFBsdWdp
blZpZXc7CiAvLyBBIHBlciBwbHVnLWluIG1hcCBvZiBOUE9iamVjdHMgdGhhdCB3cmFwIEphdmFT
Y3JpcHQgb2JqZWN0cy4KIGNsYXNzIE5QUnVudGltZU9iamVjdE1hcCA6IHByaXZhdGUgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE5QUnVudGltZU9iamVjdE1h
cChQbHVnaW5WaWV3Kik7CisgICAgZXhwbGljaXQgTlBSdW50aW1lT2JqZWN0TWFwKFBsdWdpblZp
ZXcqLCBXZWJDb3JlOjpQYWdlVGhyb3R0bGVyKik7CiAKICAgICBjbGFzcyBQbHVnaW5Qcm90ZWN0
b3IgewogICAgIHB1YmxpYzoKQEAgLTk1LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
dmFsaWRhdGVRdWV1ZWRPYmplY3RzKCk7CiAKICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7
Ci0KKyAgICBSZWZQdHI8V2ViQ29yZTo6UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOwog
ICAgIEhhc2hNYXA8SlNDOjpKU09iamVjdCosIE5QSlNPYmplY3QqPiBtX25wSlNPYmplY3RzOwog
ICAgIEhhc2hNYXA8TlBPYmplY3QqLCBKU0M6OldlYWs8SlNOUE9iamVjdD4+IG1fanNOUE9iamVj
dHM7CiAgICAgVmVjdG9yPE5QT2JqZWN0Kj4gbV9ucE9iamVjdHNUb0ZpbmFsaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGVj
NzkxZjZmNDlkNzkyMzg0NThhMjk2YjU5NTIwNWNmMWIyMWNhNWUuLjdjOGI5MmFjMzhlNTY1ODM2
N2I5YjcxMTM5YzdiOWFlMGEyMWJmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KFBhc3NSZWZQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+IHBsdWdpbkVsZW1lbnQs
IFBhc3NSZWZQdHI8UAogICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZhbHNlKQogICAgICwgbV9w
ZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3
OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgICwgbV9ucFJ1bnRpbWVPYmplY3RNYXAodGhpcykKKyAgICAsIG1fbnBSdW50
aW1lT2JqZWN0TWFwKHRoaXMsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGFnZVRocm90dGxlcigp
KQogI2VuZGlmCiAgICAgLCBtX21hbnVhbFN0cmVhbVN0YXRlKFN0cmVhbVN0YXRlSW5pdGlhbCkK
ICAgICAsIG1fcGx1Z2luU25hcHNob3RUaW1lcih0aGlzLCAmUGx1Z2luVmlldzo6cGx1Z2luU25h
cHNob3RUaW1lckZpcmVkLCBwbHVnaW5TbmFwc2hvdFRpbWVyRGVsYXkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggYjhjNGNjZTFlNDYxZTY5ODI4MTZkMTg3OWQyMTRjNWZhNTZmZDQzYS4u
ODczZGJjYzBhMDdiNzMwNzNhZjIwYjA4ZWRjNjIzMDJkYWZiZmMzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtOTAwLDQgKzkwMCwxNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlk
QWRkRm9vdGVyTGF5ZXIoR3JhcGhpY3NMYXllciogZm9vdGVyUGFyZW50KQogICAgICAgICBiYW5u
ZXItPmRpZEFkZFBhcmVudExheWVyKGZvb3RlclBhcmVudCk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50OjppbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKQoreworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpOworfQorCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZGVjcmVtZW50QWN0aXZlUGFnZUNvdW50KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5kZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3MDQ0YjU0YzA1ZDE5MTFkY2M0N2NkOGM4ZGEy
NDEzYmFlZDBlMTAyLi40ZWYyOWI1ZTA3ZWI1YWI0YWY5MmRlZjYyZWE1NGNlNmE0MjhmZTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIzMyw2ICsyMzMsOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRIZWFkZXJMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEZvb3RlckxheWVyKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVQ
YWdlQ291bnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlUGFn
ZUNvdW50KCkgT1ZFUlJJREU7CisKICAgICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11
dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwogICAg
IG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203099</attachid>
            <date>2013-05-28 15:19:47 -0700</date>
            <delta_ts>2013-05-28 16:59:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116893-20130528151858.patch</filename>
            <type>text/plain</type>
            <size>28466</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI2ODA1MDYzOGZiZDVl
ZjI3YzQzMDM5NmE1YjEzYjg5NDE4MmM1Ny4uYWQyN2E2MjdjNGQ1ZTc5OTA2ZjRkYzlhN2IyOTk3
NzI2ZmQ5MjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEzLTA1LTI4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgYWNjdXJhdGUg
YWN0aXZpdHkgc3RhdGUgdHJhY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGh5c3RlcmVzaXMgdG8gUGFnZSBhY3Rpdml0eSB0aHJvdHRs
aW5nLiAgV2UgZG8gdGhpcworICAgICAgICB0aHJvdWdoIGEgUGFnZVRocm90dGxlciBjbGFzcyB0
aGF0IG5vdyBoYW5kbGVzIGVudGVyaW5nIGFuZAorICAgICAgICBleGl0aW5nIHRocm90dGxpbmcg
c3RhdGUsIGFuZCBhZGRzIGEgaHlzdGVyZXNpcyB0byB3ZSBjYW4KKyAgICAgICAgbGltaXQgdGhl
IGFtb3VudCBvZiBvbi9vZmYgYm91bmNpbmcgb24gdGhlIHRocm90dGxlLgorCisgICAgICAgIE1l
ZGlhIGVsZW1lbnRzIG5vdyBtYWtlIHVzZSBvZiB0aGlzIHRvIGRpc2FibGUgdGltZXIgdGhyb3R0
bGluZworICAgICAgICB3aGlsZSB0aGV5IGFyZSBwbGF5aW5nLCBhbmQgcGx1Z2lucyB1c2UgaXQg
dG8gbW9tZW50YXJpbHkgYm91bmNlCisgICAgICAgIGZyb20gdGhyb3R0bGVkIHRvIHVudGhyb3R0
bGVkIHN0YXRlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmdldFRocm90dGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnRocm90dGxlcklmUHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UpOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmluY3Jl
bWVudEFjdGl2ZVBhZ2VDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRl
Y3JlbWVudEFjdGl2ZVBhZ2VDb3VudCk6CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN1c3Bl
bmRTY3JpcHRlZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVzdW1lU2Ny
aXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFRocm90dGxlZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OlBh
Z2VUaHJvdHRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6flBhZ2VUaHJv
dHRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6dGhyb3R0bGVUaGVXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp1bnRocm90dGxlVGhlV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c2V0VGhyb3R0bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnN0YXJ0VW50aHJvdHRsZWRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdG9wVW50aHJvdHRsZWRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6cmVwb3J0SW50ZXJlc3RpbmdFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdGFydFRocm90dGxlSHlzdGVy
ZXNpc1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlz
dGVyZXNpc1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChQYWdlVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdXNw
ZW5kU2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6
OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0
bGVyOjpzY3JpcHRlZEFuaW1hdGlvblN1c3BlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
VGhyb3R0bGVyOjpzaG91bGRUaHJvdHRsZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6c2hvdWxkVGhyb3R0bGVUaW1lcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6Y2xlYXJQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNjcmlw
dGVkQW5pbWF0aW9uc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwYWdlVGhy
b3R0bGVyKToKKyAgICAgICAgKFBhZ2UpOgorCiAyMDEzLTA1LTI4ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hZGUgQXVkaW9Ob2RlIGFuIEV2ZW50VGFyZ2V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYmNlMjYyZjM2N2ZjZDhiMTU0MGFlZGFmYzU4NDNmMGYyMTNkMWQyOC4u
NmFiNmE5YzhmYTAwMWFlMzllMzBjNjRlNmZkMzRjNTkyOWZiZmQxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ3IEBACisyMDEzLTA1LTI4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIG1vcmUgYWNjdXJhdGUgYWN0aXZpdHkgc3RhdGUgdHJhY2tpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjg5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZXh0ZW5k
cyB0aGUgbG9naWMgaW4gV2ViQ29yZSBmcm9tIGEgUGFnZSB0byBQcm9jZXNzCisgICAgICAgIGdy
YW51bGFyaXR5LCBzbyB3ZSB3aWxsIGF2b2lkIGxvd2VyaW5nIHRoZSBjaGlsZCBwcm9jZXNzCisg
ICAgICAgIHByaW9yaXR5IGlmIHRoZXJlIGlzIGFjdGl2ZSBjb250ZW50LiAgVGhpcyBhbHNvIHBs
dW1icyBpbgorICAgICAgICB0aGUgbG9naWMgdG8gYWxsb3cgcGx1Z2lucyB0byByZXBvcnQgdGhh
dCB0aGV5IGhhdmUgZG9uZQorICAgICAgICBzb21ldGhpbmcgImludGVyZXN0aW5nIi4gIEN1cnJl
bnRseSB0aGlzIGlzIHNvbWV3aGF0IGNvbnNlcnZhdGl2ZQorICAgICAgICBidXQgZXZlbiB0aGlz
IGlzIHN1ZmZpY2llbnQgdG8gZml4IHNvbWUgc3R1dHRlcmluZyBpc3N1ZXMKKyAgICAgICAgdGhh
dCB3ZSd2ZSBzZWVuLgorCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKToKKyAgICAgICAgKiBTaGFy
ZWQvQ2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChDaGlsZFByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpDaGlsZFByb2Nlc3M6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCk6CisgICAgICAg
IChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbmNyZW1l
bnRBY3RpdmVUYXNrQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmRlY3Jl
bWVudEFjdGl2ZVRhc2tDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c3Vz
cGVuc2lvbkh5c3RlcmVzaXNUaW1lckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBS
dW50aW1lT2JqZWN0TWFwOjpOUFJ1bnRpbWVPYmplY3RNYXApOgorICAgICAgICAoV2ViS2l0OjpO
UFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKE5QUnVudGltZU9iamVjdE1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6aW5jcmVtZW50QWN0aXZlUGFn
ZUNvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6ZGVjcmVtZW50QWN0aXZlUGFnZUNvdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
KToKKwogMjAxMy0wNS0yOCAgTGF1cm8gTmV0byA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIFtHVEtdIENvbm5lY3Rpb24gaXNzdWVzIGluIHJlcGVhdGVkIFdlYlByb2Nlc3Mg
Y3Jhc2gvcmVsb2Fkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNTQwN2Y2MDUyZTdjN2JhYzY3
NmIyOGUwYjA4NGVhMGMzNGYxYTg2Ni4uMWM4ZWE4YTFiNTZkYWRmOGRiYzNiM2RlMTFmM2I2YWQ2
ZDc3ZWZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI3NSw2ICsyNzUsOCBAQCBfX1pON1dl
YkNvcmUxM0tleWJvYXJkRXZlbnRDMUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJQTlNfOURPTVdp
bmRvd0VSS05TMV82U3RyaQogX19aTjdXZWJDb3JlMTNLZXlib2FyZEV2ZW50QzFFUktOU18yMVBs
YXRmb3JtS2V5Ym9hcmRFdmVudEVQTlNfOURPTVdpbmRvd0UKIF9fWk43V2ViQ29yZTEzTm9kZVRy
YXZlcnNhbDE5bmV4dEFuY2VzdG9yU2libGluZ0VQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTNO
b2RlVHJhdmVyc2FsOHByZXZpb3VzRVBLTlNfNE5vZGVFUzNfCitfX1pON1dlYkNvcmUxM1BhZ2VU
aHJvdHRsZXIyMnJlcG9ydEludGVyZXN0aW5nRXZlbnRFdgorX19aTjdXZWJDb3JlMTNQYWdlVGhy
b3R0bGVyRDFFdgogX19aTjdXZWJDb3JlMTNRdWFsaWZpZWROYW1lRDFFdgogX19aTjdXZWJDb3Jl
MTNSZXNvdXJjZUVycm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JD
MUVQOV9fQ0ZFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYWMyYjcyYWMyZmNkNGFiM2ZiYzI0NWI3NmEwZTFjMWIxNDNkZjgxMy4uODgzNGNjMTYyYTIz
M2FlMDJhNDUwNzcyNWRmMDVkZTljNGI4Yjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0zNDQsNiArMzQ0LDExIEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhU
TUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtCiBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQiKTsKKworICAgIGlmICgh
bV9wYXVzZWQgJiYgbV9wYWdlVGhyb3R0bGVyKSB7CisgICAgICAgIG1fcGFnZVRocm90dGxlci0+
c3RvcFVudGhyb3R0bGVkRXZlbnQoKTsKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyLmNsZWFyKCk7
CisgICAgfQogICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAg
ZG9jdW1lbnQoKS0+cmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogICAgIHNldFNo
b3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKQEAgLTI0NzcsNiArMjQ4MiwyNSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXkoKQogICAgIHBsYXlJbnRlcm5hbCgpOwogfQogCitQYWdlVGhy
b3R0bGVyKiBIVE1MTWVkaWFFbGVtZW50OjpnZXRUaHJvdHRsZXIoKQoreworICAgIGlmIChtX3Bh
Z2VUaHJvdHRsZXIpCisgICAgICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7CisKKyAg
ICBpZiAoIWRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIG1fcGFnZVRocm90dGxlciA9IHBhZ2Ut
PnBhZ2VUaHJvdHRsZXIoKTsKKyAgICAKKyAgICByZXR1cm4gbV9wYWdlVGhyb3R0bGVyLmdldCgp
OworfQorCitQYWdlVGhyb3R0bGVyKiBIVE1MTWVkaWFFbGVtZW50Ojp0aHJvdHRsZXJJZlByZXNl
bnQoKQoreworICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7Cit9CisKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpwbGF5SW50ZXJuYWwiKTsKQEAgLTI0OTIsNiArMjUxNiw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXIt
PmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKIAogICAgIGlmIChtX3BhdXNlZCkgeworICAg
ICAgICBpZiAoUGFnZVRocm90dGxlciogdGhyb3R0bGVyID0gZ2V0VGhyb3R0bGVyKCkpCisgICAg
ICAgICAgICB0aHJvdHRsZXItPnN0YXJ0VW50aHJvdHRsZWRFdmVudCgpOwogICAgICAgICBtX3Bh
dXNlZCA9IGZhbHNlOwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQpOwpAQCAtMjUwMiw3ICsyNTI4LDYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwoKQogICAgICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KTsKICAgICB9CiAgICAgbV9hdXRv
cGxheWluZyA9IGZhbHNlOwotCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiAgICAgdXBkYXRlTWVk
aWFDb250cm9sbGVyKCk7CiB9CkBAIC0yNTI5LDYgKzI1NTQsOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKIAogICAg
IGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAgaWYgKFBhZ2VUaHJvdHRsZXIqIHRocm90dGxlciA9
IHRocm90dGxlcklmUHJlc2VudCgpKQorICAgICAgICAgICAgdGhyb3R0bGVyLT5zdG9wVW50aHJv
dHRsZWRFdmVudCgpOwogICAgICAgICBtX3BhdXNlZCA9IHRydWU7CiAgICAgICAgIHNjaGVkdWxl
VGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkucGF1c2VFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGMxYTgyZmRiNDE2ZmYyM2FiYzkyZmIzNDQxYzgzYWEwOTJiZDY2MTMuLmExMDEwZjdkODRhODk2
NzI4YzU2ZDRiYzY4NWJjYzQwYTJhMjk1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC01OSwxMCArNTksMTEgQEAgY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBIVE1MU291cmNlRWxlbWVudDsKIGNsYXNzIEhU
TUxUcmFja0VsZW1lbnQ7CitjbGFzcyBLVVJMOwogY2xhc3MgTWVkaWFDb250cm9sbGVyOwogY2xh
c3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
UGFnZVRocm90dGxlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCiBjbGFzcyBXaWRnZXQ7CkBAIC03NTUsNiArNzU2LDEwIEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKICAgICBSZWZQdHI8TWVkaWFDb250
cm9sbGVyPiBtX21lZGlhQ29udHJvbGxlcjsKIAorICAgIFBhZ2VUaHJvdHRsZXIqIGdldFRocm90
dGxlcigpOworICAgIFBhZ2VUaHJvdHRsZXIqIHRocm90dGxlcklmUHJlc2VudCgpOworICAgIFJl
ZlB0cjxQYWdlVGhyb3R0bGVyPiBtX3BhZ2VUaHJvdHRsZXI7CisKICNpZiBQTEFURk9STShNQUMp
CiAgICAgT3duUHRyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCAzM2M2M2E2NmRh
NjEwNzlmNzAwZTlhNzRmMjVlMmNiZWQyYjY2NzM2Li5jYmZhMjFkMDA2MzY0OGUzY2Y0ZDIzNTQ1
MGE4YTBiNDczYTZmYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3Bw
CkBAIC0xODMsNyArMTgzLDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UoKQogICAg
IC8vIFdoZW4gdGhlIHVucGF1c2UoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29u
dHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBjb250cm9sbGVyLAogICAgIGlmICghbV9wYXVzZWQp
CiAgICAgICAgIHJldHVybjsKLQogICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRo
ZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwKICAgICBt
X3BhdXNlZCA9IGZhbHNlOwogICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlhQ29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IDEwN2Y0YzBjZmU1MmNiM2VjOGJkOGJjMGVlNWJiOTIxYTI3NTQ0ZDku
LmVkOGI5NzI3ZjgwYjE1ODM5ZWY3ODQ5NzFjY2MyZGM5ZGFkZjk0ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtMzY2LDYgKzM2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkSGVhZGVyTGF5ZXIoR3JhcGhpY3NMYXllciopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRGb290ZXJMYXllcihHcmFwaGljc0xheWVyKikgeyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgaW5jcmVtZW50QWN0aXZlUGFnZUNvdW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZTg4NDUyNDA1MmZh
YjllNWQ3NGU0NjBmZWMyNGNjYTYxY2NjMDYzOS4uYjc4MmYzYzJhMTIzYWU5NWJiYjA5YjVkYjg4
NDk3YzY4ZGQ5OTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgUGFn
ZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2lzUGFpbnRpbmcoZmFs
c2UpCiAjZW5kaWYKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDbGllbnRzLmFs
dGVybmF0aXZlVGV4dENsaWVudCkKLSAgICAsIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVk
KGZhbHNlKQorICAgICwgbV9wYWdlVGhyb3R0bGVyKFBhZ2VUaHJvdHRsZXI6OmNyZWF0ZSh0aGlz
LCBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpKQogICAgICwgbV9jb25zb2xlKFBhZ2VDb25zb2xl
OjpjcmVhdGUodGhpcykpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKQEAgLTIzMSw2
ICsyMzEsNyBAQCBQYWdlOjp+UGFnZSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHBhZ2VDb3VudGVy
LmRlY3JlbWVudCgpOwogI2VuZGlmCisgICAgbV9wYWdlVGhyb3R0bGVyLT5jbGVhclBhZ2UoKTsK
IAogfQogCkBAIC05NDEsNyArOTQyLDcgQEAgdm9pZCBQYWdlOjp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogCiB2b2lkIFBhZ2U6OnN1c3BlbmRTY3Jp
cHRlZEFuaW1hdGlvbnMoKQogewotICAgIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkID0g
dHJ1ZTsKKyAgICBtX3BhZ2VUaHJvdHRsZXItPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKTsK
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50
KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwpAQCAtOTUwLDIxICs5NTEsMTM1IEBAIHZvaWQgUGFn
ZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCiAKIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25zKCkKIHsKLSAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9IGZh
bHNlOworICAgIG1fcGFnZVRocm90dGxlci0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
KQogICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KIH0KIAotdm9pZCBQYWdlOjpzZXRUaHJvdHRs
ZWQoYm9vbCBpc1Rocm90dGxlZCkKK3ZvaWQgUGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgdGhyb3R0
bGVkKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgbV9wYWdlVGhyb3R0bGVy
LT5zZXRUaHJvdHRsZWQodGhyb3R0bGVkKTsKK30KKworUGFnZVRocm90dGxlcjo6UGFnZVRocm90
dGxlcihQYWdlKiBwYWdlLCBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCkKKyAgICA6IG1fcGFn
ZShwYWdlKQorICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQorICAgICwgbV9zY3Jp
cHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQoZmFsc2UpCisgICAgLCBtX2FjdGl2ZVRocm90dGxlQmxv
Y2tlcnMoMCkKKyAgICAsIG1fdGhyb3R0bGVTdGF0ZShQYWdlTm90VGhyb3R0bGVkU3RhdGUpCisg
ICAgLCBtX3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyKHRoaXMsICZQYWdlVGhyb3R0bGVyOjp0aHJv
dHRsZUh5c3RlcmVzaXNUaW1lckZpcmVkLCBrVGhyb3R0bGVIeXN0ZXJlc2lzKQoreworICAgIGlm
IChtX2Nocm9tZUNsaWVudCkKKyAgICAgICAgbV9jaHJvbWVDbGllbnQtPmluY3JlbWVudEFjdGl2
ZVBhZ2VDb3VudCgpOworfQorCitQYWdlVGhyb3R0bGVyOjp+UGFnZVRocm90dGxlcigpCit7Cisg
ICAgaWYgKG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlVGhyb3R0bGVkU3RhdGUpIHsKKyAgICAgICAg
aWYgKG1fY2hyb21lQ2xpZW50KQorICAgICAgICAgICAgbV9jaHJvbWVDbGllbnQtPmRlY3JlbWVu
dEFjdGl2ZVBhZ2VDb3VudCgpOworICAgIH0KK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjp0aHJv
dHRsZVRoZVdvcmxkKCkKK3sKKyAgICBpZiAobV9jaHJvbWVDbGllbnQpCisgICAgICAgIG1fY2hy
b21lQ2xpZW50LT5kZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKTsKKyAgICBtX3Rocm90dGxlU3Rh
dGUgPSBQYWdlVGhyb3R0bGVkU3RhdGU7CisKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZy
YW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZCh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQg
UGFnZVRocm90dGxlcjo6dW50aHJvdHRsZVRoZVdvcmxkKCkKK3sKKyAgICBpZiAobV9jaHJvbWVD
bGllbnQpCisgICAgICAgIG1fY2hyb21lQ2xpZW50LT5pbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQo
KTsKKyAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlTm90VGhyb3R0bGVkU3RhdGU7CisKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZChp
c1Rocm90dGxlZCk7CisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyU2V0VGhyb3R0bGVkKGZhbHNlKTsKICAgICB9CiB9CiAKK3ZvaWQgUGFn
ZVRocm90dGxlcjo6c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCit7CisgICAgaWYgKGlz
VGhyb3R0bGVkKSB7CisgICAgICAgIGlmICghbV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKQorICAg
ICAgICAgICAgdGhyb3R0bGVUaGVXb3JsZCgpOworICAgICAgICBlbHNlIGlmIChtX3Rocm90dGxl
U3RhdGUgIT0gUGFnZVRocm90dGxlZFN0YXRlKSB7CisgICAgICAgICAgICBtX3Rocm90dGxlU3Rh
dGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICAgICAgICAgIHN0YXJ0VGhyb3R0
bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICB1bnRo
cm90dGxlVGhlV29ybGQoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpzdGFydFVudGhyb3R0
bGVkRXZlbnQoKQoreworICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGV2ZW50cyB0aGF0IGJs
b2NrIHRocm90dGxpbmcgd2UgY2FuIGluY3JlbWVudAorICAgIC8vIGFuZCByZXR1cm4gZWFybHkK
KyAgICBpZiAobV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKyspCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX3Rocm90dGxlU3RhdGUgPT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VUaHJvdHRsZWRTdGF0
ZSkKKyAgICAgICAgdW50aHJvdHRsZVRoZVdvcmxkKCk7CisKKyAgICBtX3Rocm90dGxlU3RhdGUg
PSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lz
VGltZXIoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpzdG9wVW50aHJvdHRsZWRFdmVudCgp
Cit7CisgICAgQVNTRVJUKG1fYWN0aXZlVGhyb3R0bGVCbG9ja2VycyA+IDApOworICAgIGlmICgh
LS1tX2FjdGl2ZVRocm90dGxlQmxvY2tlcnMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X3Rocm90dGxlU3RhdGUgPT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQobV90aHJvdHRsZVN0YXRlID09IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0
YXRlKTsKKyAgICBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Cit9CisKK3ZvaWQgUGFn
ZVRocm90dGxlcjo6c3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKK3sKKyAgICBtX3Rocm90
dGxlSHlzdGVyZXNpc1RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpyZXBv
cnRJbnRlcmVzdGluZ0V2ZW50KCkKK3sKKyAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VO
b3RUaHJvdHRsZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Rocm90dGxlU3Rh
dGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQorICAgICAgICB1bnRocm90dGxlVGhlV29ybGQoKTsK
KyAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICBt
X3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyLnJlc3RhcnQoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0
bGVyOjpzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKK3sKKyAgICBtX3Rocm90dGxlSHlz
dGVyZXNpc1RpbWVyLnJlc3RhcnQoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjp0aHJvdHRs
ZUh5c3RlcmVzaXNUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UGFnZVRocm90dGxl
cj4qKQoreworICAgIEFTU0VSVCghbV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKTsKKyAgICB0aHJv
dHRsZVRoZVdvcmxkKCk7Cit9CisKIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNo
YW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSB0byBhIG1v
ZGVsIG9mIGp1c3QgYmVpbmcgaGFuZGVkIHRoZSBzaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjZTcw
MzczYmUyMDA5MzFiZDAzNjM4YzdiZWQzMTY1OGY2NTdmNDdiLi42NGQzZTgyNGJjMjJlY2JmOTRh
NzQyYTVjNjU0M2E2ZjUxZDk3MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzEsMTEgKzMxLDEzIEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNs
dWRlICJTdXBwbGVtZW50YWJsZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmll
d3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoU09MQVJJUykKQEAgLTEwNyw2ICsxMDksNTUgQEAg
c3RydWN0IEFyZW5hU2l6ZSB7CiAgICAgc2l6ZV90IGFsbG9jYXRlZDsKIH07CiAKK2NsYXNzIFBh
Z2U7CisKK2NsYXNzIFBhZ2VUaHJvdHRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQYWdlVGhyb3R0
bGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGFnZVRocm90dGxlcj4gY3Jl
YXRlKFBhZ2UqIHBhZ2UsIENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYWdlVGhyb3R0bGVyKHBhZ2UsIGNocm9tZUNsaWVudCkp
OworICAgIH0KKworICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpIHsgbV9zY3Jp
cHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSB0cnVlOyB9CisgICAgdm9pZCByZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbnMoKSB7IG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7IH0K
KyAgICBib29sIHNjcmlwdGVkQW5pbWF0aW9uU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0KKyAgICBib29sIHNob3VsZFRocm90dGxlQW5p
bWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhyb3R0
bGVkU3RhdGU7IH0KKyAgICBib29sIHNob3VsZFRocm90dGxlVGltZXJzKCkgY29uc3QgeyByZXR1
cm4gbV90aHJvdHRsZVN0YXRlID09IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZTsgfQorCisgICAgdm9p
ZCBzZXRUaHJvdHRsZWQoYm9vbCk7CisKKyAgICB2b2lkIHN0YXJ0VW50aHJvdHRsZWRFdmVudCgp
OworICAgIHZvaWQgcmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOworICAgIHZvaWQgc3RvcFVudGhy
b3R0bGVkRXZlbnQoKTsKKyAgICB2b2lkIGNsZWFyUGFnZSgpIHsgbV9wYWdlID0gMDsgfQorCisg
ICAgflBhZ2VUaHJvdHRsZXIoKTsKKworcHJpdmF0ZToKKyAgICB0eXBlZGVmIGVudW0geworICAg
ICAgICBQYWdlTm90VGhyb3R0bGVkU3RhdGUsCisgICAgICAgIFBhZ2VXYWl0aW5nVG9UaHJvdHRs
ZVN0YXRlLAorICAgICAgICBQYWdlVGhyb3R0bGVkU3RhdGUKKyAgICB9IFBhZ2VUaHJvdHRsZVN0
YXRlOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtUaHJvdHRsZUh5c3RlcmVzaXMgPSAy
OworCisgICAgUGFnZVRocm90dGxlcihQYWdlKiwgQ2hyb21lQ2xpZW50Kik7CisgICAgUGFnZSog
bV9wYWdlOworICAgIENocm9tZUNsaWVudCogbV9jaHJvbWVDbGllbnQ7CisKKyAgICB2b2lkIHRo
cm90dGxlVGhlV29ybGQoKTsKKyAgICB2b2lkIHVudGhyb3R0bGVUaGVXb3JsZCgpOworCisgICAg
Ym9vbCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZDsKKyAgICB1bnNpZ25lZCBtX2FjdGl2
ZVRocm90dGxlQmxvY2tlcnM7CisgICAgUGFnZVRocm90dGxlU3RhdGUgbV90aHJvdHRsZVN0YXRl
OworICAgIHZvaWQgc3RhcnRUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworICAgIHZvaWQgc3Rv
cFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7CisgICAgdm9pZCB0aHJvdHRsZUh5c3RlcmVzaXNU
aW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UGFnZVRocm90dGxlcj4qKTsKKyAgICBE
ZWZlcnJhYmxlT25lU2hvdFRpbWVyPFBhZ2VUaHJvdHRsZXI+IG1fdGhyb3R0bGVIeXN0ZXJlc2lz
VGltZXI7Cit9OworCiBjbGFzcyBQYWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBmcmllbmQgY2xhc3MgU2V0dGlu
Z3M7CkBAIC0zMDEsNyArMzUyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdXNwZW5kU2NyaXB0
ZWRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnMoKTsKLSAg
ICBib29sIHNjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
aXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkOyB9CisgICAgYm9vbCBzY3JpcHRlZEFuaW1hdGlvbnNT
dXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaHJvdHRsZXItPnNjcmlwdGVkQW5pbWF0
aW9uU3VzcGVuZGVkKCk7IH0KICAgICB2b2lkIHNldFRocm90dGxlZChib29sKTsKIAogICAgIHZv
aWQgdXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKTsKQEAgLTM4OSw2ICs0NDAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzYXdNZWRpYUVuZ2luZShjb25zdCBTdHJpbmcmIGVuZ2luZU5hbWUp
OwogICAgIHZvaWQgcmVzZXRTZWVuTWVkaWFFbmdpbmVzKCk7CiAKKyAgICBQYWdlVGhyb3R0bGVy
KiBwYWdlVGhyb3R0bGVyKCkgeyByZXR1cm4gbV9wYWdlVGhyb3R0bGVyLmdldCgpOyB9CisKICAg
ICBQYWdlQ29uc29sZSogY29uc29sZSgpIHsgcmV0dXJuIG1fY29uc29sZS5nZXQoKTsgfQogCiAj
aWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQpAQCAtNTI2LDcgKzU3
OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIG1fYWx0
ZXJuYXRpdmVUZXh0Q2xpZW50OwogCi0gICAgYm9vbCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3Bl
bmRlZDsKKyAgICBSZWZQdHI8UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOworCiAgICAg
T3duUHRyPFBhZ2VDb25zb2xlPiBtX2NvbnNvbGU7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9z
ZWVuUGx1Z2luczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKaW5kZXggYTlh
ODc2YTFhZDdkMDY0MGRjNjUzMjhmMDdhYzE3MzQwYmRjMjVkMS4uN2MyNzBlODc2Njk4ZWE4NDc4
NjVkNzlmYjQyZjk1MDNiNzE1NTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NoaWxkUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
cy5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKICAg
ICA6IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBtX3Rlcm1pbmF0aW9uQ291bnRlcigw
KQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxk
UHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAs
IG1fYWN0aXZlVGFza0NvdW50KDApCisgICAgLCBtX3Nob3VsZFN1c3BlbmQoZmFsc2UpCisgICAg
LCBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ2hp
bGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyRmlyZWQpCisjZW5kaWYKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCmluZGV4IGMxYTg2NzNhZDZlM2IxZGIx
MjdkMjM0NWU5MjE4MWIzNTQzZGJkMzYuLmJkMmUwYTQyNmI0MDIxNjY1MTU2MjgwNTM0ODdjZmE0
YzkxZjZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKQEAgLTYyLDEwICs2
MiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbjsgfQog
ICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKKyAgICBib29sIHBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9wcm9jZXNzU3VwcHJl
c3Npb25Bc3NlcnRpb247IH0KKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpOwor
ICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KCk7CiAKICAgICB2b2lkIHNldEFwcGxp
Y2F0aW9uSXNEYWVtb24oKTsKKyNlbHNlCisgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVUYXNrQ291
bnQoKSB7IH0KKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpIHsgfQogI2VuZGlm
CiAKICAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpAQCAtMTA5LDYgKzExNCwxMSBAQCBw
cml2YXRlOgogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX21lc3NhZ2VSZWNlaXZl
ck1hcDsKIAogI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHN1c3BlbnNpb25IeXN0ZXJlc2lz
VGltZXJGaXJlZCgpOworICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVy
bmFsKGJvb2wpOworICAgIHNpemVfdCBtX2FjdGl2ZVRhc2tDb3VudDsKKyAgICBib29sIG1fc2hv
dWxkU3VzcGVuZDsKKyAgICBXZWJDb3JlOjpSdW5Mb29wOjpUaW1lcjxDaGlsZFByb2Nlc3M+IG1f
c3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lcjsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcHJvY2Vzc1N1
cHByZXNzaW9uQXNzZXJ0aW9uOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCAwMDM4MWY0MjIwOTU2ZGI0ZmQzMDhkYzM4ZmRl
OTBjMWRjNjE0ODNjLi4yM2U2MTQxZmJjYzMxMGEzNmMzM2E1NmVkNTQ5MDc2MzBiNGZlNWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtNTks
MTMgKzU5LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotdm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9v
bCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQorc3RhdGljIGNvbnN0IGRvdWJsZSBrU3VzcGVu
c2lvbkh5c3RlcmVzaXMgPSAyLjA7CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkSW50ZXJuYWwoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQog
ewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGlmICh0
aGlzLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgPT0gcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX2FjdGl2ZVRhc2tDb3VudCk7CiAgICAgICAgIFtbTlNQ
cm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZW5kQWN0aXZpdHk6bV9wcm9jZXNzU3VwcHJlc3Npb25B
c3NlcnRpb24uZ2V0KCldOwogICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbi5j
bGVhcigpOwogICAgIH0gZWxzZSB7CkBAIC03Nyw2ICs4MCw0NyBAQCB2b2lkIENoaWxkUHJvY2Vz
czo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQpCiAjZW5kaWYKIH0KIAordm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQoreworICAgIGlmICh0
aGlzLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgPT0gcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Nob3VsZFN1c3BlbmQgPT0gcHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hvdWxkU3VzcGVu
ZCA9IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7CisgICAgaWYgKG1fc2hvdWxkU3VzcGVuZCkg
eworICAgICAgICBpZiAoIW1fYWN0aXZlVGFza0NvdW50KQorICAgICAgICAgICAgbV9zdXNwZW5z
aW9uSHlzdGVyZXNpc1RpbWVyLnN0YXJ0T25lU2hvdChrU3VzcGVuc2lvbkh5c3RlcmVzaXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJ
bnRlcm5hbChmYWxzZSk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVU
YXNrQ291bnQoKQoreworICAgIG1fYWN0aXZlVGFza0NvdW50Kys7CisgICAgaWYgKG1fc3VzcGVu
c2lvbkh5c3RlcmVzaXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3N1c3BlbnNpb25IeXN0
ZXJlc2lzVGltZXIuc3RvcCgpOworICAgIGlmIChtX2FjdGl2ZVRhc2tDb3VudCkKKyAgICAgICAg
c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKK30KKwordm9pZCBD
aGlsZFByb2Nlc3M6OmRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCit7CisgICAgQVNTRVJUKG1f
YWN0aXZlVGFza0NvdW50KTsKKyAgICBtX2FjdGl2ZVRhc2tDb3VudC0tOworICAgIGlmIChtX2Fj
dGl2ZVRhc2tDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Nob3VsZFN1c3BlbmQp
CisgICAgICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1c3Bl
bnNpb25IeXN0ZXJlc2lzKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6OnN1c3BlbnNpb25IeXN0
ZXJlc2lzVGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKCFtX2FjdGl2ZVRhc2tDb3VudCk7Cisg
ICAgQVNTRVJUKG1fc2hvdWxkU3VzcGVuZCk7CisgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZEludGVybmFsKHRydWUpOworfQorCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5
KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggMTY2NzExMjk0Y2Qw
NzcxOWFjMzI4OTcxZjU3NGI0OGE5N2U5M2ZiMy4uNGM4N2Q0MzljZTFiOTg1ZjZmYjFiNDY0OWI1
MjVjODkxYWEwYmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jp
cHRDb250cm9sbGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC00OSw4ICs1MCw5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIAotTlBSdW50
aW1lT2JqZWN0TWFwOjpOUFJ1bnRpbWVPYmplY3RNYXAoUGx1Z2luVmlldyogcGx1Z2luVmlldykK
K05QUnVudGltZU9iamVjdE1hcDo6TlBSdW50aW1lT2JqZWN0TWFwKFBsdWdpblZpZXcqIHBsdWdp
blZpZXcsIFBhZ2VUaHJvdHRsZXIqIHBhZ2VUaHJvdHRsZXIpCiAgICAgOiBtX3BsdWdpblZpZXco
cGx1Z2luVmlldykKKyAgICAsIG1fcGFnZVRocm90dGxlcihwYWdlVGhyb3R0bGVyKQogICAgICwg
bV9maW5hbGl6YXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZOUFJ1bnRpbWVPYmpl
Y3RNYXA6OmludmFsaWRhdGVRdWV1ZWRPYmplY3RzKQogewogfQpAQCAtMTgyLDYgKzE4NCw3IEBA
IHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1CiAKIGJvb2wgTlBSdW50aW1lT2JqZWN0TWFwOjpldmFs
dWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IFN0cmluZyYgc2NyaXB0U3RyaW5nLCBOUFZh
cmlhbnQqIHJlc3VsdCkKIHsKKyAgICBtX3BhZ2VUaHJvdHRsZXItPnJlcG9ydEludGVyZXN0aW5n
RXZlbnQoKTsKICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCh0aGlzLT5n
bG9iYWxPYmplY3QoKS0+dm0oKSwgdGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlmICghZ2xv
YmFsT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0
TWFwLmgKaW5kZXggODc0NDI4OWZjYmFjOWNmYzc1ZDVhZDQxYTUxZGE3NzIwOGY5ZWVmZi4uNzU4
NWFmZWNlNThiYWU2ODcwMDRkNDYwNzQ1ODBmMzBkM2E1OTkxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuaApAQCAtNDUsNiArNDUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNWYWx1ZTsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFBhZ2VUaHJv
dHRsZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBKU05QT2JqZWN0OwpAQCAt
NTQsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5WaWV3OwogLy8gQSBwZXIgcGx1Zy1pbiBtYXAgb2Yg
TlBPYmplY3RzIHRoYXQgd3JhcCBKYXZhU2NyaXB0IG9iamVjdHMuCiBjbGFzcyBOUFJ1bnRpbWVP
YmplY3RNYXAgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBOUFJ1bnRpbWVPYmplY3RNYXAoUGx1Z2luVmlldyopOworICAgIGV4cGxpY2l0IE5Q
UnVudGltZU9iamVjdE1hcChQbHVnaW5WaWV3KiwgV2ViQ29yZTo6UGFnZVRocm90dGxlciopOwog
CiAgICAgY2xhc3MgUGx1Z2luUHJvdGVjdG9yIHsKICAgICBwdWJsaWM6CkBAIC05NSw3ICs5OSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlUXVldWVkT2JqZWN0cygpOwogCiAgICAg
UGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwotCisgICAgUmVmUHRyPFdlYkNvcmU6OlBhZ2VUaHJv
dHRsZXI+IG1fcGFnZVRocm90dGxlcjsKICAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBOUEpT
T2JqZWN0Kj4gbV9ucEpTT2JqZWN0czsKICAgICBIYXNoTWFwPE5QT2JqZWN0KiwgSlNDOjpXZWFr
PEpTTlBPYmplY3Q+PiBtX2pzTlBPYmplY3RzOwogICAgIFZlY3RvcjxOUE9iamVjdCo+IG1fbnBP
YmplY3RzVG9GaW5hbGl6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBlYzc5MWY2ZjQ5ZDc5MjM4NDU4YTI5NmI1OTUyMDVjZjFi
MjFjYTVlLi43YzhiOTJhYzM4ZTU2NTgzNjdiOWI3MTEzOWM3YjlhZTBhMjFiZjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0y
NzcsNyArMjc3LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhQYXNzUmVmUHRyPEhUTUxQbHVn
SW5FbGVtZW50PiBwbHVnaW5FbGVtZW50LCBQYXNzUmVmUHRyPFAKICAgICAsIG1faXNCZWluZ0Rl
c3Ryb3llZChmYWxzZSkKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAsIG1fbnBSdW50aW1lT2JqZWN0
TWFwKHRoaXMpCisgICAgLCBtX25wUnVudGltZU9iamVjdE1hcCh0aGlzLCBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPnBhZ2VUaHJvdHRsZXIoKSkKICNlbmRpZgogICAgICwgbV9tYW51YWxTdHJlYW1T
dGF0ZShTdHJlYW1TdGF0ZUluaXRpYWwpCiAgICAgLCBtX3BsdWdpblNuYXBzaG90VGltZXIodGhp
cywgJlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCwgcGx1Z2luU25hcHNob3RU
aW1lckRlbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGI4YzRjY2UxZTQ2MWU2OTgy
ODE2ZDE4NzlkMjE0YzVmYTU2ZmQ0M2EuLjg3M2RiY2MwYTA3YjczMDczYWYyMGIwOGVkYzYyMzAy
ZGFmYmZjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTkwMCw0ICs5MDAsMTQgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEFkZEZvb3RlckxheWVyKEdyYXBoaWNzTGF5ZXIqIGZv
b3RlclBhcmVudCkKICAgICAgICAgYmFubmVyLT5kaWRBZGRQYXJlbnRMYXllcihmb290ZXJQYXJl
bnQpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aW5jcmVtZW50QWN0aXZlUGFnZUNvdW50
KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQo
KTsKK30KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRlY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNzA0
NGI1NGMwNWQxOTExZGNjNDdjZDhjOGRhMjQxM2JhZWQwZTEwMi4uNGVmMjliNWUwN2ViNWFiNGFm
OTJkZWY2MmVhNTRjZTZhNDI4ZmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMzMsNiAr
MjMzLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSGVhZGVyTGF5ZXIoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRG
b290ZXJMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgaW5jcmVtZW50QWN0aXZlUGFnZUNvdW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpIE9WRVJSSURFOworCiAgICAgU3RyaW5n
IG1fY2FjaGVkVG9vbFRpcDsKICAgICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4gbV9jYWNoZWRG
cmFtZVNldExhcmdlc3RGcmFtZTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>203107</attachid>
            <date>2013-05-28 16:59:46 -0700</date>
            <delta_ts>2013-05-28 17:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116893-20130528165856.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203219</attachid>
            <date>2013-05-29 11:14:29 -0700</date>
            <delta_ts>2013-05-29 13:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116893-20130529111337.patch</filename>
            <type>text/plain</type>
            <size>26694</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI2ODA1MDYzOGZiZDVl
ZjI3YzQzMDM5NmE1YjEzYjg5NDE4MmM1Ny4uYjY1NjhjZGYzYmUzYzgwNTg1ZWM2YTQ0MGVjMDNh
ZGQ4OTQ3NmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTA1LTI4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgYWNjdXJhdGUg
YWN0aXZpdHkgc3RhdGUgdHJhY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGh5c3RlcmVzaXMgdG8gUGFnZSBhY3Rpdml0eSB0aHJvdHRs
aW5nLiAgV2UgZG8gdGhpcworICAgICAgICB0aHJvdWdoIGEgUGFnZVRocm90dGxlciBjbGFzcyB0
aGF0IG5vdyBoYW5kbGVzIGVudGVyaW5nIGFuZAorICAgICAgICBleGl0aW5nIHRocm90dGxpbmcg
c3RhdGUsIGFuZCBhZGRzIGEgaHlzdGVyZXNpcyB0byB3ZSBjYW4KKyAgICAgICAgbGltaXQgdGhl
IGFtb3VudCBvZiBvbi9vZmYgYm91bmNpbmcgb24gdGhlIHRocm90dGxlLgorCisgICAgICAgIE1l
ZGlhIGVsZW1lbnRzIG5vdyBtYWtlIHVzZSBvZiB0aGlzIHRvIGRpc2FibGUgdGltZXIgdGhyb3R0
bGluZworICAgICAgICB3aGlsZSB0aGV5IGFyZSBwbGF5aW5nLCBhbmQgcGx1Z2lucyB1c2UgaXQg
dG8gbW9tZW50YXJpbHkgYm91bmNlCisgICAgICAgIGZyb20gdGhyb3R0bGVkIHRvIHVudGhyb3R0
bGVkIHN0YXRlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnBhZ2VUaHJvdHRsZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9NZWRp
YUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjp1bnBhdXNlKToKKyAg
ICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50OjppbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50OjpkZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQpOgorICAgICAgICAoQ2hyb21lQ2xpZW50
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRUaHJvdHRsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6On5QYWdlVGhyb3R0bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRs
ZXI6OmNsZWFyUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjphbGxvd1Ro
cm90dGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6cHJldmVudFRocm90
dGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c2V0VGhyb3R0bGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnRocm90dGxlUGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp1bnRocm90dGxlUGFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlVGhyb3R0bGVyOjpzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6cmVwb3J0SW50ZXJlc3RpbmdFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlzdGVyZXNpc1Rp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFn
ZVRocm90dGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c2hvdWxkVGhyb3R0bGVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnNob3VsZFRocm90dGxlVGltZXJz
KToKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGFnZVRocm90dGxl
cik6CisKIDIwMTMtMDUtMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFkZSBBdWRpb05vZGUgYW4gRXZlbnRUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiY2UyNjJm
MzY3ZmNkOGIxNTQwYWVkYWZjNTg0M2YwZjIxM2QxZDI4Li42YWI2YTljOGZhMDAxYWUzOWUzMGM2
NGU2ZmQzNGM1OTI5ZmJmZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTMtMDUt
MjggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbW9yZSBh
Y2N1cmF0ZSBhY3Rpdml0eSBzdGF0ZSB0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHRlbmRzIHRoZSBsb2dpYyBpbiBXZWJDb3Jl
IGZyb20gYSBQYWdlIHRvIFByb2Nlc3MKKyAgICAgICAgZ3JhbnVsYXJpdHksIHNvIHdlIHdpbGwg
YXZvaWQgbG93ZXJpbmcgdGhlIGNoaWxkIHByb2Nlc3MKKyAgICAgICAgcHJpb3JpdHkgaWYgdGhl
cmUgaXMgYWN0aXZlIGNvbnRlbnQuICBUaGlzIGFsc28gcGx1bWJzIGluCisgICAgICAgIHRoZSBs
b2dpYyB0byBhbGxvdyBwbHVnaW5zIHRvIHJlcG9ydCB0aGF0IHRoZXkgaGF2ZSBkb25lCisgICAg
ICAgIHNvbWV0aGluZyAiaW50ZXJlc3RpbmciLiAgQ3VycmVudGx5IHRoaXMgaXMgc29tZXdoYXQg
Y29uc2VydmF0aXZlCisgICAgICAgIGJ1dCBldmVuIHRoaXMgaXMgc3VmZmljaWVudCB0byBmaXgg
c29tZSBzdHV0dGVyaW5nIGlzc3VlcworICAgICAgICB0aGF0IHdlJ3ZlIHNlZW4uCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9j
ZXNzOjpDaGlsZFByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3MuaDoKKyAg
ICAgICAgKENoaWxkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6cHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6
aW5jcmVtZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNz
OjpkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQ
cm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkSW50ZXJuYWwpOgorICAgICAgICAo
V2ViS2l0OjpDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6ZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVy
RmlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6Ok5QUnVu
dGltZU9iamVjdE1hcCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6ZXZh
bHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTlBSdW50aW1lT2JqZWN0
TWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjppbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpkZWNyZW1lbnRBY3RpdmVQ
YWdlQ291bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorCiAyMDEzLTA1LTI4ICBMYXVy
byBOZXRvIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0dUS10gQ29ubmVj
dGlvbiBpc3N1ZXMgaW4gcmVwZWF0ZWQgV2ViUHJvY2VzcyBjcmFzaC9yZWxvYWRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA1NDA3ZjYwNTJlN2M3YmFjNjc2YjI4ZTBiMDg0ZWEwYzM0ZjFhODY2
Li4xYzhlYThhMWI1NmRhZGY4ZGJjM2IzZGUxMWYzYjZhZDZkNzdlZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMjc1LDYgKzI3NSw4IEBAIF9fWk43V2ViQ29yZTEzS2V5Ym9hcmRFdmVudEMx
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0ViYlBOU185RE9NV2luZG93RVJLTlMxXzZTdHJpCiBfX1pO
N1dlYkNvcmUxM0tleWJvYXJkRXZlbnRDMUVSS05TXzIxUGxhdGZvcm1LZXlib2FyZEV2ZW50RVBO
U185RE9NV2luZG93RQogX19aTjdXZWJDb3JlMTNOb2RlVHJhdmVyc2FsMTluZXh0QW5jZXN0b3JT
aWJsaW5nRVBLTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM05vZGVUcmF2ZXJzYWw4cHJldmlvdXNF
UEtOU180Tm9kZUVTM18KK19fWk43V2ViQ29yZTEzUGFnZVRocm90dGxlcjIycmVwb3J0SW50ZXJl
c3RpbmdFdmVudEV2CitfX1pON1dlYkNvcmUxM1BhZ2VUaHJvdHRsZXJEMUV2CiBfX1pON1dlYkNv
cmUxM1F1YWxpZmllZE5hbWVEMUV2CiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQN05T
RXJyb3IKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMxRVA5X19DRkVycm9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhYzJiNzJhYzJmY2Q0YWIzZmJj
MjQ1Yjc2YTBlMWMxYjE0M2RmODEzLi42OGQ2OWFjOGNiYjRmOGNjZjA0NmFlZGUwZWNjOTFhNDQw
ZjFmMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM0
NCw2ICszNDQsMTEgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KIEhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCIpOworCisgICAgaWYgKCFtX3BhdXNlZCAmJiBtX3BhZ2VUaHJv
dHRsZXIpIHsKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyLT5hbGxvd1Rocm90dGxpbmcoKTsKKyAg
ICAgICAgbV9wYWdlVGhyb3R0bGVyLmNsZWFyKCk7CisgICAgfQogICAgIGlmIChtX2lzV2FpdGlu
Z1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlTWVkaWFDYW5T
dGFydExpc3RlbmVyKHRoaXMpOwogICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsK
QEAgLTI0NzcsNiArMjQ4MiwyMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoKQogICAg
IHBsYXlJbnRlcm5hbCgpOwogfQogCitQYWdlVGhyb3R0bGVyKiBIVE1MTWVkaWFFbGVtZW50Ojpw
YWdlVGhyb3R0bGVySWZQb3NzaWJsZSgpCit7CisgICAgaWYgKG1fcGFnZVRocm90dGxlcikKKyAg
ICAgICAgcmV0dXJuIG1fcGFnZVRocm90dGxlci5nZXQoKTsKKworICAgIGlmICghZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKSkKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyID0gcGFnZS0+cGFnZVRocm90dGxlcigp
OworICAgIAorICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7Cit9CisKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpwbGF5SW50ZXJuYWwiKTsKQEAgLTI0OTIsNiArMjUxMSw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICAgICAgbV9tZWRpYUNvbnRyb2xsZXIt
PmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKIAogICAgIGlmIChtX3BhdXNlZCkgeworICAg
ICAgICBpZiAoUGFnZVRocm90dGxlciogdGhyb3R0bGVyID0gcGFnZVRocm90dGxlcklmUG9zc2li
bGUoKSkKKyAgICAgICAgICAgIHRocm90dGxlci0+cHJldmVudFRocm90dGxpbmcoKTsKICAgICAg
ICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAg
ICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKQEAgLTI1MDIsNyAr
MjUyMyw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CiAgICAgfQogICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKLQogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwogICAgIHVw
ZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQpAQCAtMjUyOSw2ICsyNTQ5LDggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7
CiAKICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAgIGlmIChQYWdlVGhyb3R0bGVyKiB0aHJv
dHRsZXIgPSBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCkpCisgICAgICAgICAgICB0aHJvdHRsZXItPnBy
ZXZlbnRUaHJvdHRsaW5nKCk7CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgc2No
ZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS5wYXVzZUV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggYzFhODJmZGI0MTZmZjIzYWJjOTJmYjM0NDFjODNhYTA5MmJkNjYxMy4uNDU2Yzc2ZmFj
MDViZGMzYmUwZWIzMTQ4MzQ5M2M3ODM1MGY0YzI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTU5LDEwICs1OSwxMSBAQCBjbGFzcyBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50OwogY2xh
c3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIEtVUkw7CiBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7
CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3MgTWVkaWFFcnJvcjsKLWNsYXNzIEtVUkw7Citj
bGFzcyBQYWdlVGhyb3R0bGVyOwogY2xhc3MgVGltZVJhbmdlczsKICNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKIGNsYXNzIFdpZGdldDsKQEAgLTc1NSw2ICs3NTYsOSBAQCBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiAgICAgUmVmUHRyPE1lZGlh
Q29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7CiAKKyAgICBQYWdlVGhyb3R0bGVyKiBwYWdl
VGhyb3R0bGVySWZQb3NzaWJsZSgpOworICAgIFJlZlB0cjxQYWdlVGhyb3R0bGVyPiBtX3BhZ2VU
aHJvdHRsZXI7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgT3duUHRyPERpc3BsYXlTbGVlcERp
c2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFD
b250cm9sbGVyLmNwcAppbmRleCAzM2M2M2E2NmRhNjEwNzlmNzAwZTlhNzRmMjVlMmNiZWQyYjY2
NzM2Li5jYmZhMjFkMDA2MzY0OGUzY2Y0ZDIzNTQ1MGE4YTBiNDczYTZmYWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC0xODMsNyArMTgzLDYgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UoKQogICAgIC8vIFdoZW4gdGhlIHVucGF1c2UoKSBtZXRo
b2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBhdXNlZCBtZWRpYSBj
b250cm9sbGVyLAogICAgIGlmICghbV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKLQogICAgIC8v
IHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIgaW50byBhIHBs
YXlpbmcgbWVkaWEgY29udHJvbGxlciwKICAgICBtX3BhdXNlZCA9IGZhbHNlOwogICAgIC8vIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBsYXkgYXQgdGhlIE1lZGlh
Q29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDEwN2Y0YzBjZmU1
MmNiM2VjOGJkOGJjMGVlNWJiOTIxYTI3NTQ0ZDkuLmVkOGI5NzI3ZjgwYjE1ODM5ZWY3ODQ5NzFj
Y2MyZGM5ZGFkZjk0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzY2LDYg
KzM2Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSGVhZGVyTGF5ZXIoR3Jh
cGhpY3NMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRGb290ZXJMYXllcihHcmFw
aGljc0xheWVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWN0aXZlUGFnZUNv
dW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpIHsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggZTg4NDUyNDA1MmZhYjllNWQ3NGU0NjBmZWMyNGNjYTYxY2NjMDYz
OS4uMmI3YzQ1NmZmM2EwOTIzN2UxMGUwNGIwNTE1NjM1MGE2ODhiNGNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xODQsNiArMTg0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjZW5kaWYKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDbGllbnRz
LmFsdGVybmF0aXZlVGV4dENsaWVudCkKICAgICAsIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVu
ZGVkKGZhbHNlKQorICAgICwgbV9wYWdlVGhyb3R0bGVyKFBhZ2VUaHJvdHRsZXI6OmNyZWF0ZSh0
aGlzLCBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpKQogICAgICwgbV9jb25zb2xlKFBhZ2VDb25z
b2xlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKQEAgLTIz
MSw2ICsyMzIsNyBAQCBQYWdlOjp+UGFnZSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHBhZ2VDb3Vu
dGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCisgICAgbV9wYWdlVGhyb3R0bGVyLT5jbGVhclBhZ2Uo
KTsKIAogfQogCkBAIC05NTcsMTQgKzk1OSwxNDAgQEAgdm9pZCBQYWdlOjpyZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbnMoKQogICAgIH0KIH0KIAotdm9pZCBQYWdlOjpzZXRUaHJvdHRsZWQoYm9vbCBp
c1Rocm90dGxlZCkKK3ZvaWQgUGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgdGhyb3R0bGVkKQogewot
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgbV9wYWdlVGhyb3R0bGVyLT5zZXRUaHJv
dHRsZWQodGhyb3R0bGVkKTsKK30KKworc3RhdGljIGNvbnN0IGRvdWJsZSBrVGhyb3R0bGVIeXN0
ZXJlc2lzU2Vjb25kcyA9IDIuMDsKKworUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcihQYWdl
KiBwYWdlLCBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCkKKyAgICA6IG1fcGFnZShwYWdlKQor
ICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQorICAgICwgbV9hY3RpdmVUaHJvdHRs
ZUJsb2NrZXJzKDApCisgICAgLCBtX3Rocm90dGxlU3RhdGUoUGFnZU5vdFRocm90dGxlZFN0YXRl
KQorICAgICwgbV90aHJvdHRsZUh5c3RlcmVzaXNUaW1lcih0aGlzLCAmUGFnZVRocm90dGxlcjo6
dGhyb3R0bGVIeXN0ZXJlc2lzVGltZXJGaXJlZCkKK3sKKyAgICBpZiAobV9jaHJvbWVDbGllbnQp
CisgICAgICAgIG1fY2hyb21lQ2xpZW50LT5pbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKTsKK30K
KworUGFnZVRocm90dGxlcjo6flBhZ2VUaHJvdHRsZXIoKQoreworICAgIGlmIChtX3Rocm90dGxl
U3RhdGUgIT0gUGFnZVRocm90dGxlZFN0YXRlKSB7CisgICAgICAgIGlmIChtX2Nocm9tZUNsaWVu
dCkKKyAgICAgICAgICAgIG1fY2hyb21lQ2xpZW50LT5kZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQo
KTsKKyAgICB9Cit9CisKK3ZvaWQgUGFnZVRocm90dGxlcjo6Y2xlYXJQYWdlKCkKK3sKKyAgICBz
ZXRUaHJvdHRsZWQoZmFsc2UpOworICAgIG1fcGFnZSA9IDA7CisgICAgbV9jaHJvbWVDbGllbnQg
PSAwOworfQorCit2b2lkIFBhZ2VUaHJvdHRsZXI6OnRocm90dGxlUGFnZSgpCit7CisgICAgaWYg
KG1fY2hyb21lQ2xpZW50KQorICAgICAgICBtX2Nocm9tZUNsaWVudC0+ZGVjcmVtZW50QWN0aXZl
UGFnZUNvdW50KCk7CisKKyAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlVGhyb3R0bGVkU3RhdGU7
CisKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRo
cm90dGxlZChpc1Rocm90dGxlZCk7CisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyU2V0VGhyb3R0bGVkKHRydWUpOwogICAgIH0KIH0KIAor
dm9pZCBQYWdlVGhyb3R0bGVyOjp1bnRocm90dGxlUGFnZSgpCit7CisgICAgaWYgKG1fY2hyb21l
Q2xpZW50KQorICAgICAgICBtX2Nocm9tZUNsaWVudC0+aW5jcmVtZW50QWN0aXZlUGFnZUNvdW50
KCk7CisKKyAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlTm90VGhyb3R0bGVkU3RhdGU7CisKKyAg
ICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxl
ZChmYWxzZSk7CisgICAgfQorfQorCit2b2lkIFBhZ2VUaHJvdHRsZXI6OnNldFRocm90dGxlZChi
b29sIGlzVGhyb3R0bGVkKQoreworICAgIGlmIChpc1Rocm90dGxlZCkgeworICAgICAgICBtX3Ro
cm90dGxlU3RhdGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKKyAgICAgICAgc3RhcnRU
aHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVudGhyb3R0
bGVQYWdlKCk7CisgICAgICAgIHN0b3BUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworICAgIH0K
K30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpwcmV2ZW50VGhyb3R0bGluZygpCit7CisgICAgLy8g
SWYgd2UndmUgYWxyZWFkeSBnb3QgZXZlbnRzIHRoYXQgYmxvY2sgdGhyb3R0bGluZyB3ZSBjYW4g
aW5jcmVtZW50CisgICAgLy8gYW5kIHJldHVybiBlYXJseQorICAgIGlmIChtX2FjdGl2ZVRocm90
dGxlQmxvY2tlcnMrKykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdGhyb3R0bGVTdGF0
ZSA9PSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X3Rocm90dGxlU3RhdGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQorICAgICAgICB1bnRocm90dGxl
UGFnZSgpOworCisgICAgbV90aHJvdHRsZVN0YXRlID0gUGFnZVdhaXRpbmdUb1Rocm90dGxlU3Rh
dGU7CisgICAgc3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Cit9CisKK3ZvaWQgUGFnZVRo
cm90dGxlcjo6YWxsb3dUaHJvdHRsaW5nKCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVUaHJvdHRs
ZUJsb2NrZXJzID4gMCk7CisgICAgbV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzLS07CisgICAgaWYg
KG1fYWN0aXZlVGhyb3R0bGVCbG9ja2VycykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
dGhyb3R0bGVTdGF0ZSA9PSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChtX3Rocm90dGxlU3RhdGUgPT0gUGFnZVdhaXRpbmdUb1Rocm90dGxlU3Rh
dGUpOworICAgIHN0YXJ0VGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKK30KKwordm9pZCBQYWdl
VGhyb3R0bGVyOjpzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKQoreworICAgIG1fdGhyb3R0
bGVIeXN0ZXJlc2lzVGltZXIuc3RvcCgpOworfQorCit2b2lkIFBhZ2VUaHJvdHRsZXI6OnJlcG9y
dEludGVyZXN0aW5nRXZlbnQoKQoreworICAgIGlmIChtX3Rocm90dGxlU3RhdGUgPT0gUGFnZU5v
dFRocm90dGxlZFN0YXRlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fdGhyb3R0bGVTdGF0
ZSA9PSBQYWdlVGhyb3R0bGVkU3RhdGUpCisgICAgICAgIHVudGhyb3R0bGVQYWdlKCk7CisgICAg
bV90aHJvdHRsZVN0YXRlID0gUGFnZVdhaXRpbmdUb1Rocm90dGxlU3RhdGU7CisgICAgc3RhcnRU
aHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworfQorCit2b2lkIFBhZ2VUaHJvdHRsZXI6OnN0YXJ0
VGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKQoreworICAgIGlmIChtX3Rocm90dGxlSHlzdGVyZXNp
c1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIuc3Rv
cCgpOworICAgIGlmICghbV9hY3RpdmVUaHJvdHRsZUJsb2NrZXJzKQorICAgICAgICBtX3Rocm90
dGxlSHlzdGVyZXNpc1RpbWVyLnN0YXJ0T25lU2hvdChrVGhyb3R0bGVIeXN0ZXJlc2lzU2Vjb25k
cyk7Cit9CisKK3ZvaWQgUGFnZVRocm90dGxlcjo6dGhyb3R0bGVIeXN0ZXJlc2lzVGltZXJGaXJl
ZChUaW1lcjxQYWdlVGhyb3R0bGVyPiopCit7CisgICAgQVNTRVJUKCFtX2FjdGl2ZVRocm90dGxl
QmxvY2tlcnMpOworICAgIHRocm90dGxlUGFnZSgpOworfQorCiB2b2lkIFBhZ2U6OnVzZXJTdHls
ZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3
aWxsIG1vdmUgdG8gYSBtb2RlbCBvZiBqdXN0IGJlaW5nIGhhbmRlZCB0aGUgc2hlZXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggY2U3MDM3M2JlMjAwOTMxYmQwMzYzOGM3YmVkMzE2NThmNjU3ZjQ3Yi4uYjNk
MGU3NWYxMjE4Mjk0YjIzZWFiZGM2Zjc4M2FhMTczMGRjMzVjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTMxLDExICszMSwxMyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAi
UmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIE9TKFNPTEFSSVMpCkBAIC0x
MDcsOSArMTA5LDU1IEBAIHN0cnVjdCBBcmVuYVNpemUgewogICAgIHNpemVfdCBhbGxvY2F0ZWQ7
CiB9OwogCitjbGFzcyBQYWdlOworCitjbGFzcyBQYWdlVGhyb3R0bGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8UGFnZVRocm90dGxlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBh
Z2VUaHJvdHRsZXI+IGNyZWF0ZShQYWdlKiBwYWdlLCBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVu
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFnZVRocm90dGxlcihwYWdl
LCBjaHJvbWVDbGllbnQpKTsKKyAgICB9CisKKyAgICBib29sIHNob3VsZFRocm90dGxlQW5pbWF0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhyb3R0bGVk
U3RhdGU7IH0KKyAgICBib29sIHNob3VsZFRocm90dGxlVGltZXJzKCkgY29uc3QgeyByZXR1cm4g
bV90aHJvdHRsZVN0YXRlID09IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZTsgfQorCisgICAgdm9pZCBz
ZXRUaHJvdHRsZWQoYm9vbCk7CisKKyAgICB2b2lkIHByZXZlbnRUaHJvdHRsaW5nKCk7CisgICAg
dm9pZCByZXBvcnRJbnRlcmVzdGluZ0V2ZW50KCk7CisgICAgdm9pZCBhbGxvd1Rocm90dGxpbmco
KTsKKyAgICB2b2lkIGNsZWFyUGFnZSgpOworCisgICAgflBhZ2VUaHJvdHRsZXIoKTsKKworcHJp
dmF0ZToKKyAgICB0eXBlZGVmIGVudW0geworICAgICAgICBQYWdlTm90VGhyb3R0bGVkU3RhdGUs
CisgICAgICAgIFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlLAorICAgICAgICBQYWdlVGhyb3R0
bGVkU3RhdGUKKyAgICB9IFBhZ2VUaHJvdHRsZVN0YXRlOworCisgICAgUGFnZVRocm90dGxlcihQ
YWdlKiwgQ2hyb21lQ2xpZW50Kik7CisgICAgdm9pZCBzdGFydFRocm90dGxlSHlzdGVyZXNpc1Rp
bWVyKCk7CisgICAgdm9pZCBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICB2b2lk
IHRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQoVGltZXI8UGFnZVRocm90dGxlcj4qKTsKKwor
ICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBDaHJvbWVDbGllbnQqIG1fY2hyb21lQ2xpZW50OworCisg
ICAgdm9pZCB0aHJvdHRsZVBhZ2UoKTsKKyAgICB2b2lkIHVudGhyb3R0bGVQYWdlKCk7CisKKyAg
ICB1bnNpZ25lZCBtX2FjdGl2ZVRocm90dGxlQmxvY2tlcnM7CisgICAgUGFnZVRocm90dGxlU3Rh
dGUgbV90aHJvdHRsZVN0YXRlOworICAgIFRpbWVyPFBhZ2VUaHJvdHRsZXI+IG1fdGhyb3R0bGVI
eXN0ZXJlc2lzVGltZXI7Cit9OworCiBjbGFzcyBQYWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxl
PFBhZ2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBmcmllbmQgY2xh
c3MgU2V0dGluZ3M7CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VUaHJvdHRsZXI7CisKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJ
bkVudmlyb25tZW50KCk7CiAKQEAgLTM4OSw2ICs0MzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
YXdNZWRpYUVuZ2luZShjb25zdCBTdHJpbmcmIGVuZ2luZU5hbWUpOwogICAgIHZvaWQgcmVzZXRT
ZWVuTWVkaWFFbmdpbmVzKCk7CiAKKyAgICBQYWdlVGhyb3R0bGVyKiBwYWdlVGhyb3R0bGVyKCkg
eyByZXR1cm4gbV9wYWdlVGhyb3R0bGVyLmdldCgpOyB9CisKICAgICBQYWdlQ29uc29sZSogY29u
c29sZSgpIHsgcmV0dXJuIG1fY29uc29sZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKEhJRERFTl9Q
QUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQpAQCAtNTI3LDYgKzU3Nyw4IEBAIHByaXZhdGU6CiAg
ICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsKIAogICAg
IGJvb2wgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7CisgICAgUmVmUHRyPFBhZ2VUaHJv
dHRsZXI+IG1fcGFnZVRocm90dGxlcjsKKwogICAgIE93blB0cjxQYWdlQ29uc29sZT4gbV9jb25z
b2xlOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2VlblBsdWdpbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IGE5YTg3NmExYWQ3ZDA2NDBkYzY1MzI4ZjA3YWMx
NzM0MGJkYzI1ZDEuLjdjMjcwZTg3NjY5OGVhODQ3ODY1ZDc5ZmI0MmY5NTAzYjcxNTU5MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC00MCw2ICs0MCwxMSBAQCBD
aGlsZFByb2Nlc3M6OkNoaWxkUHJvY2VzcygpCiAgICAgOiBtX3Rlcm1pbmF0aW9uVGltZW91dCgw
KQogICAgICwgbV90ZXJtaW5hdGlvbkNvdW50ZXIoMCkKICAgICAsIG1fdGVybWluYXRpb25UaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDaGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGltZXJG
aXJlZCkKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBtX2FjdGl2ZVRhc2tDb3VudCgwKQorICAg
ICwgbV9zaG91bGRTdXNwZW5kKGZhbHNlKQorICAgICwgbV9zdXNwZW5zaW9uSHlzdGVyZXNpc1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNoaWxkUHJvY2Vzczo6c3VzcGVuc2lvbkh5c3Rl
cmVzaXNUaW1lckZpcmVkKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFBy
b2Nlc3MuaAppbmRleCBjMWE4NjczYWQ2ZTNiMWRiMTI3ZDIzNDVlOTIxODFiMzU0M2RiZDM2Li5i
ZDJlMGE0MjZiNDAyMTY2NTE1NjI4MDUzNDg3Y2ZhNGM5MWY2ZTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NoaWxkUHJvY2Vzcy5oCkBAIC02MiwxMCArNjIsMTUgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9w
cm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb247IH0KICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uOyB9CisgICAgdm9p
ZCBpbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVRh
c2tDb3VudCgpOwogCiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7CisjZWxzZQor
ICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlVGFza0NvdW50KCkgeyB9CisgICAgdm9pZCBkZWNyZW1l
bnRBY3RpdmVUYXNrQ291bnQoKSB7IH0KICNlbmRpZgogCiAgICAgQ29yZUlQQzo6Q29ubmVjdGlv
biogcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24u
Z2V0KCk7IH0KQEAgLTEwOSw2ICsxMTQsMTEgQEAgcHJpdmF0ZToKICAgICBDb3JlSVBDOjpNZXNz
YWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAKICNpZiBQTEFURk9STShNQUMp
CisgICAgdm9pZCBzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHNl
dFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbChib29sKTsKKyAgICBzaXplX3QgbV9h
Y3RpdmVUYXNrQ291bnQ7CisgICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQ7CisgICAgV2ViQ29yZTo6
UnVuTG9vcDo6VGltZXI8Q2hpbGRQcm9jZXNzPiBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXI7
CiAgICAgUmV0YWluUHRyPGlkPiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbjsKICNlbmRp
ZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNz
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5k
ZXggMDAzODFmNDIyMDk1NmRiNGZkMzA4ZGMzOGZkZTkwYzFkYzYxNDgzYy4uNWI1ZGFiZDQ2MWM2
OWJmNmQ1NDQyYjNlYzc2Mjc1YmE1NmNhODRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTU5LDEzICs1OSwxNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQ2hpbGRQcm9jZXNzOjpz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCkKK3N0YXRpYyBjb25zdCBkb3VibGUga1N1c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyA9IDUu
MDsKKwordm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRl
cm5hbChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCiB7CiAjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaWYgKHRoaXMtPnByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoKSA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkgeworICAgICAgICBBU1NF
UlQoIW1fYWN0aXZlVGFza0NvdW50KTsKICAgICAgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXSBlbmRBY3Rpdml0eTptX3Byb2Nlc3NTdXBwcmVzc2lvbkFzc2VydGlvbi5nZXQoKV07CiAg
ICAgICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uLmNsZWFyKCk7CiAgICAgfSBlbHNl
IHsKQEAgLTc3LDYgKzgwLDQ3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKICNlbmRpZgogfQog
Cit2b2lkIENoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCit7CisgICAgaWYgKHRoaXMtPnByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQoKSA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKG1fc2hvdWxkU3VzcGVuZCA9PSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRTdXNwZW5kID0gcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZDsKKyAgICBpZiAobV9zaG91bGRTdXNwZW5kKSB7CisgICAgICAgIGlmICghbV9h
Y3RpdmVUYXNrQ291bnQpCisgICAgICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIu
c3RhcnRPbmVTaG90KGtTdXNwZW5zaW9uSHlzdGVyZXNpc1NlY29uZHMpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbChmYWxz
ZSk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKQor
eworICAgIG1fYWN0aXZlVGFza0NvdW50Kys7CisgICAgaWYgKG1fc3VzcGVuc2lvbkh5c3RlcmVz
aXNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIu
c3RvcCgpOworICAgIGlmIChtX2FjdGl2ZVRhc2tDb3VudCkKKyAgICAgICAgc2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6
OmRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlVGFza0Nv
dW50KTsKKyAgICBtX2FjdGl2ZVRhc2tDb3VudC0tOworICAgIGlmIChtX2FjdGl2ZVRhc2tDb3Vu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Nob3VsZFN1c3BlbmQpCisgICAgICAgIG1f
c3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1N1c3BlbnNpb25IeXN0ZXJl
c2lzU2Vjb25kcyk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNp
c1RpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCghbV9hY3RpdmVUYXNrQ291bnQpOworICAgIEFT
U0VSVChtX3Nob3VsZFN1c3BlbmQpOworICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRJ
bnRlcm5hbCh0cnVlKTsKK30KKwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRpbWVyQ29hbGVzY2luZ1BvbGljeSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDE2NjcxMTI5NGNkMDc3MTlh
YzMyODk3MWY1NzRiNDhhOTdlOTNmYjMuLjRjODdkNDM5Y2UxYjk4NWY2ZmIxYjQ2NDliNTI1Yzg5
MWFhMGJlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC00MSw2ICs0
MSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29u
dHJvbGxlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDksOCArNTAsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAKLU5QUnVudGltZU9i
amVjdE1hcDo6TlBSdW50aW1lT2JqZWN0TWFwKFBsdWdpblZpZXcqIHBsdWdpblZpZXcpCitOUFJ1
bnRpbWVPYmplY3RNYXA6Ok5QUnVudGltZU9iamVjdE1hcChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3
LCBQYWdlVGhyb3R0bGVyKiBwYWdlVGhyb3R0bGVyKQogICAgIDogbV9wbHVnaW5WaWV3KHBsdWdp
blZpZXcpCisgICAgLCBtX3BhZ2VUaHJvdHRsZXIocGFnZVRocm90dGxlcikKICAgICAsIG1fZmlu
YWxpemF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTlBSdW50aW1lT2JqZWN0TWFw
OjppbnZhbGlkYXRlUXVldWVkT2JqZWN0cykKIHsKIH0KQEAgLTE4Miw2ICsxODQsNyBAQCB2b2lk
IE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdQogCiBib29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUo
TlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBWYXJpYW50
KiByZXN1bHQpCiB7CisgICAgbV9wYWdlVGhyb3R0bGVyLT5yZXBvcnRJbnRlcmVzdGluZ0V2ZW50
KCk7CiAgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QodGhpcy0+Z2xvYmFs
T2JqZWN0KCktPnZtKCksIHRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIWdsb2JhbE9i
amVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5o
CmluZGV4IDg3NDQyODlmY2JhYzljZmM3NWQ1YWQ0MWE1MWRhNzcyMDhmOWVlZmYuLjc1ODVhZmVj
ZTU4YmFlNjg3MDA0ZDQ2MDc0NTgwZjMwZDNhNTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2Jq
ZWN0TWFwLmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
VmFsdWU7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBQYWdlVGhyb3R0bGVy
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSlNOUE9iamVjdDsKQEAgLTU0LDcg
KzU4LDcgQEAgY2xhc3MgUGx1Z2luVmlldzsKIC8vIEEgcGVyIHBsdWctaW4gbWFwIG9mIE5QT2Jq
ZWN0cyB0aGF0IHdyYXAgSmF2YVNjcmlwdCBvYmplY3RzLgogY2xhc3MgTlBSdW50aW1lT2JqZWN0
TWFwIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgTlBSdW50aW1lT2JqZWN0TWFwKFBsdWdpblZpZXcqKTsKKyAgICBleHBsaWNpdCBOUFJ1bnRp
bWVPYmplY3RNYXAoUGx1Z2luVmlldyosIFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXIqKTsKIAogICAg
IGNsYXNzIFBsdWdpblByb3RlY3RvciB7CiAgICAgcHVibGljOgpAQCAtOTUsNyArOTksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMoKTsKIAogICAgIFBsdWdp
blZpZXcqIG1fcGx1Z2luVmlldzsKLQorICAgIFJlZlB0cjxXZWJDb3JlOjpQYWdlVGhyb3R0bGVy
PiBtX3BhZ2VUaHJvdHRsZXI7CiAgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgTlBKU09iamVj
dCo+IG1fbnBKU09iamVjdHM7CiAgICAgSGFzaE1hcDxOUE9iamVjdCosIEpTQzo6V2VhazxKU05Q
T2JqZWN0Pj4gbV9qc05QT2JqZWN0czsKICAgICBWZWN0b3I8TlBPYmplY3QqPiBtX25wT2JqZWN0
c1RvRmluYWxpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggZWM3OTFmNmY0OWQ3OTIzODQ1OGEyOTZiNTk1MjA1Y2YxYjIxY2E1
ZS4uN2M4YjkyYWMzOGU1NjU4MzY3YjliNzExMzljN2I5YWUwYTIxYmY2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjc3LDcg
KzI3Nyw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoUGFzc1JlZlB0cjxIVE1MUGx1Z0luRWxl
bWVudD4gcGx1Z2luRWxlbWVudCwgUGFzc1JlZlB0cjxQCiAgICAgLCBtX2lzQmVpbmdEZXN0cm95
ZWQoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgLCBtX25wUnVudGltZU9iamVjdE1hcCh0
aGlzKQorICAgICwgbV9ucFJ1bnRpbWVPYmplY3RNYXAodGhpcywgbV93ZWJQYWdlLT5jb3JlUGFn
ZSgpLT5wYWdlVGhyb3R0bGVyKCkpCiAjZW5kaWYKICAgICAsIG1fbWFudWFsU3RyZWFtU3RhdGUo
U3RyZWFtU3RhdGVJbml0aWFsKQogICAgICwgbV9wbHVnaW5TbmFwc2hvdFRpbWVyKHRoaXMsICZQ
bHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQsIHBsdWdpblNuYXBzaG90VGltZXJE
ZWxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBiOGM0Y2NlMWU0NjFlNjk4MjgxNmQx
ODc5ZDIxNGM1ZmE1NmZkNDNhLi44NzNkYmNjMGEwN2I3MzA3M2FmMjBiMDhlZGM2MjMwMmRhZmJm
YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05MDAsNCArOTAwLDE0IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpkaWRBZGRGb290ZXJMYXllcihHcmFwaGljc0xheWVyKiBmb290ZXJQ
YXJlbnQpCiAgICAgICAgIGJhbm5lci0+ZGlkQWRkUGFyZW50TGF5ZXIoZm9vdGVyUGFyZW50KTsK
IH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmluY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpCit7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5jcmVtZW50QWN0aXZlVGFza0NvdW50KCk7Cit9
CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmRlY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDcwNDRiNTRj
MDVkMTkxMWRjYzQ3Y2Q4YzhkYTI0MTNiYWVkMGUxMDIuLjRlZjI5YjVlMDdlYjVhYjRhZjkyZGVm
NjJlYTU0Y2U2YTQyOGZlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjMzLDYgKzIzMyw5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhlYWRlckxheWVyKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkRm9vdGVy
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2
b2lkIGluY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKSBPVkVSUklERTsKKwogICAgIFN0cmluZyBtX2Nh
Y2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+IG1fY2FjaGVkRnJhbWVT
ZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9y
aXpvbnRhbFNjcm9sbGJhcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203266</attachid>
            <date>2013-05-29 13:23:01 -0700</date>
            <delta_ts>2013-05-29 16:12:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116893-20130529132209.patch</filename>
            <type>text/plain</type>
            <size>40398</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVkMzY0Mjk1MDZlZjA2
MTE1MTY1YTVhZWY4MmNjYTBkNjEwY2U1OS4uYzVlYjM0YTRjYTY3ZjYxNzc4MTA3YmNmZDNiNDIy
YzkzYWJhNGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEzLTA1LTI4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgYWNjdXJhdGUg
YWN0aXZpdHkgc3RhdGUgdHJhY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGh5c3RlcmVzaXMgdG8gUGFnZSBhY3Rpdml0eSB0aHJvdHRs
aW5nLiAgV2UgZG8gdGhpcworICAgICAgICB0aHJvdWdoIGEgUGFnZVRocm90dGxlciBjbGFzcyB0
aGF0IG5vdyBoYW5kbGVzIGVudGVyaW5nIGFuZAorICAgICAgICBleGl0aW5nIHRocm90dGxpbmcg
c3RhdGUsIGFuZCBhZGRzIGEgaHlzdGVyZXNpcyB0byB3ZSBjYW4KKyAgICAgICAgbGltaXQgdGhl
IGFtb3VudCBvZiBvbi9vZmYgYm91bmNpbmcgb24gdGhlIHRocm90dGxlLgorCisgICAgICAgIE1l
ZGlhIGVsZW1lbnRzIG5vdyBtYWtlIHVzZSBvZiB0aGlzIHRvIGRpc2FibGUgdGltZXIgdGhyb3R0
bGluZworICAgICAgICB3aGlsZSB0aGV5IGFyZSBwbGF5aW5nLCBhbmQgcGx1Z2lucyB1c2UgaXQg
dG8gbW9tZW50YXJpbHkgYm91bmNlCisgICAgICAgIGZyb20gdGhyb3R0bGVkIHRvIHVudGhyb3R0
bGVkIHN0YXRlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFnZVRocm90dGxlcklmUG9z
c2libGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpwbGF5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cGF1c2VJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UpOgorICAgICAgICAqIHBhZ2UvQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmluY3JlbWVudEFjdGl2
ZVBhZ2VDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRlY3JlbWVudEFj
dGl2ZVBhZ2VDb3VudCk6CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFRocm90dGxlZCk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGFnZVRocm90dGxlcik6CisgICAgICAgICog
cGFnZS9QYWdlVGhyb3R0bGVTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VUaHJv
dHRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhy
b3R0bGVyOjp+UGFnZVRocm90dGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVy
OjpjbGVhclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6dGhyb3R0bGVQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnVudGhyb3R0bGVQYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnNldFRocm90dGxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpwcmV2ZW50VGhyb3R0bGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjphbGxvd1Rocm90dGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVRocm90dGxlcjo6c3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnJlcG9ydEludGVyZXN0aW5nRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c3RhcnRUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjp0aHJvdHRsZUh5c3RlcmVzaXNUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBwYWdlL1BhZ2VUaHJvdHRsZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFBhZ2VUaHJvdHRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6
OnNob3VsZFRocm90dGxlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0
bGVyOjpzaG91bGRUaHJvdHRsZVRpbWVycyk6CisKIDIwMTMtMDUtMjkgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEJ1aWxkIGNvcnJlY3Rp
b24gYWZ0ZXIgcjE1MDgzNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI1M2NhZmU4Mzc0MmI5YTg1YjQ0ZmNhNmRh
MGI2M2U1ZWVhMzZhNzMuLjg3MDEwOGFhNjkxOWIzZjU5MTc1ZmQ4ZmY2NmRkMjI2OGJjODA3ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMy0wNS0yOCAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtb3JlIGFjY3VyYXRlIGFjdGl2aXR5IHN0
YXRlIHRyYWNraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGV4dGVuZHMgdGhlIGxvZ2ljIGluIFdlYkNvcmUgZnJvbSBhIFBhZ2UgdG8gUHJv
Y2VzcworICAgICAgICBncmFudWxhcml0eSwgc28gd2Ugd2lsbCBhdm9pZCBsb3dlcmluZyB0aGUg
Y2hpbGQgcHJvY2VzcworICAgICAgICBwcmlvcml0eSBpZiB0aGVyZSBpcyBhY3RpdmUgY29udGVu
dC4gIFRoaXMgYWxzbyBwbHVtYnMgaW4KKyAgICAgICAgdGhlIGxvZ2ljIHRvIGFsbG93IHBsdWdp
bnMgdG8gcmVwb3J0IHRoYXQgdGhleSBoYXZlIGRvbmUKKyAgICAgICAgc29tZXRoaW5nICJpbnRl
cmVzdGluZyIuICBDdXJyZW50bHkgdGhpcyBpcyBzb21ld2hhdCBjb25zZXJ2YXRpdmUKKyAgICAg
ICAgYnV0IGV2ZW4gdGhpcyBpcyBzdWZmaWNpZW50IHRvIGZpeCBzb21lIHN0dXR0ZXJpbmcgaXNz
dWVzCisgICAgICAgIHRoYXQgd2UndmUgc2Vlbi4KKworICAgICAgICAqIFNoYXJlZC9DaGlsZFBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OkNoaWxkUHJvY2Vzcyk6
CisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoQ2hpbGRQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpwcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbmNyZW1lbnRBY3RpdmVUYXNr
Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmRlY3JlbWVudEFjdGl2ZVRh
c2tDb3VudCk6CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vz
czo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxk
UHJvY2Vzczo6aW5jcmVtZW50QWN0aXZlVGFza0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hp
bGRQcm9jZXNzOjpkZWNyZW1lbnRBY3RpdmVUYXNrQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpD
aGlsZFByb2Nlc3M6OnN1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXJGaXJlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6TlBSdW50aW1lT2JqZWN0TWFwKToKKyAg
ICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChOUFJ1bnRpbWVPYmplY3RNYXApOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Omlu
Y3JlbWVudEFjdGl2ZVBhZ2VDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmRlY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudCk6CisKIDIwMTMtMDUtMjkgIE1hcmNlbG8gTGlyYSAgPG1hcmNlbG8u
bGlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtXSzJdW0Nvb3JkaW5hdGVkR3JhcGhpY3Nd
W0VGTF0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cygpIGZ1bmN0aW9uIGRvZXNuJ3QgZG8g
d2hhdCBpdCBzYXlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGJjM2JhYThmMjY5NTZkNWE1NzE5
NjUzNmVhYmZlNzUyOGFjMDQyNDkuLjFkNDU3MzhhNTlmYzc1ZDFmNWE1MDhkMzM2ZjE0NDMzNGNh
YTM3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzU4LDYgKzE3NTgsNyBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGFnZS9QYWdlR3JvdXAuY3BwCiAgICAgcGFnZS9QYWdlR3JvdXBM
b2FkRGVmZXJyZXIuY3BwCiAgICAgcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKyAgICBwYWdlL1Bh
Z2VUaHJvdHRsZXIuY3BwCiAgICAgcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmNwcAogICAgIHBh
Z2UvUGVyZm9ybWFuY2UuY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZjU3ZTc0OTE5NGRkZjU4NTAzMjkwM2NjZDAyNzQ5
ZGJiMDliMGI3OS4uMDI1MGE2ZjMzMGY0Y2Q2MjRiZWIwNjgwZGMxMGNjNGExMjg5OTI5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MjYzLDYgKzQyNjMsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVRocm90dGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNDk4NTM1NThkYWY5NThhYmM0Yzk0
YmRhYzJjOTdiMzdjMzM4MmZjYS4uYzk0Yjc4OWEyNzhlMzZhNmMyNDBmYjVhOGE3MGQ1MmQ2YTlm
NTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC05MzQsNiArOTM0LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
cGFnZS9QYWdlQ29uc29sZS5jcHAgXAogICAgIHBhZ2UvUGFnZUdyb3VwLmNwcCBcCiAgICAgcGFn
ZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwIFwKKyAgICBwYWdlL1BhZ2VUaHJvdHRsZXIuY3Bw
IFwKICAgICBwYWdlL1BhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIFwKICAgICBwYWdlL1BlcmZvcm1h
bmNlLmNwcCBcCiAgICAgcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNwcCBcCkBAIC0yMDk5LDYgKzIx
MDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5oIFwK
ICAgICBwYWdlL1BhZ2UuaCBcCiAgICAgcGFnZS9QYWdlQ29uc29sZS5oIFwKKyAgICBwYWdlL1Bh
Z2VUaHJvdHRsZXIuaCBcCiAgICAgcGFnZS9QYWdlVmlzaWJpbGl0eVN0YXRlLmggXAogICAgIHBh
Z2UvUGx1Z0luQ2xpZW50LmggXAogICAgIHBhZ2UvUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGNlN2I1NzlkY2M5M2Y4MDA2NDdiNzc5MmMzMTY1YTBiZmE0
ZmI4ZjUuLjNkNzM5MmViNWFhMzA2M2M0MWI5ZWEwZWZiZWMxYmJjZGZjZjQ4MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0yNzcsNiArMjc3LDggQEAgX19aTjdXZWJDb3JlMTNLZXlib2FyZEV2
ZW50QzFFUktOM1dURjEyQXRvbWljU3RyaW5nRWJiUE5TXzlET01XaW5kb3dFUktOUzFfNlN0cmkK
IF9fWk43V2ViQ29yZTEzS2V5Ym9hcmRFdmVudEMxRVJLTlNfMjFQbGF0Zm9ybUtleWJvYXJkRXZl
bnRFUE5TXzlET01XaW5kb3dFCiBfX1pON1dlYkNvcmUxM05vZGVUcmF2ZXJzYWwxOW5leHRBbmNl
c3RvclNpYmxpbmdFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDhwcmV2
aW91c0VQS05TXzROb2RlRVMzXworX19aTjdXZWJDb3JlMTNQYWdlVGhyb3R0bGVyMjJyZXBvcnRJ
bnRlcmVzdGluZ0V2ZW50RXYKK19fWk43V2ViQ29yZTEzUGFnZVRocm90dGxlckQxRXYKIF9fWk43
V2ViQ29yZTEzUXVhbGlmaWVkTmFtZUQxRXYKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMx
RVA3TlNFcnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNWE1ZmJm
ZGE2MDFlMzQyMzNiYzQ0ODRkODRhZmRmMDg4M2JkYmIyNy4uZjMyZDJiMWRjMzA4ZDJjNDk0NzEw
MThmNjQyNzQyMmRiM2ZmNWZjMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTI3NTc4LDcgKzI3NTc4LDcgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcUGFnZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgotICAgICAgICAgICAgICAgICAg
ICAgICAgPEZpbGUKKyAgICAgICAgICAgICA8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFn
ZVxQYWdlQ29uc29sZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMjc2MTEsNiArMjc2MTEs
MTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGFnZVxQYWdlVGhyb3R0bGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQYWdlVGhyb3R0bGVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUGFnZVZpc2liaWxpdHlTdGF0
ZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTRkYTA0OWRjYWIyNWUxZTRlNGFlNTljZWY4NjVm
ODE0YmMyN2UyOC4uYWZhNmVhYzk0Mzc2MzgxYWYwYjk3ODAwMzNmM2NiODExODY4NThkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0z
OTM3LDYgKzM5MzcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlR3Jv
dXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlU2Vy
aWFsaXplci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXFBhZ2VUaHJv
dHRsZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlVmlzaWJp
bGl0eVN0YXRlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcUGVyZm9y
bWFuY2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQZXJmb3JtYW5j
ZUVudHJ5LmNwcCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA5NmQ5YjU3YjIwZTVmNmQ2MTJlN2RjMzA0
ZjExZmJkOWM1YzZjZWY3Li5lMmI1NWY4Zjc0Nzg4ZTM2YzY3MDRiNWJjMDZhMWMzYjdjMjE4MjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC01MjMyLDYgKzUyMzIsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxQYWdlU2VyaWFsaXplci5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdl
XFBhZ2VUaHJvdHRsZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxQYWdlVmlzaWJpbGl0
eVN0YXRlLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxMGU3OTdkZmMzZjVhNWZhYmNiYjY1NDQwZWNhODlhZTFlYWUxZTdlLi4zOWI5OWYw
ZmU4NDkxM2E4NTg4NmEyNDJkOWUxMjk5NDc3MWE4ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzk1LDYgKzMzOTUsOCBA
QAogCQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE1RTY1MTEz
NEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCUE3MTg3
NjBFMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc2MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERy
YWdBY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTcxODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJE
MDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OworCQlBNzE5N0YyNDE3
NTY4OUM0MDA3Qjk0NDIgLyogUGFnZVRocm90dGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxOTdGMjMxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VU
aHJvdHRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNzE5N0YyNjE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90dGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE5N0YyNTE3NTY4QUU1
MDA3Qjk0NDIgLyogUGFnZVRocm90dGxlci5jcHAgKi87IH07CiAJCUE3MjNGNzdCMTQ4NENBNEMw
MDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRm
b3JtRXhwb3J0TWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3
NjNCRTE2Njg5QkZCMDAyRkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzJCNjZBNzE2OUFEODhE
MDAzNDEzMEMgLyogRE9NU2hhZG93Um9vdC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGNzNFRDkxNjlBRDdBQTAwQ0JBQTRC
IC8qIERPTVNoYWRvd1Jvb3QuaCAqLzsgfTsKQEAgLTk4NTQsNiArOTg1Niw4IEBACiAJCUE3MTVF
NjUxMTM0QkJCRUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyog
RHJhZ0NvbnRyb2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEcmFnQ29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTcxOTdGMjMxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVRocm90dGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzE5N0YyNTE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90dGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVGhyb3R0bGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxQTcwQzkxMUFGQjAyMDAwOTg5RDZEIC8q
IEhUTUxNZXRlckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxNZXRlckVs
ZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIxMUYyMzE2NzhBNTQy
MDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMTFGMjQxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3NTQs
NiArMTQ3NTgsOCBAQAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBM
b2FkRGVmZXJyZXIuaCAqLywKIAkJCQkzNzFFNjVDRDEzNjYxRUVEMDBCRUVEQjAgLyogUGFnZVNl
cmlhbGl6ZXIuY3BwICovLAogCQkJCTM3MUU2NUNCMTM2NjFFREMwMEJFRURCMCAvKiBQYWdlU2Vy
aWFsaXplci5oICovLAorCQkJCUE3MTk3RjIzMTc1Njg5QzQwMDdCOTQ0MiAvKiBQYWdlVGhyb3R0
bGVyLmggKi8sCisJCQkJQTcxOTdGMjUxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIu
Y3BwICovLAogCQkJCUZGRDVCOTc3MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0
YXRlLmNwcCAqLywKIAkJCQlGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxp
dHlTdGF0ZS5oICovLAogCQkJCUU1MjZBRjNFMTcyN0Y4RjIwMEU0MTc4MSAvKiBQZXJmb3JtYW5j
ZS5jcHAgKi8sCkBAIC0yMjg1NCw2ICsyMjg2MCw3IEBACiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAw
MDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OUY0M0Q0
MTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOUM2RTVBNjBENzQ2NDU4MDA2NDQyRTkgLyogTmF2aWdhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNzE5N0YyNDE3NTY4OUM0MDA3Qjk0NDIgLyogUGFnZVRocm90dGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTEyNzE5QzcwRUVFQzE2ODAwRjYxMjEzIC8qIE5hdmlnYXRvckJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3MTE0NjA0MTRFRjAwOUEwMDY3NEZEOSAvKiBOYXZpZ2F0
b3JHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEEzMDlDOUYxMjM5NTBCRTAwQ0I5
MjA0IC8qIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODgx
LDYgKzI1ODg4LDcgQEAKIAkJCQkwQzQ1MzQyNzEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVu
aWZvcm1Mb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0VGNjJGMzEyRjlEQjc0MDBD
NzdCRDIgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxQzBGRjNEMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3MTk3RjI2MTc1NjhBRTUwMDdCOTQ0MiAvKiBQYWdlVGhy
b3R0bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyRThBRTM3MTZBNDk4NDAwMDZCQjNBQSAv
KiBKU1dlYktpdENTU0ZpbHRlclJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwNjAzNzQx
NDMyODE5QzAwQUJGNEJBIC8qIEpTV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE2RkUwNzEwRTZDQ0JFRTAwQkY2MDg4IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggYWMyYjcyYWMyZmNkNGFiM2ZiYzI0NWI3NmEwZTFjMWIxNDNkZjgxMy4uMDNl
NjAxNDA1ODgzZDNjNWM0ZDUwNzJkMTBlNDgxNDBjNTZjMjU1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdy
b3VwLmgiCisjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVv
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKQEAgLTM0NCw2ICszNDUsMTEgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCIpOworCisgICAgaWYgKCFtX3BhdXNlZCAmJiBt
X3BhZ2VUaHJvdHRsZXIpIHsKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyLT5hbGxvd1Rocm90dGxp
bmcoKTsKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyLmNsZWFyKCk7CisgICAgfQogICAgIGlmICht
X2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3Zl
TWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50
KGZhbHNlKTsKQEAgLTI0NzcsNiArMjQ4MywyMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXkoKQogICAgIHBsYXlJbnRlcm5hbCgpOwogfQogCitQYWdlVGhyb3R0bGVyKiBIVE1MTWVkaWFF
bGVtZW50OjpwYWdlVGhyb3R0bGVySWZQb3NzaWJsZSgpCit7CisgICAgaWYgKG1fcGFnZVRocm90
dGxlcikKKyAgICAgICAgcmV0dXJuIG1fcGFnZVRocm90dGxlci5nZXQoKTsKKworICAgIGlmICgh
ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgbV9wYWdlVGhyb3R0bGVyID0gcGFnZS0+cGFnZVRo
cm90dGxlcigpOworICAgIAorICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7Cit9CisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIHsKICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwiKTsKQEAgLTI0OTIsNiArMjUxMiw4IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKICAgICAgICAgbV9tZWRpYUNv
bnRyb2xsZXItPmJyaW5nRWxlbWVudFVwVG9TcGVlZCh0aGlzKTsKIAogICAgIGlmIChtX3BhdXNl
ZCkgeworICAgICAgICBpZiAoUGFnZVRocm90dGxlciogdGhyb3R0bGVyID0gcGFnZVRocm90dGxl
cklmUG9zc2libGUoKSkKKyAgICAgICAgICAgIHRocm90dGxlci0+cHJldmVudFRocm90dGxpbmco
KTsKICAgICAgICAgbV9wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRp
bWUoKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucGxheUV2ZW50KTsKQEAg
LTI1MDIsNyArMjUyNCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkK
ICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnBsYXlpbmdFdmVudCk7CiAg
ICAgfQogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKLQogICAgIHVwZGF0ZVBsYXlTdGF0ZSgp
OwogICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogfQpAQCAtMjUyOSw2ICsyNTUwLDggQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAgICBtX2F1dG9wbGF5aW5n
ID0gZmFsc2U7CiAKICAgICBpZiAoIW1fcGF1c2VkKSB7CisgICAgICAgIGlmIChQYWdlVGhyb3R0
bGVyKiB0aHJvdHRsZXIgPSBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCkpCisgICAgICAgICAgICB0aHJv
dHRsZXItPnByZXZlbnRUaHJvdHRsaW5nKCk7CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAg
ICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOwogICAgICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggYzFhODJmZGI0MTZmZjIzYWJjOTJmYjM0NDFjODNhYTA5MmJkNjYxMy4u
NDU2Yzc2ZmFjMDViZGMzYmUwZWIzMTQ4MzQ5M2M3ODM1MGY0YzI3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTU5LDEwICs1OSwxMSBAQCBjbGFzcyBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEhUTUxTb3VyY2VFbGVt
ZW50OwogY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIEtVUkw7CiBjbGFzcyBNZWRpYUNv
bnRyb2xsZXI7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3MgTWVkaWFFcnJvcjsKLWNsYXNz
IEtVUkw7CitjbGFzcyBQYWdlVGhyb3R0bGVyOwogY2xhc3MgVGltZVJhbmdlczsKICNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIGNsYXNzIFdpZGdldDsKQEAgLTc1NSw2ICs3NTYs
OSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXI7CiAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbGxlcj4gbV9tZWRpYUNvbnRyb2xsZXI7CiAKKyAgICBQYWdlVGhyb3R0
bGVyKiBwYWdlVGhyb3R0bGVySWZQb3NzaWJsZSgpOworICAgIFJlZlB0cjxQYWdlVGhyb3R0bGVy
PiBtX3BhZ2VUaHJvdHRsZXI7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgT3duUHRyPERpc3Bs
YXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCAzM2M2M2E2NmRhNjEwNzlmNzAwZTlhNzRmMjVl
MmNiZWQyYjY2NzM2Li5jYmZhMjFkMDA2MzY0OGUzY2Y0ZDIzNTQ1MGE4YTBiNDczYTZmYWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC0xODMsNyArMTgzLDYg
QEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVucGF1c2UoKQogICAgIC8vIFdoZW4gdGhlIHVucGF1
c2UoKSBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBpcyBhIHBhdXNl
ZCBtZWRpYSBjb250cm9sbGVyLAogICAgIGlmICghbV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsK
LQogICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3QgY2hhbmdlIHRoZSBNZWRpYUNvbnRyb2xsZXIg
aW50byBhIHBsYXlpbmcgbWVkaWEgY29udHJvbGxlciwKICAgICBtX3BhdXNlZCA9IGZhbHNlOwog
ICAgIC8vIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHBsYXkgYXQg
dGhlIE1lZGlhQ29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDc0
NWExZTdmZmVhZjBiNzYxMWYxYjcwNjBiMjdkMjExYjkzYzVkMGQuLjI4ZjQzNzE5NmQzN2Q2M2I0
MmI3M2MyNWUyZDRiZmRjYjQ3ZDVkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApA
QCAtMzYyLDYgKzM2MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhlYWRl
ckxheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkRm9vdGVy
TGF5ZXIoR3JhcGhpY3NMYXllciopIHsgfQogCisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNl
ZCB0byByZXBvcnQgcGFnZXMgdGhhdCBhcmUgcGVyZm9ybWluZworICAgIC8vIHNvbWUgdGFzayB0
aGF0IHdlIGNvbnNpZGVyIHRvIGJlICJhY3RpdmUiLCBhbmQgc28gdGhlIHVzZXIKKyAgICAvLyB3
b3VsZCBsaWtlbHkgd2FudCB0aGUgcGFnZSB0byByZW1haW4gcnVubmluZyB1bmludGVycnVwdGVk
LgorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlUGFnZUNvdW50KCkgeyB9CisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCBlODg0NTI0MDUyZmFiOWU1ZDc0ZTQ2MGZlYzI0Y2NhNjFjY2MwNjM5Li40MGE2ZGRlYzgxMjk1
MzkxNTk0ZWMzYzMyYjc0M2NjZTk5NmJjYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYg
KzU5LDcgQEAKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZS5o
IgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNp
bmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luVmlldy5oIgpAQCAtMTg0LDYgKzE4NSw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVu
dHMmIHBhZ2VDbGllbnRzKQogI2VuZGlmCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChw
YWdlQ2xpZW50cy5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0
aW9uc1N1c3BlbmRlZChmYWxzZSkKKyAgICAsIG1fcGFnZVRocm90dGxlcihQYWdlVGhyb3R0bGVy
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2NvbnNvbGUoUGFnZUNvbnNvbGU6OmNyZWF0ZSh0aGlz
KSkKIHsKICAgICBBU1NFUlQobV9lZGl0b3JDbGllbnQpOwpAQCAtMjMxLDYgKzIzMyw3IEBAIFBh
Z2U6On5QYWdlKCkKICNpZm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuZGVjcmVtZW50KCk7
CiAjZW5kaWYKKyAgICBtX3BhZ2VUaHJvdHRsZXItPmNsZWFyUGFnZSgpOwogCiB9CiAKQEAgLTk1
NywxMiArOTYwLDkgQEAgdm9pZCBQYWdlOjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnMoKQogICAg
IH0KIH0KIAotdm9pZCBQYWdlOjpzZXRUaHJvdHRsZWQoYm9vbCBpc1Rocm90dGxlZCkKK3ZvaWQg
UGFnZTo6c2V0VGhyb3R0bGVkKGJvb2wgdGhyb3R0bGVkKQogewotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJTZXRUaHJvdHRsZWQo
aXNUaHJvdHRsZWQpOwotICAgIH0KKyAgICBtX3BhZ2VUaHJvdHRsZXItPnNldFRocm90dGxlZCh0
aHJvdHRsZWQpOwogfQogCiB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggY2U3MDM3M2JlMjAwOTMxYmQwMzYzOGM3YmVkMzE2NThmNjU3
ZjQ3Yi4uZTlmMGEyM2M1YjJmZmY2OTk0NjkwOTcxYjM0MjJkMjRhOWVkNmIwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIE9TKFNPTEFSSVMpCkBAIC03Niw2ICs3Nyw3IEBAIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlQ29uc29sZTsKIGNsYXNzIFBhZ2VHcm91cDsK
K2NsYXNzIFBhZ2VUaHJvdHRsZXI7CiBjbGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFzcyBQbHVnaW5E
YXRhOwogY2xhc3MgUGx1Z2luVmlld0Jhc2U7CkBAIC0xMTAsNiArMTEyLDggQEAgc3RydWN0IEFy
ZW5hU2l6ZSB7CiBjbGFzcyBQYWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBmcmllbmQgY2xhc3MgU2V0dGluZ3M7
CisgICAgZnJpZW5kIGNsYXNzIFBhZ2VUaHJvdHRsZXI7CisKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCB1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJbkVudmlyb25tZW50
KCk7CiAKQEAgLTM4OSw2ICszOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYXdNZWRpYUVuZ2lu
ZShjb25zdCBTdHJpbmcmIGVuZ2luZU5hbWUpOwogICAgIHZvaWQgcmVzZXRTZWVuTWVkaWFFbmdp
bmVzKCk7CiAKKyAgICBQYWdlVGhyb3R0bGVyKiBwYWdlVGhyb3R0bGVyKCkgeyByZXR1cm4gbV9w
YWdlVGhyb3R0bGVyLmdldCgpOyB9CisKICAgICBQYWdlQ29uc29sZSogY29uc29sZSgpIHsgcmV0
dXJuIG1fY29uc29sZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKEhJRERFTl9QQUdFX0RPTV9USU1F
Ul9USFJPVFRMSU5HKQpAQCAtNTI3LDYgKzUzMyw4IEBAIHByaXZhdGU6CiAgICAgQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsKIAogICAgIGJvb2wgbV9zY3Jp
cHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7CisgICAgUmVmUHRyPFBhZ2VUaHJvdHRsZXI+IG1fcGFn
ZVRocm90dGxlcjsKKwogICAgIE93blB0cjxQYWdlQ29uc29sZT4gbV9jb25zb2xlOwogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fc2VlblBsdWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0
bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZDFlNDBjNTg1OWEzZjRlMmQzYWRiOWFhOTE4ZGNlZDk4N2My
YjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVy
LmNwcApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgZG91YmxlIGtUaHJvdHRs
ZUh5c3RlcmVzaXNTZWNvbmRzID0gMi4wOworCitQYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVy
KFBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fYWN0aXZlVGhyb3R0bGVC
bG9ja2VycygwKQorICAgICwgbV90aHJvdHRsZVN0YXRlKFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZSkK
KyAgICAsIG1fdGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIodGhpcywgJlBhZ2VUaHJvdHRsZXI6OnRo
cm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQpCit7CisgICAgaWYgKENocm9tZUNsaWVudCogY2hy
b21lQ2xpZW50ID0gbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSkKKyAgICAgICAgY2hyb21lQ2xp
ZW50LT5pbmNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKTsKK30KKworUGFnZVRocm90dGxlcjo6flBh
Z2VUaHJvdHRsZXIoKQoreworICAgIGlmIChtX3Rocm90dGxlU3RhdGUgIT0gUGFnZVRocm90dGxl
ZFN0YXRlICYmIG1fcGFnZSkgeworICAgICAgICBpZiAoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGll
bnQgPSBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpKQorICAgICAgICAgICAgY2hyb21lQ2xpZW50
LT5kZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUGFnZVRocm90
dGxlcjo6Y2xlYXJQYWdlKCkKK3sKKyAgICBzZXRUaHJvdHRsZWQoZmFsc2UpOworICAgIG1fcGFn
ZSA9IDA7Cit9CisKK3ZvaWQgUGFnZVRocm90dGxlcjo6dGhyb3R0bGVQYWdlKCkKK3sKKyAgICBt
X3Rocm90dGxlU3RhdGUgPSBQYWdlVGhyb3R0bGVkU3RhdGU7CisKKyAgICBpZiAoIW1fcGFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50ID0g
bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKSkKKyAgICAgICAgY2hyb21lQ2xpZW50LT5kZWNyZW1l
bnRBY3RpdmVQYWdlQ291bnQoKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRv
Y3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZCh0cnVlKTsK
KyAgICB9Cit9CisKK3ZvaWQgUGFnZVRocm90dGxlcjo6dW50aHJvdHRsZVBhZ2UoKQoreworCisg
ICAgbV90aHJvdHRsZVN0YXRlID0gUGFnZU5vdFRocm90dGxlZFN0YXRlOworCisgICAgaWYgKCFt
X3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChDaHJvbWVDbGllbnQqIGNocm9tZUNs
aWVudCA9IG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpCisgICAgICAgIGNocm9tZUNsaWVudC0+
aW5jcmVtZW50QWN0aXZlUGFnZUNvdW50KCk7CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJTZXRUaHJvdHRsZWQo
ZmFsc2UpOworICAgIH0KK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpzZXRUaHJvdHRsZWQoYm9v
bCBpc1Rocm90dGxlZCkKK3sKKyAgICBpZiAoaXNUaHJvdHRsZWQpIHsKKyAgICAgICAgbV90aHJv
dHRsZVN0YXRlID0gUGFnZVdhaXRpbmdUb1Rocm90dGxlU3RhdGU7CisgICAgICAgIHN0YXJ0VGhy
b3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bnRocm90dGxl
UGFnZSgpOworICAgICAgICBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICB9Cit9
CisKK3ZvaWQgUGFnZVRocm90dGxlcjo6cHJldmVudFRocm90dGxpbmcoKQoreworICAgIC8vIElm
IHdlJ3ZlIGFscmVhZHkgZ290IGV2ZW50cyB0aGF0IGJsb2NrIHRocm90dGxpbmcgd2UgY2FuIGlu
Y3JlbWVudAorICAgIC8vIGFuZCByZXR1cm4gZWFybHkKKyAgICBpZiAobV9hY3RpdmVUaHJvdHRs
ZUJsb2NrZXJzKyspCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3Rocm90dGxlU3RhdGUg
PT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV90
aHJvdHRsZVN0YXRlID09IFBhZ2VUaHJvdHRsZWRTdGF0ZSkKKyAgICAgICAgdW50aHJvdHRsZVBh
Z2UoKTsKKworICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRl
OworICAgIHN0b3BUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworfQorCit2b2lkIFBhZ2VUaHJv
dHRsZXI6OmFsbG93VGhyb3R0bGluZygpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlVGhyb3R0bGVC
bG9ja2VycyA+IDApOworICAgIG1fYWN0aXZlVGhyb3R0bGVCbG9ja2Vycy0tOworICAgIGlmICht
X2FjdGl2ZVRocm90dGxlQmxvY2tlcnMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3Ro
cm90dGxlU3RhdGUgPT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQobV90aHJvdHRsZVN0YXRlID09IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRl
KTsKKyAgICBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Cit9CisKK3ZvaWQgUGFnZVRo
cm90dGxlcjo6c3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKK3sKKyAgICBtX3Rocm90dGxl
SHlzdGVyZXNpc1RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpyZXBvcnRJ
bnRlcmVzdGluZ0V2ZW50KCkKK3sKKyAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VOb3RU
aHJvdHRsZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Rocm90dGxlU3RhdGUg
PT0gUGFnZVRocm90dGxlZFN0YXRlKQorICAgICAgICB1bnRocm90dGxlUGFnZSgpOworICAgIG1f
dGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlOworICAgIHN0YXJ0VGhy
b3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKK30KKwordm9pZCBQYWdlVGhyb3R0bGVyOjpzdGFydFRo
cm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKK3sKKyAgICBpZiAobV90aHJvdHRsZUh5c3RlcmVzaXNU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyLnN0b3Ao
KTsKKyAgICBpZiAoIW1fYWN0aXZlVGhyb3R0bGVCbG9ja2VycykKKyAgICAgICAgbV90aHJvdHRs
ZUh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1Rocm90dGxlSHlzdGVyZXNpc1NlY29uZHMp
OworfQorCit2b2lkIFBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQo
VGltZXI8UGFnZVRocm90dGxlcj4qKQoreworICAgIEFTU0VSVCghbV9hY3RpdmVUaHJvdHRsZUJs
b2NrZXJzKTsKKyAgICB0aHJvdHRsZVBhZ2UoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VU
aHJvdHRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGEyNDZhNGY3YjU0YmVkOGRkYjVjMjIxOWFjOTBlMzFi
NjgzMDRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0
bGVyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFnZVRocm90dGxl
cl9oCisjZGVmaW5lIFBhZ2VUaHJvdHRsZXJfaAorCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UGFnZTsKKworY2xhc3MgUGFnZVRocm90dGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBhZ2VUaHJv
dHRsZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYWdlVGhyb3R0bGVyPiBj
cmVhdGUoUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFn
ZVRocm90dGxlcihwYWdlKSk7CisgICAgfQorCisgICAgYm9vbCBzaG91bGRUaHJvdHRsZUFuaW1h
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Rocm90dGxlU3RhdGUgIT0gUGFnZU5vdFRocm90dGxl
ZFN0YXRlOyB9CisgICAgYm9vbCBzaG91bGRUaHJvdHRsZVRpbWVycygpIGNvbnN0IHsgcmV0dXJu
IG1fdGhyb3R0bGVTdGF0ZSA9PSBQYWdlTm90VGhyb3R0bGVkU3RhdGU7IH0KKworICAgIHZvaWQg
c2V0VGhyb3R0bGVkKGJvb2wpOworCisgICAgdm9pZCBwcmV2ZW50VGhyb3R0bGluZygpOworICAg
IHZvaWQgcmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOworICAgIHZvaWQgYWxsb3dUaHJvdHRsaW5n
KCk7CisgICAgdm9pZCBjbGVhclBhZ2UoKTsKKworICAgIH5QYWdlVGhyb3R0bGVyKCk7CisKK3By
aXZhdGU6CisgICAgZW51bSBQYWdlVGhyb3R0bGVTdGF0ZSB7CisgICAgICAgIFBhZ2VOb3RUaHJv
dHRsZWRTdGF0ZSwKKyAgICAgICAgUGFnZVdhaXRpbmdUb1Rocm90dGxlU3RhdGUsCisgICAgICAg
IFBhZ2VUaHJvdHRsZWRTdGF0ZQorICAgIH07CisKKyAgICBQYWdlVGhyb3R0bGVyKFBhZ2UqKTsK
KyAgICB2b2lkIHN0YXJ0VGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICB2b2lkIHN0b3BU
aHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworICAgIHZvaWQgdGhyb3R0bGVIeXN0ZXJlc2lzVGlt
ZXJGaXJlZChUaW1lcjxQYWdlVGhyb3R0bGVyPiopOworCisgICAgUGFnZSogbV9wYWdlOworCisg
ICAgdm9pZCB0aHJvdHRsZVBhZ2UoKTsKKyAgICB2b2lkIHVudGhyb3R0bGVQYWdlKCk7CisKKyAg
ICB1bnNpZ25lZCBtX2FjdGl2ZVRocm90dGxlQmxvY2tlcnM7CisgICAgUGFnZVRocm90dGxlU3Rh
dGUgbV90aHJvdHRsZVN0YXRlOworICAgIFRpbWVyPFBhZ2VUaHJvdHRsZXI+IG1fdGhyb3R0bGVI
eXN0ZXJlc2lzVGltZXI7Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5jcHAKaW5kZXggYTlhODc2YTFhZDdkMDY0MGRjNjUzMjhmMDdhYzE3MzQwYmRjMjVk
MS4uN2MyNzBlODc2Njk4ZWE4NDc4NjVkNzlmYjQyZjk1MDNiNzE1NTkxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKQEAgLTQwLDYgKzQwLDExIEBAIENoaWxkUHJvY2Vz
czo6Q2hpbGRQcm9jZXNzKCkKICAgICA6IG1fdGVybWluYXRpb25UaW1lb3V0KDApCiAgICAgLCBt
X3Rlcm1pbmF0aW9uQ291bnRlcigwKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJkNoaWxkUHJvY2Vzczo6dGVybWluYXRpb25UaW1lckZpcmVkKQorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAsIG1fYWN0aXZlVGFza0NvdW50KDApCisgICAgLCBtX3Nob3Vs
ZFN1c3BlbmQoZmFsc2UpCisgICAgLCBtX3N1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmQ2hpbGRQcm9jZXNzOjpzdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVy
RmlyZWQpCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NoaWxkUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCmlu
ZGV4IGMxYTg2NzNhZDZlM2IxZGIxMjdkMjM0NWU5MjE4MWIzNTQzZGJkMzYuLmJkMmUwYTQyNmI0
MDIxNjY1MTU2MjgwNTM0ODdjZmE0YzkxZjZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQ
cm9jZXNzLmgKQEAgLTYyLDEwICs2MiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGJvb2wg
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Byb2Nlc3NTdXBw
cmVzc2lvbkFzc2VydGlvbjsgfQogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZChib29sKTsKKyAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9wcm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb247IH0KKyAgICB2b2lkIGluY3JlbWVu
dEFjdGl2ZVRhc2tDb3VudCgpOworICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlVGFza0NvdW50KCk7
CiAKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNEYWVtb24oKTsKKyNlbHNlCisgICAgdm9pZCBp
bmNyZW1lbnRBY3RpdmVUYXNrQ291bnQoKSB7IH0KKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVRh
c2tDb3VudCgpIHsgfQogI2VuZGlmCiAKICAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpA
QCAtMTA5LDYgKzExNCwxMSBAQCBwcml2YXRlOgogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZl
ck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKIAogI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lk
IHN1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXJGaXJlZCgpOworICAgIHZvaWQgc2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGJvb2wpOworICAgIHNpemVfdCBtX2FjdGl2ZVRhc2tD
b3VudDsKKyAgICBib29sIG1fc2hvdWxkU3VzcGVuZDsKKyAgICBXZWJDb3JlOjpSdW5Mb29wOjpU
aW1lcjxDaGlsZFByb2Nlc3M+IG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lcjsKICAgICBSZXRh
aW5QdHI8aWQ+IG1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uOwogI2VuZGlmCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCAwMDM4MWY0
MjIwOTU2ZGI0ZmQzMDhkYzM4ZmRlOTBjMWRjNjE0ODNjLi41YjVkYWJkNDYxYzY5YmY2ZDU0NDJi
M2VjNzYyNzViYTU2Y2E4NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxk
UHJvY2Vzc01hYy5tbQpAQCAtNTksMTMgKzU5LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQorc3RhdGlj
IGNvbnN0IGRvdWJsZSBrU3VzcGVuc2lvbkh5c3RlcmVzaXNTZWNvbmRzID0gNS4wOworCit2b2lk
IENoaWxkUHJvY2Vzczo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGJvb2wg
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkKIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAodGhpcy0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCgpID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKSB7CisgICAgICAgIEFTU0VSVCghbV9hY3Rp
dmVUYXNrQ291bnQpOwogICAgICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuZEFj
dGl2aXR5Om1fcHJvY2Vzc1N1cHByZXNzaW9uQXNzZXJ0aW9uLmdldCgpXTsKICAgICAgICAgbV9w
cm9jZXNzU3VwcHJlc3Npb25Bc3NlcnRpb24uY2xlYXIoKTsKICAgICB9IGVsc2UgewpAQCAtNzcs
NiArODAsNDcgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQogI2VuZGlmCiB9CiAKK3ZvaWQgQ2hp
bGRQcm9jZXNzOjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCkKK3sKKyAgICBpZiAodGhpcy0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCgpID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAobV9zaG91bGRTdXNwZW5kID09IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3Nob3VsZFN1c3BlbmQgPSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
OworICAgIGlmIChtX3Nob3VsZFN1c3BlbmQpIHsKKyAgICAgICAgaWYgKCFtX2FjdGl2ZVRhc2tD
b3VudCkKKyAgICAgICAgICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNo
b3Qoa1N1c3BlbnNpb25IeXN0ZXJlc2lzU2Vjb25kcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKGZhbHNlKTsKK30KKwor
dm9pZCBDaGlsZFByb2Nlc3M6OmluY3JlbWVudEFjdGl2ZVRhc2tDb3VudCgpCit7CisgICAgbV9h
Y3RpdmVUYXNrQ291bnQrKzsKKyAgICBpZiAobV9zdXNwZW5zaW9uSHlzdGVyZXNpc1RpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIG1fc3VzcGVuc2lvbkh5c3RlcmVzaXNUaW1lci5zdG9wKCk7Cisg
ICAgaWYgKG1fYWN0aXZlVGFza0NvdW50KQorICAgICAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkSW50ZXJuYWwoZmFsc2UpOworfQorCit2b2lkIENoaWxkUHJvY2Vzczo6ZGVjcmVtZW50
QWN0aXZlVGFza0NvdW50KCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVUYXNrQ291bnQpOworICAg
IG1fYWN0aXZlVGFza0NvdW50LS07CisgICAgaWYgKG1fYWN0aXZlVGFza0NvdW50KQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKG1fc2hvdWxkU3VzcGVuZCkKKyAgICAgICAgbV9zdXNwZW5zaW9u
SHlzdGVyZXNpc1RpbWVyLnN0YXJ0T25lU2hvdChrU3VzcGVuc2lvbkh5c3RlcmVzaXNTZWNvbmRz
KTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6OnN1c3BlbnNpb25IeXN0ZXJlc2lzVGltZXJGaXJl
ZCgpCit7CisgICAgQVNTRVJUKCFtX2FjdGl2ZVRhc2tDb3VudCk7CisgICAgQVNTRVJUKG1fc2hv
dWxkU3VzcGVuZCk7CisgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEludGVybmFsKHRy
dWUpOworfQorCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiBz
dGF0aWMgdm9pZCBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5KCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggMTY2NzExMjk0Y2QwNzcxOWFjMzI4OTcxZjU3
NGI0OGE5N2U5M2ZiMy4uZWYwNjQxODMxYmZjMTk3NjI3ZDVmNzY1Y2IyNGQ5MTg0Y2UxYmFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlVGhyb3R0bGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CkBAIC00OSw4ICs1MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIAotTlBSdW50aW1lT2JqZWN0TWFwOjpOUFJ1bnRpbWVPYmplY3RNYXAoUGx1
Z2luVmlldyogcGx1Z2luVmlldykKK05QUnVudGltZU9iamVjdE1hcDo6TlBSdW50aW1lT2JqZWN0
TWFwKFBsdWdpblZpZXcqIHBsdWdpblZpZXcsIFBhZ2VUaHJvdHRsZXIqIHBhZ2VUaHJvdHRsZXIp
CiAgICAgOiBtX3BsdWdpblZpZXcocGx1Z2luVmlldykKKyAgICAsIG1fcGFnZVRocm90dGxlcihw
YWdlVGhyb3R0bGVyKQogICAgICwgbV9maW5hbGl6YXRpb25UaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZOUFJ1bnRpbWVPYmplY3RNYXA6OmludmFsaWRhdGVRdWV1ZWRPYmplY3RzKQogewog
fQpAQCAtMTgyLDYgKzE4NSw3IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNW
YWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1CiAKIGJvb2wgTlBS
dW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKKyAgICBtX3BhZ2VUaHJvdHRs
ZXItPnJlcG9ydEludGVyZXN0aW5nRXZlbnQoKTsKICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+
IGdsb2JhbE9iamVjdCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBS
dW50aW1lT2JqZWN0TWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKaW5kZXggODc0NDI4OWZjYmFjOWNmYzc1ZDVhZDQx
YTUxZGE3NzIwOGY5ZWVmZi4uNzU4NWFmZWNlNThiYWU2ODcwMDRkNDYwNzQ1ODBmMzBkM2E1OTkx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaApAQCAtNDUsNiArNDUsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNWYWx1ZTsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIGNsYXNzIFBhZ2VUaHJvdHRsZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBKU05QT2JqZWN0OwpAQCAtNTQsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5WaWV3OwogLy8g
QSBwZXIgcGx1Zy1pbiBtYXAgb2YgTlBPYmplY3RzIHRoYXQgd3JhcCBKYXZhU2NyaXB0IG9iamVj
dHMuCiBjbGFzcyBOUFJ1bnRpbWVPYmplY3RNYXAgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBOUFJ1bnRpbWVPYmplY3RNYXAoUGx1Z2luVmll
dyopOworICAgIGV4cGxpY2l0IE5QUnVudGltZU9iamVjdE1hcChQbHVnaW5WaWV3KiwgV2ViQ29y
ZTo6UGFnZVRocm90dGxlciopOwogCiAgICAgY2xhc3MgUGx1Z2luUHJvdGVjdG9yIHsKICAgICBw
dWJsaWM6CkBAIC05NSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlUXVl
dWVkT2JqZWN0cygpOwogCiAgICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwotCisgICAgUmVm
UHRyPFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI+IG1fcGFnZVRocm90dGxlcjsKICAgICBIYXNoTWFw
PEpTQzo6SlNPYmplY3QqLCBOUEpTT2JqZWN0Kj4gbV9ucEpTT2JqZWN0czsKICAgICBIYXNoTWFw
PE5QT2JqZWN0KiwgSlNDOjpXZWFrPEpTTlBPYmplY3Q+PiBtX2pzTlBPYmplY3RzOwogICAgIFZl
Y3RvcjxOUE9iamVjdCo+IG1fbnBPYmplY3RzVG9GaW5hbGl6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlYzc5MWY2ZjQ5ZDc5
MjM4NDU4YTI5NmI1OTUyMDVjZjFiMjFjYTVlLi5jZTZkZjYwNmFiYWE0ZWFhMGM1M2U1MGJkMjIy
MTc3OGIyZmNjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VUaHJvdHRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm94eVNlcnZlci5oPgpAQCAtMjc3LDcgKzI3OCw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXco
UGFzc1JlZlB0cjxIVE1MUGx1Z0luRWxlbWVudD4gcGx1Z2luRWxlbWVudCwgUGFzc1JlZlB0cjxQ
CiAgICAgLCBtX2lzQmVpbmdEZXN0cm95ZWQoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1
ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxS
ZXF1ZXN0c1RpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAg
LCBtX25wUnVudGltZU9iamVjdE1hcCh0aGlzKQorICAgICwgbV9ucFJ1bnRpbWVPYmplY3RNYXAo
dGhpcywgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlVGhyb3R0bGVyKCkpCiAjZW5kaWYKICAg
ICAsIG1fbWFudWFsU3RyZWFtU3RhdGUoU3RyZWFtU3RhdGVJbml0aWFsKQogICAgICwgbV9wbHVn
aW5TbmFwc2hvdFRpbWVyKHRoaXMsICZQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmly
ZWQsIHBsdWdpblNuYXBzaG90VGltZXJEZWxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBiOGM0Y2NlMWU0NjFlNjk4MjgxNmQxODc5ZDIxNGM1ZmE1NmZkNDNhLi44NzNkYmNjMGEwN2I3
MzA3M2FmMjBiMDhlZGM2MjMwMmRhZmJmYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC05MDAsNCArOTAwLDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRBZGRGb290ZXJMYXll
cihHcmFwaGljc0xheWVyKiBmb290ZXJQYXJlbnQpCiAgICAgICAgIGJhbm5lci0+ZGlkQWRkUGFy
ZW50TGF5ZXIoZm9vdGVyUGFyZW50KTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmluY3Jl
bWVudEFjdGl2ZVBhZ2VDb3VudCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5jcmVt
ZW50QWN0aXZlVGFza0NvdW50KCk7Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkZWNyZW1l
bnRBY3RpdmVQYWdlQ291bnQoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmRlY3JlbWVu
dEFjdGl2ZVRhc2tDb3VudCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IDcwNDRiNTRjMDVkMTkxMWRjYzQ3Y2Q4YzhkYTI0MTNiYWVkMGUxMDIu
LjRlZjI5YjVlMDdlYjVhYjRhZjkyZGVmNjJlYTU0Y2U2YTQyOGZlNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaApAQCAtMjMzLDYgKzIzMyw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEFkZEhlYWRlckxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkRm9vdGVyTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIE9W
RVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVQYWdlQ291bnQoKSBPVkVS
UklERTsKKwogICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8
V2ViRnJhbWU+IG1fY2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CiAgICAgbXV0YWJsZSBib29s
IG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsK
</data>
<flag name="review"
          id="224688"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>