<?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>88871</bug_id>
          
          <creation_ts>2012-06-12 07:28:40 -0700</creation_ts>
          <short_desc>Analyze duplication of code for video controls shadow dom &amp; rendering</short_desc>
          <delta_ts>2013-01-06 19:48:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101669</dependson>
          <blocked>89344</blocked>
    
    <blocked>101670</blocked>
    
    <blocked>101877</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Silvia Pfeiffer">silviapf</reporter>
          <assigned_to name="Silvia Pfeiffer">silviapf</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>qinmin</cc>
    
    <cc>rakuco</cc>
    
    <cc>scherkus</cc>
    
    <cc>s.choi</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vcarbune</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>646917</commentid>
    <comment_count>0</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-06-12 07:28:40 -0700</bug_when>
    <thetext>We found this during the creation of patches for bug 88818 .

Right now, the MediaControlRootElement.[cc,h] and MediaControlRootElementChromium.[cc,h] files duplicate a lot of code without inheritance. Code streamlining is likely possible. We should analyze the duplication of code for the video controls shadow dom &amp; rendering and remove code duplication where possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648688</commentid>
    <comment_count>1</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-06-13 19:08:11 -0700</bug_when>
    <thetext>Note in particular it may be better to inherit MediaControlRootElementChromium from MediaControlRootElement rather than from MediaControls .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716859</commentid>
    <comment_count>2</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-09-10 22:34:31 -0700</bug_when>
    <thetext>I&apos;ve analyzed the duplication of code. There is much duplication not only between the MediaControlRootElementXXX.[cc,h] files, but also with the definition of the individual controls in MediaControlElement.[cc,h].

ANALYSIS
========

Essentially, the current class hierarchy looks like this:

1. Controls root:

HTMLDivElement
|
- MediaControls
    |
    - MediaControlRootElement
    - MediaControlRootElementChromium
        |
        - MediaControlRootElementChromiumAndroid 


2. Control elements:

HTMLDivElement
|
- MediaControlElement
    |
    - MediaControlPanelElement
    - MediaControlTimelineContainerElement
    - MediaControlVolumeSliderContainerElement
    - MediaControlStatusDisplayElement
    - MediaControlTextTrackContainerElement
    - MediaControlTimeDisplayElement
        |
        - MediaControlTimeRemainingDisplayElement
        - MediaControlCurrentTimeDisplayElement
    - MediaControlChromiumEnclosureElement
        |
        - MediaControlPanelEnclosureElement
        - MediaControlOverlayEnclosureElement


HTMLInputElement
|
- MediaControlInputElement
    |
    - MediaControlPlayButtonElement
    - MediaControlOverlayPlayButtonElement
    - MediaControlRewindButtonElement
    - MediaControlReturnToRealtimeButtonElement
    - MediaControlToggleClosedCaptionsButtonElement
    - MediaControlTimelineElement
    - MediaControlFullscreenVolumeMinButtonElement
    - MediaControlFullscreenVolumeMaxButtonElement
    - MediaControlFullscreenButtonElement
    - MediaControlVolumeSliderElement
        |
        - MediaControlFullscreenVolumeSliderElement
    - MediaControlSeekButtonElement
        |
        - MediaControlSeekForwardButtonElement
        - MediaControlSeekBackButtonElement
    - MediaControlMuteButtonElement
        |
        - MediaControlPanelMuteButtonElement
        - MediaControlVolumeSliderMuteButtonElement


That&apos;s three different inheritance trees for classes that all share these functions:
* create()
* show()
* hide()
* setMediaController()

Further, the individual controls all have these functions in common:
* displayType()
* isMediaControlElement()
* shadowPseudoId()
* mediaController()
* defaultElementHandler() [this one is inconsistent and causing trouble in places]


PROPOSAL
========

There are three stages of optimization that could be undertaken.

1.
A first one would clean up the inheritance tree under the MediaControls Class.

There are many function implementations that are shared between
    - MediaControlRootElement
    - MediaControlRootElementChromium
    - MediaControlRootElementChromiumAndroid

These implementations should be pulled into the parent MediaControls class virtual functions. The inherited functions can then extend the base class virtual functions if needed.

I think this cleanup is fairly obvious.


2.
A second clean up would remove the duplication within the different control elements.

I would want to create a stand-alone virtual class MediaControlElement that does not inherit from anywhere, but provides the common functions.

Then the individual elements would inherit from MediaControlElement and either HTMLInputElement or HTMLDivElement. They would extend the functions as appropriate.

I think this cleanup is also necessary.


3.
A third cleanup could make a common virtual parent class between the MediaControls and the MediaControlElement classes for the create(), show(), hide() and setMediaController() functions.

This would remove some further code duplication. It is, however, minimal and probably not worth the effort.


Question
========

Would you agree to start with 1 and do 2, but probably not approach 3?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717246</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-09-11 09:13:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;ve analyzed the duplication of code. There is much duplication not only between the MediaControlRootElementXXX.[cc,h] files, but also with the definition of the individual controls in MediaControlElement.[cc,h].
&gt; 
 ...

Nice analysis!

&gt; 
&gt; Question
&gt; ========
&gt; 
&gt; Would you agree to start with 1 and do 2, but probably not approach 3?

Yes, I agree that it makes sense to start with #1, then #2, and that #3 is probably not worth the effort at this time.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749361</commentid>
    <comment_count>4</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-10-23 22:42:15 -0700</bug_when>
    <thetext>Note to self for code reorg:

Code in MediaControlElements.cpp interferes with the video controls display in MediaControlRootElementChromium.cpp (RenderMediaControlPanelEnclosure::layout) of bug 89344:

* RenderMediaControlTimeDisplay::layout : removes time display at 190px
* MediaControlVolumeSliderContainerElement::defaultEventHandler : hides volume slider
* MediaControlPanelMuteButtonElement::defaultEventHandler : shows volume slider

Chromium needs overrides for individual controls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751391</commentid>
    <comment_count>5</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-10-25 18:04:30 -0700</bug_when>
    <thetext>There is further reorg necessary in the Rendering classes for these elements.

There are RenderXXX classes mixed in between the media controls in MediaControlElements.cpp .

Can I suggest we move those into rendering/RenderMediaControls.h/.cpp ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760357</commentid>
    <comment_count>6</comment_count>
      <attachid>172710</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-06 21:00:55 -0800</bug_when>
    <thetext>Created attachment 172710
Refactoring MediaControls - will fail chromebot, since it also needs a chromium patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760358</commentid>
    <comment_count>7</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-06 21:02:02 -0800</bug_when>
    <thetext>Adding scherkus for review and also for the chromium patch - see http://code.google.com/p/chromium/issues/detail?id=159781</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760359</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 21:04:52 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760362</commentid>
    <comment_count>9</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-06 21:06:48 -0800</bug_when>
    <thetext>Adding quinmin for a review of the android controls - I ran it through the build bots, but am not sure I broke anything visually, since we don&apos;t have layout tests for android buildbots FAIK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760758</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-07 09:13:12 -0800</bug_when>
    <thetext>I am happy with the overall direction.

Chromium WebKit API changes LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760792</commentid>
    <comment_count>11</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-11-07 09:50:03 -0800</bug_when>
    <thetext>Android part LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761867</commentid>
    <comment_count>12</comment_count>
      <attachid>172710</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-11-08 09:25:56 -0800</bug_when>
    <thetext>Comment on attachment 172710
Refactoring MediaControls - will fail chromebot, since it also needs a chromium patch

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

Thanks for taking this on Silvia!

&gt; Source/WebCore/ChangeLog:78
&gt; +        (WebCore::MediaControls::show):
&gt; +        (WebCore::MediaControls::hide):
&gt; +        (WebCore::MediaControls::makeOpaque):
&gt; +        (WebCore::MediaControls::makeTransparent):
&gt; +        (WebCore::MediaControls::shouldHideControls):
&gt; +        (WebCore::MediaControls::bufferingProgressed):
&gt; +        (WebCore::MediaControls::playbackStarted):
&gt; +        (WebCore::MediaControls::playbackProgressed):
&gt; +        (WebCore::MediaControls::playbackStopped):
&gt; +        (WebCore::MediaControls::updateCurrentTimeDisplay):
&gt; +        (WebCore::MediaControls::showVolumeSlider):
&gt; +        (WebCore::MediaControls::changedMute):
&gt; +        (WebCore::MediaControls::changedVolume):
&gt; +        (WebCore::MediaControls::changedClosedCaptionsVisibility):
&gt; +        (WebCore::MediaControls::enteredFullscreen):
&gt; +        (WebCore::MediaControls::exitedFullscreen):
&gt; +        (WebCore::MediaControls::defaultEventHandler):
&gt; +        (WebCore::MediaControls::hideFullscreenControlsTimerFired):
&gt; +        (WebCore::MediaControls::startHideFullscreenControlsTimer):
&gt; +        (WebCore::MediaControls::stopHideFullscreenControlsTimer):
&gt; +        (WebCore::MediaControls::shadowPseudoId):
&gt; +        (WebCore::MediaControls::containsRelatedTarget):
&gt; +        (WebCore::MediaControls::createTextTrackDisplay):
&gt; +        (WebCore::MediaControls::showTextTrackDisplay):
&gt; +        (WebCore::MediaControls::hideTextTrackDisplay):
&gt; +        (WebCore::MediaControls::updateTextTrackDisplay):

Nit: I don&apos;t think it is necessary to include these in the ChangeLog.

&gt; Source/WebCore/ChangeLog:105
&gt; +        (WebCore::MediaControlsApple::MediaControlsApple):
&gt; +        (WebCore::MediaControls::create):
&gt; +        (WebCore::MediaControlsApple::createControls):
&gt; +        (WebCore::MediaControlsApple::setMediaController):
&gt; +        (WebCore::MediaControlsApple::hide):
&gt; +        (WebCore::MediaControlsApple::makeTransparent):
&gt; +        (WebCore::MediaControlsApple::reset):
&gt; +        (WebCore::MediaControlsApple::updateCurrentTimeDisplay):
&gt; +        (WebCore::MediaControlsApple::reportedError):
&gt; +        (WebCore::MediaControlsApple::updateStatusDisplay):
&gt; +        (WebCore::MediaControlsApple::loadedMetadata):
&gt; +        (WebCore::MediaControlsApple::changedMute):
&gt; +        (WebCore::MediaControlsApple::changedVolume):
&gt; +        (WebCore::MediaControlsApple::enteredFullscreen):
&gt; +        (WebCore::MediaControlsApple::exitedFullscreen):
&gt; +        (WebCore::MediaControlsApple::showVolumeSlider):

Ditto.

&gt; Source/WebCore/ChangeLog:127
&gt; +        (WebCore::MediaControlChromiumEnclosureElement::MediaControlChromiumEnclosureElement):
&gt; +        (WebCore::MediaControlChromiumEnclosureElement::displayType):
&gt; +        (WebCore::MediaControlPanelEnclosureElement::MediaControlPanelEnclosureElement):
&gt; +        (WebCore::MediaControlPanelEnclosureElement::create):
&gt; +        (WebCore::MediaControlPanelEnclosureElement::shadowPseudoId):
&gt; +        (WebCore::MediaControlsChromium::MediaControlsChromium):
&gt; +        (WebCore::MediaControls::create):
&gt; +        (WebCore::MediaControlsChromium::createControls):
&gt; +        (WebCore::MediaControlsChromium::initializeControls):
&gt; +        (WebCore::MediaControlsChromium::setMediaController):
&gt; +        (WebCore::MediaControlsChromium::reset):
&gt; +        (WebCore::MediaControlsChromium::playbackStarted):
&gt; +        (WebCore::MediaControlsChromium::updateCurrentTimeDisplay):
&gt; +        (WebCore::MediaControlsChromium::changedMute):
&gt; +        (WebCore::MediaControlsChromium::createTextTrackDisplay):

Ditto.

&gt; Source/WebCore/ChangeLog:145
&gt; +        (WebCore):
&gt; +        (WebCore::MediaControlOverlayEnclosureElement::MediaControlOverlayEnclosureElement):
&gt; +        (WebCore::MediaControlOverlayEnclosureElement::create):
&gt; +        (WebCore::MediaControlOverlayEnclosureElement::shadowPseudoId):
&gt; +        (WebCore::MediaControlsChromiumAndroid::MediaControlsChromiumAndroid):
&gt; +        (WebCore::MediaControls::create):
&gt; +        (WebCore::MediaControlsChromiumAndroid::createControls):
&gt; +        (WebCore::MediaControlsChromiumAndroid::setMediaController):
&gt; +        (WebCore::MediaControlsChromiumAndroid::playbackStarted):
&gt; +        (WebCore::MediaControlsChromiumAndroid::playbackStopped):

Ditto.

&gt; Source/WebCore/html/shadow/MediaControls.cpp:224
&gt; +    // Allow the theme to format the time.

Nit: I know you didn&apos;t add this comment, but it is unnecessary as is only states what is obvious from examining the code.

&gt; Source/WebCore/html/shadow/MediaControls.cpp:299
&gt; +    if (event-&gt;type() == eventNames().mouseoverEvent) {
&gt; +        if (!containsRelatedTarget(event)) {
&gt; +            m_isMouseOverControls = true;
&gt; +            if (!m_mediaController-&gt;canPlay()) {
&gt; +                makeOpaque();
&gt; +                if (shouldHideControls())
&gt; +                    startHideFullscreenControlsTimer();
&gt; +            }
&gt; +        }
&gt; +    } else if (event-&gt;type() == eventNames().mouseoutEvent) {
&gt; +        if (!containsRelatedTarget(event)) {
&gt; +            m_isMouseOverControls = false;
&gt; +            stopHideFullscreenControlsTimer();
&gt; +        }
&gt; +    } else if (event-&gt;type() == eventNames().mousemoveEvent) {
&gt; +        if (m_isFullscreen) {
&gt; +            // When we get a mouse move in fullscreen mode, show the media controls, and start a timer
&gt; +            // that will hide the media controls after a 3 seconds without a mouse move.
&gt; +            makeOpaque();
&gt; +            if (shouldHideControls())
&gt; +                startHideFullscreenControlsTimer();
&gt; +        }
&gt; +    }

Nit: you didn&apos;t create this either, but early returns would make this much easier to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762099</commentid>
    <comment_count>13</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-08 13:13:19 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Source/WebCore/ChangeLog:78
&gt; &gt; +        (WebCore::MediaControls::show):
&gt; &gt; +        (WebCore::MediaControls::hide):
&gt; &gt; +        (WebCore::MediaControls::makeOpaque):
&gt; &gt; +        (WebCore::MediaControls::makeTransparent):
&gt; &gt; +        (WebCore::MediaControls::shouldHideControls):
&gt; &gt; +        (WebCore::MediaControls::bufferingProgressed):
&gt; &gt; +        (WebCore::MediaControls::playbackStarted):
&gt; &gt; +        (WebCore::MediaControls::playbackProgressed):
&gt; &gt; +        (WebCore::MediaControls::playbackStopped):
&gt; &gt; +        (WebCore::MediaControls::updateCurrentTimeDisplay):
&gt; &gt; +        (WebCore::MediaControls::showVolumeSlider):
&gt; &gt; +        (WebCore::MediaControls::changedMute):
&gt; &gt; +        (WebCore::MediaControls::changedVolume):
&gt; &gt; +        (WebCore::MediaControls::changedClosedCaptionsVisibility):
&gt; &gt; +        (WebCore::MediaControls::enteredFullscreen):
&gt; &gt; +        (WebCore::MediaControls::exitedFullscreen):
&gt; &gt; +        (WebCore::MediaControls::defaultEventHandler):
&gt; &gt; +        (WebCore::MediaControls::hideFullscreenControlsTimerFired):
&gt; &gt; +        (WebCore::MediaControls::startHideFullscreenControlsTimer):
&gt; &gt; +        (WebCore::MediaControls::stopHideFullscreenControlsTimer):
&gt; &gt; +        (WebCore::MediaControls::shadowPseudoId):
&gt; &gt; +        (WebCore::MediaControls::containsRelatedTarget):
&gt; &gt; +        (WebCore::MediaControls::createTextTrackDisplay):
&gt; &gt; +        (WebCore::MediaControls::showTextTrackDisplay):
&gt; &gt; +        (WebCore::MediaControls::hideTextTrackDisplay):
&gt; &gt; +        (WebCore::MediaControls::updateTextTrackDisplay):
&gt; 
&gt; Nit: I don&apos;t think it is necessary to include these in the ChangeLog.

OK, will remove these and similar ones. They were auto-created by prepare-Changelog.

&gt; &gt; Source/WebCore/html/shadow/MediaControls.cpp:224
&gt; &gt; +    // Allow the theme to format the time.
&gt; 
&gt; Nit: I know you didn&apos;t add this comment, but it is unnecessary as is only states what is obvious from examining the code.

Fair enough. :-)
 
&gt; &gt; Source/WebCore/html/shadow/MediaControls.cpp:299
&gt; &gt; +    if (event-&gt;type() == eventNames().mouseoverEvent) {
&gt; &gt; +        if (!containsRelatedTarget(event)) {
&gt; &gt; +            m_isMouseOverControls = true;
&gt; &gt; +            if (!m_mediaController-&gt;canPlay()) {
&gt; &gt; +                makeOpaque();
&gt; &gt; +                if (shouldHideControls())
&gt; &gt; +                    startHideFullscreenControlsTimer();
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt; +    } else if (event-&gt;type() == eventNames().mouseoutEvent) {
&gt; &gt; +        if (!containsRelatedTarget(event)) {
&gt; &gt; +            m_isMouseOverControls = false;
&gt; &gt; +            stopHideFullscreenControlsTimer();
&gt; &gt; +        }
&gt; &gt; +    } else if (event-&gt;type() == eventNames().mousemoveEvent) {
&gt; &gt; +        if (m_isFullscreen) {
&gt; &gt; +            // When we get a mouse move in fullscreen mode, show the media controls, and start a timer
&gt; &gt; +            // that will hide the media controls after a 3 seconds without a mouse move.
&gt; &gt; +            makeOpaque();
&gt; &gt; +            if (shouldHideControls())
&gt; &gt; +                startHideFullscreenControlsTimer();
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; Nit: you didn&apos;t create this either, but early returns would make this much easier to follow.

OK, will add.


Thanks everyone for taking the time to review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763935</commentid>
    <comment_count>14</comment_count>
      <attachid>173529</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-11 17:17:33 -0800</bug_when>
    <thetext>Created attachment 173529
Refactored MediaControls incl feedback from Eric</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763992</commentid>
    <comment_count>15</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-11 20:11:05 -0800</bug_when>
    <thetext>Note for Chromium commit queue: https://codereview.chromium.org/11364197 needs to land after this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764015</commentid>
    <comment_count>16</comment_count>
      <attachid>173529</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-11 21:06:50 -0800</bug_when>
    <thetext>Comment on attachment 173529
Refactored MediaControls incl feedback from Eric

Will add a patch to make sure not to break Chromium builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764953</commentid>
    <comment_count>17</comment_count>
      <attachid>173758</attachid>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-12 16:35:09 -0800</bug_when>
    <thetext>Created attachment 173758
Refactoring MediaControls incl a FIXME for after Chrome updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765989</commentid>
    <comment_count>18</comment_count>
      <attachid>173758</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 13:28:36 -0800</bug_when>
    <thetext>Comment on attachment 173758
Refactoring MediaControls incl a FIXME for after Chrome updates

Rejecting attachment 173758 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
NFLICT (content): Merge conflict in LayoutTests/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Remove a few old no-longer-failing tests and update one baseline.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 154.

Full output: http://queues.webkit.org/results/14809972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766064</commentid>
    <comment_count>19</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-13 14:38:37 -0800</bug_when>
    <thetext>Landed manually as http://trac.webkit.org/changeset/134488</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172710</attachid>
            <date>2012-11-06 21:00:55 -0800</date>
            <delta_ts>2012-11-11 17:17:24 -0800</delta_ts>
            <desc>Refactoring MediaControls - will fail chromebot, since it also needs a chromium patch</desc>
            <filename>bug-88871-20121107155901.patch</filename>
            <type>text/plain</type>
            <size>167645</size>
            <attacher name="Silvia Pfeiffer">silviapf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM1MDhmYzk2NzQxOTI5
YTg4ODRiYTY3MzkzZTVmZDIxMjI1NjZjMS4uYmFlYmFiZmIyMzc1MTk2NTJlMzE4OTBlYTQwMzQ0
MWExMjIxMjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NyBAQAorMjAxMi0xMS0wNiAgU2ls
dmlhIFBmZWlmZmVyICA8c2lsdmlhcGZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFuIHVw
IHRoZSBpbmhlcml0YW5jZSB0cmVlIHVuZGVyIHRoZSBNZWRpYUNvbnRyb2xzIENsYXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJl
bW92ZXMgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBDaHJvbWl1bSBhbmQgU2FmYXJpCisg
ICAgICAgIG1lZGlhIGNvbnRyb2xzIHNoYWRvdyBET01zLgorICAgICAgICBUaGlzIGlzIGFjaGll
dmVkIGJ5IHB1bGxpbmcgY29tbW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBpZGVudGljYWwgKG9yCisg
ICAgICAgIGFsbW9zdCBpZGVudGljYWwpIGJldHdlZW4gdGhlIGRpZmZlcmVudCBwbGF0Zm9ybXMg
aW50byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgVGhlIGRlcml2ZWQgY2xhc3NlcyBhcmUgcmVu
YW1lZCBiYXNlZCBvbiB0aGVpciBwbGF0Zm9ybToKKyAgICAgICAgLSBNZWRpYUNvbnRyb2xSb290
RWxlbWVudCAgICAgICAgICAgICAgICB0byBNZWRpYUNvbnRyb2xzQXBwbGUuCisgICAgICAgIC0g
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSAgICAgICAgdG8gTWVkaWFDb250cm9sc0No
cm9taXVtLgorICAgICAgICAtIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lk
IHRvIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuCisgICAgICAgIE1lZGlhQ29udHJvbHMg
aXMgbm93IG5vIGxvbmdlciBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzLCBidXQgaXRzICJjcmVhdGUi
CisgICAgICAgIGZ1bmN0aW9uIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4gdGhlIHBvcnQtc3BlY2lm
aWMgaGVhZGVyIGZpbGUsIHNvIGl0J3MKKyAgICAgICAgb24gcHVycG9zZSBpbmNvbXBsZXRlIGlu
IHRoZSBNZWRpYUNvbnRyb2xzLmNwcCBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoaXMgaXMgcmVmYWN0b3Jpbmcgd29yayBvbmx5LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICAgUmVuYW1lIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCB0byBN
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwIC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5bY3BwLGhdIHRvIE1lZGlh
Q29udHJvbHNBcHBsZS5bY3BwLGhdIC4KKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAg
IFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgdG8gTWVkaWFDb250cm9sc0FwcGxl
LmNwcCAuCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNv
bnRyb2xSb290RWxlbWVudFtDaHJvbWl1bVtBbmRyb2lkXV0uW2NwcCxoXSB0byBNZWRpYUNvbnRy
b2xzW0FwcGxlLENocm9taXVtW0FuZHJvaWRdXS5bY3BwLGhdIC4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudCBzeW1ib2xz
IHRvIE1lZGlhQ29udHJvbHNBcHBsZSBzeW1ib2xzLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5bY3BwLGhdIHRvIE1lZGlhQ29udHJvbHNBcHBsZS5bY3BwLGhdIC4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAgUmVuYW1lIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LltjcHAsaF0gdG8gTWVkaWFDb250cm9sc0FwcGxlLltjcHAsaF0gLgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kgb24gTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuaCAoYmFzZSBjbGFzcyBNZWRpYUNvbnRyb2xzLmggaXMgc3RpbGwgdGhlcmUpLgorICAgICAg
ICAgIFJlbmFtZSB1cGRhdGVUaW1lRGlzcGxheSgpIHRvIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sczo6TWVkaWFDb250cm9scyk6CisgICAgICAgICAgQWRkZWQg
aW5pdGlhbGl6YXRpb24gZm9yIG1lZGlhIGVsZW1lbnRzIHRoYXQgYWxsIHBsYXRmb3JtIGNvbnRy
b2xzIHNoYXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgUmVtb3ZlZCBpbmNsdWRl
IGZpbGVzIHRoYXQgYXJlIGFscmVhZHkgaW5jbHVkZWQgaW4gaGVhZGVyIGZpbGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAg
IEFkZGVkIGNvbnRyb2xsZXIgYXNzaWdubWVudCBmb3IgbWVkaWEgZWxlbWVudHMgdGhhdCBhbGwg
cGxhdGZvcm0gY29udHJvbHMgc2hhcmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xz
OjpyZXNldCk6CisgICAgICAgICAgQWRkZWQgcmVzZXRzIGZvciBtZWRpYSBlbGVtZW50cyB0aGF0
IGFsbCBwbGF0Zm9ybSBjb250cm9scyBzaGFyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHM6OnJlcG9ydGVkRXJyb3IpOgorICAgICAgICAgIEFkZGVkIGVycm9yIGhhbmRsaW5nIGZv
ciBtZWRpYSBlbGVtZW50cyB0aGF0IGFsbCBwbGF0Zm9ybSBjb250cm9scyBzaGFyZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmxvYWRlZE1ldGFkYXRhKToKKyAgICAgICAgICBB
ZGRlZCBkZWZhdWx0IGFjdGlvbiBmb3IgbG9hZGVkTWV0YWRhdGEgZXZlbnQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHM6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6bWFrZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6c2hvdWxkSGlkZUNvbnRyb2xzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmJ1ZmZlcmluZ1Byb2dyZXNzZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6cGxheWJhY2tTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1N0b3BwZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6Y2hhbmdlZE11dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sczo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xz
OjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHM6OmVudGVyZWRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzOjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzOjpzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1Rp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNvbnRhaW5zUmVsYXRlZFRhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNob3dUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmhpZGVUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnVwZGF0ZVRleHRUcmFja0Rpc3Bs
YXkpOgorICAgICAgICAgIEFkZGVkIGRlZmF1bHQgYWN0aW9ucyBmb3IgYWxsIHRoZXNlIG1lZGlh
IGNvbnRyb2xzIG1lbWJlciBmdW5jdGlvbnMuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgQWRkZWQgaW5jbHVkZSBm
aWxlcyBhbmQgZm9yd2FyZCBjbGFzcyBkZWNsYXJhdGlvbnMgdGhhdCBhbGwgbWVkaWEgY29udHJv
bHMgc2hhcmUuCisgICAgICAgIChNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgICBNYWtlIGFsbCBw
dXJlIHZpcnR1YWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBq
dXN0IHZpcnR1YWwuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjp1cGRhdGVTdGF0
dXNEaXNwbGF5KToKKyAgICAgICAgICBBZGQgYW4gZW1wdHkgdmlydHVhbCB1cGRhdGVTdGF0dXNE
aXNwbGF5IGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgbWVkaWEgZWxlbWVudHMuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcC4KKyAgICAg
ICAgICBSZWR1Y2VkIEFwcGxlLXNwZWNpZmljIG1lZGlhIGNvbnRyb2wgZnVuY3Rpb25zIGJ5IHJl
bHlpbmcgb24gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6TWVk
aWFDb250cm9sc0FwcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2V0TWVkaWFDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6Om1ha2VUcmFuc3BhcmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OnJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6cmVwb3J0ZWRFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OnVwZGF0ZVN0YXR1c0Rpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpsb2FkZWRNZXRhZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OmNoYW5nZWRNdXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OmVudGVyZWRGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6ZXhpdGVkRnVsbHNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaC4KKyAgICAgICAg
ICBSZWR1Y2VkIEFwcGxlLXNwZWNpZmljIG1lZGlhIGNvbnRyb2wgZWxlbWVudHMgYnkgcmVseWlu
ZyBvbiBzb21lIGVsZW1lbnRzIGluIHRoZSBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChNZWRpYUNvbnRyb2xzQXBwbGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNDaHJvbWl1bS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcC4KKyAgICAgICAgICBS
ZWR1Y2VkIENocm9taXVtLXNwZWNpZmljIG1lZGlhIGNvbnRyb2wgZnVuY3Rpb25zIGJ5IHJlbHlp
bmcgb24gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENocm9taXVtRW5jbG9z
dXJlRWxlbWVudDo6TWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudDo6ZGlzcGxh
eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVt
ZW50OjpNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW06Ok1lZGlhQ29udHJv
bHNDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0Nocm9taXVtOjpjcmVhdGVDb250cm9scyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW06OmluaXRpYWxpemVDb250
cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnNldE1lZGlh
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cGxheWJhY2tT
dGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDaHJvbWl1bTo6dXBkYXRl
Q3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDaHJv
bWl1bTo6Y2hhbmdlZE11dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0Nocm9t
aXVtOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW0uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uaC4KKyAgICAgICAgICBSZWR1Y2Vk
IENocm9taXVtLXNwZWNpZmljIG1lZGlhIGNvbnRyb2wgZnVuY3Rpb25zIGJ5IHJlbHlpbmcgb24g
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudCk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQpOgorICAgICAgICAoTWVk
aWFDb250cm9sc0Nocm9taXVtKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
Q2hyb21pdW1BbmRyb2lkLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkLmNwcC4KKyAgICAgICAg
ICBSZW5hbWVkIGNsYXNzIG5hbWUgYW5kIGJhc2UgY2xhc3MgbmFtZS4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1l
bnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6
Ok1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDaHJvbWl1
bUFuZHJvaWQ6OmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNDaHJvbWl1bUFuZHJvaWQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkOjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZDo6cGxheWJhY2tTdG9wcGVk
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtQW5kcm9pZC5oLgorICAgICAgICAgIFJlbmFtZWQgY2xhc3MgbmFtZSBh
bmQgYmFzZSBjbGFzcyBuYW1lLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xzQ2hy
b21pdW1BbmRyb2lkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVI
aWRpbmdDb250cm9scyk6CisgICAgICAgICAgTW92ZWQgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50
QmVmb3JlSGlkaW5nQ29udHJvbHMgdmFyaWFibGUgZnJvbSBhbGwgY2xhc3NlcyB0byBhIHRoZW1l
LXNwZWNpZmljIGZ1bmN0aW9uLgorCiAyMDEyLTExLTA1ICBLZW5pY2hpIElzaGliYXNoaSAgPGJh
c2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVuaWNvZGUgY29tYmluaW5n
IGRpYWNyaXRpY2FsIGFyZW4ndCBhbHdheXMgY29tYmluZWQgb24gTGludXgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMmE2NzU5YTE5MzA1ZDEyMDNjOTQwNDJmZjY5OTk4NzE2MThlMjZm
OS4uZmJjNmY1YWJkMTUxZGQ2NzA4YjM1OGM2YzZhMzIwZjg0MTNiZTg1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMS0wNiAgU2lsdmlhIFBmZWlm
ZmVyICA8c2lsdmlhcGZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFuIHVwIHRoZSBpbmhl
cml0YW5jZSB0cmVlIHVuZGVyIHRoZSBNZWRpYUNvbnRyb2xzIENsYXNzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4NzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29k
ZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBDaHJvbWl1bSBhbmQgU2FmYXJpCisgICAgICAgIG1l
ZGlhIGNvbnRyb2xzIHNoYWRvdyBET01zLgorICAgICAgICBUaGUgZGVyaXZlZCBjbGFzc2VzIGFy
ZSByZW5hbWVkIGJhc2VkIG9uIHRoZWlyIHBsYXRmb3JtOgorICAgICAgICAtIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50ICAgICAgICAgICAgICAgIHRvIE1lZGlhQ29udHJvbHNBcHBsZS4KKyAgICAg
ICAgLSBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtICAgICAgICB0byBNZWRpYUNvbnRy
b2xzQ2hyb21pdW0uCisgICAgICAgIC0gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFu
ZHJvaWQgdG8gTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJDb250ZXh0TWVudURhdGEuaDoKKyAgICAgICAgICBNb3ZlIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50IHRvIE1lZGlhQ29udHJvbHMuCisgICAgICAgICogc3JjL0NvbnRleHRNZW51Q2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3Vz
dG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgorICAgICAgICAgIE1vdmUgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQgdG8gTWVkaWFDb250cm9scy4KKwogMjAxMi0xMS0wNSAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtWOF0gSW50cnVzaXZlRE9NV3JhcHBlck1hcCBz
aG91bGQgYmUgdXNhYmxlIGZvciBtb3JlIHRoYW4ganVzdCBOb2RlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA2MzZmNjVhYjViM2NlZGExYzAyYTkxOTBkNDFiYzAyYzI0MmM0ODRmLi5lZTM0ZWVj
ZTJhNzZhNmJmMDFhOWU3NGQ1MTMzOGYxMTEyNDQzNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTU0NCw3ICsxNTQ0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCiAg
ICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCi0gICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0FwcGxlLmNwcAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKICAgICBo
dG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggM2Rj
MmYyZWFhOTMxYWNjYTg0ZmZmYmU3NzM5MzY4MTI5ZWIxMDNkOC4uZDVhNGFiMjUwMzBmOWY4NmFl
MjE5NWVlYWY1MGI3MDA1NzkyY2JlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zNTY4LDggKzM1NjgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNo
YWRvd0VsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dF
bGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBmNDBjMmU5NjVmNmMxMTJmZjRlMTQ4ODIxODk3
ZmEyZmIzMzJlNWE3Li45YTY4NTQyZDIyMjgzYzY0MGRmNzE1MTQ5ZjQ4ZTExNDlmNGVlMjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTczMiw3ICs3MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgXAogICAgIGh0bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVt
ZW50LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAotICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBcCisgICAgaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBcCiAgICAg
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
ZjZmMGUxZGYxY2UyYjBlOWQxZjA1MWRmYTNmY2VjYzFiODc2MTFkNS4uNGEyYWYzNzYxNjQwMGFj
NTk3ZWViYjNlNGY3YmI3OTA0Y2FmN2Q0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDQzOCwxMCAr
NDQzOCwxMCBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwJywKICAgICAg
ICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oJywKLSAgICAgICAgICAg
ICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcCcsCi0gICAg
ICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5oJywK
LSAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
QW5kcm9pZC5jcHAnLAotICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW1BbmRyb2lkLmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
Q2hyb21pdW1BbmRyb2lkLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0Nocm9taXVtQW5kcm9pZC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZXRlclNo
YWRvd0VsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZXRlclNoYWRvd0Vs
ZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA1MDNlYmQ3MzEzZjY1MzNkODAxMDhkOGQ5MTI0
MjdjODk5ZDFhYjA1Li43Y2JhM2VjYTRlOTZjY2Y3MDUxNTkyZDMwODcyYjM4YTI5OGE4MmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKQEAgLTY5MTAsNyArNjkxMCw3IEBAIF9fWk5LN1dlYkNvcmUxNkhU
TUxWaWRlb0VsZW1lbnQ3aXNWaWRlb0V2CiBfX1pON1dlYkNvcmU2Q2hyb21lMzRyZXF1aXJlc0Z1
bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrRXYKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVu
dDE5ZW5zdXJlTWVkaWFDb250cm9sc0V2CiBfX1pON1dlYkNvcmUxM01lZGlhQ29udHJvbHM2Y3Jl
YXRlRVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCi1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJv
b3RFbGVtZW50NmNyZWF0ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQorX19aTjdXZWJDb3JlMjNN
ZWRpYUNvbnRyb2xzQXBwbGU2Y3JlYXRlRVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCiBfX1pON1dl
YkNvcmUxM01lZGlhQ29udHJvbHNDMkVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQogX19aTjdXZWJD
b3JlMjRNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ2Y3JlYXRlRVBOU18xNkhUTUxNZWRpYUVsZW1l
bnRFCiBfX1pON1dlYkNvcmUzMU1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ2Y3JlYXRl
RVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCkBAIC02OTgwLDggKzY5ODAsOCBAQCBfX1pON1dlYkNv
cmU0MU1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50NmNyZWF0ZUVQTlNf
MTZIVE1MTWVkaWFFbAogX19aTjdXZWJDb3JlNDRNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
TWluQnV0dG9uRWxlbWVudDZjcmVhdGVFUE5TXzE2SFRNTE1lZGlhRWxlbWVudEUKIF9fWk43V2Vi
Q29yZTQxTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ2Y3JlYXRlRVBO
U18xNkhUTUxNZWRpYUVsZW1lbnRFCiBfX1pON1dlYkNvcmU0NE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50NmNyZWF0ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQot
X19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDVyZXNldEV2Ci1fX1pON1dlYkNv
cmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MTl1cGRhdGVTdGF0dXNEaXNwbGF5RXYKK19fWk43
V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlNXJlc2V0RXYKK19fWk43V2ViQ29yZTIzTWVkaWFD
b250cm9sc0FwcGxlMTl1cGRhdGVTdGF0dXNEaXNwbGF5RXYKIF9fWk43V2ViQ29yZTMyTWVkaWFD
b250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ2dXBkYXRlRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxN
ZWRpYUVsZW1lbnQxMHJlYWR5U3RhdGVFdgogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVu
dDEwY3VycmVudFNyY0V2CkBAIC03MDA1LDggKzcwMDUsOCBAQCBfX1pOSzdXZWJDb3JlMTZIVE1M
TWVkaWFFbGVtZW50N2NhblBsYXlFdgogX19aTjdXZWJDb3JlMjRNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQ0c2hvd0V2CiBfX1pON1dlYkNvcmUxOUNTU1N0eWxlRGVjbGFyYXRpb24xNHJlbW92ZVBy
b3BlcnR5RVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUyNkNTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uMTRyZW1vdmVQcm9wZXJ0eUVpUmkKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQxMG1ha2VPcGFxdWVFdgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290
RWxlbWVudDRzaG93RXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTBtYWtlT3Bh
cXVlRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlNHNob3dFdgogX19aTjdXZWJD
b3JlMTlNZWRpYUNvbnRyb2xFbGVtZW50NHNob3dFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFF
bGVtZW50MjBpbnNlcnRlZEludG9Eb2N1bWVudEV2CiBfX1pON1dlYkNvcmUxNkhUTUxWaWRlb0Vs
ZW1lbnQ2YXR0YWNoRXYKQEAgLTcwMzAsNyArNzAzMCw3IEBAIF9fWk5LN1dlYkNvcmUyN01lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZTI4c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZ0V2CiBf
X1pON1dlYkNvcmUxMFNoYWRvd1Jvb3Q2YXR0YWNoRXYKIF9fWk43V2ViQ29yZTIxU2hhZG93Q29u
dGVudFNlbGVjdG9yQzJFUE5TXzEwU2hhZG93Um9vdEUKIF9fWk5LN1dlYkNvcmUxMFNoYWRvd1Jv
b3QxNmlzU2hhZG93Qm91bmRhcnlFdgotX19aTks3V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQxNHNoYWRvd1BzZXVkb0lkRXYKK19fWk5LN1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBs
ZTE0c2hhZG93UHNldWRvSWRFdgogX19aTks3V2ViQ29yZTI0QXBwbHlQcm9wZXJ0eURlZmF1bHRC
YXNlSU5TXzZMZW5ndGhFRTE3YXBwbHlJbmhlcml0VmFsdWVFUE5TXzE2Q1NTU3R5bGVTZWxlY3Rv
ckUKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlNXdpZHRoRXYKIF9fWk5LN1dlYkNvcmUxMVJl
bmRlclN0eWxlNmhlaWdodEV2CkBAIC03MTExLDcgKzcxMTEsNyBAQCBfX1pON1dlYkNvcmUxMU1l
ZGlhUGxheWVyOHNldE11dGVkRWIKIF9fWk5LN1dlYkNvcmUyMk51bGxNZWRpYVBsYXllclByaXZh
dGUxNHN1cHBvcnRzTXV0aW5nRXYKIF9fWk43V2ViQ29yZTIyTnVsbE1lZGlhUGxheWVyUHJpdmF0
ZTlzZXRWb2x1bWVFZgogX19aTjdXZWJDb3JlMTFNZWRpYVBsYXllcjlzZXRWb2x1bWVFZgotX19a
TjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDEzY2hhbmdlZFZvbHVtZUV2CitfX1pO
N1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTEzY2hhbmdlZFZvbHVtZUV2CiBfX1pON1dlYkNv
cmUxMU1lZGlhUGxheWVyNGxvYWRFUktOM1dURjZTdHJpbmdFUktOU18xMUNvbnRlbnRUeXBlRQog
X19aTks3V2ViQ29yZTExQ29udGVudFR5cGU0dHlwZUV2CiBfX1pOSzdXZWJDb3JlMTFDb250ZW50
VHlwZTlwYXJhbWV0ZXJFUktOM1dURjZTdHJpbmdFCkBAIC03MjgxLDcgKzcyODEsNyBAQCBfX1pU
aG4xMjBfTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MjhtZWRpYVBsYXllclJlYWR5U3RhdGVD
aGFuZ2VkRVBOU18xMU1lZGlhUAogX19aTjdXZWJDb3JlMTFNZWRpYVBsYXllcjEwcmVhZHlTdGF0
ZUV2CiBfX1pOSzdXZWJDb3JlMzBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24xMHJlYWR5
U3RhdGVFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MTNzZXRSZWFkeVN0YXRlRU5T
XzExTWVkaWFQbGF5ZXIxMFJlYWR5U3RhdGVFCi1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJv
b3RFbGVtZW50MTRsb2FkZWRNZXRhZGF0YUV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNB
cHBsZTE0bG9hZGVkTWV0YWRhdGFFdgogX19aTks3V2ViQ29yZTMwTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOGR1cmF0aW9uRXYKIF9fWk5LN1dlYkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMxNnBsYXRmb3JtRHVyYXRpb25FdgogX19aTks3V2ViQ29yZTExTWVk
aWFQbGF5ZXI4ZHVyYXRpb25FdgpAQCAtNzI5Miw3ICs3MjkyLDcgQEAgX19aTks3V2ViQ29yZTI3
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlMzFtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFU
aW1lRXYKIF9fWk5LN1dlYkNvcmUxMU1lZGlhUGxheWVyMTFjdXJyZW50VGltZUV2CiBfX1pOSzdX
ZWJDb3JlMzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDMTFjdXJyZW50VGltZUV2
CiBfX1pON1dlYkNvcmUyN01lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDExc2V0UG9zaXRpb25F
ZgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDE3dXBkYXRlVGltZURpc3Bs
YXlFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxN3VwZGF0ZVRpbWVEaXNwbGF5
RXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclRoZW1lMzBmb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVu
dFRpbWVFZmYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclRoZW1lMjNmb3JtYXRNZWRpYUNvbnRyb2xz
VGltZUVmCiBfX1pON1dlYkNvcmUzME1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDE1c2V0
Q3VycmVudFZhbHVlRWYKQEAgLTczMDQsNyArNzMwNCw3IEBAIF9fWk43V2ViQ29yZTE2SFRNTE1l
ZGlhRWxlbWVudDE1dXBkYXRlUGxheVN0YXRlRXYKIF9fWk5LN1dlYkNvcmUxMU1lZGlhUGxheWVy
NnBhdXNlZEV2CiBfX1pOSzdXZWJDb3JlMzBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb242
cGF1c2VkRXYKIF9fWk5LN1dlYkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM0cmF0ZUV2Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MTVwbGF5YmFj
a1N0b3BwZWRFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxNXBsYXliYWNrU3Rv
cHBlZEV2CiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlOUZsb2F0UmVjdEVMbTBFRTE1cmVzZXJ2
ZUNhcGFjaXR5RW0KIF9fWk5LN1dlYkNvcmUxMVJlbmRlckJsb2NrMTl2aXJ0dWFsQ29udGludWF0
aW9uRXYKIF9fWk43V2ViQ29yZTExUmVuZGVyTGF5ZXIxMXJlbW92ZUNoaWxkRVBTMF8KQEAgLTc0
OTcsNyArNzQ5Nyw3IEBAIF9fWk43V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzE3ZGVzdHJveVZpZGVvTGF5ZXJFdgogLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBk
aXNjb25uZWN0XQogX19aTjdXZWJDb3JlMzBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25E
MkV2CiBfX1pUaG44X043V2ViQ29yZTEwU2hhZG93Um9vdEQwRXYKLV9fWk43V2ViQ29yZTIzTWVk
aWFDb250cm9sUm9vdEVsZW1lbnREMEV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBs
ZUQwRXYKIF9fWk43V2ViQ29yZTI0TWVkaWFDb250cm9sUGFuZWxFbGVtZW50RDBFdgogX19aTjdX
ZWJDb3JlMzFNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50RDBFdgogX19aTjdXZWJDb3Jl
MTZIVE1MSW5wdXRFbGVtZW50RDJFdgpAQCAtMTg0OTAsNyArMTg0OTAsNyBAQCBfX1pOSzdXZWJD
b3JlMjdNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UxNHN1cHBvcnRzTXV0aW5nRXYKIF9fWk43
V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzlzZXRWb2x1bWVFZgog
X19aTjdXZWJDb3JlMTFNZWRpYVBsYXllcjRwbGF5RXYKIF9fWk43V2ViQ29yZTMwTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uNHBsYXlFdgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xS
b290RWxlbWVudDE1cGxheWJhY2tTdGFydGVkRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9s
c0FwcGxlMTVwbGF5YmFja1N0YXJ0ZWRFdgogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVu
dDEyaXNGdWxsc2NyZWVuRXYKIF9fWk43V2ViQ29yZTIxV2ViR0xSZW5kZXJpbmdDb250ZXh0MTd2
aWRlb0ZyYW1lVG9JbWFnZUVQTlNfMTZIVE1MVmlkZW9FbGVtZW50RQogX19aTks3V2ViQ29yZTE2
SFRNTFZpZGVvRWxlbWVudDEwdmlkZW9XaWR0aEV2CkBAIC0xODUwNiw5ICsxODUwNiw5IEBAIF9f
Wk43V2ViQ29yZTI0Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOWRyYXdJbWFnZUVQTlNfMTZIVE1M
VmlkZW9FbGVtZW50RWZmZmZSaQogX19aTjdXZWJDb3JlMjhqc0hUTUxWaWRlb0VsZW1lbnRWaWRl
b1dpZHRoRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUK
IF9fWk43V2ViQ29yZTI5anNIVE1MVmlkZW9FbGVtZW50VmlkZW9IZWlnaHRFUE4zSlNDOUV4ZWNT
dGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQogX19aTjdXZWJDb3JlMTZIVE1M
TWVkaWFFbGVtZW50MjZwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZEVQTlNfNVRpbWVySVMwX0VF
Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MThwbGF5YmFja1Byb2dyZXNz
ZWRFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxOHBsYXliYWNrUHJvZ3Jlc3Nl
ZEV2CiBfX1pOSzdXZWJDb3JlMTZIVE1MVmlkZW9FbGVtZW50OGhhc1ZpZGVvRXYKLV9fWk43V2Vi
Q29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxNW1ha2VUcmFuc3BhcmVudEV2CitfX1pON1dl
YkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTE1bWFrZVRyYW5zcGFyZW50RXYKIF9fWk43V2ViQ29y
ZTExUmVuZGVyVGhlbWUyOG1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb25FdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyU2xpZGVyMzZyZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb25F
dgogX19aTjdXZWJDb3JlMzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDMTJwbGF0
Zm9ybVBsYXlFdgpAQCAtMTk3NDMsNyArMTk3NDMsNyBAQCBfX1pON1dlYkNvcmUyOXNldEpTSFRN
TE1lZGlhRWxlbWVudEF1dG9wbGF5RVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmplY3RFTlMw
XwogX19aTjdXZWJDb3JlMjZqc0hUTUxNZWRpYUVsZW1lbnRDb250cm9sc0VQTjNKU0M5RXhlY1N0
YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZpZXJFCiBfX1pON1dlYkNvcmUyOXNldEpT
SFRNTE1lZGlhRWxlbWVudENvbnRyb2xzRVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmplY3RF
TlMwXzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MTFzZXRDb250cm9s
c0ViCi1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50NGhpZGVFdgorX19aTjdX
ZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGU0aGlkZUV2CiBfX1pON1dlYkNvcmUyMmpzSFRNTE1l
ZGlhRWxlbWVudExvb3BFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVu
dGlmaWVyRQogX19aTjdXZWJDb3JlMjVzZXRKU0hUTUxNZWRpYUVsZW1lbnRMb29wRVBOM0pTQzlF
eGVjU3RhdGVFUE5TMF84SlNPYmplY3RFTlMwXzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTdqc0hU
TUxEb2N1bWVudEFsbEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50
aWZpZXJFCkBAIC0yNjk0MCwxMyArMjY5NDAsMTMgQEAgX19aTjdXZWJDb3JlMTZIVE1MVmlkZW9F
bGVtZW50MjF3ZWJraXRFbnRlckZ1bGxzY3JlZW5FYlJpCiBfX1pON1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQxNWVudGVyRnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUxNlJlbmRlckZ1bGxTY3Jl
ZW4xN2NyZWF0ZVBsYWNlaG9sZGVyRU4zV1RGMTBQYXNzUmVmUHRySU5TXzExUmVuZGVyU3R5bGVF
RUVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MjZkaWRCZWNv
bWVGdWxsc2NyZWVuRWxlbWVudEV2Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVt
ZW50MTdlbnRlcmVkRnVsbHNjcmVlbkV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBs
ZTE3ZW50ZXJlZEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMTRSZW5kZXJUaGVtZU1hYzI3cGFp
bnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uRVBOU18xMlJlbmRlck9iamVjdEVSS05TXzlQYWludElu
Zm9FUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyNHBhaW50TWVk
aWFTZWVrQmFja0J1dHRvbkVQTlNfMTJSZW5kZXJPYmplY3RFUktOU185UGFpbnRJbmZvRVJLTlNf
N0ludFJlY3RFCi1fX1pON1dlYkNvcmU1VGltZXJJTlNfMjNNZWRpYUNvbnRyb2xSb290RWxlbWVu
dEVFNWZpcmVkRXYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQzMmhpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkRVBOU181VGltZXJJUzBfRUUKK19fWk43V2ViQ29y
ZTVUaW1lcklOU18yM01lZGlhQ29udHJvbHNBcHBsZUVFNWZpcmVkRXYKK19fWk43V2ViQ29yZTIz
TWVkaWFDb250cm9sc0FwcGxlMzJoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZEVQTlNf
NVRpbWVySVMwX0VFCiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQzMHdpbGxTdG9wQmVp
bmdGdWxsc2NyZWVuRWxlbWVudEV2Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVt
ZW50MTZleGl0ZWRGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxl
MTZleGl0ZWRGdWxsc2NyZWVuRXYKIF9fWk43V2ViQ29yZTI3TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlMzJhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZEV2CiBfX1pOSzdXZWJDb3Jl
MjJOdWxsTWVkaWFQbGF5ZXJQcml2YXRlMTNwbGF0Zm9ybUxheWVyRXYKIF9fWk5LN1dlYkNvcmUy
Mk51bGxNZWRpYVBsYXllclByaXZhdGU4YnVmZmVyZWRFdgpAQCAtMjgxNjQsOCArMjgxNjQsOCBA
QCBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQ0bG9hZEViUmkKIF9fWk5LN1dlYkNvcmUx
NkhUTUxNZWRpYUVsZW1lbnQ4aGFzVmlkZW9FdgogX19aTks3V2ViQ29yZTExUmVuZGVyTWVkaWEx
MHJlbmRlck5hbWVFdgogX19aTjdXZWJDb3JlMjdNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQx
OWRlZmF1bHRFdmVudEhhbmRsZXJFUE5TXzVFdmVudEUKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQxOWRlZmF1bHRFdmVudEhhbmRsZXJFUE5TXzVFdmVudEUKLV9fWk43V2Vi
Q29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxOHNob3VsZEhpZGVDb250cm9sc0V2CitfX1pO
N1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTE5ZGVmYXVsdEV2ZW50SGFuZGxlckVQTlNfNUV2
ZW50RQorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxOHNob3VsZEhpZGVDb250cm9s
c0V2CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQxNGJlZ2luU2NydWJiaW5nRXYKIF9f
Wk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDE0c2V0Q3VycmVudFRpbWVFZlJpCiBfX1pOSzdX
ZWJDb3JlMzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDMjFtZWRpYVRpbWVGb3JU
aW1lVmFsdWVFZgpAQCAtMjgyMTAsNyArMjgyMTAsNyBAQCBfX1pON1dlYkNvcmUxNkhUTUxNZWRp
YUVsZW1lbnQzMHNldFdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZUViCiBfX1pON1dlYkNvcmUx
NkhUTUxNZWRpYUVsZW1lbnQyNHNldENsb3NlZENhcHRpb25zVmlzaWJsZUViCiBfX1pON1dlYkNv
cmUxMU1lZGlhUGxheWVyMjRzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGVFYgogX19aTjdXZWJDb3Jl
MzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDMjRzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGVFYgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDMxY2hhbmdlZENs
b3NlZENhcHRpb25zVmlzaWJpbGl0eUV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBs
ZTMxY2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eUV2CiBfX1pON1dlYkNvcmU0NU1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDE3dXBkYXRlRGlzcGxheVR5
cGVFdgogX19aTks3V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDIxY2xvc2VkQ2FwdGlvbnNWaXNp
YmxlRXYKIF9fWk43V2ViQ29yZTEzTWVkaWFEb2N1bWVudEMxRVBOU181RnJhbWVFUktOU180S1VS
TEUKQEAgLTI4MjUzLDcgKzI4MjUzLDcgQEAgX19aTjdXZWJDb3JlMjhzZXRKU0hUTUxNZWRpYUVs
ZW1lbnRQcmVsb2FkRVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmplY3RFTlMwXzcKIF9fWk43
V2ViQ29yZUwyMmRlc2NlbmRlbnRWaWRlb0VsZW1lbnRFUE5TXzROb2RlRQogX19aTjdXZWJDb3Jl
MjZzZXRKU0hUTUxNZWRpYUVsZW1lbnRNdXRlZEVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2Jq
ZWN0RU5TMF83SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDhzZXRNdXRl
ZEViCi1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MTFjaGFuZ2VkTXV0ZUV2
CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTExY2hhbmdlZE11dGVFdgogX19aTjdX
ZWJDb3JlMjlNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDExY2hhbmdlZE11dGVFdgogX19a
TjdXZWJDb3JlMjlNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDE3dXBkYXRlRGlzcGxheVR5
cGVFdgogX19aTjdXZWJDb3JlNDBzZXRKU0hUTUxNZWRpYUVsZW1lbnREZWZhdWx0UGxheWJhY2tS
YXRlRVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmplY3RFTlMwXzdKU1ZhbHVlRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3NmMyNDZiODgx
OTdhNGVhMzZkNTQyMzYzNTBiMWNkYjJjNmVjN2FiLi4yM2NjMmJiMWM4MjlkMzllMTFhNWIzOWU0
MDJhOWQ5MjFjNTc2ZjI4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNjQyODIsMTEgKzY0MjgyLDExIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xNZWRpYUNvbnRy
b2xSb290RWxlbWVudC5jcHAiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVk
aWFDb250cm9sc0FwcGxlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Lmgi
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250cm9sc0FwcGxlLmgi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzEyYTEyNWExZmI1OTY5ZDEx
YmIxM2U5M2VjZjk2MDUzMDgwYWI1Li44MDUwZmE2OTY4ZjM1MjBkNWEwNjM2YzM3NzUwNWE2MTc3
NzdiYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDQ5LDggKzEwNDksOCBAQAogCQk0MTRCODY3NDEzQUQwNzRFMDBCNEIz
NzMgLyogRmlsZUljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNEI4NjcyMTNBRDA3NEUwMEI0QjM3MyAvKiBGaWxlSWNvbkxvYWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNTBG
OUYxMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTBGOUVGMTJCNkUwRTcwMDA4Qzg2
MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCAqLzsgfTsKIAkJNDE1MEY5RjIxMkI2RTBFNzAwMDhD
ODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1
bWJFbGVtZW50LmNwcCAqLzsgfTsKLQkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTU3QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQuaCAqLzsgfTsKLQkJNDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNTdBRjdGMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5jcHAgKi87IH07CisJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xz
QXBwbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuaCAqLzsgfTsKKwkJ
NDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTU3QUY3RjEyRjFGQjA0
MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCAqLzsgfTsKIAkJNDE2MkE0NTAxMDEx
NDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEQxMDExNDVBRTAwREZGM0VE
IC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFF
MDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERl
ZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLzsgfTsKIAkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VE
IC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgyMDIsOCArODIw
Miw4IEBACiAJCTQxNEI4NjcyMTNBRDA3NEUwMEI0QjM3MyAvKiBGaWxlSWNvbkxvYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlSWNvbkxvYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVy
VGh1bWJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsaWRlclRo
dW1iRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTUwRjlGMDEyQjZF
MEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNsaWRlclRodW1iRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xS
b290RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRy
b2xSb290RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTU3QUY3RjEy
RjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU3QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyog
TWVkaWFDb250cm9sc0FwcGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhQ29udHJvbHNBcHBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTU3QUY3
RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbHNBcHBsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEUxMDEx
NDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBwYXRoID0gd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDsgcGF0aCA9
IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTA5Niw4ICsxNTA5Niw4IEBACiAJCQkJNTdDRjQ5NzMxNEVFMzZENzAwRUNG
RjE0IC8qIEluc2VydGlvblBvaW50LmggKi8sCiAJCQkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJB
IC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLywKIAkJCQk0MTcyNTNBOTEzNTRCQkJDMDAz
NjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLywKLQkJCQk0MTU3QUY3RjEyRjFGQjA0
MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwICovLAotCQkJCTQxNTdBRjdF
MTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oICovLAorCQkJCTQx
NTdBRjdGMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICovLAorCQkJ
CTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuaCAqLywKIAkJ
CQkxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgKi8sCiAJCQkJ
MUYzQzNCRTkxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCAqLywKIAkJCQlBNzhF
NTI2RDEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCAqLywKQEAgLTI0
NTM3LDcgKzI0NTM3LDcgQEAKIAkJCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFD
b250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0
QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjY1Q0NBMTQ1
QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
LAotCQkJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlh
Q29udHJvbHNBcHBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzQzNCRUIxMzVDQUYzQzAwQjhD
MUFDIC8qIE1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUI4MTIzOTI5
MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDZGMjUy
RDEzRjVFRjBFMDA2NTE2NUYgLyogTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI3ODMzLDcgKzI3ODMzLDcgQEAKIAkJCQk0OUU5MTFDNjBFRjg2RDQ3MDA5
RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNzI1M0FBMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxNTdBRjgxMTJGMUZCMDQwMEE4QzZGNSAvKiBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTU3QUY4MTEy
RjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFGM0MzQkVBMTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3MjA1QUI3MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZENkYyNTJDMTNGNUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggOTA2NDY2
MDEzZjhiM2E5ZGQ2YjI4YmQ0NjM3YjJmYzI1MjI5MjllYy4uNzNhY2ZjNDYzYmRiNTQ5NjcwNmY5
YTZhODEyYWI5MmU0YzJkYmQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTkzNSw3ICs5MzQsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAg
ICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9IHRvUmVuZGVyU2xpZGVyKHJlbmRlcmVyKCkpOwogICAg
IGlmIChzbGlkZXIgJiYgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCi0gICAgICAgIG1fY29udHJvbHMt
PnVwZGF0ZVRpbWVEaXNwbGF5KCk7CisgICAgICAgIG1fY29udHJvbHMtPnVwZGF0ZUN1cnJlbnRU
aW1lRGlzcGxheSgpOwogfQogCiBib29sIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6d2ls
bFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlZjU0MWJhYTMzYjFlOGJkZjBmMDkzMjJjNWZlMDk3NmIyNzE3Nzg4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDY3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLSNpbmNsdWRlICJNZWRpYUNvbnRy
b2xSb290RWxlbWVudC5oIgotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbEVsZW1lbnRzLmgiCi0jaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlBhZ2Uu
aCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgotI2luY2x1ZGUgIlRleHQuaCIKLQotI2lmIEVO
QUJMRShWSURFT19UUkFDSykKLSNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKLSNlbmRpZgotCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25z
dCBkb3VibGUgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgPSAz
OwotCi1NZWRpYUNvbnRyb2xSb290RWxlbWVudDo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9scyhkb2N1bWVudCkKLSAgICAsIG1f
bWVkaWFDb250cm9sbGVyKDApCi0gICAgLCBtX3Jld2luZEJ1dHRvbigwKQotICAgICwgbV9wbGF5
QnV0dG9uKDApCi0gICAgLCBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24oMCkKLSAgICAsIG1fc3Rh
dHVzRGlzcGxheSgwKQotICAgICwgbV9jdXJyZW50VGltZURpc3BsYXkoMCkKLSAgICAsIG1fdGlt
ZWxpbmUoMCkKLSAgICAsIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkoMCkKLSAgICAsIG1fdGltZWxp
bmVDb250YWluZXIoMCkKLSAgICAsIG1fc2Vla0JhY2tCdXR0b24oMCkKLSAgICAsIG1fc2Vla0Zv
cndhcmRCdXR0b24oMCkKLSAgICAsIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oMCkKLSAg
ICAsIG1fcGFuZWxNdXRlQnV0dG9uKDApCi0gICAgLCBtX3ZvbHVtZVNsaWRlcigwKQotICAgICwg
bV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uKDApCi0gICAgLCBtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
cigwKQotICAgICwgbV9mdWxsU2NyZWVuQnV0dG9uKDApCi0gICAgLCBtX2Z1bGxTY3JlZW5NaW5W
b2x1bWVCdXR0b24oMCkKLSAgICAsIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcigwKQotICAgICwg
bV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uKDApCi0gICAgLCBtX3BhbmVsKDApCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgICwgbV90ZXh0RGlzcGxheUNvbnRhaW5lcigwKQotI2VuZGlm
Ci0gICAgLCBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAmTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ6OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKQotICAgICwgbV9p
c01vdXNlT3ZlckNvbnRyb2xzKGZhbHNlKQotICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2UpCi17
Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250cm9sczo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQot
ewotICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBS
ZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50KGRvY3VtZW50KSk7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0KLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9uID0gTWVkaWFDb250cm9sUmV3
aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBjb250cm9scy0+bV9yZXdp
bmRCdXR0b24gPSByZXdpbmRCdXR0b24uZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHJl
d2luZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBwbGF5
QnV0dG9uID0gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgY29udHJvbHMtPm1fcGxheUJ1dHRvbiA9IHBsYXlCdXR0b24uZ2V0KCk7Ci0gICAgcGFu
ZWwtPmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYg
KGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gcmV0dXJuVG9SZWFsdGltZUJ1dHRvbiA9IE1lZGlhQ29u
dHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAg
IGNvbnRyb2xzLT5tX3JldHVyblRvUmVhbFRpbWVCdXR0b24gPSByZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uLmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChyZXR1cm5Ub1JlYWx0aW1lQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFN0YXR1
c0Rpc3BsYXkoKSkgewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVs
ZW1lbnQ+IHN0YXR1c0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgY29udHJvbHMtPm1fc3RhdHVzRGlzcGxheSA9IHN0
YXR1c0Rpc3BsYXkuZ2V0KCk7Ci0gICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzdGF0dXNEaXNw
bGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRy
b2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbnRy
b2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsKLSAg
ICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJlbGVh
c2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBS
ZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJv
bFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7Ci0gICAg
Y29udHJvbHMtPm1fdGltZWxpbmUgPSB0aW1lbGluZS5nZXQoKTsKLSAgICB0aW1lbGluZUNvbnRh
aW5lci0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYg
KGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQ+IHRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9s
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbnRy
b2xzLT5tX3RpbWVSZW1haW5pbmdEaXNwbGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXkuZ2V0KCk7
Ci0gICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVSZW1haW5pbmdEaXNwbGF5
LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFpbmVyLmdl
dCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0aW1lbGluZUNvbnRhaW5lci5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklY
TUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgot
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IHNlZWtCYWNrQnV0
dG9uID0gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGNvbnRyb2xzLT5tX3NlZWtCYWNrQnV0dG9uID0gc2Vla0JhY2tCdXR0b24uZ2V0KCk7
Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHNlZWtCYWNrQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhNRTogT25s
eSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0gICAgUmVm
UHRyPE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gc2Vla0ZvcndhcmRCdXR0
b24gPSBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7Ci0gICAgY29udHJvbHMtPm1fc2Vla0ZvcndhcmRCdXR0b24gPSBzZWVrRm9yd2FyZEJ1dHRv
bi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2Vla0ZvcndhcmRCdXR0b24ucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlm
IChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkg
ewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25F
bGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgY29u
dHJvbHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSB0b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbi5nZXQoKTsKLSAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxkKHRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogT25seSBjcmVhdGUgd2hl
biBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0gICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuQnV0dG9uID0gTWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0
KCkpOwotICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2NyZWVuQnV0dG9u
LmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOwotCi0gICAgLy8gVGhlIG11dGUgYnV0dG9uIGFuZCB0aGUgc2xpZGVyIGVs
ZW1lbnQgc2hvdWxkIGJlIGluIHRoZSBzYW1lIGRpdi4KLSAgICBSZWZQdHI8SFRNTERpdkVsZW1l
bnQ+IHBhbmVsVm9sdW1lQ29udHJvbENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotCi0gICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXIoKSkgewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLQot
ICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0g
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAg
ICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOwotICAgICAgICB2b2x1
bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgLy8g
VGhpcyBpcyBhIGR1cGxpY2F0ZSBtdXRlIGJ1dHRvbiwgd2hpY2ggaXMgdmlzaWJsZSBpbiBzb21l
IHBvcnRzIGF0IHRoZSBib3R0b20gb2YgdGhlIHZvbHVtZSBiYXIuCi0gICAgICAgIC8vIEl0J3Mg
aW1wb3J0YW50IG9ubHkgd2hlbiB0aGUgdm9sdW1lIGJhciBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhl
IGNvbnRyb2xzLgotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1
dHRvbkVsZW1lbnQ+IHZvbHVtZVNsaWRlck11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgY29udHJv
bHMtPm1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IHZvbHVtZVNsaWRlck11dGVCdXR0b24uZ2V0
KCk7Ci0gICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xp
ZGVyTXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLQotICAgICAgICBpZiAoZWMpCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXJD
b250YWluZXIgPSB2b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCk7Ci0gICAgICAgIHBhbmVsVm9s
dW1lQ29udHJvbENvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xpZGVyQ29udGFpbmVyLnJl
bGVhc2UoKSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVu
dD4gcGFuZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7Ci0gICAgY29udHJvbHMtPm1fcGFuZWxN
dXRlQnV0dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOwotICAgIHBhbmVsVm9sdW1lQ29udHJv
bENvbnRhaW5lci0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBwYW5lbC0+YXBwZW5k
Q2hpbGQocGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVj
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5l
ZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0
b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLSAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uID0g
ZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
ZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAo
ZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
Y29udHJvbHMtPm1fZnVsbFNjcmVlblZvbHVtZVNsaWRlciA9IGZ1bGxTY3JlZW5Wb2x1bWVTbGlk
ZXIuZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIu
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4g
ZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
YXhCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX2Z1bGxT
Y3JlZW5NYXhWb2x1bWVCdXR0b24gPSBmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLmdldCgpOwot
ICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb250
cm9scy0+bV9wYW5lbCA9IHBhbmVsLmdldCgpOwotICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChw
YW5lbC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZSogY29udHJvbGxlcikKLXsKLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0gY29udHJvbGxl
cikKLSAgICAgICAgcmV0dXJuOwotICAgIG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcjsK
LQotICAgIGlmIChtX3Jld2luZEJ1dHRvbikKLSAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9wbGF5QnV0dG9uKQotICAgICAg
ICBtX3BsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAo
bV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uKQotICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9zdGF0dXNEaXNw
bGF5KQotICAgICAgICBtX3N0YXR1c0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKLSAgICBpZiAobV9jdXJyZW50VGltZURpc3BsYXkpCi0gICAgICAgIG1fY3VycmVudFRp
bWVEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdGlt
ZWxpbmUpCi0gICAgICAgIG1fdGltZWxpbmUtPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKLSAgICBpZiAobV90aW1lUmVtYWluaW5nRGlzcGxheSkKLSAgICAgICAgbV90aW1lUmVtYWlu
aW5nRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3Rp
bWVsaW5lQ29udGFpbmVyKQotICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNv
bnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fc2Vla0JhY2tCdXR0b24pCi0gICAgICAg
IG1fc2Vla0JhY2tCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBp
ZiAobV9zZWVrRm9yd2FyZEJ1dHRvbikKLSAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+c2V0
TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uKQotICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fcGFuZWxNdXRlQnV0dG9uKQotICAg
ICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwot
ICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV92b2x1bWVTbGlkZXJNdXRlQnV0dG9u
KQotICAgICAgICBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKLSAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCi0gICAgICAgIG1f
dm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0g
ICAgaWYgKG1fZnVsbFNjcmVlbkJ1dHRvbikKLSAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5z
ZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fZnVsbFNjcmVlbk1pblZv
bHVtZUJ1dHRvbikKLSAgICAgICAgbV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fZnVsbFNjcmVlblZvbHVtZVNsaWRl
cikKLSAgICAgICAgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7Ci0gICAgaWYgKG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbikKLSAgICAg
ICAgbV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJv
bGxlcik7Ci0gICAgaWYgKG1fcGFuZWwpCi0gICAgICAgIG1fcGFuZWwtPnNldE1lZGlhQ29udHJv
bGxlcihjb250cm9sbGVyKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKG1fdGV4
dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSNlbmRpZgotICAgIHJlc2V0KCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3coKQotewotICAgIG1fcGFuZWwtPnNldElz
RGlzcGxheWVkKHRydWUpOwotICAgIG1fcGFuZWwtPnNob3coKTsKLX0KLQotdm9pZCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6aGlkZSgpCi17Ci0gICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQo
ZmFsc2UpOwotICAgIG1fcGFuZWwtPmhpZGUoKTsKLSAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
ci0+aGlkZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjptYWtlT3BhcXVl
KCkKLXsKLSAgICBtX3BhbmVsLT5tYWtlT3BhcXVlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ6Om1ha2VUcmFuc3BhcmVudCgpCi17Ci0gICAgbV9wYW5lbC0+bWFrZVRyYW5z
cGFyZW50KCk7Ci0gICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPmhpZGUoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQoKQotewotICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudCgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7Ci0KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnN1
cHBvcnRzRnVsbHNjcmVlbigpKQotICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3coKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+aGlkZSgpOwotCi0gICAgZmxv
YXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoaXNm
aW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5k
bGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7Ci0gICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0
aW9uKGR1cmF0aW9uKTsKLSAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hvdygpOwotICAg
ICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKSk7Ci0gICAgICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKLQotICAgIGlmIChtX21lZGlhQ29udHJvbGxl
ci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxp
bmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCi0gICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5z
aG93KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+aGlkZSgpOwotCi0g
ICAgaWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1l
KG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci0KLSAgICBpZiAobV90b2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbikgewotICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3Nl
ZENhcHRpb25zKCkpCi0gICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5z
aG93KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24tPmhpZGUoKTsKLSAgICB9Ci0KLSAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlU
eXBlKCk7Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKG1fZnVsbFNjcmVl
blZvbHVtZVNsaWRlcikKLSAgICAgICAgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyLT5zZXRWb2x1
bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKLQotICAgIGlmIChtX2lzRnVsbHNjcmVl
bikgewotICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7Ci0g
ICAgICAgICAgICBtX3NlZWtCYWNrQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAgICAgICBtX3NlZWtG
b3J3YXJkQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygp
OwotICAgICAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3NlZWtCYWNrQnV0dG9uLT5zaG93KCk7Ci0gICAgICAg
ICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zaG93KCk7Ci0gICAgICAgICAgICBtX3Jld2luZEJ1
dHRvbi0+aGlkZSgpOwotICAgICAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5oaWRl
KCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSNlbmRpZgotICAgIGlmICghbV9tZWRpYUNvbnRy
b2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7Ci0gICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRv
bi0+aGlkZSgpOwotICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2hvdygpOwotICAgICAgICBtX3Jl
d2luZEJ1dHRvbi0+aGlkZSgpOwotICAgIH0KLQotICAgIG1ha2VPcGFxdWUoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tTdGFydGVkKCkKLXsKLSAgICBtX3Bs
YXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRp
b24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotICAgIHVwZGF0ZVRpbWVEaXNw
bGF5KCk7Ci0KLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCi0gICAgICAgIHN0YXJ0SGlkZUZ1bGxz
Y3JlZW5Db250cm9sc1RpbWVyKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCi17Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9t
ZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7
Ci0gICAgCi0gICAgaWYgKCFtX2lzTW91c2VPdmVyQ29udHJvbHMgJiYgbV9tZWRpYUNvbnRyb2xs
ZXItPmhhc1ZpZGVvKCkpCi0gICAgICAgIG1ha2VUcmFuc3BhcmVudCgpOwotfQotCi12b2lkIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0b3BwZWQoKQotewotICAgIG1fcGxheUJ1
dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbiht
X21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Ci0gICAgdXBkYXRlVGltZURpc3BsYXko
KTsKLSAgICBtYWtlT3BhcXVlKCk7Ci0gICAgCi0gICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJv
bHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVUaW1l
RGlzcGxheSgpCi17Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRU
aW1lKCk7Ci0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24o
KTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRo
ZSB0aW1lLgotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXkt
PnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRp
bWUobm93LCBkdXJhdGlvbiksIGVjKTsKLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyk7Ci0gICAgbV90aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0SW5uZXJUZXh0
KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKG5vdywgZHVy
YXRpb24pLCBlYyk7Ci0gICAgbV90aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0Q3VycmVudFZhbHVl
KG5vdyAtIGR1cmF0aW9uKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVw
b3J0ZWRFcnJvcigpCi17Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghcGFnZS0+dGhlbWUoKS0+
aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpCi0gICAgICAg
IG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKLQotICAgIGlmICghcGFnZS0+dGhlbWUoKS0+
aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQotICAg
ICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+aGlkZSgpOwotCi0gICAgIG1fZnVsbFNjcmVlbkJ1dHRv
bi0+aGlkZSgpOwotCi0gICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQotICAgICAgICBt
X3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOwotICAgIGlmIChtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxp
bmdGb3IoTWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQotICAgICAgICBtX3Rv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ6OnVwZGF0ZVN0YXR1c0Rpc3BsYXkoKQotewotICAgIGlmIChtX3N0YXR1c0Rp
c3BsYXkpCi0gICAgICAgIG1fc3RhdHVzRGlzcGxheS0+dXBkYXRlKCk7Ci19Ci0KLXZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OmxvYWRlZE1ldGFkYXRhKCkKLXsKLSAgICBpZiAobV9zdGF0
dXNEaXNwbGF5ICYmIG1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkKLSAgICAgICAg
bV9zdGF0dXNEaXNwbGF5LT5oaWRlKCk7Ci0KLSAgICByZXNldCgpOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCkKLXsK
LSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikKLSAgICAgICAgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLX0KLQotdm9pZCBNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZE11dGUoKQotewotICAgIG1fcGFuZWxNdXRlQnV0
dG9uLT5jaGFuZ2VkTXV0ZSgpOwotICAgIGlmIChtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24pCi0g
ICAgICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+Y2hhbmdlZE11dGUoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZFZvbHVtZSgpCi17Ci0gICAgaWYgKG1f
dm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFD
b250cm9sbGVyLT52b2x1bWUoKSk7Ci0KLSAgICBpZiAobV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVy
KQotICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29u
dHJvbGxlci0+dm9sdW1lKCkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpl
bnRlcmVkRnVsbHNjcmVlbigpCi17Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSB0cnVlOwotCi0gICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkgewotICAgICAgICBtX3NlZWtC
YWNrQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPmhpZGUoKTsK
LSAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNob3coKTsKLSAgICAgICAgbV9yZXR1cm5Ub1JlYWxU
aW1lQnV0dG9uLT5zaG93KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9zZWVrQmFja0J1dHRv
bi0+c2hvdygpOwotICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zaG93KCk7Ci0gICAgICAg
IG1fcmV3aW5kQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRv
bi0+aGlkZSgpOwotICAgIH0KLQotICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsK
LSAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbih0cnVlKTsKLQotICAgIGlm
IChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUo
KS0+c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUpOwotCi0gICAgc3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudDo6ZXhpdGVkRnVsbHNjcmVlbigpCi17Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSBmYWxzZTsK
LQotICAgIC8vICJzaG93IiBhY3R1YWxseSBtZWFucyByZW1vdmFsIG9mIGRpc3BsYXk6bm9uZSBz
dHlsZSwgc28gd2UgYXJlIGp1c3QgY2xlYXJpbmcgc3R5bGVzCi0gICAgLy8gd2hlbiBleGl0aW5n
IGZ1bGxzY3JlZW4uCi0gICAgLy8gRklYTUU6IENsYXJpZnkgbmFtaW5nIG9mIHNob3cvaGlkZSA8
aHR0cDovL3dlYmtpdC5vcmcvYi81ODE1Nz4KLSAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOwot
ICAgIG1fc2Vla0JhY2tCdXR0b24tPnNob3coKTsKLSAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5z
aG93KCk7Ci0gICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7Ci0KLSAgICBtX3Bh
bmVsLT5zZXRDYW5CZURyYWdnZWQoZmFsc2UpOwotICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0
SXNGdWxsc2NyZWVuKGZhbHNlKTsKLQotICAgIC8vIFdlIHdpbGwga2VlcCB1c2luZyB0aGUgcGFu
ZWwsIGJ1dCB3ZSB3YW50IGl0IHRvIGdvIGJhY2sgdG8gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgot
ICAgIC8vIFRoaXMgd2lsbCBtYXR0ZXIgcmlnaHQgYXdheSBiZWNhdXNlIHdlIHVzZSB0aGUgcGFu
ZWwgZXZlbiB3aGVuIG5vdCBmdWxsc2NyZWVuLgotICAgIC8vIEFuZCBpZiB3ZSByZWVudGVyIGZ1
bGxzY3JlZW4gd2UgYWxzbyB3YW50IHRoZSBwYW5lbCBpbiB0aGUgc3RhbmRhcmQgcG9zaXRpb24u
Ci0gICAgbV9wYW5lbC0+cmVzZXRQb3NpdGlvbigpOwotCi0gICAgc3RvcEhpZGVGdWxsc2NyZWVu
Q29udHJvbHNUaW1lcigpOyAgICAKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
c2hvd1ZvbHVtZVNsaWRlcigpCi17Ci0gICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVk
aW8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
KQotICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOwotfQotCi1ib29sIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzaG91bGRIaWRlQ29udHJvbHMoKQotewotICAgIHJldHVy
biAhbV9wYW5lbC0+aG92ZXJlZCgpOwotfQotCi1ib29sIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Ojpjb250YWluc1JlbGF0ZWRUYXJnZXQoRXZlbnQqIGV2ZW50KQotewotICAgIGlmICghZXZlbnQt
PmlzTW91c2VFdmVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRXZlbnRUYXJnZXQq
IHJlbGF0ZWRUYXJnZXQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5yZWxhdGVk
VGFyZ2V0KCk7Ci0gICAgaWYgKCFyZWxhdGVkVGFyZ2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQtPnRvTm9kZSgpKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCi17Ci0gICAgTWVkaWFDb250cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0K
LSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsK
LSAgICAgICAgaWYgKCFjb250YWluc1JlbGF0ZWRUYXJnZXQoZXZlbnQpKSB7Ci0gICAgICAgICAg
ICBtX2lzTW91c2VPdmVyQ29udHJvbHMgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFtX21lZGlh
Q29udHJvbGxlci0+Y2FuUGxheSgpKSB7Ci0gICAgICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOwot
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRIaWRlQ29udHJvbHMoKSkKLSAgICAgICAgICAgICAg
ICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2VvdXRFdmVudCkgewotICAgICAgICBpZiAoIWNvbnRhaW5zUmVsYXRlZFRhcmdldChldmVu
dCkpIHsKLSAgICAgICAgICAgIG1faXNNb3VzZU92ZXJDb250cm9scyA9IGZhbHNlOwotICAgICAg
ICAgICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkg
ewotICAgICAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2Ug
Z2V0IGEgbW91c2UgbW92ZSBpbiBmdWxsc2NyZWVuIG1vZGUsIHNob3cgdGhlIG1lZGlhIGNvbnRy
b2xzLCBhbmQgc3RhcnQgYSB0aW1lcgotICAgICAgICAgICAgLy8gdGhhdCB3aWxsIGhpZGUgdGhl
IG1lZGlhIGNvbnRyb2xzIGFmdGVyIGEgMyBzZWNvbmRzIHdpdGhvdXQgYSBtb3VzZSBtb3ZlLgot
ICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOwotICAgICAgICAgICAgaWYgKHNob3VsZEhpZGVDb250
cm9scygpKQotICAgICAgICAgICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
OnN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCkKLXsKLSAgICBpZiAoIW1faXNGdWxs
c2NyZWVuKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRy
b2xzVGltZXIuc3RhcnRPbmVTaG90KHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGlu
Z0NvbnRyb2xzKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6aGlkZUZ1bGxz
Y3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+KikK
LXsKLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgaWYgKCFtX2lzRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGlmICghc2hvdWxkSGlkZUNvbnRyb2xzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUo
KS0+c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUpOwotCi0gICAgbWFrZVRyYW5z
cGFyZW50KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0b3BIaWRlRnVs
bHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1Rp
bWVyLnN0b3AoKTsKLX0KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLXZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKQotewotICAgIGlmIChtX3Rl
eHREaXNwbGF5Q29udGFpbmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gdGV4dERpc3BsYXlDb250YWluZXIgPSBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7
Ci0gICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lciA9IHRleHREaXNwbGF5Q29udGFpbmVyLmdldCgp
OwotCi0gICAgLy8gSW5zZXJ0IGl0IGJlZm9yZSB0aGUgZmlyc3QgY29udHJvbGxlciBlbGVtZW50
IHNvIGl0IGFsd2F5cyBkaXNwbGF5cyBiZWhpbmQgdGhlIGNvbnRyb2xzLgotICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0gICAgaW5zZXJ0QmVmb3JlKHRleHREaXNwbGF5Q29udGFpbmVyLnJlbGVhc2Uo
KSwgbV9wYW5lbCwgZWMsIHRydWUpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzaG93VGV4dFRyYWNrRGlzcGxheSgpCi17Ci0gICAgaWYgKCFtX3RleHREaXNwbGF5Q29udGFp
bmVyKQotICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgbV90ZXh0RGlzcGxh
eUNvbnRhaW5lci0+c2hvdygpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpo
aWRlVGV4dFRyYWNrRGlzcGxheSgpCi17Ci0gICAgaWYgKCFtX3RleHREaXNwbGF5Q29udGFpbmVy
KQotICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgbV90ZXh0RGlzcGxheUNv
bnRhaW5lci0+aGlkZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRh
dGVUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIp
Ci0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLQotICAgIG1fdGV4dERpc3BsYXlD
b250YWluZXItPnVwZGF0ZURpc3BsYXkoKTsKLQotfQotI2VuZGlmCi0KLWNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRp
YS1jb250cm9scyIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OmJ1ZmZlcmluZ1Byb2dyZXNzZWQoKQotewotICAgIC8vIFdlIG9ubHkgbmVlZCB0
byB1cGRhdGUgYnVmZmVyaW5nIHByb2dyZXNzIHdoZW4gcGF1c2VkLCBkdXJpbmcgbm9ybWFsCi0g
ICAgLy8gcGxheWJhY2sgcGxheWJhY2tQcm9ncmVzc2VkKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQu
Ci0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5wYXVzZWQoKSkKLSAgICAgICAgbV90aW1lbGlu
ZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjA5ZDg3
NDViN2FjNjFhN2Q1OTZkNDFhMjM4OTY2YjYxZjRiNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRfaAotI2RlZmluZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudF9oCi0KLSNpZiBFTkFCTEUoVklE
RU8pCi0KLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1jbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgRXZlbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xQYW5l
bE11dGVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ7
Ci1jbGFzcyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJv
bFJld2luZEJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ7
Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ7Ci1j
bGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDsKLWNsYXNz
IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJv
bE11dGVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVu
dDsKLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OwotY2xh
c3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDsKLWNsYXNzIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDsKLWNsYXNzIE1lZGlhUGxheWVyOwotCi1jbGFzcyBSZW5kZXJCb3g7Ci1jbGFzcyBSZW5k
ZXJNZWRpYTsKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLWNsYXNzIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNw
bGF5RWxlbWVudDsKLSNlbmRpZgotCi1jbGFzcyBNZWRpYUNvbnRyb2xSb290RWxlbWVudCA6IHB1
YmxpYyBNZWRpYUNvbnRyb2xzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xSb290RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KLSAgICAvLyBNZWRpYUNv
bnRyb2xzIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlh
Q29udHJvbGxlckludGVyZmFjZSopOwotCi0gICAgdm9pZCBzaG93KCk7Ci0gICAgdm9pZCBoaWRl
KCk7Ci0gICAgdm9pZCBtYWtlT3BhcXVlKCk7Ci0gICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsK
LQotICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCk7Ci0g
ICAgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKTsKLSAgICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpOwot
Ci0gICAgdm9pZCBjaGFuZ2VkTXV0ZSgpOwotICAgIHZvaWQgY2hhbmdlZFZvbHVtZSgpOwotCi0g
ICAgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpOwotICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigp
OwotCi0gICAgdm9pZCByZXBvcnRlZEVycm9yKCk7Ci0gICAgdm9pZCBsb2FkZWRNZXRhZGF0YSgp
OwotICAgIHZvaWQgY2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOwotCi0gICAgdm9p
ZCBzaG93Vm9sdW1lU2xpZGVyKCk7Ci0gICAgdm9pZCB1cGRhdGVUaW1lRGlzcGxheSgpOwotICAg
IHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpOwotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIHZvaWQgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgc2hvd1RleHRUcmFj
a0Rpc3BsYXkoKTsKLSAgICB2b2lkIGhpZGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgdm9pZCB1
cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRIaWRlQ29udHJvbHMoKTsKLQotICAgIHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3NlZCgpOwotCi0g
ICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQo
RG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7Ci0gICAgdm9pZCBoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRp
YUNvbnRyb2xSb290RWxlbWVudD4qKTsKLSAgICB2b2lkIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKCk7Ci0gICAgdm9pZCBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7
Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dDsKLQotICAgIGJvb2wgY29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50Kik7Ci0KLSAgICBNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9sbGVyOwotCi0gICAgTWVkaWFDb250
cm9sUmV3aW5kQnV0dG9uRWxlbWVudCogbV9yZXdpbmRCdXR0b247Ci0gICAgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQqIG1fcGxheUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudCogbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uOwotICAgIE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KiBtX3N0YXR1c0Rpc3BsYXk7Ci0gICAgTWVk
aWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9jdXJyZW50VGltZURpc3BsYXk7
Ci0gICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KiBtX3RpbWVsaW5lOwotICAgIE1lZGlh
Q29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxh
eTsKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxpbmVD
b250YWluZXI7Ci0gICAgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KiBtX3NlZWtC
YWNrQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudCogbV9z
ZWVrRm9yd2FyZEJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbkVsZW1lbnQqIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgTWVkaWFDb250
cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCogbV9wYW5lbE11dGVCdXR0b247Ci0gICAgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCogbV92b2x1bWVTbGlkZXI7Ci0gICAgTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRv
bjsKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KiBtX3ZvbHVt
ZVNsaWRlckNvbnRhaW5lcjsKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVu
dCogbV9mdWxsU2NyZWVuQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
aW5CdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b247Ci0gICAgTWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQqIG1fZnVsbFNjcmVlblZvbHVtZVNs
aWRlcjsKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCog
bV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dCogbV9wYW5lbDsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudCogbV90ZXh0RGlzcGxheUNvbnRhaW5lcjsKLSNlbmRpZgot
ICAgIFRpbWVyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBtX2hpZGVGdWxsc2NyZWVuQ29udHJv
bHNUaW1lcjsKLSAgICBib29sIG1faXNNb3VzZU92ZXJDb250cm9sczsKLSAgICBib29sIG1faXNG
dWxsc2NyZWVuOwotfTsKLQotfQotCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIzOTEzYmI2ZTUyM2FmOWRm
NzI2ODMxZWI4NjA2YTM0MDY4OTRjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShW
SURFTykKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmgiCi0KLSNp
bmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5o
IgotI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJUZXh0LmgiCi0KLSNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0jaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgZG91YmxlIHRpbWVX
aXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzID0gMjsKLQotTWVkaWFDb250
cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3Vy
ZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sRWxlbWVudChk
b2N1bWVudCkKLXsKLX0KLQotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sQ2hy
b21pdW1FbmNsb3N1cmVFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0gICAgLy8gTWFw
cGluZyBvbnRvIHNhbWUgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgYXMgcGFuZWwgZWxlbWVudCwg
c2luY2UgaXQgaGFzIHNpbWlsYXIgcHJvcGVydGllcy4KLSAgICByZXR1cm4gTWVkaWFDb250cm9s
c1BhbmVsOwotfQotCi1NZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRp
YUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLVBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5l
bEVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoZG9jdW1l
bnQpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3Vy
ZUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1lbmNsb3N1cmUi
KSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi1NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCi0gICAgLCBtX21lZGlhQ29udHJvbGxlcigwKQot
ICAgICwgbV9wbGF5QnV0dG9uKDApCi0gICAgLCBtX2N1cnJlbnRUaW1lRGlzcGxheSgwKQotICAg
ICwgbV9kdXJhdGlvbkRpc3BsYXkoMCkKLSAgICAsIG1fdGltZWxpbmUoMCkKLSAgICAsIG1fcGFu
ZWxNdXRlQnV0dG9uKDApCi0gICAgLCBtX3ZvbHVtZVNsaWRlcigwKQotICAgICwgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbigwKQotICAgICwgbV9mdWxsc2NyZWVuQnV0dG9uKDApCi0gICAg
LCBtX3BhbmVsKDApCi0gICAgLCBtX2VuY2xvc3VyZSgwKQotI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLSAgICAsIG1fdGV4dERpc3BsYXlDb250YWluZXIoMCkKLSNlbmRpZgotICAgICwgbV9oaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW06OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKQotICAgICwgbV9pc01vdXNl
T3ZlckNvbnRyb2xzKGZhbHNlKQotICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2UpCi17Ci19Ci0K
LS8vIE1lZGlhQ29udHJvbHM6OmNyZWF0ZSgpIGZvciBBbmRyb2lkIGlzIGRlZmluZWQgaW4gTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuY3BwLgotI2lmICFPUyhBTkRST0lE
KQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtOjpjcmVhdGUoZG9jdW1lbnQpOwotfQotI2VuZGlmCi0KLVBhc3NSZWZQdHI8TWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW0+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW0oZG9jdW1lbnQpKTsKLQotICAgIGlmIChjb250cm9scy0+aW5pdGlhbGl6ZUNvbnRy
b2xzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKLQotICAg
IHJldHVybiAwOwotfQotCi1ib29sIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06Omlu
aXRpYWxpemVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgLy8gQ3JlYXRlIGFu
IGVuY2xvc2luZyBlbGVtZW50IGZvciB0aGUgcGFuZWwgc28gd2UgY2FuIHZpc3VhbGx5IG9mZnNl
dCB0aGUgY29udHJvbHMgY29ycmVjdGx5LgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVu
Y2xvc3VyZUVsZW1lbnQ+IGVuY2xvc3VyZSA9IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5
QnV0dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fcGxheUJ1dHRvbiA9IHBsYXlCdXR0b24uZ2V0KCk7
Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50LCB0aGlzKTsKLSAgICBtX3RpbWVsaW5lID0gdGltZWxpbmUu
Z2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9
IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7Ci0g
ICAgbV9jdXJyZW50VGltZURpc3BsYXktPmhpZGUoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
Y3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5p
bmdEaXNwbGF5RWxlbWVudD4gZHVyYXRpb25EaXNwbGF5ID0gTWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fZHVyYXRpb25EaXNw
bGF5ID0gZHVyYXRpb25EaXNwbGF5LmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChkdXJh
dGlvbkRpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudD4gcGFuZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50LCB0aGlzKTsKLSAgICBtX3BhbmVsTXV0ZUJ1dHRvbiA9IHBhbmVs
TXV0ZUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7Ci0gICAgbV92b2x1bWVTbGlkZXItPnNldENs
ZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbih0cnVlKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
c2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xv
c2VkQ2FwdGlvbmluZygpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwotICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b24uZ2V0KCk7Ci0gICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICAgICAgaWYgKGVj
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbHNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOwotICAg
IG1fZnVsbHNjcmVlbkJ1dHRvbiA9IGZ1bGxzY3JlZW5CdXR0b24uZ2V0KCk7Ci0gICAgcGFuZWwt
PmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAg
aWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3BhbmVsID0gcGFuZWwuZ2V0
KCk7Ci0gICAgZW5jbG9zdXJlLT5hcHBlbmRDaGlsZChwYW5lbC5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fZW5jbG9zdXJl
ID0gZW5jbG9zdXJlLmdldCgpOwotICAgIGFwcGVuZENoaWxkKGVuY2xvc3VyZS5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnNl
dE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpCi17
Ci0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0KLSAgICBpZiAobV9wbGF5
QnV0dG9uKQotICAgICAgICBtX3BsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKLSAgICBpZiAobV9jdXJyZW50VGltZURpc3BsYXkpCi0gICAgICAgIG1fY3VycmVudFRp
bWVEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fZHVy
YXRpb25EaXNwbGF5KQotICAgICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0TWVkaWFDb250cm9s
bGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3RpbWVsaW5lKQotICAgICAgICBtX3RpbWVsaW5l
LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fcGFuZWxNdXRlQnV0
dG9uKQotICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOwotICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVTbGlkZXIt
PnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90b2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbikKLSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+c2V0
TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX2Z1bGxzY3JlZW5CdXR0b24p
Ci0gICAgICAgIG1fZnVsbHNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOwotICAgIGlmIChtX3BhbmVsKQotICAgICAgICBtX3BhbmVsLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fZW5jbG9zdXJlKQotICAgICAgICBtX2VuY2xvc3Vy
ZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLSAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgbV90ZXh0RGlzcGxh
eUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotI2VuZGlmCi0gICAg
cmVzZXQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpzaG93
KCkKLXsKLSAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKLSAgICBtX3BhbmVsLT5z
aG93KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6aGlkZSgp
Ci17Ci0gICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQoZmFsc2UpOwotICAgIG1fcGFuZWwtPmhp
ZGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjptYWtlT3Bh
cXVlKCkKLXsKLSAgICBtX3BhbmVsLT5tYWtlT3BhcXVlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6bWFrZVRyYW5zcGFyZW50KCkKLXsKLSAgICBtX3BhbmVs
LT5tYWtlVHJhbnNwYXJlbnQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtOjpyZXNldCgpCi17Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsK
LSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVN0YXR1c0Rpc3Bs
YXkoKTsKLQotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7Ci0gICAgbV90aW1lbGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotICAgIG1fdGltZWxp
bmUtPnNob3coKTsKLQotICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+
dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9u
KTsKLQotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJy
ZW50VGltZSgpKTsKLSAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwotCi0gICAgbV9wYW5lbE11dGVC
dXR0b24tPnNob3coKTsKLQotICAgIGlmIChtX3ZvbHVtZVNsaWRlcikgewotICAgICAgICBpZiAo
IW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQotICAgICAgICAgICAgbV92b2x1bWVTbGlk
ZXItPmhpZGUoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3ZvbHVtZVNsaWRlci0+
c2hvdygpOwotICAgICAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29u
dHJvbGxlci0+dm9sdW1lKCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1fdG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b24pIHsKLSAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5o
YXNDbG9zZWRDYXB0aW9ucygpKQotICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbi0+c2hvdygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uLT5oaWRlKCk7Ci0gICAgfQotCi0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlkZW8oKSkK
LSAgICAgICAgbV9mdWxsc2NyZWVuQnV0dG9uLT5zaG93KCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2Z1bGxzY3JlZW5CdXR0b24tPmhpZGUoKTsKLSAgICBtYWtlT3BhcXVlKCk7Ci19Ci0KLXZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJhY2tTdGFydGVkKCkKLXsKLSAg
ICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotICAgIG1fY3VycmVu
dFRpbWVEaXNwbGF5LT5zaG93KCk7Ci0gICAgbV9kdXJhdGlvbkRpc3BsYXktPmhpZGUoKTsKLSAg
ICB1cGRhdGVUaW1lRGlzcGxheSgpOwotCi0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQotICAgICAg
ICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCi17Ci0gICAgbV90
aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwot
ICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0KLSAgICBpZiAoIW1faXNNb3VzZU92ZXJDb250cm9s
cyAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlkZW8oKSkKLSAgICAgICAgbWFrZVRyYW5zcGFy
ZW50KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJh
Y2tTdG9wcGVkKCkKLXsKLSAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0g
ICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1l
KCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgbWFrZU9wYXF1ZSgpOwotCi0gICAg
c3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0ZVRpbWVEaXNwbGF5KCkKLXsKLSAgICBmbG9hdCBu
b3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXJhdGlv
biA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotCi0gICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEFmdGVyIHNlZWssIGhpZGUgZHVyYXRpb24gZGlzcGxheSBhbmQgc2hvdyBjdXJyZW50IHRp
bWUuCi0gICAgaWYgKG5vdyA+IDApIHsKLSAgICAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNo
b3coKTsKLSAgICAgICAgbV9kdXJhdGlvbkRpc3BsYXktPmhpZGUoKTsKLSAgICB9Ci0KLSAgICAv
LyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0aW1lLgotICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgp
LT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKLSAg
ICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7Ci19Ci0KLXZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cmVwb3J0ZWRFcnJvcigpCi17Ci0gICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7Ci0gICAgbV92b2x1bWVT
bGlkZXItPmhpZGUoKTsKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikKLSAg
ICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwotICAgIG1fZnVsbHNj
cmVlbkJ1dHRvbi0+aGlkZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW06OnVwZGF0ZVN0YXR1c0Rpc3BsYXkoKQotewotfQotCi1ib29sIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Q2hyb21pdW06OnNob3VsZEhpZGVDb250cm9scygpCi17Ci0gICAgcmV0dXJuICFt
X3BhbmVsLT5ob3ZlcmVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJv
bWl1bTo6bG9hZGVkTWV0YWRhdGEoKQotewotICAgIHJlc2V0KCk7Ci19Ci0KLWJvb2wgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50KiBl
dmVudCkKLXsKLSAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8TW91
c2VFdmVudCo+KGV2ZW50KS0+cmVsYXRlZFRhcmdldCgpOwotICAgIGlmICghcmVsYXRlZFRhcmdl
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb250YWlucyhyZWxhdGVkVGFy
Z2V0LT50b05vZGUoKSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgTWVkaWFDb250cm9s
czo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0KLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsKLSAgICAgICAgaWYgKCFjb250YWluc1Jl
bGF0ZWRUYXJnZXQoZXZlbnQpKSB7Ci0gICAgICAgICAgICBtX2lzTW91c2VPdmVyQ29udHJvbHMg
PSB0cnVlOwotICAgICAgICAgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+Y2FuUGxheSgpKSB7
Ci0gICAgICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOwotICAgICAgICAgICAgICAgIGlmIChzaG91
bGRIaWRlQ29udHJvbHMoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVl
bkNvbnRyb2xzVGltZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCkgewotICAgICAg
ICBpZiAoIWNvbnRhaW5zUmVsYXRlZFRhcmdldChldmVudCkpIHsKLSAgICAgICAgICAgIG1faXNN
b3VzZU92ZXJDb250cm9scyA9IGZhbHNlOwotICAgICAgICAgICAgc3RvcEhpZGVGdWxsc2NyZWVu
Q29udHJvbHNUaW1lcigpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgewotICAgICAgICBpZiAobV9pc0Z1bGxz
Y3JlZW4pIHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2UgZ2V0IGEgbW91c2UgbW92ZSBpbiBmdWxs
c2NyZWVuIG1vZGUsIHNob3cgdGhlIG1lZGlhIGNvbnRyb2xzLCBhbmQgc3RhcnQgYSB0aW1lcgot
ICAgICAgICAgICAgLy8gdGhhdCB3aWxsIGhpZGUgdGhlIG1lZGlhIGNvbnRyb2xzIGFmdGVyIGEg
MiBzZWNvbmRzIHdpdGhvdXQgYSBtb3VzZSBtb3ZlLgotICAgICAgICAgICAgbWFrZU9wYXF1ZSgp
OwotICAgICAgICAgICAgaWYgKHNob3VsZEhpZGVDb250cm9scygpKQotICAgICAgICAgICAgICAg
IHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c3RhcnRIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIGlmICghbV9pc0Z1bGxzY3JlZW4pCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyLnN0YXJ0T25lU2hv
dCh0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6aGlkZUZ1bGxzY3JlZW5Db250cm9s
c1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4qKQotewot
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+cGF1c2VkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghbV9pc0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghc2hv
dWxkSGlkZUNvbnRyb2xzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1ha2VUcmFuc3BhcmVu
dCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnN0b3BIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9s
c1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
OjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCkKLXsKLSAgICBpZiAobV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbikKLSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtOjpjaGFuZ2VkTXV0ZSgpCi17Ci0gICAgbV9wYW5lbE11dGVCdXR0b24tPmNoYW5n
ZWRNdXRlKCk7Ci0KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCkpCi0gICAgICAg
IG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUoMCk7Ci0gICAgZWxzZQotICAgICAgICBtX3ZvbHVt
ZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y2hhbmdlZFZvbHVtZSgpCi17Ci0g
ICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkp
OwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmVudGVyZWRGdWxs
c2NyZWVuKCkKLXsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IHRydWU7Ci0gICAgbV9mdWxsc2NyZWVu
QnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7Ci0gICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNv
bnRyb2xzVGltZXIoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
OjpleGl0ZWRGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOwotICAg
IG1fZnVsbHNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKLSAgICBzdG9wSGlk
ZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bTo6c2hvd1ZvbHVtZVNsaWRlcigpCi17Ci0gICAgaWYgKCFtX21lZGlhQ29u
dHJvbGxlci0+aGFzQXVkaW8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92b2x1bWVTbGlk
ZXItPnNob3coKTsKLX0KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLXZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpCi17Ci0gICAg
aWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0RGlzcGxheUNvbnRh
aW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERpc3BsYXlDb250YWlu
ZXIuZ2V0KCk7Ci0KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCi0gICAgICAgIG1fdGV4dERp
c3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihtX21lZGlhQ29udHJvbGxlcik7Ci0K
LSAgICAvLyBJbnNlcnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQgc28g
aXQgYWx3YXlzIGRpc3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMuCi0gICAgaW5zZXJ0QmVmb3Jl
KHRleHREaXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgbV9lbmNsb3N1cmUsIEFTU0VSVF9OT19F
WENFUFRJT04sIHRydWUpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW06OnNob3dUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAoIW1fdGV4dERpc3BsYXlDb250
YWluZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICBtX3RleHREaXNw
bGF5Q29udGFpbmVyLT5zaG93KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bTo6aGlkZVRleHRUcmFja0Rpc3BsYXkoKQotewotICAgIGlmICghbV90ZXh0RGlzcGxh
eUNvbnRhaW5lcikKLSAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIG1fdGV4
dERpc3BsYXlDb250YWluZXItPmhpZGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtOjp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAoIW1fdGV4
dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLQot
ICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZURpc3BsYXkoKTsKLX0KLSNlbmRpZgot
Ci1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scyIpKTsKLSAgICByZXR1cm4gaWQ7Ci19
Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6YnVmZmVyaW5nUHJvZ3Jl
c3NlZCgpCi17Ci0gICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jl
c3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwKLSAgICAvLyBwbGF5YmFjayBwbGF5YmFja1By
b2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXItPnBhdXNlZCgpKQotICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29u
dHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMjA2MTIzMzI2Nzc4Yzhl
NTg3Nzc4OTA1ODc2NTIyMTQ0MGQ4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9v
dEVsZW1lbnRDaHJvbWl1bS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtX2gKLSNkZWZpbmUgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bV9oCi0KLSNpZiBF
TkFCTEUoVklERU8pCi0KLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgotI2luY2x1
ZGUgIk1lZGlhQ29udHJvbHMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBIVE1MSW5wdXRFbGVtZW50Owot
Y2xhc3MgRXZlbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50Owot
Y2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGltZVJlbWFpbmlu
Z0Rpc3BsYXlFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OwotY2xh
c3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50
OwotY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OwotY2xhc3MgTWVk
aWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OwotY2xhc3MgTWVkaWFD
b250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlOwotY2xhc3MgTWVkaWFQbGF5ZXI7Ci0KLWNsYXNzIFJlbmRlckJveDsKLWNsYXNzIFJl
bmRlck1lZGlhOwotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotY2xhc3MgTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0Rp
c3BsYXlFbGVtZW50OwotI2VuZGlmCi0KLWNsYXNzIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9z
dXJlRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKLXByb3RlY3RlZDoKLSAg
ICBleHBsaWNpdCBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQq
KTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3Bs
YXlUeXBlKCkgY29uc3Q7Ci19OwotCi1jbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVs
ZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE1lZGlh
Q29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOwotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsKLQotY2xhc3MgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtPiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50
YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UqKTsKLQotICAgIHZvaWQgc2hvdygpOwotICAgIHZvaWQgaGlkZSgpOwotICAg
IHZvaWQgbWFrZU9wYXF1ZSgpOwotICAgIHZvaWQgbWFrZVRyYW5zcGFyZW50KCk7Ci0KLSAgICB2
b2lkIHJlc2V0KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHBsYXliYWNrU3RhcnRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5
YmFja1N0b3BwZWQoKTsKLQotICAgIHZvaWQgY2hhbmdlZE11dGUoKTsKLSAgICB2b2lkIGNoYW5n
ZWRWb2x1bWUoKTsKLQotICAgIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKLSAgICB2b2lkIGV4
aXRlZEZ1bGxzY3JlZW4oKTsKLQotICAgIHZvaWQgcmVwb3J0ZWRFcnJvcigpOwotICAgIHZvaWQg
bG9hZGVkTWV0YWRhdGEoKTsKLSAgICB2b2lkIGNoYW5nZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxp
dHkoKTsKLQotICAgIHZvaWQgc2hvd1ZvbHVtZVNsaWRlcigpOwotICAgIHZvaWQgdXBkYXRlVGlt
ZURpc3BsYXkoKTsKLSAgICB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKLQotI2lmIEVOQUJM
RShWSURFT19UUkFDSykKLSAgICB2b2lkIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2
b2lkIHNob3dUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAgdm9pZCBoaWRlVGV4dFRyYWNrRGlzcGxh
eSgpOwotICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotI2VuZGlmCi0KLSAgICB2
b2lkIGJ1ZmZlcmluZ1Byb2dyZXNzZWQoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRl
Q29udHJvbHMoKTsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW0oRG9jdW1lbnQqKTsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNj
ZXNzZnVsLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLgotICAgIGJvb2wgaW5pdGlhbGl6ZUNvbnRy
b2xzKERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKLSAgICB2b2lkIGhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZp
cmVkKFRpbWVyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0+Kik7Ci0gICAgdm9pZCBz
dGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgIHZvaWQgc3RvcEhpZGVGdWxs
c2NyZWVuQ29udHJvbHNUaW1lcigpOwotCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0KLSAgICBib29sIGNvbnRhaW5zUmVsYXRlZFRhcmdl
dChFdmVudCopOwotCi0gICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJv
bGxlcjsKLQotICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KiBtX3BsYXlCdXR0b247
Ci0gICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9jdXJyZW50VGlt
ZURpc3BsYXk7Ci0gICAgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBt
X2R1cmF0aW9uRGlzcGxheTsKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQqIG1fdGlt
ZWxpbmU7Ci0gICAgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCogbV9wYW5lbE11
dGVCdXR0b247Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCogbV92b2x1bWVT
bGlkZXI7Ci0gICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
KiBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50KiBtX2Z1bGxzY3JlZW5CdXR0b247Ci0gICAgTWVkaWFDb250cm9sUGFu
ZWxFbGVtZW50KiBtX3BhbmVsOwotICAgIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVu
dCogbV9lbmNsb3N1cmU7Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCogbV90ZXh0RGlzcGxheUNvbnRhaW5lcjsKLSNl
bmRpZgotCi0gICAgVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gbV9oaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXI7Ci0gICAgYm9vbCBtX2lzTW91c2VPdmVyQ29udHJvbHM7
Ci0gICAgYm9vbCBtX2lzRnVsbHNjcmVlbjsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0NTYzNGE4NDc2ZGU4ZTRjNzhmMDNjODU5Mzg1MDI1NjJhZGZmZTMyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPKQotI2luY2x1ZGUgIk1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW1BbmRyb2lkLmgiCi0KLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50
cy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1
cmVFbGVtZW50OjpNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoZG9j
dW1lbnQpCi17Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVs
ZW1lbnQ+IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sT3Zl
cmxheUVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLW92ZXJsYXktZW5jbG9zdXJlIikpOwotICAgIHJldHVybiBpZDsK
LX0KLQotTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQ6Ok1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0oZG9jdW1lbnQpCi0gICAgLCBtX292ZXJsYXlQ
bGF5QnV0dG9uKDApCi0gICAgLCBtX292ZXJsYXlFbmNsb3N1cmUoMCkKLXsKLX0KLQotUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9p
ZDo6Y3JlYXRlKGRvY3VtZW50KTsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtQW5kcm9pZD4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJv
aWQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgaWYgKCFkb2N1bWVudC0+cGFn
ZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtQW5kcm9pZD4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQoZG9jdW1lbnQpKTsKLQotICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ+
IG92ZXJsYXlFbmNsb3N1cmUgPSBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0
b25FbGVtZW50PiBvdmVybGF5UGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBjb250cm9scy0+bV9vdmVybGF5UGxh
eUJ1dHRvbiA9IG92ZXJsYXlQbGF5QnV0dG9uLmdldCgpOwotICAgIG92ZXJsYXlFbmNsb3N1cmUt
PmFwcGVuZENoaWxkKG92ZXJsYXlQbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAg
IGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb250cm9scy0+bV9vdmVybGF5RW5j
bG9zdXJlID0gb3ZlcmxheUVuY2xvc3VyZS5nZXQoKTsKLSAgICBjb250cm9scy0+YXBwZW5kQ2hp
bGQob3ZlcmxheUVuY2xvc3VyZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGNvbnRyb2xzLT5pbml0aWFsaXplQ29udHJvbHMo
ZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOwotCi0gICAgcmV0
dXJuIDA7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQ6
OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIp
Ci17Ci0gICAgaWYgKG1fb3ZlcmxheVBsYXlCdXR0b24pCi0gICAgICAgIG1fb3ZlcmxheVBsYXlC
dXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9vdmVybGF5
RW5jbG9zdXJlKQotICAgICAgICBtX292ZXJsYXlFbmNsb3N1cmUtPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKLSAgICBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpzZXRN
ZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWQ6OnBsYXliYWNrU3RhcnRlZCgpCi17Ci0gICAgbV9vdmVybGF5
UGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAgICBNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtOjpwbGF5YmFja1N0YXJ0ZWQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtQW5kcm9pZDo6cGxheWJhY2tTdG9wcGVkKCkKLXsKLSAgICBtX292
ZXJsYXlQbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Q2hyb21pdW06OnBsYXliYWNrU3RvcHBlZCgpOwotfQotCi19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDljNzc0ODNmOThlMjI4NjBjMzc1YTg1ODQ3NTAwZTYxYTg0NGM3Y2QuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkX2gKLSNkZWZpbmUgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWRfaAotCi0jaWYgRU5BQkxFKFZJREVPKQotCi0jaW5jbHVkZSAi
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDsKLQotY2xhc3Mg
TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9s
Q2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVs
ZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KLWNsYXNzIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW1BbmRyb2lkIDogcHVibGljIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0gewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW1BbmRyb2lkPiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRN
ZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKik7Ci0gICAgdmlydHVhbCB2
b2lkIHBsYXliYWNrU3RhcnRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0b3BwZWQo
KTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtQW5kcm9pZChEb2N1bWVudCopOwotCi0gICAgTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0
b25FbGVtZW50KiBtX292ZXJsYXlQbGF5QnV0dG9uOwotICAgIE1lZGlhQ29udHJvbE92ZXJsYXlF
bmNsb3N1cmVFbGVtZW50KiBtX292ZXJsYXlFbmNsb3N1cmU7Ci19OwotCi19Ci0KLSNlbmRpZgot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAK
aW5kZXggMmQwMDc5MjUyNDE3YWIzNWJjODM0MjdiZTFkMDZiODQzMjJlNDVhMC4uNWI5OWU4Mzhj
NWMwYzczODlhNjY4M2FlYzY1NDExNTBhYTkxMjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKQEAgLTI3LDIwICsyNywzNjggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShWSURFTykKLQogI2luY2x1ZGUgIk1lZGlhQ29udHJv
bHMuaCIKIAotI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIE1lZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICwgbV9t
ZWRpYUNvbnRyb2xsZXIoMCkKKyAgICAsIG1fcGFuZWwoMCkKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgLCBtX3RleHREaXNwbGF5Q29udGFpbmVyKDApCisjZW5kaWYKKyAgICAsIG1fcGxh
eUJ1dHRvbigwKQorICAgICwgbV9jdXJyZW50VGltZURpc3BsYXkoMCkKKyAgICAsIG1fdGltZWxp
bmUoMCkKKyAgICAsIG1fcGFuZWxNdXRlQnV0dG9uKDApCisgICAgLCBtX3ZvbHVtZVNsaWRlcigw
KQorICAgICwgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbigwKQorICAgICwgbV9mdWxsU2Ny
ZWVuQnV0dG9uKDApCisgICAgLCBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAm
TWVkaWFDb250cm9sczo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpCisgICAgLCBt
X2lzRnVsbHNjcmVlbihmYWxzZSkKKyAgICAsIG1faXNNb3VzZU92ZXJDb250cm9scyhmYWxzZSkK
K3sKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxl
ciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgbV9tZWRpYUNvbnRyb2xsZXIg
PSBjb250cm9sbGVyOworCisgICAgaWYgKG1fcGFuZWwpCisgICAgICAgIG1fcGFuZWwtPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
aWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWlu
ZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyNlbmRpZgorICAgIGlmIChtX3Bs
YXlCdXR0b24pCisgICAgICAgIG1fcGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworICAgIGlmIChtX2N1cnJlbnRUaW1lRGlzcGxheSkKKyAgICAgICAgbV9jdXJyZW50
VGltZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90
aW1lbGluZSkKKyAgICAgICAgbV90aW1lbGluZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIGlmIChtX3BhbmVsTXV0ZUJ1dHRvbikKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxl
cik7CisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pCisgICAgICAgIG1fdG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24t
PnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
OjpyZXNldCgpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlz
cGxheVR5cGUoKTsKKworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworCisgICAgZmxv
YXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBpZiAoaXNm
aW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5k
bGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CisgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0
aW9uKGR1cmF0aW9uKTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNv
bnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOworICAgIH0KKworICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFu
ZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fcGFuZWxNdXRlQnV0dG9u
LT5zaG93KCk7CisgICAgZWxzZQorICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+aGlkZSgpOwor
CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyKSB7CisgICAgICAgIGlmICghbV9tZWRpYUNvbnRyb2xs
ZXItPmhhc0F1ZGlvKCkpCisgICAgICAgICAgICBtX3ZvbHVtZVNsaWRlci0+aGlkZSgpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zaG93KCk7CisgICAgICAg
ICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUo
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbikgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25z
KCkpCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhp
ZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlm
IChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkgJiYgbV9tZWRpYUNvbnRy
b2xsZXItPmhhc1ZpZGVvKCkpCisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3co
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7
CisgICAgfQorCisgICAgbWFrZU9wYXF1ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnJl
cG9ydGVkRXJyb3IoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXBhZ2UtPnRoZW1lKCkt
Pmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkgewor
ICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+aGlkZSgpOworICAgICAgICBtX3ZvbHVtZVNsaWRl
ci0+aGlkZSgpOworICAgIH0KKworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
ICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFU
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQorICAgICAgICBtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uICYmICFw
YWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFFbnRlckZ1
bGxzY3JlZW5CdXR0b25QYXJ0KSkKKyAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6bG9hZGVkTWV0YWRhdGEoKQoreworICAgIHJlc2V0
KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6c2hvdygpCit7CisgICAgbV9wYW5lbC0+c2V0
SXNEaXNwbGF5ZWQodHJ1ZSk7CisgICAgbV9wYW5lbC0+c2hvdygpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHM6OmhpZGUoKQoreworICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKGZhbHNlKTsK
KyAgICBtX3BhbmVsLT5oaWRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6bWFrZU9wYXF1
ZSgpCit7CisgICAgbV9wYW5lbC0+bWFrZU9wYXF1ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJv
bHM6Om1ha2VUcmFuc3BhcmVudCgpCit7CisgICAgbV9wYW5lbC0+bWFrZVRyYW5zcGFyZW50KCk7
Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sczo6c2hvdWxkSGlkZUNvbnRyb2xzKCkKK3sKKyAgICBy
ZXR1cm4gIW1fcGFuZWwtPmhvdmVyZWQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpidWZm
ZXJpbmdQcm9ncmVzc2VkKCkKK3sKKyAgICAvLyBXZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGJ1ZmZl
cmluZyBwcm9ncmVzcyB3aGVuIHBhdXNlZCwgZHVyaW5nIG5vcm1hbAorICAgIC8vIHBsYXliYWNr
IHBsYXliYWNrUHJvZ3Jlc3NlZCgpIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorICAgIGlmIChtX21l
ZGlhQ29udHJvbGxlci0+cGF1c2VkKCkpCisgICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9u
KG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xzOjpwbGF5YmFja1N0YXJ0ZWQoKQoreworICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxh
eVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+
Y3VycmVudFRpbWUoKSk7CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisKKyAgICBp
ZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1Rp
bWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sK
KyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKSk7CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisKKyAgICBpZiAoIW1faXNN
b3VzZU92ZXJDb250cm9scyAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlkZW8oKSkKKyAgICAg
ICAgbWFrZVRyYW5zcGFyZW50KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6cGxheWJhY2tT
dG9wcGVkKCkKK3sKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAg
bV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkp
OworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIG1ha2VPcGFxdWUoKTsKKwor
ICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNv
bnRyb2xzOjp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKQoreworICAgIGZsb2F0IG5vdyA9IG1f
bWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworCisgICAgUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCisgICAgRXhjZXB0aW9uQ29kZSBl
YzsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCkt
PmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKG5vdyksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlz
cGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6c2hv
d1ZvbHVtZVNsaWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92b2x1bWVTbGlkZXItPnNob3coKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkTXV0ZSgpCit7CisgICAgbV9wYW5lbE11dGVCdXR0
b24tPmNoYW5nZWRNdXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6Y2hhbmdlZFZvbHVt
ZSgpCit7CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+
c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sczo6Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpCit7CisgICAgaWYgKG1f
dG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pCisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6
ZW50ZXJlZEZ1bGxzY3JlZW4oKQogeworICAgIG1faXNGdWxsc2NyZWVuID0gdHJ1ZTsKKyAgICBt
X2Z1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbih0cnVlKTsKKworICAgIGlmIChQYWdl
KiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0
Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUpOworCisgICAgc3RhcnRIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpleGl0ZWRGdWxs
c2NyZWVuKCkKK3sKKyAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworICAgIG1fZnVsbFNjcmVl
bkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlb3ZlckV2ZW50KSB7CisgICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50
KSkgeworICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmNhblBsYXkoKSkgeworICAgICAgICAgICAgICAg
IG1ha2VPcGFxdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkp
CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpIHsKKyAgICAgICAgaWYgKCFjb250YWluc1Jl
bGF0ZWRUYXJnZXQoZXZlbnQpKSB7CisgICAgICAgICAgICBtX2lzTW91c2VPdmVyQ29udHJvbHMg
PSBmYWxzZTsKKyAgICAgICAgICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2Vtb3ZlRXZlbnQpIHsKKyAgICAgICAgaWYgKG1faXNGdWxsc2NyZWVuKSB7CisgICAgICAg
ICAgICAvLyBXaGVuIHdlIGdldCBhIG1vdXNlIG1vdmUgaW4gZnVsbHNjcmVlbiBtb2RlLCBzaG93
IHRoZSBtZWRpYSBjb250cm9scywgYW5kIHN0YXJ0IGEgdGltZXIKKyAgICAgICAgICAgIC8vIHRo
YXQgd2lsbCBoaWRlIHRoZSBtZWRpYSBjb250cm9scyBhZnRlciBhIDMgc2Vjb25kcyB3aXRob3V0
IGEgbW91c2UgbW92ZS4KKyAgICAgICAgICAgIG1ha2VPcGFxdWUoKTsKKyAgICAgICAgICAgIGlm
IChzaG91bGRIaWRlQ29udHJvbHMoKSkKKyAgICAgICAgICAgICAgICBzdGFydEhpZGVGdWxsc2Ny
ZWVuQ29udHJvbHNUaW1lcigpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29u
dHJvbHM6OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJv
bHM+KikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW1faXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIXNob3VsZEhpZGVDb250cm9scygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyh0cnVlKTsKKworICAgIG1ha2VUcmFuc3Bh
cmVudCgpOwogfQogCit2b2lkIE1lZGlhQ29udHJvbHM6OnN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKCkKK3sKKyAgICBpZiAoIW1faXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm47
CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIuc3Rh
cnRPbmVTaG90KHBhZ2UtPnRoZW1lKCktPnRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhp
ZGluZ0NvbnRyb2xzKCkpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnN0b3BIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKQoreworICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
LnN0b3AoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzOjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMiKSk7CisgICAgcmV0dXJuIGlkOworfQorCiti
b29sIE1lZGlhQ29udHJvbHM6OmNvbnRhaW5zUmVsYXRlZFRhcmdldChFdmVudCogZXZlbnQpCit7
CisgICAgaWYgKCFldmVudC0+aXNNb3VzZUV2ZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQq
PihldmVudCktPnJlbGF0ZWRUYXJnZXQoKTsKKyAgICBpZiAoIXJlbGF0ZWRUYXJnZXQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29udGFpbnMocmVsYXRlZFRhcmdldC0+dG9O
b2RlKCkpOworfQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQordm9pZCBNZWRpYUNvbnRyb2xz
OjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkKK3sKKyAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRh
aW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ+IHRleHREaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIG1fdGV4dERp
c3BsYXlDb250YWluZXIgPSB0ZXh0RGlzcGxheUNvbnRhaW5lci5nZXQoKTsKKworICAgIGlmICht
X21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2V0TWVk
aWFDb250cm9sbGVyKG1fbWVkaWFDb250cm9sbGVyKTsKKworICAgIC8vIEluc2VydCBpdCBiZWZv
cmUgdGhlIGZpcnN0IGNvbnRyb2xsZXIgZWxlbWVudCBzbyBpdCBhbHdheXMgZGlzcGxheXMgYmVo
aW5kIHRoZSBjb250cm9scy4KKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIGluc2VydEJlZm9y
ZSh0ZXh0RGlzcGxheUNvbnRhaW5lci5yZWxlYXNlKCksIG1fcGFuZWwsIGVjLCB0cnVlKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzOjpzaG93VGV4dFRyYWNrRGlzcGxheSgpCit7CisgICAgaWYg
KCFtX3RleHREaXNwbGF5Q29udGFpbmVyKQorICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5
KCk7CisgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2hvdygpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHM6OmhpZGVUZXh0VHJhY2tEaXNwbGF5KCkKK3sKKyAgICBpZiAoIW1fdGV4dERpc3Bs
YXlDb250YWluZXIpCisgICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKKyAgICBtX3Rl
eHREaXNwbGF5Q29udGFpbmVyLT5oaWRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6dXBk
YXRlVGV4dFRyYWNrRGlzcGxheSgpCit7CisgICAgaWYgKCFtX3RleHREaXNwbGF5Q29udGFpbmVy
KQorICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CisKKyAgICBtX3RleHREaXNwbGF5
Q29udGFpbmVyLT51cGRhdGVEaXNwbGF5KCk7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAppbmRleCAyODkwOGE5YTEw
N2U0NTcwMzkyODY4MzIwMzNkYmEyOGQwMzdiNjM2Li45NDJjMGY0MTk5OTE2ZWE0ODMwZTJlN2Rj
NzA3MDhjMjE0MGRkN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9scy5oCkBAIC0yOSw2NCArMjksMTE2IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKKyNpbmNs
dWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IlRleHRUcmFja0N1ZS5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
TWVkaWFDb250cm9sbGVySW50ZXJmYWNlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFdmVudDsK
K2NsYXNzIFBhZ2U7CitjbGFzcyBNZWRpYVBsYXllcjsKIAorY2xhc3MgUmVuZGVyQm94OworY2xh
c3MgUmVuZGVyTWVkaWE7CisKKy8vIEFuIGFic3RyYWN0IGNsYXNzIHdpdGggdGhlIG1lZGlhIGNv
bnRyb2wgZWxlbWVudHMgdGhhdCBhbGwgcG9ydHMgc3VwcG9ydC4KIGNsYXNzIE1lZGlhQ29udHJv
bHMgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogICBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVk
aWFDb250cm9scygpIHt9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGltcGxlbWVu
dGVkIGluIHlvdXIgcG9ydC1zcGVjaWZpYyBtZWRpYQotICAgIC8vIGNvbnRyb2xzIGltcGxlbWVu
dGF0aW9uLgorICAgIC8vIGNvbnRyb2xzIGltcGxlbWVudGF0aW9uIHNpbmNlIGl0IHdpbGwgcmV0
dXJuIGEgY2hpbGQgaW5zdGFuY2UuCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
cz4gY3JlYXRlKERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9s
bGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopOworCisgICAgdmlydHVh
bCB2b2lkIHJlc2V0KCk7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydGVkRXJyb3IoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZGVkTWV0YWRhdGEoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93KCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYWtl
T3BhcXVlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNob3coKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIHZp
cnR1YWwgdm9pZCBtYWtlT3BhcXVlKCk7CisgICAgdmlydHVhbCB2b2lkIG1ha2VUcmFuc3BhcmVu
dCgpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCByZXNldCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3Nl
ZCgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGxheWJhY2tQcm9ncmVzc2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrU3RvcHBl
ZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NlZCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcGxheWJhY2tTdGFydGVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5
YmFja1N0b3BwZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXko
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAg
IHZpcnR1YWwgdm9pZCBzaG93Vm9sdW1lU2xpZGVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hh
bmdlZE11dGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNoYW5nZWRWb2x1bWUoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNoYW5nZWRNdXRlKCk7CisgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRW
b2x1bWUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJl
cG9ydGVkRXJyb3IoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRlZE1ldGFkYXRhKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpOworICAgIHZpcnR1YWwgdm9p
ZCBleGl0ZWRGdWxsc2NyZWVuKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1ZvbHVtZVNsaWRl
cigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGltZURpc3BsYXkoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRy
b2xzPiopOworICAgIHZpcnR1YWwgdm9pZCBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1l
cigpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgdmlydHVhbCB2b2lkIHNob3dUZXh0VHJh
Y2tEaXNwbGF5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlVGV4dFRyYWNrRGlzcGxheSgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOworICAgIHZpcnR1YWwgdm9p
ZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlVGV4dFRyYWNr
RGlzcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJpbmdQcm9ncmVzc2VkKCkgPSAwOwotCiBw
cm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9scyhEb2N1bWVudCopOworICAgIGV4cGxpY2l0IE1l
ZGlhQ29udHJvbHMoRG9jdW1lbnQqKTsKIAotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xzKCk7
CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKworICAgIHZp
cnR1YWwgYm9vbCBjb250YWluc1JlbGF0ZWRUYXJnZXQoRXZlbnQqKTsKKworICAgIE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZSogbV9tZWRpYUNvbnRyb2xsZXI7CiAKKyAgICAvLyBDb250YWluZXIg
Zm9yIHRoZSBtZWRpYSBjb250cm9sIGVsZW1lbnRzLgorICAgIE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudCogbV9wYW5lbDsKKworICAgIC8vIENvbnRhaW5lciBmb3IgdGhlIHRleHQgdHJhY2sgY3Vl
cy4KKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudCogbV90ZXh0RGlzcGxheUNvbnRhaW5lcjsKKyNlbmRpZgorCisgICAgLy8g
TWVkaWEgY29udHJvbCBlbGVtZW50cy4KKyAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dCogbV9wbGF5QnV0dG9uOworICAgIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1l
bnQqIG1fY3VycmVudFRpbWVEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dCogbV90aW1lbGluZTsKKyAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KiBt
X3BhbmVsTXV0ZUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KiBt
X3ZvbHVtZVNsaWRlcjsKKyAgICBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bkVsZW1lbnQqIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b247CisgICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqIG1fZnVsbFNjcmVlbkJ1dHRvbjsKKworICAgIFRpbWVy
PE1lZGlhQ29udHJvbHM+IG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyOworICAgIGJvb2wg
bV9pc0Z1bGxzY3JlZW47CisgICAgYm9vbCBtX2lzTW91c2VPdmVyQ29udHJvbHM7CisKK3ByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0OwogfTsKIAogaW5saW5lIE1lZGlhQ29udHJvbHMqIHRvTWVkaWFDb250cm9scyhOb2Rl
KiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNB
cHBsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1MzljNjAwMGU1YmQ4MTEyY2E3NmJiNzhhZGNiNzczYzU0
NjgyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5jcHAKQEAgLTAsMCArMSw0NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2lu
Y2x1ZGUgIk1lZGlhQ29udHJvbHNBcHBsZS5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlRleHQu
aCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIK
KyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K01lZGlhQ29udHJvbHNBcHBsZTo6TWVkaWFDb250cm9sc0FwcGxlKERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCisgICAgLCBtX3Jld2luZEJ1dHRvbigw
KQorICAgICwgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uKDApCisgICAgLCBtX3N0YXR1c0Rpc3Bs
YXkoMCkKKyAgICAsIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkoMCkKKyAgICAsIG1fdGltZWxpbmVD
b250YWluZXIoMCkKKyAgICAsIG1fc2Vla0JhY2tCdXR0b24oMCkKKyAgICAsIG1fc2Vla0Zvcndh
cmRCdXR0b24oMCkKKyAgICAsIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbigwKQorICAgICwgbV92
b2x1bWVTbGlkZXJDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRv
bigwKQorICAgICwgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKDApCisgICAgLCBtX2Z1bGxTY3Jl
ZW5NYXhWb2x1bWVCdXR0b24oMCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBN
ZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBN
ZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKGRvY3VtZW50KTsKK30KKworUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xzQXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29udHJv
bHMoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBjb250cm9s
cyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xzQXBwbGUoZG9jdW1lbnQpKTsKKworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiByZXdpbmRCdXR0b24gPSBN
ZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNv
bnRyb2xzLT5tX3Jld2luZEJ1dHRvbiA9IHJld2luZEJ1dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+
YXBwZW5kQ2hpbGQocmV3aW5kQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5n
ZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uID0gTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbiA9IHJldHVy
blRvUmVhbHRpbWVCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKHJldHVyblRv
UmVhbHRpbWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT51c2VzTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheSgpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudD4gc3RhdHVzRGlzcGxheSA9IE1lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBjb250cm9scy0+bV9zdGF0
dXNEaXNwbGF5ID0gc3RhdHVzRGlzcGxheS5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHN0YXR1c0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxh
eSA9IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CisgICAgY29udHJvbHMtPm1fY3VycmVudFRpbWVEaXNwbGF5ID0gY3VycmVudFRpbWVEaXNw
bGF5LmdldCgpOworICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChjdXJyZW50VGlt
ZURpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5l
ID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xz
LmdldCgpKTsKKyAgICBjb250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOworICAg
IHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkg
PSBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CisgICAgY29udHJvbHMtPm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0aW1lUmVtYWluaW5n
RGlzcGxheS5nZXQoKTsKKyAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZVJl
bWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX3RpbWVsaW5lQ29udGFpbmVyID0gdGltZWxp
bmVDb250YWluZXIuZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFp
bmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAvLyBGSVhNRTogT25seSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTcxNjM+CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVu
dD4gc2Vla0JhY2tCdXR0b24gPSBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fc2Vla0JhY2tCdXR0b24gPSBzZWVrQmFj
a0J1dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2Vla0JhY2tCdXR0b24ucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81
NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBz
ZWVrRm9yd2FyZEJ1dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9zZWVrRm9yd2FyZEJ1dHRvbiA9IHNl
ZWtGb3J3YXJkQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrRm9yd2Fy
ZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2Vk
Q2FwdGlvbmluZygpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgICAgICBjb250cm9scy0+bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IHRvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uLmdldCgpOworICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
dG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAg
IGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIEZJWE1FOiBP
bmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0
b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
LCBjb250cm9scy5nZXQoKSk7CisgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1
bGxTY3JlZW5CdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5C
dXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisKKyAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5k
IHRoZSBzbGlkZXIgZWxlbWVudCBzaG91bGQgYmUgaW4gdGhlIHNhbWUgZGl2LgorICAgIFJlZlB0
cjxIVE1MRGl2RWxlbWVudD4gcGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhl
bWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7CisgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250
YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7
CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVh
c2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICAvLyBUaGlzIGlzIGEgZHVwbGljYXRlIG11dGUgYnV0dG9uLCB3aGljaCBpcyB2
aXNpYmxlIGluIHNvbWUgcG9ydHMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdm9sdW1lIGJhci4KKyAg
ICAgICAgLy8gSXQncyBpbXBvcnRhbnQgb25seSB3aGVuIHRoZSB2b2x1bWUgYmFyIGlzIGRpc3Bs
YXllZCBiZWxvdyB0aGUgY29udHJvbHMuCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uID0gdm9sdW1lU2xpZGVy
TXV0ZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRD
aGlsZCh2b2x1bWVTbGlkZXJNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworCisgICAg
ICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNvbnRyb2xzLT5t
X3ZvbHVtZVNsaWRlckNvbnRhaW5lciA9IHZvbHVtZVNsaWRlckNvbnRhaW5lci5nZXQoKTsKKyAg
ICAgICAgcGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlk
ZXJDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11
dGVCdXR0b25FbGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11dGVC
dXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBjb250
cm9scy0+bV9wYW5lbE11dGVCdXR0b24gPSBwYW5lbE11dGVCdXR0b24uZ2V0KCk7CisgICAgcGFu
ZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHBhbmVsLT5hcHBlbmRDaGlsZChwYW5lbFZvbHVtZUNvbnRyb2xDb250YWluZXIsIGVjLCB0cnVl
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gRklYTUU6IE9ubHkg
Y3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgorICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVl
bk1pblZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5NaW5W
b2x1bWVCdXR0b24gPSBmdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLmdldCgpOworICAgIHBhbmVs
LT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IGZ1bGxTY3JlZW5Wb2x1bWVTbGlk
ZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gZnVsbFNj
cmVlblZvbHVtZVNsaWRlci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVl
blZvbHVtZVNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50PiBmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29u
dHJvbHMtPm1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IGZ1bGxTY3JlZW5NYXhWb2x1bWVC
dXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5NYXhWb2x1bWVC
dXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGNvbnRyb2xzLT5tX3BhbmVsID0gcGFuZWwuZ2V0KCk7CisgICAgY29udHJvbHMt
PmFwcGVuZENoaWxkKHBhbmVsLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZSogY29udHJvbGxlcikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0g
Y29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFDb250cm9sczo6c2V0TWVk
aWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworCisgICAgaWYgKG1fcmV3aW5kQnV0dG9uKQorICAg
ICAgICBtX3Jld2luZEJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAg
IGlmIChtX3JldHVyblRvUmVhbFRpbWVCdXR0b24pCisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGlt
ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3N0YXR1
c0Rpc3BsYXkpCisgICAgICAgIG1fc3RhdHVzRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVSZW1haW5pbmdEaXNwbGF5KQorICAgICAgICBtX3Rp
bWVSZW1haW5pbmdEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAg
aWYgKG1fdGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9zZWVrQmFja0J1dHRvbikK
KyAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIp
OworICAgIGlmIChtX3NlZWtGb3J3YXJkQnV0dG9uKQorICAgICAgICBtX3NlZWtGb3J3YXJkQnV0
dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdm9sdW1lU2xp
ZGVyTXV0ZUJ1dHRvbikKKyAgICAgICAgbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uLT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
KQorICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24pCisgICAgICAg
IG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNj
cmVlblZvbHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlm
IChtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbk1heFZv
bHVtZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbHNBcHBsZTo6aGlkZSgpCit7CisgICAgTWVkaWFDb250cm9sczo6aGlkZSgpOwor
ICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sc0FwcGxlOjptYWtlVHJhbnNwYXJlbnQoKQoreworICAgIE1lZGlhQ29udHJvbHM6Om1ha2VU
cmFuc3BhcmVudCgpOworICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCit7CisgICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3Vw
cG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2hvdygpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisKKyAgICBmbG9h
dCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGlmIChpc2Zp
bml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRs
aW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0RHVyYXRp
b24oZHVyYXRpb24pOworICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zaG93KCk7CisgICAg
ICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpKTsKKyAgICAgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgfSBlbHNlCisg
ICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKKworICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRl
SGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fcGFuZWxNdXRlQnV0
dG9uLT5zaG93KCk7CisgICAgZWxzZQorICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+aGlkZSgp
OworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0
Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CisKKyAgICBpZiAobV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbikgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhh
c0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9wbGF5QnV0dG9uKQorICAg
ICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisgICAgaWYgKG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcikKKyAgICAgICAg
bV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZv
bHVtZSgpKTsKKworICAgIGlmIChtX2lzRnVsbHNjcmVlbikgeworICAgICAgICBpZiAobV9tZWRp
YUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7CisgICAgICAgICAgICBtX3NlZWtCYWNrQnV0
dG9uLT5oaWRlKCk7CisgICAgICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5oaWRlKCk7Cisg
ICAgICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOworICAgICAgICAgICAgbV9yZXR1cm5U
b1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X3NlZWtCYWNrQnV0dG9uLT5zaG93KCk7CisgICAgICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9u
LT5zaG93KCk7CisgICAgICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworICAgICAgICAg
ICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5oaWRlKCk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UKKyNlbmRpZgorICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7
CisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgpOworICAgICAgICBtX3Jl
d2luZEJ1dHRvbi0+c2hvdygpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcmV0dXJuVG9SZWFs
VGltZUJ1dHRvbi0+c2hvdygpOworICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworICAg
IH0KKworICAgIG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnVw
ZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRy
b2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJv
bGxlci0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbGxvdyB0aGUgdGhl
bWUgdG8gZm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJy
ZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNv
bnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1l
RGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5p
bmdUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxheS0+
c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
QXBwbGU6OnJlcG9ydGVkRXJyb3IoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXBhZ2Ut
PnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KQorICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CisKKyAgICBpZiAoIXBhZ2Ut
PnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25Q
YXJ0KSkKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKKworICAgIG1fZnVsbFNj
cmVlbkJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQor
ICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIGlmIChtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0
YXRlSGFuZGxpbmdGb3IoTWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQorICAg
ICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0FwcGxlOjp1cGRhdGVTdGF0dXNEaXNwbGF5KCkKK3sKKyAgICBpZiAobV9zdGF0
dXNEaXNwbGF5KQorICAgICAgICBtX3N0YXR1c0Rpc3BsYXktPnVwZGF0ZSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbHNBcHBsZTo6bG9hZGVkTWV0YWRhdGEoKQoreworICAgIGlmIChtX3N0YXR1
c0Rpc3BsYXkgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKQorICAgICAgICBt
X3N0YXR1c0Rpc3BsYXktPmhpZGUoKTsKKworICAgIE1lZGlhQ29udHJvbHM6OmxvYWRlZE1ldGFk
YXRhKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2VkTXV0ZSgpCit7Cisg
ICAgTWVkaWFDb250cm9sczo6Y2hhbmdlZE11dGUoKTsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRl
ck11dGVCdXR0b24pCisgICAgICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+Y2hhbmdlZE11
dGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmNoYW5nZWRWb2x1bWUoKQorewor
ICAgIE1lZGlhQ29udHJvbHM6OmNoYW5nZWRWb2x1bWUoKTsKKworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5Wb2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlci0+c2V0Vm9s
dW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
c0FwcGxlOjplbnRlcmVkRnVsbHNjcmVlbigpCit7CisgICAgTWVkaWFDb250cm9sczo6ZW50ZXJl
ZEZ1bGxzY3JlZW4oKTsKKyAgICBtX3BhbmVsLT5zZXRDYW5CZURyYWdnZWQodHJ1ZSk7CisKKyAg
ICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7CisgICAgICAgIG1fc2Vl
a0JhY2tCdXR0b24tPmhpZGUoKTsKKyAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+aGlkZSgp
OworICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOworICAgICAgICBtX3JldHVyblRvUmVh
bFRpbWVCdXR0b24tPnNob3coKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3NlZWtCYWNrQnV0
dG9uLT5zaG93KCk7CisgICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNob3coKTsKKyAgICAg
ICAgbV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKKyAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0
dG9uLT5oaWRlKCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6ZXhpdGVk
RnVsbHNjcmVlbigpCit7CisgICAgbV9yZXdpbmRCdXR0b24tPnNob3coKTsKKyAgICBtX3NlZWtC
YWNrQnV0dG9uLT5zaG93KCk7CisgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+c2hvdygpOworICAg
IG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2hvdygpOworCisgICAgbV9wYW5lbC0+c2V0Q2Fu
QmVEcmFnZ2VkKGZhbHNlKTsKKworICAgIC8vIFdlIHdpbGwga2VlcCB1c2luZyB0aGUgcGFuZWws
IGJ1dCB3ZSB3YW50IGl0IHRvIGdvIGJhY2sgdG8gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAg
IC8vIFRoaXMgd2lsbCBtYXR0ZXIgcmlnaHQgYXdheSBiZWNhdXNlIHdlIHVzZSB0aGUgcGFuZWwg
ZXZlbiB3aGVuIG5vdCBmdWxsc2NyZWVuLgorICAgIC8vIEFuZCBpZiB3ZSByZWVudGVyIGZ1bGxz
Y3JlZW4gd2UgYWxzbyB3YW50IHRoZSBwYW5lbCBpbiB0aGUgc3RhbmRhcmQgcG9zaXRpb24uCisg
ICAgbV9wYW5lbC0+cmVzZXRQb3NpdGlvbigpOworCisgICAgTWVkaWFDb250cm9sczo6ZXhpdGVk
RnVsbHNjcmVlbigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd1ZvbHVtZVNs
aWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQorICAgICAgICBt
X3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iOGNlNzVkMzQ1MzMxN2NhMTI3ZWZiZjkzYWFmOWJiNzBhMmZlYWQyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmgKQEAg
LTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1l
ZGlhQ29udHJvbHNBcHBsZV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbHNBcHBsZV9oCisKKyNpZiBF
TkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb250cm9sc0FwcGxlIDogcHVibGljIE1lZGlhQ29udHJv
bHMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNBcHBsZT4g
Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqKTsKKworICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVt
ZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1ha2VUcmFuc3BhcmVudCgpIE9WRVJSSURFOworCisg
ICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2hh
bmdlZE11dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZFZvbHVtZSgpIE9W
RVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKSBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRlZEVycm9yKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxv
YWRlZE1ldGFkYXRhKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1ZvbHVtZVNs
aWRlcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXJyZW50VGltZURpc3Bs
YXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbHNBcHBsZShEb2N1bWVudCopOwor
CisKKyAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KiBtX3Jld2luZEJ1dHRvbjsK
KyAgICBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudCogbV9yZXR1cm5U
b1JlYWxUaW1lQnV0dG9uOworICAgIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KiBt
X3N0YXR1c0Rpc3BsYXk7CisgICAgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50KiBtX3RpbWVSZW1haW5pbmdEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCogbV90aW1lbGluZUNvbnRhaW5lcjsKKyAgICBNZWRpYUNvbnRyb2xTZWVr
QmFja0J1dHRvbkVsZW1lbnQqIG1fc2Vla0JhY2tCdXR0b247CisgICAgTWVkaWFDb250cm9sU2Vl
a0ZvcndhcmRCdXR0b25FbGVtZW50KiBtX3NlZWtGb3J3YXJkQnV0dG9uOworICAgIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KiBtX3ZvbHVtZVNsaWRlck11dGVCdXR0
b247CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCogbV92b2x1
bWVTbGlkZXJDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dHRvbkVsZW1lbnQqIG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudCogbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVy
OworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KiBtX2Z1
bGxTY3JlZW5NYXhWb2x1bWVCdXR0b247Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDY4M2ViMzBjYWZkN2NjYjk3ZTBlM2MzM2YxM2EyNmVjMGFmNzU3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0Nocm9taXVtLmNwcApAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVk
aWFDb250cm9sc0Nocm9taXVtLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OjpNZWRp
YUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkKK3sKK30KKworTWVkaWFDb250cm9sRWxl
bWVudFR5cGUgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OjpkaXNwbGF5VHlw
ZSgpIGNvbnN0Cit7CisgICAgLy8gTWFwcGluZyBvbnRvIHNhbWUgTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUgYXMgcGFuZWwgZWxlbWVudCwgc2luY2UgaXQgaGFzIHNpbWlsYXIgcHJvcGVydGllcy4K
KyAgICByZXR1cm4gTWVkaWFDb250cm9sc1BhbmVsOworfQorCitNZWRpYUNvbnRyb2xQYW5lbEVu
Y2xvc3VyZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQo
ZG9jdW1lbnQpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVF
bGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQYW5l
bEVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1t
ZWRpYS1jb250cm9scy1lbmNsb3N1cmUiKSk7CisgICAgcmV0dXJuIGlkOworfQorCitNZWRpYUNv
bnRyb2xzQ2hyb21pdW06Ok1lZGlhQ29udHJvbHNDaHJvbWl1bShEb2N1bWVudCogZG9jdW1lbnQp
CisgICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9kdXJhdGlvbkRpc3BsYXko
MCkKKyAgICAsIG1fZW5jbG9zdXJlKDApCit7Cit9CisKKy8vIE1lZGlhQ29udHJvbHM6OmNyZWF0
ZSgpIGZvciBBbmRyb2lkIGlzIGRlZmluZWQgaW4gTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9p
ZC5jcHAuCisjaWYgIU9TKEFORFJPSUQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlh
Q29udHJvbHM6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIE1lZGlh
Q29udHJvbHNDaHJvbWl1bTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOworfQorI2VuZGlmCisK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sc0Nocm9taXVtPiBNZWRpYUNvbnRyb2xzQ2hyb21pdW06
OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50
LT5wYWdlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbHND
aHJvbWl1bT4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sc0Nocm9taXVtKGRv
Y3VtZW50KSk7CisKKyAgICBpZiAoY29udHJvbHMtPmluaXRpYWxpemVDb250cm9scyhkb2N1bWVu
dCkpCisgICAgICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7CisKKyAgICByZXR1cm4gMDsK
K30KKworYm9vbCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OmluaXRpYWxpemVDb250cm9scyhEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgLy8gQ3JlYXRlIGFuIGVuY2xvc2luZyBlbGVtZW50IGZv
ciB0aGUgcGFuZWwgc28gd2UgY2FuIHZpc3VhbGx5IG9mZnNldCB0aGUgY29udHJvbHMgY29ycmVj
dGx5LgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ+IGVuY2xv
c3VyZSA9IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFD
b250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gcGxheUJ1
dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIG1fcGxheUJ1dHRvbiA9IHBsYXlCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50
PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
LCB0aGlzKTsKKyAgICBtX3RpbWVsaW5lID0gdGltZWxpbmUuZ2V0KCk7CisgICAgcGFuZWwtPmFw
cGVuZENoaWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEN1cnJlbnRU
aW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV9jdXJyZW50VGltZURp
c3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAgbV9jdXJyZW50VGltZURpc3Bs
YXktPmhpZGUoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJl
bGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gZHVy
YXRpb25EaXNwbGF5ID0gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOworICAgIG1fZHVyYXRpb25EaXNwbGF5ID0gZHVyYXRpb25EaXNwbGF5
LmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChkdXJhdGlvbkRpc3BsYXkucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gcGFuZWxNdXRlQnV0dG9u
ID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCB0
aGlzKTsKKyAgICBtX3BhbmVsTXV0ZUJ1dHRvbiA9IHBhbmVsTXV0ZUJ1dHRvbi5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV92b2x1bWVTbGlkZXIgPSBzbGlk
ZXIuZ2V0KCk7CisgICAgbV92b2x1bWVTbGlkZXItPnNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFj
dGlvbih0cnVlKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMs
IHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGRv
Y3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7Cisg
ICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7
CisgICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudD4gZnVsbHNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOworICAgIG1fZnVsbFNjcmVlbkJ1dHRvbiA9
IGZ1bGxzY3JlZW5CdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxzY3Jl
ZW5CdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtX3BhbmVsID0gcGFuZWwuZ2V0KCk7CisgICAgZW5jbG9zdXJlLT5h
cHBlbmRDaGlsZChwYW5lbC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZW5jbG9zdXJlID0gZW5jbG9zdXJlLmdldCgpOwor
ICAgIGFwcGVuZENoaWxkKGVuY2xvc3VyZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZSogY29udHJvbGxlcikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0g
Y29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFDb250cm9sczo6c2V0TWVk
aWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworCisgICAgaWYgKG1fZHVyYXRpb25EaXNwbGF5KQor
ICAgICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIp
OworICAgIGlmIChtX2VuY2xvc3VyZSkKKyAgICAgICAgbV9lbmNsb3N1cmUtPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnJl
c2V0KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29u
dHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0SW5uZXJUZXh0
KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShk
dXJhdGlvbik7CisKKyAgICBNZWRpYUNvbnRyb2xzOjpyZXNldCgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNDaHJvbWl1bTo6cGxheWJhY2tTdGFydGVkKCkKK3sKKyAgICBtX2N1cnJlbnRUaW1l
RGlzcGxheS0+c2hvdygpOworICAgIG1fZHVyYXRpb25EaXNwbGF5LT5oaWRlKCk7CisKKyAgICBN
ZWRpYUNvbnRyb2xzOjpwbGF5YmFja1N0YXJ0ZWQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
Q2hyb21pdW06OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAgZmxvYXQgbm93ID0g
bV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBt
X21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVu
dCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBB
ZnRlciBzZWVrLCBoaWRlIGR1cmF0aW9uIGRpc3BsYXkgYW5kIHNob3cgY3VycmVudCB0aW1lLgor
ICAgIGlmIChub3cgPiAwKSB7CisgICAgICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zaG93KCk7
CisgICAgICAgIG1fZHVyYXRpb25EaXNwbGF5LT5oaWRlKCk7CisgICAgfQorCisgICAgLy8gQWxs
b3cgdGhlIHRoZW1lIHRvIGZvcm1hdCB0aGUgdGltZS4KKyAgICBFeGNlcHRpb25Db2RlIGVjOwor
ICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9y
bWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV9j
dXJyZW50VGltZURpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNDaHJvbWl1bTo6Y2hhbmdlZE11dGUoKQoreworICAgIE1lZGlhQ29udHJvbHM6OmNo
YW5nZWRNdXRlKCk7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCkpCisgICAg
ICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUoMCk7CisgICAgZWxzZQorICAgICAgICBtX3Zv
bHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Cit9CisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6Y3Jl
YXRlVGV4dFRyYWNrRGlzcGxheSgpCit7CisgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50PiB0ZXh0RGlzcGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICBtX3RleHREaXNwbGF5
Q29udGFpbmVyID0gdGV4dERpc3BsYXlDb250YWluZXIuZ2V0KCk7CisKKyAgICBpZiAobV9tZWRp
YUNvbnRyb2xsZXIpCisgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29u
dHJvbGxlcihtX21lZGlhQ29udHJvbGxlcik7CisKKyAgICAvLyBJbnNlcnQgaXQgYmVmb3JlIHRo
ZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQgc28gaXQgYWx3YXlzIGRpc3BsYXlzIGJlaGluZCB0
aGUgY29udHJvbHMuCisgICAgLy8gSW4gdGhlIENocm9taXVtIGNhc2UsIHRoYXQncyB0aGUgZW5j
bG9zdXJlIGVsZW1lbnQuCisgICAgaW5zZXJ0QmVmb3JlKHRleHREaXNwbGF5Q29udGFpbmVyLnJl
bGVhc2UoKSwgbV9lbmNsb3N1cmUsIEFTU0VSVF9OT19FWENFUFRJT04sIHRydWUpOworfQorI2Vu
ZGlmCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNDaHJvbWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MWRkYjE2MTA0ZGZkNGIzODdkMmEw
NzZjZjllMmJjMGJkZTY3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uaApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9sc0Nocm9taXVtX2gKKyNkZWZp
bmUgTWVkaWFDb250cm9sc0Nocm9taXVtX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1
ZGUgIk1lZGlhQ29udHJvbHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRp
YUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxl
bWVudCB7Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNs
b3N1cmVFbGVtZW50KERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OworfTsKKworY2xhc3MgTWVkaWFD
b250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbENocm9taXVt
RW5jbG9zdXJlRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoRG9jdW1l
bnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbHNDaHJvbWl1bSA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xzIHsKK3B1YmxpYzoKKyAgICAvLyBDYWxsZWQgZnJvbSBwb3J0LXNwZWNpZmljIHBhcmVu
dCBjcmVhdGUgZnVuY3Rpb24gdG8gY3JlYXRlIGN1c3RvbSBjb250cm9scy4KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21pdW0+IGNyZWF0ZUNvbnRyb2xzKERvY3VtZW50
Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxl
ckludGVyZmFjZSopIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tTdGFydGVkKCkgT1ZFUlJJREU7CisKKyAg
ICB2b2lkIGNoYW5nZWRNdXRlKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJREU7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgdm9pZCBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkgT1ZFUlJJREU7CisjZW5kaWYKKwor
cHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbHNDaHJvbWl1bShEb2N1bWVudCop
OworCisgICAgYm9vbCBpbml0aWFsaXplQ29udHJvbHMoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToK
KyAgICBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQqIG1fZHVyYXRpb25E
aXNwbGF5OworICAgIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudCogbV9lbmNsb3N1
cmU7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzFkZDkxMjQ1ZWVmZjBlMDdhMzhhMWJlYmY5NzBjOGI2M2RlNDk4ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJv
bWl1bUFuZHJvaWQuY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNDaHJv
bWl1bUFuZHJvaWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUNvbnRyb2xPdmVy
bGF5RW5jbG9zdXJlRWxlbWVudDo6TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVF
bGVtZW50KGRvY3VtZW50KQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlF
bmNsb3N1cmVFbGVtZW50PiBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK2NvbnN0IEF0
b21pY1N0cmluZyYgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1vdmVybGF5LWVuY2xvc3VyZSIpKTsKKyAgICBy
ZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6Ok1lZGlhQ29udHJv
bHNDaHJvbWl1bUFuZHJvaWQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9s
c0Nocm9taXVtKGRvY3VtZW50KQorICAgICwgbV9vdmVybGF5UGxheUJ1dHRvbigwKQorICAgICwg
bV9vdmVybGF5RW5jbG9zdXJlKDApCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9scz4g
TWVkaWFDb250cm9sczo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4g
TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZDo6Y3JlYXRlKGRvY3VtZW50KTsKK30KKworUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkPiBNZWRpYUNvbnRyb2xzQ2hyb21p
dW1BbmRyb2lkOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYg
KCFkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkPiBjb250cm9scyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNv
bnRyb2xzQ2hyb21pdW1BbmRyb2lkKGRvY3VtZW50KSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVj
OworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBvdmVy
bGF5RW5jbG9zdXJlID0gTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxl
bWVudD4gb3ZlcmxheVBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fb3ZlcmxheVBsYXlCdXR0
b24gPSBvdmVybGF5UGxheUJ1dHRvbi5nZXQoKTsKKyAgICBvdmVybGF5RW5jbG9zdXJlLT5hcHBl
bmRDaGlsZChvdmVybGF5UGxheUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29udHJvbHMtPm1fb3ZlcmxheUVuY2xvc3Vy
ZSA9IG92ZXJsYXlFbmNsb3N1cmUuZ2V0KCk7CisgICAgY29udHJvbHMtPmFwcGVuZENoaWxkKG92
ZXJsYXlFbmNsb3N1cmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGlmIChjb250cm9scy0+aW5pdGlhbGl6ZUNvbnRyb2xzKGRvY3Vt
ZW50KSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKKworICAgIHJldHVybiAw
OworfQorCit2b2lkIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6OnNldE1lZGlhQ29udHJv
bGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1f
b3ZlcmxheVBsYXlCdXR0b24pCisgICAgICAgIG1fb3ZlcmxheVBsYXlCdXR0b24tPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9vdmVybGF5RW5jbG9zdXJlKQorICAg
ICAgICBtX292ZXJsYXlFbmNsb3N1cmUtPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkOjpwbGF5YmFja1N0YXJ0
ZWQoKQoreworICAgIG1fb3ZlcmxheVBsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Cisg
ICAgTWVkaWFDb250cm9sc0Nocm9taXVtOjpwbGF5YmFja1N0YXJ0ZWQoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkOjpwbGF5YmFja1N0b3BwZWQoKQoreworICAgIG1f
b3ZlcmxheVBsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgTWVkaWFDb250cm9s
c0Nocm9taXVtOjpwbGF5YmFja1N0b3BwZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJv
aWQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFu
ZHJvaWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMTkyNTgyOTAwMzhjZjQyNzYyZGZkZjJhYjkwNzhiOTU5MDE4
M2U1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0Nocm9taXVtQW5kcm9pZC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWRfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xz
Q2hyb21pdW1BbmRyb2lkX2gKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNv
bnRyb2xzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sc0Nocm9taXVtLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50
OworCitjbGFzcyBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xPdmVybGF5
RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworY2xhc3MgTWVkaWFDb250cm9sc0No
cm9taXVtQW5kcm9pZCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzQ2hyb21pdW0geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ+IGNyZWF0
ZUNvbnRyb2xzKERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9s
bGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF5YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tT
dG9wcGVkKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFDb250cm9s
c0Nocm9taXVtQW5kcm9pZChEb2N1bWVudCopOworCisgICAgTWVkaWFDb250cm9sT3ZlcmxheVBs
YXlCdXR0b25FbGVtZW50KiBtX292ZXJsYXlQbGF5QnV0dG9uOworICAgIE1lZGlhQ29udHJvbE92
ZXJsYXlFbmNsb3N1cmVFbGVtZW50KiBtX292ZXJsYXlFbmNsb3N1cmU7Cit9OworCit9CisKKyNl
bmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXgg
YjE0NzQ5MzE4OWM4YTZlNmJmYjg1MjI0YWJhZDVjNjc3YjU4N2MyMS4uNjc3YzU2M2JmZDQwMTFi
YjQ5Yjc4YmYzOWI3ZDdmYmNmZTgxMDc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmgKQEAgLTIwNyw2ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVz
ZXNWZXJ0aWNhbFZvbHVtZVNsaWRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGRvdWJsZSBtZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSB7IHJldHVybiAwLjE7IH0K
ICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uKCkgeyByZXR1
cm4gMC4zOyB9CisgICAgdmlydHVhbCBkb3VibGUgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMoKSB7IHJldHVybiAzLjA7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBm
b3JtYXRNZWRpYUNvbnRyb2xzVGltZShmbG9hdCB0aW1lKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyBmb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUoZmxvYXQgY3VycmVudFRpbWUsIGZs
b2F0IGR1cmF0aW9uKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBmb3JtYXRNZWRpYUNvbnRy
b2xzUmVtYWluaW5nVGltZShmbG9hdCBjdXJyZW50VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGV4dE1l
bnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURh
dGEuaAppbmRleCBhMzYzNzIxOTI2OTAyOTQ5MjU0ODJjNjkxMDQ2NWZjZDBlMzY4ZDcxLi4wYTMz
ZWU2ZmUwOGNkZDZhNWQ1ZmI4NjU4NmZkNzA1Njk0N2NhMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaApAQCAtMTAwLDcgKzEw
MCw3IEBAIHN0cnVjdCBXZWJDb250ZXh0TWVudURhdGEgewogICAgICAgICBNZWRpYUNhblNhdmUg
PSAweDEwLAogICAgICAgICBNZWRpYUhhc0F1ZGlvID0gMHgyMCwKICAgICAgICAgTWVkaWFIYXNW
aWRlbyA9IDB4NDAsCi0gICAgICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50ID0gMHg4MCwKKyAg
ICAgICAgTWVkaWFDb250cm9scyA9IDB4ODAsCiAgICAgICAgIE1lZGlhQ2FuUHJpbnQgPSAweDEw
MCwKICAgICAgICAgTWVkaWFDYW5Sb3RhdGUgPSAweDIwMCwKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXgg
YWQxMTYwOTBjZGVhYWU2M2QxMjYxNjRlMWQ3MGNiMDM3NzIyMjhhNC4uOTU1NDYwMDcyYmI4MWE1
NTI2ZDkxY2JjMTQ0MzQ4NThlYWMyZGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21N
ZW51RnJvbURlZmF1bHRJdGVtcygKICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+aGFzVmlkZW8o
KSkKICAgICAgICAgICAgIGRhdGEubWVkaWFGbGFncyB8PSBXZWJDb250ZXh0TWVudURhdGE6Ok1l
ZGlhSGFzVmlkZW87CiAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPmNvbnRyb2xzKCkpCi0gICAg
ICAgICAgICBkYXRhLm1lZGlhRmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYUNvbnRy
b2xSb290RWxlbWVudDsKKyAgICAgICAgICAgIGRhdGEubWVkaWFGbGFncyB8PSBXZWJDb250ZXh0
TWVudURhdGE6Ok1lZGlhQ29udHJvbHM7CiAgICAgfSBlbHNlIGlmIChyLmlubmVyTm9uU2hhcmVk
Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQogICAgICAgICAgICAgICAg
fHwgci5pbm5lck5vblNoYXJlZE5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFn
KSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHIuaW5uZXJOb25TaGFyZWROb2Rl
KCktPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1tYWMtbW91bnRhaW5saW9uL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1tYWMtbW91bnRhaW5saW9uL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGZlYzRj
YzU2ZjNhNDlmODExNjlkZGZiOWIxN2Q4YmIyN2UxNDZmMy4uM2I5YmQwNDk3MWZlMDM0YmJlNDQ5
YTE0YTdjYTllOTJjMzIzMTMyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjLW1vdW50YWlubGlvbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy1tb3VudGFpbmxpb24vVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjU4Miw3ICsyNTgyLDYgQEAgd2Via2l0Lm9yZy9iLzk5NTA1IGZhc3QvbGF5ZXJzL3JlbW92ZS1s
YXllci13aXRoLW5lc3RlZC1zdGFja2luZy5odG1sIFsgSW1hZ2VPbmwKIHdlYmtpdC5vcmcvYi85
OTUwNSBmYXN0L2xheWVycy9yZW1vdmUtb25seS10aGlzLWxheWVyLXVwZGF0ZS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgZmFzdC9sYXllcnMvc2Nyb2xsLXJl
Y3QtdG8tdmlzaWJsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1
MDUgZmFzdC9sYXllcnMvc2Nyb2xsLXdpdGgtdHJhbnNmb3JtLWxheWVyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85OTUwNSBmYXN0L2xheWVycy92aWRlby1sYXllci5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgZmFzdC9sYXllcnMv
emluZGV4LWluaGVyaXQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk5
NTA1IGZhc3QvbGluZS1ncmlkL2xpbmUtYWxpZ24tbGVmdC1lZGdlcy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgZmFzdC9saW5lLWdyaWQvbGluZS1hbGlnbi1y
aWdodC1lZGdlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC0zNjA2LDcgKzM2MDUsNiBA
QCB3ZWJraXQub3JnL2IvOTk1MDUgZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1zdGFja2luZy1jb250
ZXh0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdQogd2Via2l0Lm9yZy9iLzk5NTA1IGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tekluZGV4LWFmdGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi85OTUwNSBodHRwL3Rlc3RzL2xvYWRpbmcvc2ltcGxlLXN1YmZyYW1lLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85OTUwNSBodHRwL3Rlc3RzL2xvY2FsL2Zp
bGUtdXJsLXNlbnQtYXMtcmVmZXJlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvOTk1MDUgaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC1yYW5nZS1jb250YWlu
cy1jdXJyZW50VGltZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1
MDUgaHR0cC90ZXN0cy9taXNjL2Vycm9yNDA0LnBsIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvOTk1MDUgaHR0cC90ZXN0cy9taXNjL2ZyYW1lLWFjY2Vzcy1kdXJpbmctbG9hZC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgaHR0cC90ZXN0cy9t
aXNjL2dlbmVyYXRlZC1jb250ZW50LWluc2lkZS10YWJsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCkBAIC0zNjk0LDM4ICszNjkyLDIxIEBAIHdlYmtpdC5vcmcvYi85OTUwNSBpZXRlc3RjZW50
ZXIvY3NzMy90ZXh0L3RleHRzaGFkb3ctMDA3Lmh0bSBbIEltYWdlT25seUZhaWx1cmUKIHdlYmtp
dC5vcmcvYi85OTUwNSBpZXRlc3RjZW50ZXIvY3NzMy90ZXh0L3RleHRzaGFkb3ctMDA4Lmh0bSBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk5NTA1IGlldGVzdGNlbnRlci9jc3Mz
L3RleHQvdGV4dHNoYWRvdy0wMDkuaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvOTk1MDUgaWV0ZXN0Y2VudGVyL2NzczMvdGV4dC90ZXh0c2hhZG93LTAxMC5odG0gWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85OTUwNSBtZWRpYS9hdWRpby1jb250cm9scy1y
ZW5kZXJpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk5NTA1IG1l
ZGlhL2F1ZGlvLXJlcGFpbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
Lzk5NTA1IG1lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvY29udHJvbHMtbGF5b3V0LWRpcmVjdGlvbi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvY29udHJv
bHMtc3RyaWN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85OTUwNSBt
ZWRpYS9jb250cm9scy1zdHlsaW5nLXN0cmljdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvY29udHJvbHMtc3R5bGluZy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvY29udHJvbHMtd2l0aG91dC1wcmVs
b2FkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85OTUwNSBtZWRpYS9t
ZWRpYS1jb250cm9scy1jbG9uZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvOTk1MDUgbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tcmVwYWludC5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJl
bmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTk1MDUgbWVk
aWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1ob3Jpem9udGFsLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85OTUwNSBtZWRpYS92aWRlby1hc3BlY3QtcmF0aW8uaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk5NTA1IG1lZGlhL3ZpZGVvLWNv
bG9yc3BhY2UteXV2NDIwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85
OTUwNSBtZWRpYS92aWRlby1jb2xvcnNwYWNlLXl1djQyMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85OTUwNSBtZWRpYS92aWRlby1k
aXNwbGF5LXRvZ2dsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTk1
MDUgbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi85OTUwNSBtZWRpYS92aWRlby1mcmFtZS1hY2N1cmF0ZS1zZWVrLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85OTUwNSBtZWRpYS92aWRlby1sYXllci1j
cmFzaC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEv
dmlkZW8tbm8tYXVkaW8uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk5
NTA1IG1lZGlhL3ZpZGVvLXBsYXlpbmctYW5kLXBhdXNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi85OTUwNSBtZWRpYS92aWRlby10cmFuc2Zvcm1lZC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEvdmlkZW8tem9vbS1jb250
cm9scy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgbWVkaWEv
dmlkZW8tem9vbS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUg
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbGF5b3V0LXdpZHRoLWNoYW5nZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTk1MDUgcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvdmlkZW8tZnJhbWUtc2l6ZS1jaGFuZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzk5NTA1IHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWZy
YW1lLXNpemUtY2hhbmdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85
OTUwNSBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NvbG9yL2NvbG9yLXN1Z2dlc3Rpb24t
cGlja2VyLWFwcGVhcmFuY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
Lzk5NTA1IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvY29sb3IvY29sb3Itc3VnZ2VzdGlv
bi1waWNrZXItb25lLXJvdy1hcHBlYXJhbmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi85OTUwNSBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NvbG9yL2NvbG9y
LXN1Z2dlc3Rpb24tcGlja2VyLXR3by1yb3ctYXBwZWFyYW5jZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTk1MDUgcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9j
b2xvci9jb2xvci1zdWdnZXN0aW9uLXBpY2tlci13aXRoLXNjcm9sbGJhci1hcHBlYXJhbmNlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85OTUwNSBwbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L3RleHQvdGV4dC1zdHJva2Utd2l0aC1ib3JkZXIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzk5NTA1IHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVv
LWZyYW1lLXNpemUtY2hhbmdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi85OTUwNSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvdGV4
dC1vbi1zY2FsZWQtbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
Lzk5NTA1IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvc29mdHdhcmVjb21wb3NpdGluZy90ZXh0
LW9uLXNjYWxlZC1zdXJmYWNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi85OTUwNSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvdGls
aW5nL3JvdGF0ZWQtdGlsZWQtY2xhbXBlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbi9t
ZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbi9tZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZXhw
ZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhMjJiYjNlOGFmNDk2NDBmZjk2MTJkNjdlMjk4ZWIxMzQ5
YTBmZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwNTE5CnpjbWVIdGNVMDQ5K2gma2FFTXM5
cksmb1d+MFJmVFRaNGQ8azBSO2dlM0w7SEZxXz4zOFE5OThQMSEpLXRNNU9tbAp6RVFGez80WlRH
Sk4pMGo4UD9DSzImLWFgP2QtZ2xLYHxXJTd1aWcyPjFIQG1SSmtNUk9gP3tfdChIQms4SkdZQiQK
ek4xOyRWJiEwUE1ma04+ZkslcThXKn00VEBOZVFAbjgtQj82OEM+eW1hJj5te0BiJmpac2IxSTZQ
JnNrcHh7fFl8CnorNmlhWDxDO251JEpKRVNsJD52Pjk5S0s4dGhTPnU7MntjaTBDb1FDc1leaj1e
cFc2KWlRbSVTRmZxUSQ1ZlMleAp6MVZ3Qnp7SVJMMV8/MD5URFVaeChzZyQhKEY5dUFHTkdRI1RS
OSNSKkFDV1FmR3gxZE9HNUl1LVclYXVWS0VHTSsKej9qQyp7P31XPXVRUHFaOUhecUVWe3E/PEFK
TGojYjVjeHY7TjlCaU1kWTdOfVAjOE13ZFVFfmV6JX1+WlgoTzQ8CnpEQWRVPD1+Xk0xUF5kU1VU
fERzUCNeSUFGUkslQGN3eFVvRTw1NF4pUjRHNTRAfSUwUFVyP3dJaDdvWWFmdnRPQgp6KTJWYCtL
UXphU2otPn5WTW5eQE5xXmdtNjMrIVQ3RT8+UyhEcj91WHQ3cElFbFdhPSRaWEI0clFjK1JDak1V
JEYKenAxdDUlc2pKSD1PdEdhN3I9K3hoWiV1VX4jcThWZnZZMGZaPXdgPFZrI05uXlpKPyo1YytW
fC03K3EkRz1RaU12CnpwcTM/Q3c/RipXbDA7NkZ2ODBKb1MlJDtkYi1LXm1SMVVlP1hVd3RsZyNr
WjViR302cGBITjtyU2k4Z3daQ3ByYQp6JT0oMypjTCp1Tz9LUmFuKnRuUmpTbip6VlQjfFMmeVNN
NmFWb0UjalprO3slXzt4NE0mREZ7KzxhNUgoTGcjOWYKemZfezlkeyZJSCo/SnJ9Nj0oY29pQHto
MFlvanhWWEQ3a2ZJT14hQiVVUHg3PUU0dGdNYCRAUlF7JWU9JEgxelVJCnpHVUZVUXsxe0pocHFv
fDFSb18tc2I5O083cyp3UEA7am8yUEM2fjR8VmRhfF9uMkx8M0dsQ3FpLXVaWSRKR0A9Swp6WVdU
T1pvMn5BKj4mRnRiNi0+NDE8JiQwNiMtY2dZVnFJUEE4S1ZNa2JpY3BlekoyP2N7WjRwO3ZyWUdm
OUU4dDIKel87dT00RjVCailvTHVZPzxFS3NjY0l5Y1RqYCY7cSZHZ0Q2MyRTe011PXx1PCtUeH10
SWNSNitaK2FDNGZqV2teCnpuYT53YStSYVhSX0h+RDgoe3hKSmIrS09CNjFlfWktRm8pJjVWS2ot
eVEkSzE9K0wxVDdtcWQtUkU+KHZeYzUqOAp6UF9tN2FqdFhvaTRMTGhJRThZSWBXfkJMYlVTNGNl
NnZQRmNWQGxgI21JIS13NjB4SHVsI1llTCtYVl5oIXhONjIKemphQVptOzBVSnR2byYkOFhPYz85
V3YmbyNvSz5HO0FGQEdIVkBaTGk3SHExYSYpPnx1dURPfTwzYkgpVXM/a0xBCnpZJmc2MTVfK1l+
R1Fgd31aPWJvNGVFaV5DOWl2ZkxDK1BPQ0F9VTg0U3RMY1o+V3hvTjxlVWJ9LUl6bUVqIz50Kwp6
OHI2QExVcz53SU5iLXNNVUNnKHdrbVhGXklNTn1Adm87JFVtLURQaCRZR0VZU2VvZjBkc2RBSU4p
eThGKVUjLUAKek9hXzwzS257Z3Viel9GZUB6N2NCY1R4KE4/TjY1fD50QEJybS12aHxVbiN6SiU1
UzxgTWp+WUxje1Jrelg+cWNYCnoqPlBxIWlPTD9LbEg3OUExJkpIcTZ2d19zTishJHspK3I9dCZz
RFBxK09kTX5CWHtGKnQ0WCtNS0ZQNC04RGFBdQp6dWhhJDVPPXEtMm11SVVYLUwhe2ljMTdkRSN0
LWB9dzVwPyU2enBrJSNDN3skTWIoWlNzXm5ITVYmbj49SVA3KEAKekI8RHh1V00yXmBQQ3s0OVJD
bFJjZ0ktUHZ1JnRfV281O347eVhtWnNLVzBMSm56YjRBZC1ZZDhuakxhblU7NCZmCnpHfileJk1Y
QCtWayhSKSt6NiRHd3ZBb3ZIRy10fS1KZ2pFKk10KD5wdik5Zz5eeVRmbnZHMXdnMkBWWSpzekd0
WAp6elV7Z3QqV1crckZMJCVsVlNUd3JAQE8hUV92Tnh6JFE2QUtxRFZyKnpSNip0TG0zVX5qY21G
JW5aK0MlbzZ6UzUKelhSZmJLWDV0ZT56M1l8TVJ2M35DNlljbWh5dUtjWERha0R2X3Z1VHRHfVgp
PVhXUTJXI04pQXhuV1VsWU5gSz87Cno3dFBIKEN1PFcyMTVEYGU/ZVVMezYmcUF1bmhfZEBEI2NY
WUZWKVJYSlV3UlpLMi01NyRuQml2TTZTNE1LPmcxQgp6QyRpcU0yaHM/Y3k1U2tPPXVBb250N2Bh
O3ZDaGh7Wj5zfj4wI0VKTmRfN3UoVzYhV2dSfm0paEtpQzs3JCh9Xn0KekgxVlVHWHIkUCZTaj5q
dyMqYXctSUV0Qm0hYHR2Ki1aO3ByekpGPHcrTGQrd3ZCbFhlMnpKZ29nTlVuZyM/QyhgCnpXU3pS
VkJ8Rmk9dyN2KUNjNU9QMzYyWmU4dnFBYDg5Kz4pclB2Vj9SXzliaVVxK05RZkZEZ0U/cmJHKilv
fVFrbQp6R35jJUtzcHtVUXt7SD9gdWsjOXh6SjI+UDE+SmNMcUcxTlZ5RnVBWkw2TWtaKndmWSZK
TVZeeXB8SzxwOyZZe14KeiQ4NyVFdlJmaThCVjsta21aR3hmMHgzQ3FPUyFabD4yeURmK1MkXlVt
QDRURCRxISRlcnJYeERLT0R3cXhsdnhLCnpSeVRVfDZgQ0FJQ3ROYE9EY301alBSX2RVTFopSDc1
cEtOLVhTY3pUPGcmPDlnQzBkREdURyVmS0s+PVpLTHo8Vgp6aythSG95KTlZcHRTNkswSH5CcEJX
dlcrZ1pxUGN3aS19V24rPEQpTEhqX043MHdjNlVAVk0jMWtoJGZJQzdqYiMKeloqfDtuV2g1e3N2
NjlnYTEoWGUtVWlYIz56NVg7b3BUblpqaV5BejF4c3tjYkhlK0k4S2kqQ09qdk8xK1RjMGhYCno3
em8pWFREUy00NlBKNEorfXsxVVpIZ3A+eGQ4alF7cS1IfUNwKmJPSGg4JD01Pyg/I1V7R0lNd3hZ
bUpFMyZ5YQp6SkorKT4mRkshPURlSmpzJjg+a19zZz9HR2k5ZWNgN1lkRSFrJjBMZjh0YHZpVDJU
Kj43YFN8OVhmakBYKVlUOEMKejx7fipld1EkMSZQazdNR3JGLUxzVU13anR2MUk3amdoNzk1b1RS
Pjl5cmgwKFArZWBVbVZNQ0lgI2F9RVFPalBmCnpBenM4bCN3ZTNEaDl7ZS1qfGQ8QGA+WmBvJUJ5
a3B5SX5Sb0ZlXj8oUm8yM1lwSV55KXZfNUc1cXFHeVBEVm8yOAp6e2FZYiVISSpvJWZQPGkqTy14
TDU9MDY8dlZLbDU1R0RhSzVBbXZkdHo3eCQldlpOJGglOyY2Rl8rcUVlWHomQ0gKemtKfWlkVlJw
PUBzJCRQTCNmZlIyUCN8djEpMHxJKXVQP3s8VlE+dkItNlJZKVNjbG9QKldBdWRsJUwtdiZCc3RA
Cno8SHZoYU9VS1Emd0VZQ21Wdmd1bD5pcW4/IyUlRj5UQyE2QF4hZGs5QnEmR1dGKXwoeENAbn1Q
PSFKKjtEdCFGRgp6cCtrbzhCS3ZzeGNFdEAyNHIpTG5pdz9pXmR9aHtRdWpzO0prQFkxYypaYXdp
OWU8eHYhZnZuKHNoJkJ4T1RuYHgKeldFI3d1czkxJkNxbFlSblRGbT4zVkZ6ITFQVWRnZFNAYFRW
PH5kans7fUhEcU5pfjxWZSl0ZzA3XygtUG02KVB4Cnppc2E0fnBQP0huPSZmRShOUnFiYEVGeUEz
KClfeTRMKTc1eSQqYGsxVldrJjwwOzN7Qno0RmlBZX0xTWNZTT1ENwp6KCV2YFdXN04/YWM/XiFk
NmZuPihaKG1zQSsxRVNmWTtCVGA0KFJEbjMqb0Z6aD5qM1U9PVlGclokWX05ei1wNFYKekUkM3VR
NUZLKWozcHBHSFNNVTRoWE9fYmJYOExUdWs4SXZJcWo+e0RMVjxJYG52STtMQX5KeFBQXjNoTj4r
dFJPCnpKQzlKKVV0VDtheipUeXQ5cTVJbWIkUTV9Tk1pI0dsR1pVJDV5Ql5Lb0QmMTJea0lGQ0J0
eks+Qz14Z0JGaSN7Jgp6PSFUcFA0aTMpNV9qSSMlIyt4NCVwaDAhVlJaKzNwU2tgO1Y8e2dVbGQh
WGtQTSE3Wlo7Ujw/P0VmJC1CbGpQP3cKellGdS1fSEI+MiZMPWZ0Vk0wUnh6N3ApenMzdUxAe3th
U1daO2BwX2I4IUk/JkFUdUMxYy0xUyhmJlF2c0EodzBHCnpSSkZjTHctZF8mYn18OSY1eVFKbjw2
NGVUT0R8XjRvTk1aKUomNUQ3b3U8MlVmMGlqU0JZQyZ7aVZXaGFwdEp8Rwp6d1M8WSopVCR4cHFu
MGwoTH1TQCZzP2J8RyV8RFVXLTlEdl5vfXdpY21fQVdCUk5Bb1lZbjxlOVlwODxFRVkxOSQKemg3
UEVoUUZDfDRKc3NvPVVERnhwOW17I252QDg4cmxzKHhASldsN3FFXip1WHUoP05RMzhzUCNZVzxa
SWhQVHZqCnpzX1VxdHE5Vyg4PypAfWhNcHlee05IbXtCKEJDJFVPWV9KYGcwVT9zbFJiaHhrQntt
dnpKNFl2a0BufGFRYGE2Tgp6NjstVTBTM1JAJk8zZllUalVnaTJaZXdGWXBETUV6bkgmQDhmZXle
dDF4cXRzUmhadVUxRjdNR1ZVUTckaT5VMykKejQyQnlMd3A+UHRBMUhHe0wpfCVrY3pCVDZoaHo3
fUReTWpDMX1xZ1BeOXVfVFI2VGx8KXxPXnNpNUo5eiN+KmI8CnpUZjhiUF4hZ0ZYOFBuJCtIakVT
SXI+P2RJQjN3fWs+Y2xGWmwzM3g8KkwtKkw0dzNxejA8d0xtPnFqeDgwXj9CNgp6SXQlaS1RMk5C
MDMmKnpYc0A7VThrd15Qc1pUQStYaWskWXhuaDY5OC0oeVJ4Ql9xIW4oe3dHOzZLalk0YG1ERlIK
elhgJDQwaGcmMUhzJXkqaXExaFVxO3VZOFZ7U1NBRnN4fDN6N3hXcDY2YGglQWFgRS18anc3fUh0
c3hKZXBOVlhhCnpsKjlfaDNNcVIxO1A0K2RZK18obj5pVm1Gb1J9Vn1zO1VTcVJrZzVvKzVyNnNU
UyVxR0Y+dWBWY3VyPkVmTzhURgp6UEtfaGN0RWR1NV81bjUqKHpSNVBESVl8T21Od0Z9Pmw3UG5q
KnBjcXRVaEVfVjd0JCokfTFpJThEOVI4O1dpVHsKelFvRTZAaXZaRmlpeD9xSFNQODQqaUpZfHxB
UTx2bW9qbFF6NnZHO208TyhCYFVXZER9eiNJKV9rVlhRakJlT3A0Cno/KFFrTlJscDVNS3NDeEpC
PyE0fipJbGBxaW16TWxfKTlhPEh0RmZ5ejItek0hJEEtSXMoX2xfd3d4Tld1fTluQwp6eThrZ35E
TyV8OHVSQWJOcEZWeDZoUkhoaVMtSmh6YXlfY1FQRyRjQVdNJlV9KXlYQEFPbDh5aHJnN0k8PEk/
JnoKejhAOWs+T19PfFkwUzN2KyVEeU5wUjhWTVMoU0NCYU53amBVNnJKSC1jSjF4bUFiP30xbVok
UFFBQ0R3OEo9aUhxCnpxczEhMWZNVmlIcGpmTnRZRy0ybHd0RWolZGdpb2IySztSMmxDYWhKc0ht
WGowaGkzdShpME42NGQkeT91Y0RAPgp6ciloVEFHR053c0xjMm5kPE1xUFZuKWJWLUAkLXFASzhi
KXRvazJeJmozfEdKfDRjNyFNcz1EJldoekRrZmBgdSUKenhnNEtmOHk4WjRpQnN5NVJqVEsrY0Zz
Q082MUVoWlhvMWpESFNiWmVSNWVkbzEhQ35SX3JIZCF5VnRfakQxLSF2CnpEdCZTUFp3VFpkR19P
ci1DViEtUDVESDtxdCZmLXhNSk0+KlpxdUEtSXY2UnxtRzVIOzZDenBKI1QxRSMxN1BRcwp6VDBi
e2ZgKnJuMztkPTE9X3tZdlg+IU1feDs1KG1GKWZGPj56ZHZLbUNsU1RhO3tLTiZsU2lKKSt0RUpC
NzJUVE8KekpMbG88e3NOR3dIe1hXeGckO2JuKHpvOXsqV2F6SihxbFMjY3U5RGAtJWYycERMYGtw
TitsdWl2VWBvaVBAISVACnpsSzh8PitRTnN6ZkR1Q3pkYmBFP0g4WDxyUHtAWGczZjghbipnYn14
I2N0NW95cDVXY2pWfilnZj5eRUkqdTRgTwp6cD53N3lzdykld0F7dEttSV5eb3o4VUxfWWYpNzd0
QDg1SElZTXNpKGlmRz1zUTlKIVEmalJZdU5HNXhOZllURVgKejlRS2hwKU1iV1NxYngjd1dSKkNQ
MSpycU11d1Y5ZmI+ZXhMbT9vZnUmTGUxMTNwJWFxcWNrQjZ4TVBOZShHPTJaCnptaEJuM21TP2o3
SlArdXVPPWlrdUNxbldJRklpYlYtTGd3OGQ5RyQ2ISpKcT9gXkpPanshKFhTdC0wemszeEpjWgp6
QHNFIXdgOEgpMUhhMGYzbFBfWXNmWnhRN0FyVz5QRDBMPGNRUCtCXzB6dzB5IVR6djBPWC1Adkg+
WmNIeWhUOG0Kemd1c2VqQDl5dVFLeU89QWQ1dl8lP05fIWlsM35Ccy0jOE4hTVotME9FRXlyQXtX
YXtyTSR1TjgwS1k2MmMhJGR3CnpvSzFtNXQmdFM1a0ZALSE2QWNyQG8oVWVpXjYrfipmc21qPGl8
UGcldT9Sd2d6TU8yUHlMOVJDJW1VRTQ+YGM2Iwp6KWAlYSlXVTNQX1grbUpueGA+N2VXZEt2SDVB
eEIxcnp3QzY4SGlOemB9VnxJNVRFX0JjQC11Uztac1dzMSprJUQKekEoNkFATjdgcWR3UWE5ZClf
JiFpRGsxcWc5TStpSW1wNll2eihNQ3lTYD4qXz54KVhwNnRkfElRPiZ1X1U3K2QqCnpDT0pWJUo9
VDxPTnRsZDdobjdIOWpORUNGY1l9NSV0cG8yRm04JGEzKXRyNlpqajtMRmZrPHRNIX17dzM/SU9j
Wgp6dm44RFI3VCFRP0xgVHxOSDY+c1E0Y0A3cil1TWgrJUwoWjJYWkg0VVpuZiQ0UXprejRPNmMj
NXIqPHVRUGNzOGAKeklLWCNtaDhsQyMwaXNvJEtQOFV6N0hIfWhwPVFPbSVjekZpeDdHVTNJRCNn
QCVpQzJwITR3eGk2UypyTV5qbm9pCnowSkpVd3UxZVM1TUQqQUNkalI4aCUzMDZMJVJ7XmNDQk1t
ekV0dmVsVVp5Q0w7eEdhbW99TGA2bUAhP2t6SUBxVwp6V298XllWWmA8KWo9JFRYNyp9OWQpZVBk
bWstZkkkTGsoWGNmI25keHhKITloYFBxZCZTWWhIfE98P1MkOGdVMSUKek1+ZTRPbyZlaDRuUU5K
SWdAX0lKZ0QyaiRLUmx9MTF+djRldlFpQ1oqfXhZKWs4PyZjMEhfVUhecEJOeGA+WCZvCnprYV9z
VEk+dVJeSiUyZTd5S0IjP2N1VDZodG9iPjNvKndIUFRyRlA9YSUmQn5WZVA0ek00d3QxJihPaTlE
M2R8dwp6cT5WOF5XayNMWnQqYXRzbDJTZXRVVzBZdWFaU0NzY2BKUGVgSCVJdkk+bm88REhXN0g3
b1o9WUwjYjFxR0NjaioKejhlMkZlVnFfcEVUMjF0ZTIpfE9Ndz1JMkgpb1p4QWBnQDg4P00xOVkz
fVRiVyVFPnZrcmx8VHJWYU0hX3U+V2JaCnpLPm8/Nl97MFQ+QWk8bVgtc3JVezl9dkYqNkBianFE
LTl3M0soWlp6UCUyM0w1aVo7OzRSVGNEI35XVmw1R18+cwp6cW8zfVArcF9kP1VLRmJRJF5YSmo2
OCUzaHA4b1lQQnxDVFhfV1AkM2Y+R3RFaTU2JXg5K2QwWiQyYEElbUdyJHYKentmZGBENiRrb202
YTMjO1NwVVl5e3VqLSRlXiZuUXQtfTlicWNQUmglT2Zhbm4rVDkxPS1zZW5iISlWfk0pJihLCnoj
aTs7WGhgbCkwV3ZtI2w8a1QjbjZ7M2VhSVVgX1Vsc21yWnslTXVVNTlNd1kxY0diT1FkPkhiMGJy
VXo3WXR0ZQp6R2Z+VGgyUEl6QWxYT2txdyl8V2VOfVNmRiY0QEZJNzBtcT0pejRSPGJyUjtgWHZQ
QXttNEQmQHMkVSZtN3pHPTAKeklnUmdSdE9nJj9vNXRLODlAXiVLbGp1OVVIYnNQNk1tRnFaenpg
TDRBfTdSYG1YOz1AWSR9ZU4xKGw9WipjNnFKCnp1PzFCdTxpMFRVcXRiQXFFIV8hZGNXMEcxXiZM
I1JFXnZKS2poYE5pMkRBKWxAezApUUNnUWxzOGF8R1JObDhNOAp6S2shciQoQDBeMWArKm9+Sypa
PCUtb0ZWWW9faSpQWFIxNWJ2YihwfTVFUiVueFchK0E/SkF+JG00fUdOTnE3TiQKelZWZiUtQjUh
PSNHXkskblpiI2Y/N1klTHlMRntXeTVXdFJMK2pQUSFPaH1WTGJeTXxBYF5qbClDSl9gS0BZRjcj
CnpJbWpIfEV9ZUchXncqN3JjRHolOXJjYFlKZVVSVnNVUENpcj9qR2N2X2pZTiRHSEkjMmt5ZVNn
aXtSZDlifmMycgp6eW8xbFMxVUslKiNlUjt0SURrNnk1a0JtOXNTQyokQ3g+Z3crTlYkdiNCMVZy
d3BsZi1WTlMhKXpWeGJ+enkjUigKeiYkcHVXKkUpclAmRGZVU0kxZDZ4KVpFZ05AYCY+MXRkd2Iq
RmxLJFFaQFljJUVpT08lbjxETlJifTB7MjVqNX5MCnpqdnxQUkZYYzlrJSFkeytLbiVKdyhmRF9X
RCtQbD5oQFlQPD02Zk1kUks0KGBqbTxPQXhfY29DYlVpLVFIRVBHUwp6Kj1mU0A+ITxVJGUtNDB6
TEcwPW1wKH1JdUxHV01WVDZlOWpXK2xEPWh2PEh4ZU8pdT9BJk4mKWdQP0plTFZScykKelpMaSpx
ZGxwOWl4fW5SKmZFWFk3SWg9QjImLWVtQ2RZT2B2QCt2PzchdWB8RlAxPXRJRmgrRnx3KTc0JF92
QCVeCnp1VVolcStyYj5WNXlue3ttQCRaNFkrMkY+QFlGSzBUa2glU2R0Zz9BRzVpTkZVbyR4SCty
Yms5ayZ1cSQ0aXZCKAp6PzdqcTRzbTlrb190TFQrbzY2cW1GRngzc3B7cVRlbldnJn40MV85ejlw
VFNpc0wtbGlwPDh+PnpPPG91WGNgeVkKemtJbFN6NnVoPF5GN1pNQT9OMmZ9T3xRJXx5VEh3SjAh
fkpzWiFzeytFaUB6Ty1SSDhZVD17JjUxfSZJZW8zfEc5CnptYnRXUmo2WGMlMipSXyhZb3haZV42
VXE1d0Q+OzZZNV81JUc3OSR3aCs2NkBBeHFjXllYe3VZMGg7SkQ7QGBJfgp6TEd5YnUha0UoJXp8
PThKM0l8REhvSW52bzkyVUBQZzY8dzNuUDhIWWNuKCFVSEpkYGNEQ0ZCIURkPlU/WWlANE4KenBP
YmRTMnBEe0FGLSVfLWtLVE1sX29oaytxNTQ8K1N4MnRhSDhxKFk/MUMwe2o5USE8c2s9U3NtT316
ZmpjfnBfCnpoJVpOUk5fejVTLXphR09jUip8OGJ6STlKY0pKVXEwN15vbDFkSkUoXlBUZ152WTwk
IXFDaSQ9TU1jR25zYHVnPQp6X1ZETjh4RXYrZGo9dnxOdDNFcEN5PyQreD50bX07TTNWcEo1OGd+
NXAwSU9FY0RvTmFNQjhDdz1nc3QxWnleM2UKejhATX5kO0oxRFNoJmN+WV5QO0hucGczV0VTMGNK
RzBYLWtlX1NmRDIwM0FWcm1VOF5APD9WZVp5c2xiPj5kQkRCCnpOdT0tSEQ4antnPmVNaTAjM0VG
U04yRXRvNndRTUc5flFXX3JjUFhLP01gen03MEljdkZmIStVTXpmUDQwckpOJQp6alhGcjt3RjJr
RlRuT08taCZAeWNne2IxdkNneHFVMTB+P2tRYSU4VU4yOzB9VyleYX14UCNlPSRuS0dqaDUoZUAK
emBTeGpYa3ohVzBTYHJ2RXZUZ1NBRyRIcEQmVWt1X2l2eT5pdHx1aGQrM3RqP018ViQ7ZnhXJWBC
R2BEdlU/TCojCnpLIVlxOCVQKHQtSWU2eFFmSjY5Rmp8JGomMFhWdUtzQFF2YDFDYDYmZTNPcyNn
VC1DOSVyUS1PQihqJn5FP3ZHMQp6WGQ1Q1VzT1RgUEs8dDE5WCRHPDw9LXMkX0duSVRkMWRSUkxP
cSlNP1Uqakd2Z09SPzJ8SXdENkFfRHlVNU1afj8KelF1K05rTX1VP3ZAbXJ1VDxjYF50ezttczdi
cU4pX1BIS3dZPmphR1pLQypUTCsoVVNWaEBybDtUU25eaG1jRX1rCno4TilPTypZIXsoKEtIaH1t
ST9PISVsa1dvMz1JcW4+VTVWTzVuV09JaGhLbmAzRUZNVVY2eXg/OUUkPXNZK18oPAp6b1JiWHVh
WjB4UXQ0dzh8TCNWdH1rJVBFUHkxeHw/YVJvcSMpM0FnTl9fQTxLX018OCpgKnljRW5ncXN2cyok
YE0KejtMNHF9LXEmRUQ/QUJ1KSpyaCNOOUs8OUVRQz05dHpOb0wpSz4hUiU5aWt+ND0wQ31xVFVp
TjA/UiloRkhmJXlJCnpobHtWTilkT01fTHN1K3ZhVkdMdmk1NXVjQ3AkQVEhaD12MHJyPzJsRkpO
d29LREt6QmhmZjFqWlI7TGUmemF0Vwp6Kz9PdzxEc0smUmVYc2YmLV9KMzxMZ2clMT9MYmdKQ01L
cERPaz5KJGpXNWBaNUNWbFhYam8+blM9Z2I9bW82bjwKenQ/VWw+TTlkeEpZOSF5alA3TWtDVVRN
PWY9cXNWYFpSeDJgNzNAV3pTUCV4PXtNUWo8TTwkS3JpTEd4QTVfTiFQCnpnejgyezRHQVM5dT5K
bThVb2RvfEhXJitDYU40VTlCdXFVSUAwS1BJODdjaykqTUFuMUB2cismezJUJTJXSnQzRQp6V3Q1
bkdheGM4OGpYJE02aFRWaE4ya3JpM2RBeipAI1M7OzM3SjJwVjZBTXwrVWwlUGNfdUFMYG9reXx7
KXRHSUsKejMwRE9SYnNyO3ptJWp2dFFHaVk1a3VqQSV4RHRAYUF6KHdFZzlRUGNUTW58aTdqYlR0
K2pXIy1tfjk3cChROSgyCno2d0lDNTs+I2lyMGwocTswal9LSUFxSDdYbEE7O0pjSUF8RkBvcj5s
cm9rUDtlRTxiUGVXczQlZGY5RnU8OGxiQgp6THMrVzVXZ2ticUE+ezdiXzdJPk5IV20lR2g1KGRF
SSRYWEEhUjVoaFI0JUhaMTE1UDgoRCR4MVAyWWVKLT45QkUKell3fSgqb2t5VEUxVkcyaVZ6K0VW
b29zK0xLcztUa2FLQnMrN1Mwc1omYGd2SiVDaV5Aa3peM1lfbVllWFpPV3ZPCnozaz9sS2w3ZUdJ
O1ZJKXFFI0RMbSprJTxQbVZCVD9ESkE2UTgwZFM7alZVd1NDbHlpREhCOHNFYjx7RiFSQ2pgPgp6
PDUxZnZYaTloZzIqaHJvWXduSF5eIWRxQ0BfNUc9Mjs4dkhIcn5HdCgoYl8rPzRDd31pb0l8aE9p
e1h+UHtocT0KelRLP2BKem5lb2hIb2VoJSlrRkJ4ITVoM2pIe2BNcXgkYzZhNHUjKUVAZWc0Wmwp
X2opc3UjUEFqaGlGUVBWK0BICnoqcm9GUmE/UDhUd2khbHs3M01EN2hJZCV9cjtCY2RSLTBFQmV8
Uk9xRSU9Yj97c1deWGFOcUIkc1BHbXAlbHt7TAp6PE5wcmYtUnZVWWk5JjVuTjReWDJVJVA/LWNS
dUJ4bTRBTUQ7aClnYHF0RV90SHQjPWVeLW8qPHIqQkM4MTJYQEIKaCU+UFJ1bGdqMHRtSlQ2XmBV
d1FYdypYUCs0TlQ3I3AxeVlYS0xBe290PyZRPAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbi9t
ZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbi9tZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNzdjM2E5ZjBiMzQzMTc1NGNkMjVhMjk4NzZiYzdjZWUw
YzRhMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtbW91bnRhaW5saW9uL21lZGlhL3ZpZGVvLWVtcHR5LXNvdXJjZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDAp
IHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQz
MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQzMDogIlNsaWRlciBkcmF3
aW5nIHdpdGggbm8gc291cmNlLiBUaGUgY29udHJvbHMgc2hvdWxkIHJlbmRlciBjb3JyZWN0bHku
IgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzg0eDE1Mgor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICg4
LDQyKSBzaXplIDMwMngxNTIKKyAgUmVuZGVyVmlkZW8ge1ZJREVPfSBhdCAoMCwwKSBzaXplIDMw
MngxNTIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KK2xheWVyIGF0ICg5LDQzKSBzaXpl
IDMwMHgxNTAKKyAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChyZWxhdGl2ZSBwb3NpdGlv
bmVkKSB7RElWfSBhdCAoMSwxKSBzaXplIDMwMHgxNTAKKyAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwxMTUpIHNpemUgMzAweDM1CitsYXllciBhdCAoMTQsMTU4KSBzaXplIDI5MHgzMCBzY3Jv
bGxIZWlnaHQgMzYKKyAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChyZWxhdGl2ZSBwb3Np
dGlvbmVkKSB7RElWfSBhdCAoNSwwKSBzaXplIDI5MHgzMCBbYmdjb2xvcj0jMTQxNDE0Q0NdCisg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDksMCkgc2l6ZSAzMHgzMAorICAgIFJlbmRlclNs
aWRlciB7SU5QVVR9IGF0ICg0OCwxMSkgc2l6ZSAxNTJ4OAorICAgICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDAsMCkgc2l6ZSAxNTJ4OCBbYm9yZGVyOiAoMXB4IHNvbGlkICNFNkU2RTY1
OSldCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxLC04KSBzaXplIDEzMngyNAorICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgtNywwKSBzaXplIDMyeDI0CisgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgxMjYsMSkgc2l6ZSAzMngyNAorICAgIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMjE1LDApIHNpemUgMjV4MzAgW2NvbG9yPSNGRkZGRkZd
CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDI1eDMwCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw3KSBzaXplIDI1eDE1CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsNykgd2lkdGggMjU6ICIwOjAwIgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNDksMCkgc2l6ZSAzNXgzMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTA0NmVlZWM5ZDJjODllNDY4ZjE5ODM4ZDAwZDQ2Y2Rm
MTg5YjA0Yy4uYWQwNjIyYzU3MGUyZGYwMDBmNDNjNWNlNzY3ZmIyNGU0OGFmM2VjYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC00MDEw
LDYgKzQwMTAsOSBAQCB3ZWJraXQub3JnL2IvODkxNjcgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJl
bmRlcmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCiAjd2Via2l0Lm9yZy9iLzk4NzY2IFsg
QW5kcm9pZCBdIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBb
IEZhaWx1cmUgXQogI3dlYmtpdC5vcmcvYi85ODc2NiBbIEFuZHJvaWQgXSBtZWRpYS90cmFjay90
cmFjay1jdWUtcmVuZGVyaW5nLWhvcml6b250YWwuaHRtbCBbIEZhaWx1cmUgXQogCisjIFJlcXVp
cmUgcmViYXNlbGluaW5nIGFmdGVyIHdlYmtpZy5vcmcvYi84ODg3MQord2Via2l0Lm9yZy9iLzg4
ODcxIG1lZGlhL3ZpZGVvLWVtcHR5LXNvdXJjZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmtpdC5v
cmcvYi85ODY4NiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy5odG1sIFsg
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMzE2NiBbIEFuZHJvaWQgTWFjIFdpbiBdIGZhc3Qv
Y3NzL2JhY2tncm91bmQtY2xpcC1yYWRpdXMtdmFsdWVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZh
aWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173529</attachid>
            <date>2012-11-11 17:17:33 -0800</date>
            <delta_ts>2012-11-12 16:35:00 -0800</delta_ts>
            <desc>Refactored MediaControls incl feedback from Eric</desc>
            <filename>bug-88871-20121112121534.patch</filename>
            <type>text/plain</type>
            <size>151858</size>
            <attacher name="Silvia Pfeiffer">silviapf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IzZDBmMGRiOWNmYTE5
N2M1NzU4MWRlZjQ0ZDI5ODRlMmRjOWFkOC4uZjgxNzk5ZDU4NDBmZWY1NzdlMzFmOTg3NDFjZjEz
ODZkZDA0MDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0wNiAgU2ls
dmlhIFBmZWlmZmVyICA8c2lsdmlhcGZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFuIHVw
IHRoZSBpbmhlcml0YW5jZSB0cmVlIHVuZGVyIHRoZSBNZWRpYUNvbnRyb2xzIENsYXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJl
bW92ZXMgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBDaHJvbWl1bSBhbmQgU2FmYXJpCisg
ICAgICAgIG1lZGlhIGNvbnRyb2xzIHNoYWRvdyBET01zLgorICAgICAgICBUaGlzIGlzIGFjaGll
dmVkIGJ5IHB1bGxpbmcgY29tbW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBpZGVudGljYWwgKG9yCisg
ICAgICAgIGFsbW9zdCBpZGVudGljYWwpIGJldHdlZW4gdGhlIGRpZmZlcmVudCBwbGF0Zm9ybXMg
aW50byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgVGhlIGRlcml2ZWQgY2xhc3NlcyBhcmUgcmVu
YW1lZCBiYXNlZCBvbiB0aGVpciBwbGF0Zm9ybToKKyAgICAgICAgLSBNZWRpYUNvbnRyb2xSb290
RWxlbWVudCAgICAgICAgICAgICAgICB0byBNZWRpYUNvbnRyb2xzQXBwbGUuCisgICAgICAgIC0g
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSAgICAgICAgdG8gTWVkaWFDb250cm9sc0No
cm9taXVtLgorICAgICAgICAtIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lk
IHRvIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuCisgICAgICAgIE1lZGlhQ29udHJvbHMg
aXMgbm93IG5vIGxvbmdlciBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzLCBidXQgaXRzICJjcmVhdGUi
CisgICAgICAgIGZ1bmN0aW9uIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4gdGhlIHBvcnQtc3BlY2lm
aWMgaGVhZGVyIGZpbGUsIHNvIGl0J3MKKyAgICAgICAgb24gcHVycG9zZSBpbmNvbXBsZXRlIGlu
IHRoZSBNZWRpYUNvbnRyb2xzLmNwcCBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoaXMgaXMgcmVmYWN0b3Jpbmcgd29yayBvbmx5LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICAgUmVuYW1lIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCB0byBN
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwIC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5bY3BwLGhdIHRvIE1lZGlh
Q29udHJvbHNBcHBsZS5bY3BwLGhdIC4KKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAg
IFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgdG8gTWVkaWFDb250cm9sc0FwcGxl
LmNwcCAuCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNv
bnRyb2xSb290RWxlbWVudFtDaHJvbWl1bVtBbmRyb2lkXV0uW2NwcCxoXSB0byBNZWRpYUNvbnRy
b2xzW0FwcGxlLENocm9taXVtW0FuZHJvaWRdXS5bY3BwLGhdIC4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudCBzeW1ib2xz
IHRvIE1lZGlhQ29udHJvbHNBcHBsZSBzeW1ib2xzLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5bY3BwLGhdIHRvIE1lZGlhQ29udHJvbHNBcHBsZS5bY3BwLGhdIC4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAgUmVuYW1lIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LltjcHAsaF0gdG8gTWVkaWFDb250cm9sc0FwcGxlLltjcHAsaF0gLgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kgb24gTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuaCAoYmFzZSBjbGFzcyBNZWRpYUNvbnRyb2xzLmggaXMgc3RpbGwgdGhlcmUpLgorICAgICAg
ICAgIFJlbmFtZSB1cGRhdGVUaW1lRGlzcGxheSgpIHRvIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sczo6TWVkaWFDb250cm9scyk6CisgICAgICAgICAgQWRkZWQg
aW5pdGlhbGl6YXRpb24gZm9yIG1lZGlhIGVsZW1lbnRzIHRoYXQgYWxsIHBsYXRmb3JtIGNvbnRy
b2xzIHNoYXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgUmVtb3ZlZCBpbmNsdWRl
IGZpbGVzIHRoYXQgYXJlIGFscmVhZHkgaW5jbHVkZWQgaW4gaGVhZGVyIGZpbGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAg
IEFkZGVkIGNvbnRyb2xsZXIgYXNzaWdubWVudCBmb3IgbWVkaWEgZWxlbWVudHMgdGhhdCBhbGwg
cGxhdGZvcm0gY29udHJvbHMgc2hhcmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xz
OjpyZXNldCk6CisgICAgICAgICAgQWRkZWQgcmVzZXRzIGZvciBtZWRpYSBlbGVtZW50cyB0aGF0
IGFsbCBwbGF0Zm9ybSBjb250cm9scyBzaGFyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHM6OnJlcG9ydGVkRXJyb3IpOgorICAgICAgICAgIEFkZGVkIGVycm9yIGhhbmRsaW5nIGZv
ciBtZWRpYSBlbGVtZW50cyB0aGF0IGFsbCBwbGF0Zm9ybSBjb250cm9scyBzaGFyZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmxvYWRlZE1ldGFkYXRhKToKKyAgICAgICAgICBB
ZGRlZCBkZWZhdWx0IGFjdGlvbiBmb3IgbG9hZGVkTWV0YWRhdGEgZXZlbnQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHM6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6bWFrZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6c2hvdWxkSGlkZUNvbnRyb2xzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmJ1ZmZlcmluZ1Byb2dyZXNzZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6cGxheWJhY2tTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1N0b3BwZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6Y2hhbmdlZE11dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sczo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xz
OjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHM6OmVudGVyZWRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzOjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzOjpzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1Rp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNvbnRhaW5zUmVsYXRlZFRhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNob3dUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmhpZGVUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnVwZGF0ZVRleHRUcmFja0Rpc3Bs
YXkpOgorICAgICAgICAgIEFkZGVkIGRlZmF1bHQgYWN0aW9ucyBmb3IgYWxsIHRoZXNlIG1lZGlh
IGNvbnRyb2xzIG1lbWJlciBmdW5jdGlvbnMuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgQWRkZWQgaW5jbHVkZSBm
aWxlcyBhbmQgZm9yd2FyZCBjbGFzcyBkZWNsYXJhdGlvbnMgdGhhdCBhbGwgbWVkaWEgY29udHJv
bHMgc2hhcmUuCisgICAgICAgIChNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgICBNYWtlIGFsbCBw
dXJlIHZpcnR1YWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBq
dXN0IHZpcnR1YWwuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjp1cGRhdGVTdGF0
dXNEaXNwbGF5KToKKyAgICAgICAgICBBZGQgYW4gZW1wdHkgdmlydHVhbCB1cGRhdGVTdGF0dXNE
aXNwbGF5IGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgbWVkaWEgZWxlbWVudHMuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcC4KKyAgICAg
ICAgICBSZWR1Y2VkIEFwcGxlLXNwZWNpZmljIG1lZGlhIGNvbnRyb2wgZnVuY3Rpb25zIGJ5IHJl
bHlpbmcgb24gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oLgorICAgICAg
ICAgIFJlZHVjZWQgQXBwbGUtc3BlY2lmaWMgbWVkaWEgY29udHJvbCBlbGVtZW50cyBieSByZWx5
aW5nIG9uIHNvbWUgZWxlbWVudHMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwLgorICAg
ICAgICAgIFJlZHVjZWQgQ2hyb21pdW0tc3BlY2lmaWMgbWVkaWEgY29udHJvbCBmdW5jdGlvbnMg
YnkgcmVseWluZyBvbiBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBpbiB0aGUgYmFzZSBjbGFzcy4K
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW0uaC4KKyAgICAgICAgICBSZWR1Y2VkIENocm9taXVtLXNwZWNpZmljIG1lZGlhIGNvbnRy
b2wgZnVuY3Rpb25zIGJ5IHJlbHlpbmcgb24gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhl
IGJhc2UgY2xhc3MuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVt
QW5kcm9pZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZC5jcHAuCisgICAgICAgICAgUmVuYW1l
ZCBjbGFzcyBuYW1lIGFuZCBiYXNlIGNsYXNzIG5hbWUuCisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuaC4K
KyAgICAgICAgICBSZW5hbWVkIGNsYXNzIG5hbWUgYW5kIGJhc2UgY2xhc3MgbmFtZS4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjp0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk6CisgICAg
ICAgICAgTW92ZWQgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMg
dmFyaWFibGUgZnJvbSBhbGwgY2xhc3NlcyB0byBhIHRoZW1lLXNwZWNpZmljIGZ1bmN0aW9uLgor
CiAyMDEyLTExLTEwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNhdmUgb25lIGNhbGwgdG8gY29udGFpbmVyRm9yUmVwYWludCgpIHdoZW4gdXBkYXRp
bmcgbGF5ZXIgcG9zaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBjM2QwODU3
ZGU2NDZkM2FmY2RlMmEyMWU4N2I0MzdjNDMyMDI2YWEuLjVlNWFhN2E3NjFiY2M5NTFjZTZmNmIw
MjM0ZGJmYTUwYzY0YmY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMTItMTEtMDYgIFNpbHZpYSBQZmVpZmZlciAgPHNpbHZpYXBmQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBDbGVhbiB1cCB0aGUgaW5oZXJpdGFuY2UgdHJlZSB1bmRlciB0aGUgTWVk
aWFDb250cm9scyBDbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg4ODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbiB0aGUg
Q2hyb21pdW0gYW5kIFNhZmFyaQorICAgICAgICBtZWRpYSBjb250cm9scyBzaGFkb3cgRE9Ncy4K
KyAgICAgICAgVGhlIGRlcml2ZWQgY2xhc3NlcyBhcmUgcmVuYW1lZCBiYXNlZCBvbiB0aGVpciBw
bGF0Zm9ybToKKyAgICAgICAgLSBNZWRpYUNvbnRyb2xSb290RWxlbWVudCAgICAgICAgICAgICAg
ICB0byBNZWRpYUNvbnRyb2xzQXBwbGUuCisgICAgICAgIC0gTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bSAgICAgICAgdG8gTWVkaWFDb250cm9sc0Nocm9taXVtLgorICAgICAgICAtIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkIHRvIE1lZGlhQ29udHJvbHNDaHJv
bWl1bUFuZHJvaWQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRhLmg6Cisg
ICAgICAgICAgTW92ZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudCB0byBNZWRpYUNvbnRyb2xzLgor
ICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToK
KyAgICAgICAgICBNb3ZlIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50IHRvIE1lZGlhQ29udHJvbHMu
CisKIDIwMTItMTEtMDkgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIE1vdmUgY2hyb21pdW0gdG8gVVNFKExBWllfTkFUSVZFX0NVUlNPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNWVhNGY3OGYzOGUxZmI2YTQ0NWVlYzE4Nzk5ZjM3NmFjZDMyYmM1ZC4uN2Yw
MmU4NWE2ZDg3NGI1NTEzOWU3YzM1NGNkNjEzYzNmZmIyOTY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE1MzcsNyArMTUzNyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAotICAgIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5jcHAKICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAg
ICAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDBmM2Q4MjkxZDYwZTc1NzYxMzNlOGU4MzNiZTZiY2YxNGE2M2MyNzAuLjdjNTI1Yjc3MzYyMDk5
NGEyNWVlMzg0ODM5ZWQxYmI4OWRkZTA2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMzU0OCw4ICszNTQ4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJT
aGFkb3dFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNmUxNmViMTc4ZTJjYWI4MzZkMzhlZmM5
OTQzNTk5ODAzOGNlZTQ2Mi4uMDRiMTU5ZTI4NWI3ZjAzMWEyZjIyMDg3NjA3ODE3MmUwMDY3NzU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC03MzIsNyArNzMyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9JbWFnZUlubmVy
RWxlbWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIFwKLSAgICBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgXAorICAgIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgXAogICAgIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxl
bWVudC5jcHAgXAogICAgIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgXAog
ICAgIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDBhN2NjYWFmNjJmMzAzOWI5YjA3ZWFhMTkxMzBhNGMyNGMzYjJkZGUuLmEwZDJhOWRhZDFk
MWZhYjRmZjA1ZTZkZGI0NzBiMmI4NmZlNTFlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ0MTYs
MTAgKzQ0MTYsMTAgQEAKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgn
LAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCcsCi0gICAgICAg
ICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHAnLAot
ICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0u
aCcsCi0gICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJv
bWl1bUFuZHJvaWQuY3BwJywKLSAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtQW5kcm9pZC5oJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNDaHJvbWl1bUFuZHJvaWQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggNTAzZWJkNzMxM2Y2NTMzZDgwMTA4ZDhk
OTEyNDI3Yzg5OWQxYWIwNS4uN2NiYTNlY2E0ZTk2Y2NmNzA1MTU5MmQzMDg3MmIzOGEyOThhODJh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC02OTEwLDcgKzY5MTAsNyBAQCBfX1pOSzdXZWJDb3Jl
MTZIVE1MVmlkZW9FbGVtZW50N2lzVmlkZW9FdgogX19aTjdXZWJDb3JlNkNocm9tZTM0cmVxdWly
ZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFja0V2CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQxOWVuc3VyZU1lZGlhQ29udHJvbHNFdgogX19aTjdXZWJDb3JlMTNNZWRpYUNvbnRyb2xz
NmNyZWF0ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRy
b2xSb290RWxlbWVudDZjcmVhdGVFUE5TXzE2SFRNTE1lZGlhRWxlbWVudEUKK19fWk43V2ViQ29y
ZTIzTWVkaWFDb250cm9sc0FwcGxlNmNyZWF0ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQogX19a
TjdXZWJDb3JlMTNNZWRpYUNvbnRyb2xzQzJFUE5TXzE2SFRNTE1lZGlhRWxlbWVudEUKIF9fWk43
V2ViQ29yZTI0TWVkaWFDb250cm9sUGFuZWxFbGVtZW50NmNyZWF0ZUVQTlNfMTZIVE1MTWVkaWFF
bGVtZW50RQogX19aTjdXZWJDb3JlMzFNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50NmNy
ZWF0ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQpAQCAtNjk4MCw4ICs2OTgwLDggQEAgX19aTjdX
ZWJDb3JlNDFNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDZjcmVhdGVF
UE5TXzE2SFRNTE1lZGlhRWwKIF9fWk43V2ViQ29yZTQ0TWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQ2Y3JlYXRlRVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCiBfX1pO
N1dlYkNvcmU0MU1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50NmNyZWF0
ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQogX19aTjdXZWJDb3JlNDRNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDZjcmVhdGVFUE5TXzE2SFRNTE1lZGlhRWxlbWVu
dEUKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ1cmVzZXRFdgotX19aTjdX
ZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDE5dXBkYXRlU3RhdHVzRGlzcGxheUV2Citf
X1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTVyZXNldEV2CitfX1pON1dlYkNvcmUyM01l
ZGlhQ29udHJvbHNBcHBsZTE5dXBkYXRlU3RhdHVzRGlzcGxheUV2CiBfX1pON1dlYkNvcmUzMk1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50NnVwZGF0ZUV2CiBfX1pOSzdXZWJDb3JlMTZI
VE1MTWVkaWFFbGVtZW50MTByZWFkeVN0YXRlRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQxMGN1cnJlbnRTcmNFdgpAQCAtNzAwNSw4ICs3MDA1LDggQEAgX19aTks3V2ViQ29yZTE2
SFRNTE1lZGlhRWxlbWVudDdjYW5QbGF5RXYKIF9fWk43V2ViQ29yZTI0TWVkaWFDb250cm9sSW5w
dXRFbGVtZW50NHNob3dFdgogX19aTjdXZWJDb3JlMTlDU1NTdHlsZURlY2xhcmF0aW9uMTRyZW1v
dmVQcm9wZXJ0eUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMjZDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjE0cmVtb3ZlUHJvcGVydHlFaVJpCi1fX1pON1dlYkNvcmUyM01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50MTBtYWtlT3BhcXVlRXYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ0c2hvd0V2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTEwbWFr
ZU9wYXF1ZUV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTRzaG93RXYKIF9fWk43
V2ViQ29yZTE5TWVkaWFDb250cm9sRWxlbWVudDRzaG93RXYKIF9fWk43V2ViQ29yZTE2SFRNTE1l
ZGlhRWxlbWVudDIwaW5zZXJ0ZWRJbnRvRG9jdW1lbnRFdgogX19aTjdXZWJDb3JlMTZIVE1MVmlk
ZW9FbGVtZW50NmF0dGFjaEV2CkBAIC03MDMwLDcgKzcwMzAsNyBAQCBfX1pOSzdXZWJDb3JlMjdN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UyOHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmdF
dgogX19aTjdXZWJDb3JlMTBTaGFkb3dSb290NmF0dGFjaEV2CiBfX1pON1dlYkNvcmUyMVNoYWRv
d0NvbnRlbnRTZWxlY3RvckMyRVBOU18xMFNoYWRvd1Jvb3RFCiBfX1pOSzdXZWJDb3JlMTBTaGFk
b3dSb290MTZpc1NoYWRvd0JvdW5kYXJ5RXYKLV9fWk5LN1dlYkNvcmUyM01lZGlhQ29udHJvbFJv
b3RFbGVtZW50MTRzaGFkb3dQc2V1ZG9JZEV2CitfX1pOSzdXZWJDb3JlMjNNZWRpYUNvbnRyb2xz
QXBwbGUxNHNoYWRvd1BzZXVkb0lkRXYKIF9fWk5LN1dlYkNvcmUyNEFwcGx5UHJvcGVydHlEZWZh
dWx0QmFzZUlOU182TGVuZ3RoRUUxN2FwcGx5SW5oZXJpdFZhbHVlRVBOU18xNkNTU1N0eWxlU2Vs
ZWN0b3JFCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTV3aWR0aEV2CiBfX1pOSzdXZWJDb3Jl
MTFSZW5kZXJTdHlsZTZoZWlnaHRFdgpAQCAtNzExMSw3ICs3MTExLDcgQEAgX19aTjdXZWJDb3Jl
MTFNZWRpYVBsYXllcjhzZXRNdXRlZEViCiBfX1pOSzdXZWJDb3JlMjJOdWxsTWVkaWFQbGF5ZXJQ
cml2YXRlMTRzdXBwb3J0c011dGluZ0V2CiBfX1pON1dlYkNvcmUyMk51bGxNZWRpYVBsYXllclBy
aXZhdGU5c2V0Vm9sdW1lRWYKIF9fWk43V2ViQ29yZTExTWVkaWFQbGF5ZXI5c2V0Vm9sdW1lRWYK
LV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxM2NoYW5nZWRWb2x1bWVFdgor
X19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxM2NoYW5nZWRWb2x1bWVFdgogX19aTjdX
ZWJDb3JlMTFNZWRpYVBsYXllcjRsb2FkRVJLTjNXVEY2U3RyaW5nRVJLTlNfMTFDb250ZW50VHlw
ZUUKIF9fWk5LN1dlYkNvcmUxMUNvbnRlbnRUeXBlNHR5cGVFdgogX19aTks3V2ViQ29yZTExQ29u
dGVudFR5cGU5cGFyYW1ldGVyRVJLTjNXVEY2U3RyaW5nRQpAQCAtNzI4MSw3ICs3MjgxLDcgQEAg
X19aVGhuMTIwX043V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDI4bWVkaWFQbGF5ZXJSZWFkeVN0
YXRlQ2hhbmdlZEVQTlNfMTFNZWRpYVAKIF9fWk43V2ViQ29yZTExTWVkaWFQbGF5ZXIxMHJlYWR5
U3RhdGVFdgogX19aTks3V2ViQ29yZTMwTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uMTBy
ZWFkeVN0YXRlRXYKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDEzc2V0UmVhZHlTdGF0
ZUVOU18xMU1lZGlhUGxheWVyMTBSZWFkeVN0YXRlRQotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRy
b2xSb290RWxlbWVudDE0bG9hZGVkTWV0YWRhdGFFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRy
b2xzQXBwbGUxNGxvYWRlZE1ldGFkYXRhRXYKIF9fWk5LN1dlYkNvcmUzME1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjhkdXJhdGlvbkV2CiBfX1pOSzdXZWJDb3JlMzRNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDMTZwbGF0Zm9ybUR1cmF0aW9uRXYKIF9fWk5LN1dlYkNvcmUx
MU1lZGlhUGxheWVyOGR1cmF0aW9uRXYKQEAgLTcyOTIsNyArNzI5Miw3IEBAIF9fWk5LN1dlYkNv
cmUyN01lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTMxbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1l
ZGlhVGltZUV2CiBfX1pOSzdXZWJDb3JlMTFNZWRpYVBsYXllcjExY3VycmVudFRpbWVFdgogX19a
Tks3V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzExY3VycmVudFRp
bWVFdgogX19aTjdXZWJDb3JlMjdNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQxMXNldFBvc2l0
aW9uRWYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxN3VwZGF0ZVRpbWVE
aXNwbGF5RXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTd1cGRhdGVUaW1lRGlz
cGxheUV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJUaGVtZTMwZm9ybWF0TWVkaWFDb250cm9sc0N1
cnJlbnRUaW1lRWZmCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJUaGVtZTIzZm9ybWF0TWVkaWFDb250
cm9sc1RpbWVFZgogX19aTjdXZWJDb3JlMzBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQx
NXNldEN1cnJlbnRWYWx1ZUVmCkBAIC03MzA0LDcgKzczMDQsNyBAQCBfX1pON1dlYkNvcmUxNkhU
TUxNZWRpYUVsZW1lbnQxNXVwZGF0ZVBsYXlTdGF0ZUV2CiBfX1pOSzdXZWJDb3JlMTFNZWRpYVBs
YXllcjZwYXVzZWRFdgogX19aTks3V2ViQ29yZTMwTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uNnBhdXNlZEV2CiBfX1pOSzdXZWJDb3JlMzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDNHJhdGVFdgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDE1cGxh
eWJhY2tTdG9wcGVkRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTVwbGF5YmFj
a1N0b3BwZWRFdgogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTlGbG9hdFJlY3RFTG0wRUUxNXJl
c2VydmVDYXBhY2l0eUVtCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJCbG9jazE5dmlydHVhbENvbnRp
bnVhdGlvbkV2CiBfX1pON1dlYkNvcmUxMVJlbmRlckxheWVyMTFyZW1vdmVDaGlsZEVQUzBfCkBA
IC03NDk3LDcgKzc0OTcsNyBAQCBfX1pON1dlYkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMxN2Rlc3Ryb3lWaWRlb0xheWVyRXYKIC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2
ZXIgZGlzY29ubmVjdF0KIF9fWk43V2ViQ29yZTMwTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uRDJFdgogX19aVGhuOF9ON1dlYkNvcmUxMFNoYWRvd1Jvb3REMEV2Ci1fX1pON1dlYkNvcmUy
M01lZGlhQ29udHJvbFJvb3RFbGVtZW50RDBFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xz
QXBwbGVEMEV2CiBfX1pON1dlYkNvcmUyNE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudEQwRXYKIF9f
Wk43V2ViQ29yZTMxTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudEQwRXYKIF9fWk43V2Vi
Q29yZTE2SFRNTElucHV0RWxlbWVudEQyRXYKQEAgLTE4NDkwLDcgKzE4NDkwLDcgQEAgX19aTks3
V2ViQ29yZTI3TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlMTRzdXBwb3J0c011dGluZ0V2CiBf
X1pON1dlYkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM5c2V0Vm9sdW1l
RWYKIF9fWk43V2ViQ29yZTExTWVkaWFQbGF5ZXI0cGxheUV2CiBfX1pON1dlYkNvcmUzME1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjRwbGF5RXYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQxNXBsYXliYWNrU3RhcnRlZEV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29u
dHJvbHNBcHBsZTE1cGxheWJhY2tTdGFydGVkRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQxMmlzRnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUyMVdlYkdMUmVuZGVyaW5nQ29udGV4
dDE3dmlkZW9GcmFtZVRvSW1hZ2VFUE5TXzE2SFRNTFZpZGVvRWxlbWVudEUKIF9fWk5LN1dlYkNv
cmUxNkhUTUxWaWRlb0VsZW1lbnQxMHZpZGVvV2lkdGhFdgpAQCAtMTg1MDYsOSArMTg1MDYsOSBA
QCBfX1pON1dlYkNvcmUyNENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDlkcmF3SW1hZ2VFUE5TXzE2
SFRNTFZpZGVvRWxlbWVudEVmZmZmUmkKIF9fWk43V2ViQ29yZTI4anNIVE1MVmlkZW9FbGVtZW50
VmlkZW9XaWR0aEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZp
ZXJFCiBfX1pON1dlYkNvcmUyOWpzSFRNTFZpZGVvRWxlbWVudFZpZGVvSGVpZ2h0RVBOM0pTQzlF
eGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk43V2ViQ29yZTE2
SFRNTE1lZGlhRWxlbWVudDI2cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWRFUE5TXzVUaW1lcklT
MF9FRQotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDE4cGxheWJhY2tQcm9n
cmVzc2VkRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMThwbGF5YmFja1Byb2dy
ZXNzZWRFdgogX19aTks3V2ViQ29yZTE2SFRNTFZpZGVvRWxlbWVudDhoYXNWaWRlb0V2Ci1fX1pO
N1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MTVtYWtlVHJhbnNwYXJlbnRFdgorX19a
TjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxNW1ha2VUcmFuc3BhcmVudEV2CiBfX1pON1dl
YkNvcmUxMVJlbmRlclRoZW1lMjhtZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uRXYKIF9fWk5L
N1dlYkNvcmUxMlJlbmRlclNsaWRlcjM2cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0
aW9uRXYKIF9fWk43V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzEy
cGxhdGZvcm1QbGF5RXYKQEAgLTE5NzQzLDcgKzE5NzQzLDcgQEAgX19aTjdXZWJDb3JlMjlzZXRK
U0hUTUxNZWRpYUVsZW1lbnRBdXRvcGxheUVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0
RU5TMF8KIF9fWk43V2ViQ29yZTI2anNIVE1MTWVkaWFFbGVtZW50Q29udHJvbHNFUE4zSlNDOUV4
ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQogX19aTjdXZWJDb3JlMjlz
ZXRKU0hUTUxNZWRpYUVsZW1lbnRDb250cm9sc0VQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2Jq
ZWN0RU5TMF83SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDExc2V0Q29u
dHJvbHNFYgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDRoaWRlRXYKK19f
Wk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlNGhpZGVFdgogX19aTjdXZWJDb3JlMjJqc0hU
TUxNZWRpYUVsZW1lbnRMb29wRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEw
SWRlbnRpZmllckUKIF9fWk43V2ViQ29yZTI1c2V0SlNIVE1MTWVkaWFFbGVtZW50TG9vcEVQTjNK
U0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE3
anNIVE1MRG9jdW1lbnRBbGxFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJ
ZGVudGlmaWVyRQpAQCAtMjY5NDAsMTMgKzI2OTQwLDEzIEBAIF9fWk43V2ViQ29yZTE2SFRNTFZp
ZGVvRWxlbWVudDIxd2Via2l0RW50ZXJGdWxsc2NyZWVuRWJSaQogX19aTjdXZWJDb3JlMTZIVE1M
TWVkaWFFbGVtZW50MTVlbnRlckZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMTZSZW5kZXJGdWxs
U2NyZWVuMTdjcmVhdGVQbGFjZWhvbGRlckVOM1dURjEwUGFzc1JlZlB0cklOU18xMVJlbmRlclN0
eWxlRUVFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDI2ZGlk
QmVjb21lRnVsbHNjcmVlbkVsZW1lbnRFdgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290
RWxlbWVudDE3ZW50ZXJlZEZ1bGxzY3JlZW5FdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xz
QXBwbGUxN2VudGVyZWRGdWxsc2NyZWVuRXYKIF9fWk43V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMy
N3BhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbkVQTlNfMTJSZW5kZXJPYmplY3RFUktOU185UGFp
bnRJbmZvRVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxNFJlbmRlclRoZW1lTWFjMjRwYWlu
dE1lZGlhU2Vla0JhY2tCdXR0b25FUE5TXzEyUmVuZGVyT2JqZWN0RVJLTlNfOVBhaW50SW5mb0VS
S05TXzdJbnRSZWN0RQotX19aTjdXZWJDb3JlNVRpbWVySU5TXzIzTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRFRTVmaXJlZEV2Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MzJo
aWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZEVQTlNfNVRpbWVySVMwX0VFCitfX1pON1dl
YkNvcmU1VGltZXJJTlNfMjNNZWRpYUNvbnRyb2xzQXBwbGVFRTVmaXJlZEV2CitfX1pON1dlYkNv
cmUyM01lZGlhQ29udHJvbHNBcHBsZTMyaGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWRF
UE5TXzVUaW1lcklTMF9FRQogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MzB3aWxsU3Rv
cEJlaW5nRnVsbHNjcmVlbkVsZW1lbnRFdgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290
RWxlbWVudDE2ZXhpdGVkRnVsbHNjcmVlbkV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNB
cHBsZTE2ZXhpdGVkRnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUyN01lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTMyYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWRFdgogX19aTks3V2Vi
Q29yZTIyTnVsbE1lZGlhUGxheWVyUHJpdmF0ZTEzcGxhdGZvcm1MYXllckV2CiBfX1pOSzdXZWJD
b3JlMjJOdWxsTWVkaWFQbGF5ZXJQcml2YXRlOGJ1ZmZlcmVkRXYKQEAgLTI4MTY0LDggKzI4MTY0
LDggQEAgX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50NGxvYWRFYlJpCiBfX1pOSzdXZWJD
b3JlMTZIVE1MTWVkaWFFbGVtZW50OGhhc1ZpZGVvRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlck1l
ZGlhMTByZW5kZXJOYW1lRXYKIF9fWk43V2ViQ29yZTI3TWVkaWFDb250cm9sVGltZWxpbmVFbGVt
ZW50MTlkZWZhdWx0RXZlbnRIYW5kbGVyRVBOU181RXZlbnRFCi1fX1pON1dlYkNvcmUyM01lZGlh
Q29udHJvbFJvb3RFbGVtZW50MTlkZWZhdWx0RXZlbnRIYW5kbGVyRVBOU181RXZlbnRFCi1fX1pO
N1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MThzaG91bGRIaWRlQ29udHJvbHNFdgor
X19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxOWRlZmF1bHRFdmVudEhhbmRsZXJFUE5T
XzVFdmVudEUKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMThzaG91bGRIaWRlQ29u
dHJvbHNFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MTRiZWdpblNjcnViYmluZ0V2
CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQxNHNldEN1cnJlbnRUaW1lRWZSaQogX19a
Tks3V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzIxbWVkaWFUaW1l
Rm9yVGltZVZhbHVlRWYKQEAgLTI4MjEwLDcgKzI4MjEwLDcgQEAgX19aTjdXZWJDb3JlMTZIVE1M
TWVkaWFFbGVtZW50MzBzZXRXZWJraXRDbG9zZWRDYXB0aW9uc1Zpc2libGVFYgogX19aTjdXZWJD
b3JlMTZIVE1MTWVkaWFFbGVtZW50MjRzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGVFYgogX19aTjdX
ZWJDb3JlMTFNZWRpYVBsYXllcjI0c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlRWIKIF9fWk43V2Vi
Q29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzI0c2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlRWIKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQzMWNoYW5n
ZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHlFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xz
QXBwbGUzMWNoYW5nZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHlFdgogX19aTjdXZWJDb3JlNDVN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQxN3VwZGF0ZURpc3Bs
YXlUeXBlRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQyMWNsb3NlZENhcHRpb25z
VmlzaWJsZUV2CiBfX1pON1dlYkNvcmUxM01lZGlhRG9jdW1lbnRDMUVQTlNfNUZyYW1lRVJLTlNf
NEtVUkxFCkBAIC0yODI1Myw3ICsyODI1Myw3IEBAIF9fWk43V2ViQ29yZTI4c2V0SlNIVE1MTWVk
aWFFbGVtZW50UHJlbG9hZEVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83CiBf
X1pON1dlYkNvcmVMMjJkZXNjZW5kZW50VmlkZW9FbGVtZW50RVBOU180Tm9kZUUKIF9fWk43V2Vi
Q29yZTI2c2V0SlNIVE1MTWVkaWFFbGVtZW50TXV0ZWRFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhK
U09iamVjdEVOUzBfN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQ4c2V0
TXV0ZWRFYgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDExY2hhbmdlZE11
dGVFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxMWNoYW5nZWRNdXRlRXYKIF9f
Wk43V2ViQ29yZTI5TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQxMWNoYW5nZWRNdXRlRXYK
IF9fWk43V2ViQ29yZTI5TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQxN3VwZGF0ZURpc3Bs
YXlUeXBlRXYKIF9fWk43V2ViQ29yZTQwc2V0SlNIVE1MTWVkaWFFbGVtZW50RGVmYXVsdFBsYXli
YWNrUmF0ZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNDVkZjA2
M2I0YmZmZWU5NDIyYTY3N2VlZTkyOThkMGU2MWEyMDdiOS4uOGY2Yjk2M2NmZGIxMDA2MTAzMTY0
ZjNlOTMyMTVhYjI2MjRhNDg4MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTY0Mjk4LDExICs2NDI5OCwxMSBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuY3BwIgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93
XE1lZGlhQ29udHJvbHNBcHBsZS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5oIgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XE1lZGlhQ29udHJvbHNBcHBs
ZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTIzNTRhMDFiMjNmMjQw
OTA2NTcyMTllZGNkZjI1ZTZjODRiZWI2Ni4uNzQ3ODE2ZWU5NjVhODQxM2M5N2YxNDc3ZjE2N2Q4
Yjg5MDQ2ZDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA1MCw4ICsxMDUwLDggQEAKIAkJNDE0Qjg2NzQxM0FEMDc0RTAw
QjRCMzczIC8qIEZpbGVJY29uTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTRCODY3MjEzQUQwNzRFMDBCNEIzNzMgLyogRmlsZUljb25Mb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwRjlFRjEyQjZFMEU3MDAw
OEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi87IH07CiAJCTQxNTBGOUYyMTJCNkUwRTcw
MDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MEY5RjAxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRl
clRodW1iRWxlbWVudC5jcHAgKi87IH07Ci0JCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE1N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50LmggKi87IH07Ci0JCTQxNTdBRjgxMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNv
bnRyb2xSb290RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTU3QUY3RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQuY3BwICovOyB9OworCQk0MTU3QUY4MDEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250
cm9sc0FwcGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTU3QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmggKi87IH07
CisJCTQxNTdBRjgxMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1N0FGN0YxMkYx
RkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgKi87IH07CiAJCTQxNjJBNDUw
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDREMTAxMTQ1QUUwMERG
RjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKIAkJNDE2MkE0NTExMDEx
NDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAv
KiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07CiAJCTQxNjJBNDU0MTAxMTQ1RTMwMERG
RjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTMxMDExNDVFMzAwREZGM0VE
IC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi87IH07CkBAIC04MjA0LDgg
KzgyMDQsOCBAQAogCQk0MTRCODY3MjEzQUQwNzRFMDBCNEIzNzMgLyogRmlsZUljb25Mb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZUljb25Mb2FkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1MEY5RUYxMkI2RTBFNzAwMDhDODYwIC8qIFNs
aWRlclRodW1iRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbGlk
ZXJUaHVtYkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1MEY5RjAx
MkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbGlkZXJUaHVtYkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTU3QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE1N0FG
N0YxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1N0FGN0UxMkYxRkIwNDAwQThDNkY1
IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYUNvbnRyb2xzQXBwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE1
N0FGN0YxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDRF
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgcGF0aCA9IHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHBh
dGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTUxMDAsOCArMTUxMDAsOCBAQAogCQkJCTU3Q0Y0OTczMTRFRTM2RDcw
MEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovLAogCQkJCTQxNzI1M0E4MTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8sCiAJCQkJNDE3MjUzQTkxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8sCi0JCQkJNDE1N0FGN0YxMkYx
RkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCAqLywKLQkJCQk0MTU3
QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCAqLywKKwkJ
CQk0MTU3QUY3RjEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCAqLywK
KwkJCQk0MTU3QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmggKi8s
CiAJCQkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwICovLAog
CQkJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8sCiAJCQkJ
QTc4RTUyNkQxMzQ2QkQxNzAwQUQ5QzMxIC8qIE1ldGVyU2hhZG93RWxlbWVudC5jcHAgKi8sCkBA
IC0yNDUzOSw3ICsyNDUzOSw3IEBACiAJCQkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1l
ZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY2NUNDODE0NUIxRTc1
MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY2NUND
QTE0NUI0NDg4MDBDNEM3QUEgLyogTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0MTU3QUY4MDEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNTdBRjgwMTJGMUZCMDQwMEE4QzZGNSAvKiBN
ZWRpYUNvbnRyb2xzQXBwbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGM0MzQkVCMTM1Q0FGM0Mw
MEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCODEy
MzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ2
RjI1MkQxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNzgzNyw3ICsyNzgzNyw3IEBACiAJCQkJNDlFOTExQzYwRUY4NkQ0
NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUg
LyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE1N0FG
ODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzIwNUFCNzEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDZGMjUyQzEzRjVFRjBFMDA2NTE2NUYgLyogTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGE3
MWIzNmNmNTFkNGI5N2UwZGFlZTlhMzllMDQ4NTFiYjhmOWFiYjYuLjIxMjhiYzIzMjBmOTdmYTUz
OTE1ZjdjNmQ3Y2ExOWM0NTlhYTcyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNs
dWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudC5o
IgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtMTA3OCw3ICsxMDc3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xU
aW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiAgICAg
UmVuZGVyU2xpZGVyKiBzbGlkZXIgPSB0b1JlbmRlclNsaWRlcihyZW5kZXJlcigpKTsKICAgICBp
ZiAoc2xpZGVyICYmIHNsaWRlci0+aW5EcmFnTW9kZSgpKQotICAgICAgICBtX2NvbnRyb2xzLT51
cGRhdGVUaW1lRGlzcGxheSgpOworICAgICAgICBtX2NvbnRyb2xzLT51cGRhdGVDdXJyZW50VGlt
ZURpc3BsYXkoKTsKIH0KIAogYm9vbCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OndpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmQ3YzEwOGEyM2MyNWRiM2E1MWE1Njc4NjZhYjBhMDIyYzdlMDgxMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3MTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuaCIKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJNZWRpYUNvbnRy
b2xFbGVtZW50cy5oIgotI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJUZXh0LmgiCi0KLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0jaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCi0jZW5kaWYKLQotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3Qg
ZG91YmxlIHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzID0gMzsK
LQotTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCi0gICAgLCBtX21l
ZGlhQ29udHJvbGxlcigwKQotICAgICwgbV9yZXdpbmRCdXR0b24oMCkKLSAgICAsIG1fcGxheUJ1
dHRvbigwKQotICAgICwgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uKDApCi0gICAgLCBtX3N0YXR1
c0Rpc3BsYXkoMCkKLSAgICAsIG1fY3VycmVudFRpbWVEaXNwbGF5KDApCi0gICAgLCBtX3RpbWVs
aW5lKDApCi0gICAgLCBtX3RpbWVSZW1haW5pbmdEaXNwbGF5KDApCi0gICAgLCBtX3RpbWVsaW5l
Q29udGFpbmVyKDApCi0gICAgLCBtX3NlZWtCYWNrQnV0dG9uKDApCi0gICAgLCBtX3NlZWtGb3J3
YXJkQnV0dG9uKDApCi0gICAgLCBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKDApCi0gICAg
LCBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0KDApCi0gICAgLCBtX2Nsb3NlZENhcHRpb25zQ29u
dGFpbmVyKDApCi0gICAgLCBtX3BhbmVsTXV0ZUJ1dHRvbigwKQotICAgICwgbV92b2x1bWVTbGlk
ZXIoMCkKLSAgICAsIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbigwKQotICAgICwgbV92b2x1bWVT
bGlkZXJDb250YWluZXIoMCkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1dHRvbigwKQotICAgICwgbV9m
dWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uKDApCi0gICAgLCBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlk
ZXIoMCkKLSAgICAsIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbigwKQotICAgICwgbV9wYW5l
bCgwKQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAsIG1fdGV4dERpc3BsYXlDb250YWlu
ZXIoMCkKLSNlbmRpZgotICAgICwgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIodGhpcywg
Jk1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJl
ZCkKLSAgICAsIG1faXNNb3VzZU92ZXJDb250cm9scyhmYWxzZSkKLSAgICAsIG1faXNGdWxsc2Ny
ZWVuKGZhbHNlKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29udHJv
bHM6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50PiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKLXsKLSAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBjb250cm9scyA9IGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSb290RWxlbWVudChkb2N1bWVudCkpOwotCi0gICAgUmVm
UHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gcGFuZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotCi0gICAg
UmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IHJld2luZEJ1dHRvbiA9IE1l
ZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29u
dHJvbHMtPm1fcmV3aW5kQnV0dG9uID0gcmV3aW5kQnV0dG9uLmdldCgpOwotICAgIHBhbmVsLT5h
cHBlbmRDaGlsZChyZXdpbmRCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVj
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX3BsYXlCdXR0b24gPSBwbGF5QnV0dG9uLmdl
dCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IHJldHVyblRvUmVhbHRpbWVCdXR0
b24gPSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKLSAgICBjb250cm9scy0+bV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uID0gcmV0dXJu
VG9SZWFsdGltZUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocmV0dXJuVG9S
ZWFsdGltZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRp
YUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKLSAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGNvbnRyb2xzLT5tX3N0YXR1
c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwotICAgICAgICBwYW5lbC0+YXBwZW5kQ2hp
bGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICAgICAgaWYgKGVjKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudD4gdGltZWxpbmVDb250YWluZXIgPSBNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0KLSAgICBSZWZQdHI8
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5
ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKLSAgICBjb250cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3Bs
YXkuZ2V0KCk7Ci0gICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1l
RGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUg
PSBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMu
Z2V0KCkpOwotICAgIGNvbnRyb2xzLT5tX3RpbWVsaW5lID0gdGltZWxpbmUuZ2V0KCk7Ci0gICAg
dGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiB0aW1lUmVtYWluaW5nRGlzcGxheSA9
IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKLSAgICBjb250cm9scy0+bV90aW1lUmVtYWluaW5nRGlzcGxheSA9IHRpbWVSZW1haW5pbmdE
aXNwbGF5LmdldCgpOwotICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lUmVt
YWluaW5nRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgY29udHJvbHMtPm1fdGltZWxpbmVDb250YWluZXIgPSB0aW1lbGlu
ZUNvbnRhaW5lci5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQodGltZWxpbmVDb250YWlu
ZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5v
cmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
PiBzZWVrQmFja0J1dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKLSAgICBjb250cm9scy0+bV9zZWVrQmFja0J1dHRvbiA9IHNlZWtCYWNr
QnV0dG9uLmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrQmFja0J1dHRvbi5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
Ly8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3
MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IHNl
ZWtGb3J3YXJkQnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX3NlZWtGb3J3YXJkQnV0dG9uID0gc2Vl
a0ZvcndhcmRCdXR0b24uZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHNlZWtGb3J3YXJk
QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+c3VwcG9ydHNDbG9zZWRD
YXB0aW9uaW5nKCkpIHsKLQotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlv
bnNDb250YWluZXJFbGVtZW50PiBjbG9zZWRDYXB0aW9uc0NvbnRhaW5lciA9IE1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBj
bG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgY29udHJvbHMtPm1fY2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3QgPSBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC5nZXQoKTsKLSAgICAg
ICAgY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFwcGVuZENoaWxkKGNsb3NlZENhcHRpb25zVHJh
Y2tMaXN0LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLQotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29u
dHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7Ci0gICAgICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uID0gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7Ci0gICAgICAgIHBhbmVs
LT5hcHBlbmRDaGlsZCh0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAg
Y29udHJvbHMtPm1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXIgPSBjbG9zZWRDYXB0aW9uc0NvbnRh
aW5lci5nZXQoKTsKLSAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxkKGNsb3NlZENhcHRpb25zQ29u
dGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogT25seSBjcmVhdGUgd2hlbiBuZWVk
ZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuQnV0dG9uID0gTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOwot
ICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2NyZWVuQnV0dG9uLmdldCgp
OwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMs
IHRydWUpOwotCi0gICAgLy8gVGhlIG11dGUgYnV0dG9uIGFuZCB0aGUgc2xpZGVyIGVsZW1lbnQg
c2hvdWxkIGJlIGluIHRoZSBzYW1lIGRpdi4KLSAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IHBh
bmVsVm9sdW1lQ29udHJvbENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwotCi0gICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXIoKSkgewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAgICAg
ICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgY29u
dHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOwotICAgICAgICB2b2x1bWVTbGlk
ZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAg
ICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgLy8gVGhpcyBp
cyBhIGR1cGxpY2F0ZSBtdXRlIGJ1dHRvbiwgd2hpY2ggaXMgdmlzaWJsZSBpbiBzb21lIHBvcnRz
IGF0IHRoZSBib3R0b20gb2YgdGhlIHZvbHVtZSBiYXIuCi0gICAgICAgIC8vIEl0J3MgaW1wb3J0
YW50IG9ubHkgd2hlbiB0aGUgdm9sdW1lIGJhciBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhlIGNvbnRy
b2xzLgotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVs
ZW1lbnQ+IHZvbHVtZVNsaWRlck11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJN
dXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgY29udHJvbHMtPm1f
dm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IHZvbHVtZVNsaWRlck11dGVCdXR0b24uZ2V0KCk7Ci0g
ICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xpZGVyTXV0
ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLQotICAgICAgICBpZiAoZWMpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLQotICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXJDb250YWlu
ZXIgPSB2b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCk7Ci0gICAgICAgIHBhbmVsVm9sdW1lQ29u
dHJvbENvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xpZGVyQ29udGFpbmVyLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gcGFu
ZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7Ci0gICAgY29udHJvbHMtPm1fcGFuZWxNdXRlQnV0
dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOwotICAgIHBhbmVsVm9sdW1lQ29udHJvbENvbnRh
aW5lci0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
cGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8
aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24gPSBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKLSAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uID0gZnVsbFNj
cmVlbk1pblZvbHVtZUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNj
cmVlbk1pblZvbHVtZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVTbGlkZXJFbGVtZW50PiBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gTWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29udHJv
bHMtPm1fZnVsbFNjcmVlblZvbHVtZVNsaWRlciA9IGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIuZ2V0
KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gZnVsbFNj
cmVlbk1heFZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0
b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5N
YXhWb2x1bWVCdXR0b24gPSBmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLmdldCgpOwotICAgIHBh
bmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMs
IHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb250cm9scy0+
bV9wYW5lbCA9IHBhbmVsLmdldCgpOwotICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChwYW5lbC5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290
RWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogY29u
dHJvbGxlcikKLXsKLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0gY29udHJvbGxlcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcjsKLQotICAg
IGlmIChtX3Jld2luZEJ1dHRvbikKLSAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9wbGF5QnV0dG9uKQotICAgICAgICBtX3Bs
YXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9yZXR1
cm5Ub1JlYWxUaW1lQnV0dG9uKQotICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9zdGF0dXNEaXNwbGF5KQot
ICAgICAgICBtX3N0YXR1c0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
LSAgICBpZiAobV9jdXJyZW50VGltZURpc3BsYXkpCi0gICAgICAgIG1fY3VycmVudFRpbWVEaXNw
bGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdGltZWxpbmUp
Ci0gICAgICAgIG1fdGltZWxpbmUtPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAg
ICBpZiAobV90aW1lUmVtYWluaW5nRGlzcGxheSkKLSAgICAgICAgbV90aW1lUmVtYWluaW5nRGlz
cGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3RpbWVsaW5l
Q29udGFpbmVyKQotICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fc2Vla0JhY2tCdXR0b24pCi0gICAgICAgIG1fc2Vl
a0JhY2tCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9z
ZWVrRm9yd2FyZEJ1dHRvbikKLSAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+c2V0TWVkaWFD
b250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uKQotICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zZXRNZWRpYUNvbnRy
b2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QpCi0g
ICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKLSAgICBpZiAobV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lcikKLSAgICAgICAgbV9j
bG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwot
ICAgIGlmIChtX3BhbmVsTXV0ZUJ1dHRvbikKLSAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV92b2x1bWVTbGlkZXIpCi0g
ICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0g
ICAgaWYgKG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbikKLSAgICAgICAgbV92b2x1bWVTbGlkZXJN
dXRlQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdm9s
dW1lU2xpZGVyQ29udGFpbmVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2V0
TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24p
Ci0gICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOwotICAgIGlmIChtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24pCi0gICAgICAgIG1fZnVs
bFNjcmVlbk1pblZvbHVtZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwot
ICAgIGlmIChtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIpCi0gICAgICAgIG1fZnVsbFNjcmVlblZv
bHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX2Z1
bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24pCi0gICAgICAgIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1
dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3BhbmVsKQot
ICAgICAgICBtX3BhbmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChtX3RleHREaXNwbGF5Q29udGFpbmVyKQotICAgICAg
ICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7
Ci0jZW5kaWYKLSAgICByZXNldCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzaG93KCkKLXsKLSAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKLSAgICBtX3Bh
bmVsLT5zaG93KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmhpZGUoKQot
ewotICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKGZhbHNlKTsKLSAgICBtX3BhbmVsLT5oaWRl
KCk7Ci0gICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPmhpZGUoKTsKLSAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5oaWRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ6Om1ha2VPcGFxdWUoKQotewotICAgIG1fcGFuZWwtPm1ha2VPcGFxdWUoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKLXsKLSAgICBtX3Bh
bmVsLT5tYWtlVHJhbnNwYXJlbnQoKTsKLSAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlk
ZSgpOwotICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmhpZGUoKTsKLX0KLQotdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQoKQotewotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1
cGRhdGVTdGF0dXNEaXNwbGF5KCk7Ci0KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnN1cHBv
cnRzRnVsbHNjcmVlbigpKQotICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3coKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+aGlkZSgpOwotCi0gICAgZmxvYXQg
ZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoaXNmaW5p
dGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7Ci0gICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9u
KGR1cmF0aW9uKTsKLSAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hvdygpOwotICAgICAg
ICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUo
KSk7Ci0gICAgICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
dGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKLQotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+
aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdG
b3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCi0gICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5zaG93
KCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+aGlkZSgpOwotCi0gICAg
aWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1f
bWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci0KLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbikgewotICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENh
cHRpb25zKCkpIHsKLSAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNo
b3coKTsKLSAgICAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnVwZGF0ZURpc3Bs
YXkoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uLT5oaWRlKCk7Ci0gICAgfQotCi0gICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5
VHlwZSgpOwotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmIChtX2Z1bGxTY3Jl
ZW5Wb2x1bWVTbGlkZXIpCi0gICAgICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlci0+c2V0Vm9s
dW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci0KLSAgICBpZiAobV9pc0Z1bGxzY3Jl
ZW4pIHsKLSAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkgewot
ICAgICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+aGlkZSgpOwotICAgICAgICAgICAgbV9zZWVr
Rm9yd2FyZEJ1dHRvbi0+aGlkZSgpOwotICAgICAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNob3co
KTsKLSAgICAgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2hvdygpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygpOwotICAgICAg
ICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+c2hvdygpOwotICAgICAgICAgICAgbV9yZXdpbmRC
dXR0b24tPmhpZGUoKTsKLSAgICAgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlk
ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICBpZiAoIW1fbWVkaWFDb250
cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkgewotICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0
b24tPmhpZGUoKTsKLSAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNob3coKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPnNob3coKTsKLSAgICAgICAgbV9y
ZXdpbmRCdXR0b24tPmhpZGUoKTsKLSAgICB9Ci0KLSAgICBtYWtlT3BhcXVlKCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrU3RhcnRlZCgpCi17Ci0gICAgbV9w
bGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0
aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKLSAgICB1cGRhdGVUaW1lRGlz
cGxheSgpOwotCi0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQotICAgICAgICBzdGFydEhpZGVGdWxs
c2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpwbGF5YmFja1Byb2dyZXNzZWQoKQotewotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1f
bWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKLSAgICB1cGRhdGVUaW1lRGlzcGxheSgp
OwotICAgIAotICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFDb250cm9s
bGVyLT5oYXNWaWRlbygpKQotICAgICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKLX0KLQotdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tTdG9wcGVkKCkKLXsKLSAgICBtX3BsYXlC
dXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24o
bV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5
KCk7Ci0gICAgbWFrZU9wYXF1ZSgpOwotICAgIAotICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRy
b2xzVGltZXIoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGlt
ZURpc3BsYXkoKQotewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50
VGltZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlmICghcGFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZvcm1hdCB0
aGUgdGltZS4KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRU
aW1lKG5vdywgZHVyYXRpb24pLCBlYyk7Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldEN1
cnJlbnRWYWx1ZShub3cpOwotICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVyVGV4
dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3csIGR1
cmF0aW9uKSwgZWMpOwotICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1
ZShub3cgLSBkdXJhdGlvbik7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnJl
cG9ydGVkRXJyb3IoKQotewotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7Ci0g
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXBhZ2UtPnRoZW1lKCkt
Pmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKQotICAgICAg
ICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7Ci0KLSAgICBpZiAoIXBhZ2UtPnRoZW1lKCkt
Pmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkKLSAg
ICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKLQotICAgICBtX2Z1bGxTY3JlZW5CdXR0
b24tPmhpZGUoKTsKLQotICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKLSAgICAgICAg
bV92b2x1bWVTbGlkZXJDb250YWluZXItPmhpZGUoKTsKLSAgICBpZiAobV90b2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRs
aW5nRm9yKE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKLSAgICAgICAgbV90
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwotICAgIGlmIChtX2Nsb3NlZENhcHRp
b25zQ29udGFpbmVyKQotICAgICAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5oaWRlKCk7
Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0ZVN0YXR1c0Rpc3BsYXko
KQotewotICAgIGlmIChtX3N0YXR1c0Rpc3BsYXkpCi0gICAgICAgIG1fc3RhdHVzRGlzcGxheS0+
dXBkYXRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmxvYWRlZE1ldGFk
YXRhKCkKLXsKLSAgICBpZiAobV9zdGF0dXNEaXNwbGF5ICYmIG1fbWVkaWFDb250cm9sbGVyLT5p
c0xpdmVTdHJlYW0oKSkKLSAgICAgICAgbV9zdGF0dXNEaXNwbGF5LT5oaWRlKCk7Ci0KLSAgICBy
ZXNldCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjaGFuZ2VkQ2xvc2Vk
Q2FwdGlvbnNWaXNpYmlsaXR5KCkKLXsKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbikKLSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+dXBkYXRlRGlzcGxh
eVR5cGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZE11dGUo
KQotewotICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOwotICAgIGlmIChtX3Zv
bHVtZVNsaWRlck11dGVCdXR0b24pCi0gICAgICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+
Y2hhbmdlZE11dGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdl
ZFZvbHVtZSgpCi17Ci0gICAgaWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNs
aWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci0KLSAgICBpZiAo
bV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKQotICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlk
ZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwotfQotCi12b2lkIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjplbnRlcmVkRnVsbHNjcmVlbigpCi17Ci0gICAgbV9pc0Z1
bGxzY3JlZW4gPSB0cnVlOwotCi0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJl
YW0oKSkgewotICAgICAgICBtX3NlZWtCYWNrQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAgIG1fc2Vl
a0ZvcndhcmRCdXR0b24tPmhpZGUoKTsKLSAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNob3coKTsK
LSAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygpOwotICAgICAgICBtX3NlZWtGb3J3YXJk
QnV0dG9uLT5zaG93KCk7Ci0gICAgICAgIG1fcmV3aW5kQnV0dG9uLT5oaWRlKCk7Ci0gICAgICAg
IG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgpOwotICAgIH0KLQotICAgIG1fcGFuZWwt
PnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKLSAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNldElzRnVs
bHNjcmVlbih0cnVlKTsKLQotICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgp
KQotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVz
KHRydWUpOwotCi0gICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLX0KLQot
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6ZXhpdGVkRnVsbHNjcmVlbigpCi17Ci0gICAg
bV9pc0Z1bGxzY3JlZW4gPSBmYWxzZTsKLQotICAgIC8vICJzaG93IiBhY3R1YWxseSBtZWFucyBy
ZW1vdmFsIG9mIGRpc3BsYXk6bm9uZSBzdHlsZSwgc28gd2UgYXJlIGp1c3QgY2xlYXJpbmcgc3R5
bGVzCi0gICAgLy8gd2hlbiBleGl0aW5nIGZ1bGxzY3JlZW4uCi0gICAgLy8gRklYTUU6IENsYXJp
ZnkgbmFtaW5nIG9mIHNob3cvaGlkZSA8aHR0cDovL3dlYmtpdC5vcmcvYi81ODE1Nz4KLSAgICBt
X3Jld2luZEJ1dHRvbi0+c2hvdygpOwotICAgIG1fc2Vla0JhY2tCdXR0b24tPnNob3coKTsKLSAg
ICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zaG93KCk7Ci0gICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0
dG9uLT5zaG93KCk7Ci0KLSAgICBtX3BhbmVsLT5zZXRDYW5CZURyYWdnZWQoZmFsc2UpOwotICAg
IG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKLQotICAgIC8vIFdl
IHdpbGwga2VlcCB1c2luZyB0aGUgcGFuZWwsIGJ1dCB3ZSB3YW50IGl0IHRvIGdvIGJhY2sgdG8g
dGhlIHN0YW5kYXJkIHBvc2l0aW9uLgotICAgIC8vIFRoaXMgd2lsbCBtYXR0ZXIgcmlnaHQgYXdh
eSBiZWNhdXNlIHdlIHVzZSB0aGUgcGFuZWwgZXZlbiB3aGVuIG5vdCBmdWxsc2NyZWVuLgotICAg
IC8vIEFuZCBpZiB3ZSByZWVudGVyIGZ1bGxzY3JlZW4gd2UgYWxzbyB3YW50IHRoZSBwYW5lbCBp
biB0aGUgc3RhbmRhcmQgcG9zaXRpb24uCi0gICAgbV9wYW5lbC0+cmVzZXRQb3NpdGlvbigpOwot
Ci0gICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOyAgICAKLX0KLQotdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvd1ZvbHVtZVNsaWRlcigpCi17Ci0gICAgaWYgKCFt
X21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
ci0+c2hvdygpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp0b2dnbGVDbG9z
ZWRDYXB0aW9uVHJhY2tMaXN0KCkKLXsKLSAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXND
bG9zZWRDYXB0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9jbG9zZWRDYXB0
aW9uc0NvbnRhaW5lcikgewotICAgICAgICBpZiAobV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+
aXNTaG93aW5nKCkpCi0gICAgICAgICAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5oaWRl
KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXIt
PnNob3coKTsKLSAgICB9Ci19Ci0KLWJvb2wgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3Vs
ZEhpZGVDb250cm9scygpCi17Ci0gICAgcmV0dXJuICFtX3BhbmVsLT5ob3ZlcmVkKCk7Ci19Ci0K
LWJvb2wgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNvbnRhaW5zUmVsYXRlZFRhcmdldChFdmVu
dCogZXZlbnQpCi17Ci0gICAgaWYgKCFldmVudC0+aXNNb3VzZUV2ZW50KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IHN0YXRpY19jYXN0
PE1vdXNlRXZlbnQqPihldmVudCktPnJlbGF0ZWRUYXJnZXQoKTsKLSAgICBpZiAoIXJlbGF0ZWRU
YXJnZXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29udGFpbnMocmVsYXRl
ZFRhcmdldC0+dG9Ob2RlKCkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICBNZWRpYUNvbnRyb2xzOjpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLQotICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgewotICAgICAgICBpZiAoIWNvbnRhaW5zUmVsYXRl
ZFRhcmdldChldmVudCkpIHsKLSAgICAgICAgICAgIG1faXNNb3VzZU92ZXJDb250cm9scyA9IHRy
dWU7Ci0gICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5jYW5QbGF5KCkpIHsKLSAg
ICAgICAgICAgICAgICBtYWtlT3BhcXVlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNob3VsZEhp
ZGVDb250cm9scygpKQotICAgICAgICAgICAgICAgICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29u
dHJvbHNUaW1lcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KSB7Ci0gICAgICAgIGlm
ICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgewotICAgICAgICAgICAgbV9pc01vdXNl
T3ZlckNvbnRyb2xzID0gZmFsc2U7Ci0gICAgICAgICAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KSB7Ci0gICAgICAgIGlmIChtX2lzRnVsbHNjcmVl
bikgewotICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgYSBtb3VzZSBtb3ZlIGluIGZ1bGxzY3Jl
ZW4gbW9kZSwgc2hvdyB0aGUgbWVkaWEgY29udHJvbHMsIGFuZCBzdGFydCBhIHRpbWVyCi0gICAg
ICAgICAgICAvLyB0aGF0IHdpbGwgaGlkZSB0aGUgbWVkaWEgY29udHJvbHMgYWZ0ZXIgYSAzIHNl
Y29uZHMgd2l0aG91dCBhIG1vdXNlIG1vdmUuCi0gICAgICAgICAgICBtYWtlT3BhcXVlKCk7Ci0g
ICAgICAgICAgICBpZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkpCi0gICAgICAgICAgICAgICAgc3Rh
cnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xz
VGltZXIoKQotewotICAgIGlmICghbV9pc0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lci5zdGFydE9uZVNob3QodGltZVdp
dGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMpOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1l
cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4qKQotewotICAgIGlmIChtX21lZGlhQ29udHJvbGxl
ci0+cGF1c2VkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIW1faXNGdWxsc2Ny
ZWVuKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKCFzaG91bGRIaWRlQ29udHJvbHMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNl
TW92ZXModHJ1ZSk7Ci0KLSAgICBtYWtlVHJhbnNwYXJlbnQoKTsKLX0KLQotdm9pZCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6c3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpCi17Ci0g
ICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIuc3RvcCgpOwotfQotCi0jaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlVGV4dFRy
YWNrRGlzcGxheSgpCi17Ci0gICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50PiB0ZXh0RGlzcGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVy
ID0gdGV4dERpc3BsYXlDb250YWluZXIuZ2V0KCk7Ci0KLSAgICAvLyBJbnNlcnQgaXQgYmVmb3Jl
IHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQgc28gaXQgYWx3YXlzIGRpc3BsYXlzIGJlaGlu
ZCB0aGUgY29udHJvbHMuCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBpbnNlcnRCZWZvcmUo
dGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX3BhbmVsLCBlYywgdHJ1ZSk7Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3dUZXh0VHJhY2tEaXNwbGF5KCkKLXsK
LSAgICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFj
a0Rpc3BsYXkoKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zaG93KCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmhpZGVUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAg
ICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rp
c3BsYXkoKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5oaWRlKCk7Ci19Ci0KLXZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKQotewotICAg
IGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlz
cGxheSgpOwotCi0gICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOwot
Ci19Ci0jZW5kaWYKLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiBpZDsKLX0KLQotdm9pZCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCi17Ci0gICAgLy8gV2Ugb25s
eSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBu
b3JtYWwKLSAgICAvLyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2Fy
ZSBvZiBpdC4KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKQotICAgICAgICBt
X3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDY3MzliZWE1YWVjODY5ZGEwN2MyNzRhZmM4ZDFhYTVjYzQyMGJhOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYUNvbnRyb2xS
b290RWxlbWVudF9oCi0jZGVmaW5lIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50X2gKLQotI2lmIEVO
QUJMRShWSURFTykKLQotI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTElucHV0RWxlbWVu
dDsKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBFdmVudDsKLWNsYXNzIE1lZGlhQ29u
dHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OwotY2xhc3MgTWVk
aWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnND
b250YWluZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RF
bGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDsKLWNs
YXNzIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVS
ZW1haW5pbmdEaXNwbGF5RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDsKLWNsYXNz
IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFN0YXR1
c0Rpc3BsYXlFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50OwotY2xhc3MgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OwotY2xhc3MgTWVk
aWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sTXV0
ZUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Owot
Y2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50
OwotY2xhc3MgTWVkaWFQbGF5ZXI7Ci0KLWNsYXNzIFJlbmRlckJveDsKLWNsYXNzIFJlbmRlck1l
ZGlhOwotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotY2xhc3MgTWVkaWFDb250cm9sVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlF
bGVtZW50OwotI2VuZGlmCi0KLWNsYXNzIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbHMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIC8vIE1lZGlhQ29udHJv
bHMgaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlKik7Ci0KLSAgICB2b2lkIHNob3coKTsKLSAgICB2b2lkIGhpZGUoKTsK
LSAgICB2b2lkIG1ha2VPcGFxdWUoKTsKLSAgICB2b2lkIG1ha2VUcmFuc3BhcmVudCgpOwotCi0g
ICAgdm9pZCByZXNldCgpOwotCi0gICAgdm9pZCBwbGF5YmFja1Byb2dyZXNzZWQoKTsKLSAgICB2
b2lkIHBsYXliYWNrU3RhcnRlZCgpOwotICAgIHZvaWQgcGxheWJhY2tTdG9wcGVkKCk7Ci0KLSAg
ICB2b2lkIGNoYW5nZWRNdXRlKCk7Ci0gICAgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7Ci0KLSAgICB2
b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0ZWRGdWxsc2NyZWVuKCk7Ci0K
LSAgICB2b2lkIHJlcG9ydGVkRXJyb3IoKTsKLSAgICB2b2lkIGxvYWRlZE1ldGFkYXRhKCk7Ci0g
ICAgdm9pZCBjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7Ci0KLSAgICB2b2lkIHNo
b3dWb2x1bWVTbGlkZXIoKTsKLSAgICB2b2lkIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgdm9p
ZCB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7Ci0KLSAgICB2b2lkIHRvZ2dsZUNsb3NlZENhcHRpb25U
cmFja0xpc3QoKTsKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2b2lkIGNyZWF0ZVRl
eHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIHNob3dUZXh0VHJhY2tEaXNwbGF5KCk7Ci0gICAg
dm9pZCBoaWRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlz
cGxheSgpOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCk7
Ci0KLSAgICB2b2lkIGJ1ZmZlcmluZ1Byb2dyZXNzZWQoKTsKLQotICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQot
Ci1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KERvY3VtZW50Kik7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZvaWQgaGlk
ZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ+Kik7Ci0gICAgdm9pZCBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAg
IHZvaWQgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotCi0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0KLSAgICBib29sIGNv
bnRhaW5zUmVsYXRlZFRhcmdldChFdmVudCopOwotCi0gICAgTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlKiBtX21lZGlhQ29udHJvbGxlcjsKLQotICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVs
ZW1lbnQqIG1fcmV3aW5kQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
KiBtX3BsYXlCdXR0b247Ci0gICAgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVs
ZW1lbnQqIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudCogbV9zdGF0dXNEaXNwbGF5OwotICAgIE1lZGlhQ29udHJvbEN1cnJlbnRU
aW1lRGlzcGxheUVsZW1lbnQqIG1fY3VycmVudFRpbWVEaXNwbGF5OwotICAgIE1lZGlhQ29udHJv
bFRpbWVsaW5lRWxlbWVudCogbV90aW1lbGluZTsKLSAgICBNZWRpYUNvbnRyb2xUaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQqIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXk7Ci0gICAgTWVkaWFDb250
cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KiBtX3RpbWVsaW5lQ29udGFpbmVyOwotICAgIE1l
ZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudCogbV9zZWVrQmFja0J1dHRvbjsKLSAgICBN
ZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQqIG1fc2Vla0ZvcndhcmRCdXR0b247
Ci0gICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KiBtX3Rv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
VHJhY2tMaXN0RWxlbWVudCogbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdDsKLSAgICBNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQqIG1fY2xvc2VkQ2FwdGlvbnNDb250
YWluZXI7Ci0gICAgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCogbV9wYW5lbE11
dGVCdXR0b247Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCogbV92b2x1bWVT
bGlkZXI7Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQqIG1f
dm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcjsKLSAgICBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuQnV0dG9uOwotICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5NaW5Wb2x1
bWVCdXR0b247Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQq
IG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcjsKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWF4QnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uOwotICAgIE1l
ZGlhQ29udHJvbFBhbmVsRWxlbWVudCogbV9wYW5lbDsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCogbV90ZXh0RGlzcGxh
eUNvbnRhaW5lcjsKLSNlbmRpZgotICAgIFRpbWVyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBt
X2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcjsKLSAgICBib29sIG1faXNNb3VzZU92ZXJDb250
cm9sczsKLSAgICBib29sIG1faXNGdWxsc2NyZWVuOwotfTsKLQotfQotCi0jZW5kaWYKLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9v
dEVsZW1lbnRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzI1OWZkZDNiMDVjZGE4MTdiY2Y1MzgyMzQxNzUwMGVhMmY1YjllNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtLmgiCi0KLSNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgotI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIgotI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNpbmNsdWRl
ICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJUZXh0LmgiCi0K
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCi0jZW5k
aWYKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgY29uc3QgZG91YmxlIHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRy
b2xzID0gMjsKLQotTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNv
bnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
TWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkKLXsKLX0KLQotTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50OjpkaXNwbGF5VHlwZSgp
IGNvbnN0Ci17Ci0gICAgLy8gTWFwcGluZyBvbnRvIHNhbWUgTWVkaWFDb250cm9sRWxlbWVudFR5
cGUgYXMgcGFuZWwgZWxlbWVudCwgc2luY2UgaXQgaGFzIHNpbWlsYXIgcHJvcGVydGllcy4KLSAg
ICByZXR1cm4gTWVkaWFDb250cm9sc1BhbmVsOwotfQotCi1NZWRpYUNvbnRyb2xQYW5lbEVuY2xv
c3VyZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoZG9j
dW1lbnQpCi17Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVt
ZW50PiBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQYW5lbEVu
Y2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRp
YUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRp
YS1jb250cm9scy1lbmNsb3N1cmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi1NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCi0gICAgLCBtX21lZGlhQ29udHJvbGxlcigwKQot
ICAgICwgbV9wbGF5QnV0dG9uKDApCi0gICAgLCBtX2N1cnJlbnRUaW1lRGlzcGxheSgwKQotICAg
ICwgbV9kdXJhdGlvbkRpc3BsYXkoMCkKLSAgICAsIG1fdGltZWxpbmUoMCkKLSAgICAsIG1fcGFu
ZWxNdXRlQnV0dG9uKDApCi0gICAgLCBtX3ZvbHVtZVNsaWRlcigwKQotICAgICwgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbigwKQotICAgICwgbV9mdWxsc2NyZWVuQnV0dG9uKDApCi0gICAg
LCBtX3BhbmVsKDApCi0gICAgLCBtX2VuY2xvc3VyZSgwKQotI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLSAgICAsIG1fdGV4dERpc3BsYXlDb250YWluZXIoMCkKLSNlbmRpZgotICAgICwgbV9oaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW06OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKQotICAgICwgbV9pc01vdXNl
T3ZlckNvbnRyb2xzKGZhbHNlKQotICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2UpCi17Ci19Ci0K
LS8vIE1lZGlhQ29udHJvbHM6OmNyZWF0ZSgpIGZvciBBbmRyb2lkIGlzIGRlZmluZWQgaW4gTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuY3BwLgotI2lmICFPUyhBTkRST0lE
KQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtOjpjcmVhdGUoZG9jdW1lbnQpOwotfQotI2VuZGlmCi0KLVBhc3NSZWZQdHI8TWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW0+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW0oZG9jdW1lbnQpKTsKLQotICAgIGlmIChjb250cm9scy0+aW5pdGlhbGl6ZUNvbnRy
b2xzKGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKLQotICAg
IHJldHVybiAwOwotfQotCi1ib29sIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06Omlu
aXRpYWxpemVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgLy8gQ3JlYXRlIGFu
IGVuY2xvc2luZyBlbGVtZW50IGZvciB0aGUgcGFuZWwgc28gd2UgY2FuIHZpc3VhbGx5IG9mZnNl
dCB0aGUgY29udHJvbHMgY29ycmVjdGx5LgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVu
Y2xvc3VyZUVsZW1lbnQ+IGVuY2xvc3VyZSA9IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5
QnV0dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fcGxheUJ1dHRvbiA9IHBsYXlCdXR0b24uZ2V0KCk7
Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50LCB0aGlzKTsKLSAgICBtX3RpbWVsaW5lID0gdGltZWxpbmUu
Z2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9
IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7Ci0g
ICAgbV9jdXJyZW50VGltZURpc3BsYXktPmhpZGUoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
Y3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5p
bmdEaXNwbGF5RWxlbWVudD4gZHVyYXRpb25EaXNwbGF5ID0gTWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fZHVyYXRpb25EaXNw
bGF5ID0gZHVyYXRpb25EaXNwbGF5LmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChkdXJh
dGlvbkRpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudD4gcGFuZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50LCB0aGlzKTsKLSAgICBtX3BhbmVsTXV0ZUJ1dHRvbiA9IHBhbmVs
TXV0ZUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7Ci0gICAgbV92b2x1bWVTbGlkZXItPnNldENs
ZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbih0cnVlKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
c2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xv
c2VkQ2FwdGlvbmluZygpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQsIHRoaXMpOwotICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gdG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7Ci0gICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICAgICAg
aWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbHNjcmVlbkJ1dHRvbiA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMp
OwotICAgIG1fZnVsbHNjcmVlbkJ1dHRvbiA9IGZ1bGxzY3JlZW5CdXR0b24uZ2V0KCk7Ci0gICAg
cGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3BhbmVsID0gcGFu
ZWwuZ2V0KCk7Ci0gICAgZW5jbG9zdXJlLT5hcHBlbmRDaGlsZChwYW5lbC5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fZW5j
bG9zdXJlID0gZW5jbG9zdXJlLmdldCgpOwotICAgIGFwcGVuZENoaWxkKGVuY2xvc3VyZS5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW06OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xs
ZXIpCi17Ci0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0KLSAgICBpZiAo
bV9wbGF5QnV0dG9uKQotICAgICAgICBtX3BsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKLSAgICBpZiAobV9jdXJyZW50VGltZURpc3BsYXkpCi0gICAgICAgIG1fY3Vy
cmVudFRpbWVEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYg
KG1fZHVyYXRpb25EaXNwbGF5KQotICAgICAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0TWVkaWFD
b250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3RpbWVsaW5lKQotICAgICAgICBtX3Rp
bWVsaW5lLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fcGFuZWxN
dXRlQnV0dG9uKQotICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVy
KGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVT
bGlkZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbikKLSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX2Z1bGxzY3JlZW5C
dXR0b24pCi0gICAgICAgIG1fZnVsbHNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOwotICAgIGlmIChtX3BhbmVsKQotICAgICAgICBtX3BhbmVsLT5zZXRNZWRpYUNv
bnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fZW5jbG9zdXJlKQotICAgICAgICBtX2Vu
Y2xvc3VyZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotI2lmIEVOQUJMRShWSURF
T19UUkFDSykKLSAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgbV90ZXh0
RGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotI2VuZGlm
Ci0gICAgcmVzZXQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
OjpzaG93KCkKLXsKLSAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKLSAgICBtX3Bh
bmVsLT5zaG93KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
aGlkZSgpCi17Ci0gICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQoZmFsc2UpOwotICAgIG1fcGFu
ZWwtPmhpZGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpt
YWtlT3BhcXVlKCkKLXsKLSAgICBtX3BhbmVsLT5tYWtlT3BhcXVlKCk7Ci19Ci0KLXZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6bWFrZVRyYW5zcGFyZW50KCkKLXsKLSAgICBt
X3BhbmVsLT5tYWtlVHJhbnNwYXJlbnQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtOjpyZXNldCgpCi17Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVN0YXR1
c0Rpc3BsYXkoKTsKLQotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1
cmF0aW9uKCk7Ci0gICAgbV90aW1lbGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotICAgIG1f
dGltZWxpbmUtPnNob3coKTsKLQotICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1
cmF0aW9uKTsKLQotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpKTsKLSAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwotCi0gICAgbV9wYW5l
bE11dGVCdXR0b24tPnNob3coKTsKLQotICAgIGlmIChtX3ZvbHVtZVNsaWRlcikgewotICAgICAg
ICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQotICAgICAgICAgICAgbV92b2x1
bWVTbGlkZXItPmhpZGUoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3ZvbHVtZVNs
aWRlci0+c2hvdygpOwotICAgICAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21l
ZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1f
dG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pIHsKLSAgICAgICAgaWYgKG1fbWVkaWFDb250cm9s
bGVyLT5oYXNDbG9zZWRDYXB0aW9ucygpKQotICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbi0+c2hvdygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7Ci0gICAgfQotCi0gICAgaWYgKG1fbWVkaWFDb250
cm9sbGVyLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlk
ZW8oKSkKLSAgICAgICAgbV9mdWxsc2NyZWVuQnV0dG9uLT5zaG93KCk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2Z1bGxzY3JlZW5CdXR0b24tPmhpZGUoKTsKLSAgICBtYWtlT3BhcXVlKCk7Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJhY2tTdGFydGVkKCkK
LXsKLSAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgbV90aW1lbGlu
ZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotICAgIG1f
Y3VycmVudFRpbWVEaXNwbGF5LT5zaG93KCk7Ci0gICAgbV9kdXJhdGlvbkRpc3BsYXktPmhpZGUo
KTsKLSAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwotCi0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQot
ICAgICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCi17Ci0g
ICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1l
KCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0KLSAgICBpZiAoIW1faXNNb3VzZU92ZXJD
b250cm9scyAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlkZW8oKSkKLSAgICAgICAgbWFrZVRy
YW5zcGFyZW50KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
cGxheWJhY2tTdG9wcGVkKCkKLXsKLSAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBl
KCk7Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgbWFrZU9wYXF1ZSgpOwot
Ci0gICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0ZVRpbWVEaXNwbGF5KCkKLXsKLSAgICBm
bG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBk
dXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotCi0gICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIEFmdGVyIHNlZWssIGhpZGUgZHVyYXRpb24gZGlzcGxheSBhbmQgc2hvdyBjdXJy
ZW50IHRpbWUuCi0gICAgaWYgKG5vdyA+IDApIHsKLSAgICAgICAgbV9jdXJyZW50VGltZURpc3Bs
YXktPnNob3coKTsKLSAgICAgICAgbV9kdXJhdGlvbkRpc3BsYXktPmhpZGUoKTsKLSAgICB9Ci0K
LSAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0aW1lLgotICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50
aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVj
KTsKLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cmVwb3J0ZWRFcnJvcigpCi17
Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7Ci0gICAgbV92
b2x1bWVTbGlkZXItPmhpZGUoKTsKLSAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bikKLSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwotICAgIG1f
ZnVsbHNjcmVlbkJ1dHRvbi0+aGlkZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Q2hyb21pdW06OnVwZGF0ZVN0YXR1c0Rpc3BsYXkoKQotewotfQotCi1ib29sIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnNob3VsZEhpZGVDb250cm9scygpCi17Ci0gICAgcmV0
dXJuICFtX3BhbmVsLT5ob3ZlcmVkKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bTo6bG9hZGVkTWV0YWRhdGEoKQotewotICAgIHJlc2V0KCk7Ci19Ci0KLWJvb2wg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2
ZW50KiBldmVudCkKLXsKLSAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gc3RhdGljX2Nh
c3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+cmVsYXRlZFRhcmdldCgpOwotICAgIGlmICghcmVsYXRl
ZFRhcmdldCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb250YWlucyhyZWxh
dGVkVGFyZ2V0LT50b05vZGUoKSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgTWVkaWFD
b250cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci0KLSAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsKLSAgICAgICAgaWYgKCFjb250
YWluc1JlbGF0ZWRUYXJnZXQoZXZlbnQpKSB7Ci0gICAgICAgICAgICBtX2lzTW91c2VPdmVyQ29u
dHJvbHMgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+Y2FuUGxh
eSgpKSB7Ci0gICAgICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOwotICAgICAgICAgICAgICAgIGlm
IChzaG91bGRIaWRlQ29udHJvbHMoKSkKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRIaWRlRnVs
bHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCkgewot
ICAgICAgICBpZiAoIWNvbnRhaW5zUmVsYXRlZFRhcmdldChldmVudCkpIHsKLSAgICAgICAgICAg
IG1faXNNb3VzZU92ZXJDb250cm9scyA9IGZhbHNlOwotICAgICAgICAgICAgc3RvcEhpZGVGdWxs
c2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgewotICAgICAgICBpZiAobV9p
c0Z1bGxzY3JlZW4pIHsKLSAgICAgICAgICAgIC8vIFdoZW4gd2UgZ2V0IGEgbW91c2UgbW92ZSBp
biBmdWxsc2NyZWVuIG1vZGUsIHNob3cgdGhlIG1lZGlhIGNvbnRyb2xzLCBhbmQgc3RhcnQgYSB0
aW1lcgotICAgICAgICAgICAgLy8gdGhhdCB3aWxsIGhpZGUgdGhlIG1lZGlhIGNvbnRyb2xzIGFm
dGVyIGEgMiBzZWNvbmRzIHdpdGhvdXQgYSBtb3VzZSBtb3ZlLgotICAgICAgICAgICAgbWFrZU9w
YXF1ZSgpOwotICAgICAgICAgICAgaWYgKHNob3VsZEhpZGVDb250cm9scygpKQotICAgICAgICAg
ICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIGlmICghbV9pc0Z1bGxzY3JlZW4pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyLnN0YXJ0
T25lU2hvdCh0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk7Ci19
Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6aGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4q
KQotewotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+cGF1c2VkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghbV9pc0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghc2hvdWxkSGlkZUNvbnRyb2xzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1ha2VUcmFu
c3BhcmVudCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnN0
b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIG1faGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtOjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCkKLXsKLSAgICBpZiAobV90
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikKLSAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtOjpjaGFuZ2VkTXV0ZSgpCi17Ci0gICAgbV9wYW5lbE11dGVCdXR0b24t
PmNoYW5nZWRNdXRlKCk7Ci0KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCkpCi0g
ICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUoMCk7Ci0gICAgZWxzZQotICAgICAgICBt
X3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci19
Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y2hhbmdlZFZvbHVtZSgp
Ci17Ci0gICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9s
dW1lKCkpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmVudGVy
ZWRGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IHRydWU7Ci0gICAgbV9mdWxs
c2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7Ci0gICAgc3RhcnRIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtOjpleGl0ZWRGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNl
OwotICAgIG1fZnVsbHNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKLSAgICBz
dG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bTo6c2hvd1ZvbHVtZVNsaWRlcigpCi17Ci0gICAgaWYgKCFtX21l
ZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92b2x1
bWVTbGlkZXItPnNob3coKTsKLX0KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLXZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpCi17
Ci0gICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0RGlzcGxh
eUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCgpKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERpc3BsYXlD
b250YWluZXIuZ2V0KCk7Ci0KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCi0gICAgICAgIG1f
dGV4dERpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihtX21lZGlhQ29udHJvbGxl
cik7Ci0KLSAgICAvLyBJbnNlcnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1l
bnQgc28gaXQgYWx3YXlzIGRpc3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMuCi0gICAgaW5zZXJ0
QmVmb3JlKHRleHREaXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgbV9lbmNsb3N1cmUsIEFTU0VS
VF9OT19FWENFUFRJT04sIHRydWUpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW06OnNob3dUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAoIW1fdGV4dERpc3Bs
YXlDb250YWluZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICBtX3Rl
eHREaXNwbGF5Q29udGFpbmVyLT5zaG93KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bTo6aGlkZVRleHRUcmFja0Rpc3BsYXkoKQotewotICAgIGlmICghbV90ZXh0
RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAg
IG1fdGV4dERpc3BsYXlDb250YWluZXItPmhpZGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtOjp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAo
IW1fdGV4dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXko
KTsKLQotICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZURpc3BsYXkoKTsKLX0KLSNl
bmRpZgotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW06OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLXZvaWQgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCi17Ci0gICAg
Ly8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQs
IGR1cmluZyBub3JtYWwKLSAgICAvLyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxs
IHRha2UgY2FyZSBvZiBpdC4KLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKQot
ICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVu
dFRpbWUoKSk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMjA2MTIzMzI2Nzc4YzhlNTg3Nzc4OTA1ODc2NTIy
MTQ0MGQ4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtX2gKLSNkZWZpbmUg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bV9oCi0KLSNpZiBFTkFCTEUoVklERU8pCi0K
LSNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgotI2luY2x1ZGUgIk1lZGlhQ29udHJv
bHMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBIVE1MSW5wdXRFbGVtZW50OwotY2xhc3MgRXZlbnQ7Ci1j
bGFzcyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50
OwotY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OwotY2xhc3MgTWVkaWFD
b250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OwotY2xh
c3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sQ2hyb21pdW1F
bmNsb3N1cmVFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOwotY2xhc3Mg
TWVkaWFQbGF5ZXI7Ci0KLWNsYXNzIFJlbmRlckJveDsKLWNsYXNzIFJlbmRlck1lZGlhOwotCi0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50Owot
I2VuZGlmCi0KLWNsYXNzIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudCA6IHB1
YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBNZWRp
YUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7
Ci19OwotCi1jbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQgOiBwdWJsaWMg
TWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCopOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFBhbmVsRW5j
bG9zdXJlRWxlbWVudChEb2N1bWVudCopOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsKLQotY2xhc3MgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBjcmVhdGUoRG9j
dW1lbnQqKTsKLQotICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqKTsK
LQotICAgIHZvaWQgc2hvdygpOwotICAgIHZvaWQgaGlkZSgpOwotICAgIHZvaWQgbWFrZU9wYXF1
ZSgpOwotICAgIHZvaWQgbWFrZVRyYW5zcGFyZW50KCk7Ci0KLSAgICB2b2lkIHJlc2V0KCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHBsYXliYWNrU3RhcnRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0b3BwZWQoKTsK
LQotICAgIHZvaWQgY2hhbmdlZE11dGUoKTsKLSAgICB2b2lkIGNoYW5nZWRWb2x1bWUoKTsKLQot
ICAgIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKLSAgICB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4o
KTsKLQotICAgIHZvaWQgcmVwb3J0ZWRFcnJvcigpOwotICAgIHZvaWQgbG9hZGVkTWV0YWRhdGEo
KTsKLSAgICB2b2lkIGNoYW5nZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHkoKTsKLQotICAgIHZv
aWQgc2hvd1ZvbHVtZVNsaWRlcigpOwotICAgIHZvaWQgdXBkYXRlVGltZURpc3BsYXkoKTsKLSAg
ICB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICB2b2lkIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIHNob3dUZXh0VHJh
Y2tEaXNwbGF5KCk7Ci0gICAgdm9pZCBoaWRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQg
dXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotI2VuZGlmCi0KLSAgICB2b2lkIGJ1ZmZlcmluZ1By
b2dyZXNzZWQoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKTsKLQot
cHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0o
RG9jdW1lbnQqKTsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBvdGhlcndp
c2UgcmV0dXJuIGZhbHNlLgotICAgIGJvb2wgaW5pdGlhbGl6ZUNvbnRyb2xzKERvY3VtZW50Kik7
Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKLSAgICB2b2lkIGhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKFRpbWVyPE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0+Kik7Ci0gICAgdm9pZCBzdGFydEhpZGVGdWxsc2Ny
ZWVuQ29udHJvbHNUaW1lcigpOwotICAgIHZvaWQgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNU
aW1lcigpOwotCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7Ci0KLSAgICBib29sIGNvbnRhaW5zUmVsYXRlZFRhcmdldChFdmVudCopOwotCi0g
ICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJvbGxlcjsKLQotICAgIE1l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KiBtX3BsYXlCdXR0b247Ci0gICAgTWVkaWFDb250
cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9jdXJyZW50VGltZURpc3BsYXk7Ci0gICAg
TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBtX2R1cmF0aW9uRGlzcGxh
eTsKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQqIG1fdGltZWxpbmU7Ci0gICAgTWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCogbV9wYW5lbE11dGVCdXR0b247Ci0gICAg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCogbV92b2x1bWVTbGlkZXI7Ci0gICAgTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KiBtX3RvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
KiBtX2Z1bGxzY3JlZW5CdXR0b247Ci0gICAgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KiBtX3Bh
bmVsOwotICAgIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudCogbV9lbmNsb3N1cmU7
Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudCogbV90ZXh0RGlzcGxheUNvbnRhaW5lcjsKLSNlbmRpZgotCi0gICAgVGlt
ZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gbV9oaWRlRnVsbHNjcmVlbkNvbnRy
b2xzVGltZXI7Ci0gICAgYm9vbCBtX2lzTW91c2VPdmVyQ29udHJvbHM7Ci0gICAgYm9vbCBtX2lz
RnVsbHNjcmVlbjsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFu
ZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
ZmU4NDhkYzgxZjY4M2IzZDc1MjVkNzY5NjQyNTBmZWFhMTVhZmRkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYg
RU5BQkxFKFZJREVPKQotI2luY2x1ZGUgIk1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1B
bmRyb2lkLmgiCi0KLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLU1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpNZWRp
YUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAg
OiBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0K
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ+IE1lZGlhQ29u
dHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVs
ZW1lbnQoZG9jdW1lbnQpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xP
dmVybGF5RW5jbG9zdXJlRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLW92ZXJsYXktZW5jbG9zdXJlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwotICAgIHJldHVybiBpZDsKLX0KLQotTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bUFuZHJvaWQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkKERvY3VtZW50
KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0oZG9jdW1l
bnQpCi0gICAgLCBtX292ZXJsYXlQbGF5QnV0dG9uKDApCi0gICAgLCBtX292ZXJsYXlFbmNsb3N1
cmUoMCkKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtQW5kcm9pZDo6Y3JlYXRlKGRvY3VtZW50KTsKLX0KLQotUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZD4gTWVkaWFDb250cm9sUm9v
dEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0g
ICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZD4gY29udHJvbHMgPSBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQoZG9jdW1lbnQp
KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sT3Zl
cmxheUVuY2xvc3VyZUVsZW1lbnQ+IG92ZXJsYXlFbmNsb3N1cmUgPSBNZWRpYUNvbnRyb2xPdmVy
bGF5RW5jbG9zdXJlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50PiBvdmVybGF5UGxheUJ1dHRvbiA9IE1lZGlh
Q29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBj
b250cm9scy0+bV9vdmVybGF5UGxheUJ1dHRvbiA9IG92ZXJsYXlQbGF5QnV0dG9uLmdldCgpOwot
ICAgIG92ZXJsYXlFbmNsb3N1cmUtPmFwcGVuZENoaWxkKG92ZXJsYXlQbGF5QnV0dG9uLnJlbGVh
c2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBj
b250cm9scy0+bV9vdmVybGF5RW5jbG9zdXJlID0gb3ZlcmxheUVuY2xvc3VyZS5nZXQoKTsKLSAg
ICBjb250cm9scy0+YXBwZW5kQ2hpbGQob3ZlcmxheUVuY2xvc3VyZS5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGNvbnRyb2xz
LT5pbml0aWFsaXplQ29udHJvbHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gY29udHJvbHMu
cmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWQ6OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UqIGNvbnRyb2xsZXIpCi17Ci0gICAgaWYgKG1fb3ZlcmxheVBsYXlCdXR0b24pCi0g
ICAgICAgIG1fb3ZlcmxheVBsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKLSAgICBpZiAobV9vdmVybGF5RW5jbG9zdXJlKQotICAgICAgICBtX292ZXJsYXlFbmNsb3N1
cmUtPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtOjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQ6OnBsYXliYWNrU3RhcnRl
ZCgpCi17Ci0gICAgbV9vdmVybGF5UGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAg
ICBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpwbGF5YmFja1N0YXJ0ZWQoKTsKLX0K
LQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZDo6cGxheWJhY2tT
dG9wcGVkKCkKLXsKLSAgICBtX292ZXJsYXlQbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgp
OwotICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnBsYXliYWNrU3RvcHBlZCgp
OwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNzc0ODNmOThlMjI4NjBjMzc1YTg1ODQ3
NTAwZTYxYTg0NGM3Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bUFuZHJvaWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkX2gKLSNkZWZp
bmUgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWRfaAotCi0jaWYgRU5BQkxF
KFZJREVPKQotCi0jaW5jbHVkZSAiTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0
dG9uRWxlbWVudDsKLQotY2xhc3MgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFDb250
cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KLWNsYXNzIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkIDogcHVibGljIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Q2hyb21pdW0gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkPiBjcmVhdGUoRG9jdW1lbnQqKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlKik7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXliYWNrU3RhcnRlZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBwbGF5YmFja1N0b3BwZWQoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZChEb2N1bWVudCopOwotCi0gICAgTWVkaWFD
b250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50KiBtX292ZXJsYXlQbGF5QnV0dG9uOwotICAg
IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KiBtX292ZXJsYXlFbmNsb3N1cmU7
Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggMmQwMDc5MjUyNDE3YWIzNWJjODM0MjdiZTFkMDZi
ODQzMjJlNDVhMC4uZjVhZGI0NDU3NGUwN2M4Nzk1OGRhOGYzMjNhYzY5ZGU5ZGNjNzg1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKQEAgLTI3LDIw
ICsyNywzOTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShWSURFTykKLQog
I2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKIAotI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcs
IGRvY3VtZW50KQorICAgICwgbV9tZWRpYUNvbnRyb2xsZXIoMCkKKyAgICAsIG1fcGFuZWwoMCkK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgLCBtX3RleHREaXNwbGF5Q29udGFpbmVyKDAp
CisjZW5kaWYKKyAgICAsIG1fcGxheUJ1dHRvbigwKQorICAgICwgbV9jdXJyZW50VGltZURpc3Bs
YXkoMCkKKyAgICAsIG1fdGltZWxpbmUoMCkKKyAgICAsIG1fcGFuZWxNdXRlQnV0dG9uKDApCisg
ICAgLCBtX3ZvbHVtZVNsaWRlcigwKQorICAgICwgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bigwKQorICAgICwgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCgwKQorICAgICwgbV9jbG9zZWRD
YXB0aW9uc0NvbnRhaW5lcigwKQorICAgICwgbV9mdWxsU2NyZWVuQnV0dG9uKDApCisgICAgLCBt
X2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sczo6aGlkZUZ1
bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpCisgICAgLCBtX2lzRnVsbHNjcmVlbihmYWxzZSkK
KyAgICAsIG1faXNNb3VzZU92ZXJDb250cm9scyhmYWxzZSkKK3sKK30KKwordm9pZCBNZWRpYUNv
bnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250
cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVyKQorICAg
ICAgICByZXR1cm47CisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAg
aWYgKG1fcGFuZWwpCisgICAgICAgIG1fcGFuZWwtPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKG1fdGV4dERpc3BsYXlDb250
YWluZXIpCisgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKKyNlbmRpZgorICAgIGlmIChtX3BsYXlCdXR0b24pCisgICAgICAgIG1f
cGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2N1
cnJlbnRUaW1lRGlzcGxheSkKKyAgICAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lbGluZSkKKyAgICAgICAgbV90
aW1lbGluZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3BhbmVs
TXV0ZUJ1dHRvbikKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlkZXIpCisgICAgICAgIG1fdm9sdW1l
U2xpZGVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b24pCisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9jbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdCkKKyAgICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC0+c2V0TWVk
aWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Nsb3NlZENhcHRpb25zQ29udGFp
bmVyKQorICAgICAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVsbFNjcmVlbkJ1dHRvbikKKyAgICAgICAgbV9m
dWxsU2NyZWVuQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sczo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsYXlC
dXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisKKyAgICB1cGRhdGVDdXJyZW50VGltZURpc3Bs
YXkoKTsKKworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7CisgICAgaWYgKGlzZmluaXRlKGR1cmF0aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25E
aXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkgeworICAgICAgICBtX3Rp
bWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fdGltZWxpbmUtPnNldFBv
c2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKKyAgICB9CisKKyAgICBp
ZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3du
RGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBt
X3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOworICAgIGVsc2UKKyAgICAgICAgbV9wYW5lbE11dGVC
dXR0b24tPmhpZGUoKTsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRlcikgeworICAgICAgICBpZiAo
IW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQorICAgICAgICAgICAgbV92b2x1bWVTbGlk
ZXItPmhpZGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3ZvbHVtZVNsaWRlci0+
c2hvdygpOworICAgICAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29u
dHJvbGxlci0+dm9sdW1lKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fdG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b24pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5o
YXNDbG9zZWRDYXB0aW9ucygpKQorICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbi0+c2hvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uLT5oaWRlKCk7CisgICAgfQorCisgICAgaWYgKG1fZnVsbFNjcmVlbkJ1dHRv
bikgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnN1cHBvcnRzRnVsbHNjcmVlbigp
ICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygpKQorICAgICAgICAgICAgbV9mdWxsU2Ny
ZWVuQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVsbFNjcmVl
bkJ1dHRvbi0+aGlkZSgpOworICAgIH0KKworICAgIG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xzOjpyZXBvcnRlZEVycm9yKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRl
QnV0dG9uUGFydCkpIHsKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKKyAgICAg
ICAgbV92b2x1bWVTbGlkZXItPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICAgICAg
bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fZnVsbFNj
cmVlbkJ1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uUGFydCkpCisgICAgICAgIG1fZnVsbFNjcmVl
bkJ1dHRvbi0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OmxvYWRlZE1ldGFkYXRh
KCkKK3sKKyAgICByZXNldCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnNob3coKQorewor
ICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAgIG1fcGFuZWwtPnNob3coKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlKCkKK3sKKyAgICBtX3BhbmVsLT5zZXRJc0Rp
c3BsYXllZChmYWxzZSk7CisgICAgbV9wYW5lbC0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbHM6Om1ha2VPcGFxdWUoKQoreworICAgIG1fcGFuZWwtPm1ha2VPcGFxdWUoKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQoKQoreworICAgIG1fcGFuZWwtPm1h
a2VUcmFuc3BhcmVudCgpOworfQorCitib29sIE1lZGlhQ29udHJvbHM6OnNob3VsZEhpZGVDb250
cm9scygpCit7CisgICAgcmV0dXJuICFtX3BhbmVsLT5ob3ZlcmVkKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sczo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCit7CisgICAgLy8gV2Ugb25seSBuZWVk
IHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwK
KyAgICAvLyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBp
dC4KKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKQorICAgICAgICBtX3RpbWVs
aW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sczo6cGxheWJhY2tTdGFydGVkKCkKK3sKKyAgICBtX3BsYXlCdXR0
b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9t
ZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlz
cGxheSgpOworCisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAgICBzdGFydEhpZGVGdWxs
c2NyZWVuQ29udHJvbHNUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNr
UHJvZ3Jlc3NlZCgpCit7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRy
b2xsZXItPmN1cnJlbnRUaW1lKCkpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOwor
CisgICAgaWYgKCFtX2lzTW91c2VPdmVyQ29udHJvbHMgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmhh
c1ZpZGVvKCkpCisgICAgICAgIG1ha2VUcmFuc3BhcmVudCgpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbHM6OnBsYXliYWNrU3RvcHBlZCgpCit7CisgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNw
bGF5VHlwZSgpOworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpKTsKKyAgICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKKyAgICBt
YWtlT3BhcXVlKCk7CisKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKK3sKKyAg
ICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKworICAgIFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1RpbWUobm93
KSwgZWMpOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93KTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpzaG93Vm9sdW1lU2xpZGVyKCkKIHsKKyAgICBpZiAo
IW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3ZvbHVtZVNsaWRlci0+c2hvdygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OmNoYW5nZWRN
dXRlKCkKK3sKKyAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+Y2hhbmdlZE11dGUoKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkVm9sdW1lKCkKK3sKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXIt
PnZvbHVtZSgpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkQ2xvc2VkQ2FwdGlv
bnNWaXNpYmlsaXR5KCkKK3sKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikK
KyAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUo
KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjp0b2dnbGVDbG9zZWRDYXB0aW9uVHJhY2tMaXN0
KCkKK3sKKyAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXNDbG9zZWRDYXB0aW9ucygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lcikgewor
ICAgICAgICBpZiAobV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+aXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5oaWRlKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPnNob3coKTsKKyAgICB9Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1bGxzY3JlZW4oKQoreworICAgIG1faXNG
dWxsc2NyZWVuID0gdHJ1ZTsKKyAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVl
bih0cnVlKTsKKworICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAg
ICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUp
OworCisgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xzOjpleGl0ZWRGdWxsc2NyZWVuKCkKK3sKKyAgICBtX2lzRnVsbHNjcmVlbiA9
IGZhbHNlOworICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsK
KyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgSFRNTERp
dkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KSB7CisgICAgICAgIGlmICghY29u
dGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgeworICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNv
bnRyb2xzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmNhblBs
YXkoKSkgeworICAgICAgICAgICAgICAgIG1ha2VPcGFxdWUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkpCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SGlkZUZ1
bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW91dEV2ZW50KSB7CisgICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2
ZW50KSkgeworICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gZmFsc2U7CisgICAg
ICAgICAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudCkgeworICAgICAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsKKyAg
ICAgICAgICAgIC8vIFdoZW4gd2UgZ2V0IGEgbW91c2UgbW92ZSBpbiBmdWxsc2NyZWVuIG1vZGUs
IHNob3cgdGhlIG1lZGlhIGNvbnRyb2xzLCBhbmQgc3RhcnQgYSB0aW1lcgorICAgICAgICAgICAg
Ly8gdGhhdCB3aWxsIGhpZGUgdGhlIG1lZGlhIGNvbnRyb2xzIGFmdGVyIGEgMyBzZWNvbmRzIHdp
dGhvdXQgYSBtb3VzZSBtb3ZlLgorICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOworICAgICAgICAg
ICAgaWYgKHNob3VsZEhpZGVDb250cm9scygpKQorICAgICAgICAgICAgICAgIHN0YXJ0SGlkZUZ1
bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xzPiopCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5wYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2lzRnVsbHNjcmVlbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRIaWRlQ29udHJvbHMoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1
ZSk7CisKKyAgICBtYWtlVHJhbnNwYXJlbnQoKTsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xzOjpz
dGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpCit7CisgICAgaWYgKCFtX2lzRnVsbHNj
cmVlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGlkZUZ1bGxz
Y3JlZW5Db250cm9sc1RpbWVyLnN0YXJ0T25lU2hvdChwYWdlLT50aGVtZSgpLT50aW1lV2l0aG91
dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scygpKTsKK30KKwordm9pZCBNZWRpYUNv
bnRyb2xzOjpzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCkKK3sKKyAgICBtX2hpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lci5zdG9wKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sczo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzIikpOwor
ICAgIHJldHVybiBpZDsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xzOjpjb250YWluc1JlbGF0ZWRU
YXJnZXQoRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghZXZlbnQtPmlzTW91c2VFdmVudCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQgPSBz
dGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5yZWxhdGVkVGFyZ2V0KCk7CisgICAgaWYg
KCFyZWxhdGVkVGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbnRh
aW5zKHJlbGF0ZWRUYXJnZXQtPnRvTm9kZSgpKTsKK30KKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKK3ZvaWQgTWVkaWFDb250cm9sczo6Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpCit7CisgICAg
aWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0RGlzcGxheUNvbnRh
aW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKKyAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERpc3BsYXlDb250YWlu
ZXIuZ2V0KCk7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIpCisgICAgICAgIG1fdGV4dERp
c3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihtX21lZGlhQ29udHJvbGxlcik7CisK
KyAgICAvLyBJbnNlcnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQgc28g
aXQgYWx3YXlzIGRpc3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMuCisgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKyAgICBpbnNlcnRCZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBt
X3BhbmVsLCBlYywgdHJ1ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6c2hvd1RleHRUcmFj
a0Rpc3BsYXkoKQoreworICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKKyAgICAgICAg
Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOworICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnNo
b3coKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlVGV4dFRyYWNrRGlzcGxheSgpCit7
CisgICAgaWYgKCFtX3RleHREaXNwbGF5Q29udGFpbmVyKQorICAgICAgICBjcmVhdGVUZXh0VHJh
Y2tEaXNwbGF5KCk7CisgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+aGlkZSgpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKQoreworICAgIGlmICgh
bV90ZXh0RGlzcGxheUNvbnRhaW5lcikKKyAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgp
OworCisgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOworfQorI2Vu
ZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmgKaW5kZXggNmYwZmFkODI0MTZiMTA4YzM3MjJjNTZkYjZmNjE4NmMzZjVjNDc5My4uZWY2
OTM3YjMwOGYyMWU0YTIyOTA4ZGFiZDkxZDZjNWRkOTE3NWU5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaApAQCAtMjksNjYgKzI5LDExOSBAQAogCiAjaWYg
RU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiSFRNTERpdkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKyNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisj
aW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBQYWdlOworY2xhc3MgTWVkaWFQbGF5ZXI7CisK
K2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlck1lZGlhOwogCisvLyBBbiBhYnN0cmFjdCBj
bGFzcyB3aXRoIHRoZSBtZWRpYSBjb250cm9sIGVsZW1lbnRzIHRoYXQgYWxsIHBvcnRzIHN1cHBv
cnQuCiBjbGFzcyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKICAgcHVi
bGljOgogICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbHMoKSB7fQogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyB0byBiZSBpbXBsZW1lbnRlZCBpbiB5b3VyIHBvcnQtc3BlY2lmaWMgbWVkaWEKLSAg
ICAvLyBjb250cm9scyBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBjb250cm9scyBpbXBsZW1lbnRh
dGlvbiBzaW5jZSBpdCB3aWxsIHJldHVybiBhIGNoaWxkIGluc3RhbmNlLgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNyZWF0ZShEb2N1bWVudCopOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBoaWRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYWtlT3BhcXVlKCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0
KCk7CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydGVkRXJyb3IoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZGVkTWV0YWRhdGEoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvdygpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CisgICAgdmlydHVh
bCB2b2lkIG1ha2VPcGFxdWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVRyYW5zcGFyZW50KCk7
CisgICAgdmlydHVhbCBib29sIHNob3VsZEhpZGVDb250cm9scygpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBsYXliYWNrUHJvZ3Jlc3NlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tT
dGFydGVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0b3BwZWQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmluZ1Byb2dyZXNzZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxheWJhY2tTdGFydGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrUHJvZ3Jlc3NlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0b3BwZWQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjaGFuZ2VkTXV0ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZFZvbHVtZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpIHsgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHNo
b3dWb2x1bWVTbGlkZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2hhbmdlZE11dGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZFZvbHVtZSgp
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlcG9ydGVkRXJyb3IoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGxvYWRlZE1ldGFkYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkQ2xvc2Vk
Q2FwdGlvbnNWaXNpYmlsaXR5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkQ2xvc2Vk
Q2FwdGlvbnNWaXNpYmlsaXR5KCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNsb3NlZENhcHRp
b25UcmFja0xpc3QoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93Vm9sdW1lU2xpZGVyKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaW1lRGlzcGxheSgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJl
ZEZ1bGxzY3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKFRpbWVy
PE1lZGlhQ29udHJvbHM+Kik7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0SGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRy
b2xzVGltZXIoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd1RleHRUcmFja0Rpc3BsYXkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVUZXh0VHJh
Y2tEaXNwbGF5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CisgICAg
dmlydHVhbCB2b2lkIHNob3dUZXh0VHJhY2tEaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIGhp
ZGVUZXh0VHJhY2tEaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFja0Rp
c3BsYXkoKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmluZ1Byb2dyZXNzZWQo
KSA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xzKERvY3VtZW50Kik7CisgICAg
ZXhwbGljaXQgTWVkaWFDb250cm9scyhEb2N1bWVudCopOwogCi1wcml2YXRlOgotICAgIE1lZGlh
Q29udHJvbHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OworCisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zUmVsYXRlZFRhcmdldChFdmVudCopOworCisg
ICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJvbGxlcjsKIAorICAgIC8v
IENvbnRhaW5lciBmb3IgdGhlIG1lZGlhIGNvbnRyb2wgZWxlbWVudHMuCisgICAgTWVkaWFDb250
cm9sUGFuZWxFbGVtZW50KiBtX3BhbmVsOworCisgICAgLy8gQ29udGFpbmVyIGZvciB0aGUgdGV4
dCB0cmFjayBjdWVzLgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50KiBtX3RleHREaXNwbGF5Q29udGFpbmVyOworI2VuZGlm
CisKKyAgICAvLyBNZWRpYSBjb250cm9sIGVsZW1lbnRzLgorICAgIE1lZGlhQ29udHJvbFBsYXlC
dXR0b25FbGVtZW50KiBtX3BsYXlCdXR0b247CisgICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudCogbV9jdXJyZW50VGltZURpc3BsYXk7CisgICAgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50KiBtX3RpbWVsaW5lOworICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRv
bkVsZW1lbnQqIG1fcGFuZWxNdXRlQnV0dG9uOworICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyOworICAgIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudCogbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbjsKKyAgICBN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQgKm1fY2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3Q7CisgICAgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVt
ZW50ICptX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5CdXR0b247CisKKyAgICBUaW1lcjxNZWRpYUNv
bnRyb2xzPiBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcjsKKyAgICBib29sIG1faXNGdWxs
c2NyZWVuOworICAgIGJvb2wgbV9pc01vdXNlT3ZlckNvbnRyb2xzOworCitwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsK
IH07CiAKIGlubGluZSBNZWRpYUNvbnRyb2xzKiB0b01lZGlhQ29udHJvbHMoTm9kZSogbm9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdlMDU2MjVhOTNjMDYwM2JkMWIxOWRkZWYxYmI0NDIzYzY0Yzg1MDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwCkBAIC0wLDAgKzEsNDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJN
ZWRpYUNvbnRyb2xzQXBwbGUuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjZW5kaWYK
KwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUNv
bnRyb2xzQXBwbGU6Ok1lZGlhQ29udHJvbHNBcHBsZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9yZXdpbmRCdXR0b24oMCkKKyAgICAs
IG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbigwKQorICAgICwgbV9zdGF0dXNEaXNwbGF5KDApCisg
ICAgLCBtX3RpbWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX3RpbWVsaW5lQ29udGFpbmVy
KDApCisgICAgLCBtX3NlZWtCYWNrQnV0dG9uKDApCisgICAgLCBtX3NlZWtGb3J3YXJkQnV0dG9u
KDApCisgICAgLCBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24oMCkKKyAgICAsIG1fdm9sdW1lU2xp
ZGVyQ29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24oMCkKKyAg
ICAsIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcigwKQorICAgICwgbV9mdWxsU2NyZWVuTWF4Vm9s
dW1lQnV0dG9uKDApCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250
cm9sczo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gTWVkaWFDb250
cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhkb2N1bWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVk
aWFDb250cm9sc0FwcGxlPiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3Vt
ZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbHNBcHBsZT4gY29udHJvbHMgPSBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sc0FwcGxlKGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9uID0gTWVkaWFDb250
cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+
bV9yZXdpbmRCdXR0b24gPSByZXdpbmRCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHJld2luZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
PiBwbGF5QnV0dG9uID0gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisgICAgY29udHJvbHMtPm1fcGxheUJ1dHRvbiA9IHBsYXlCdXR0b24uZ2V0KCk7Cisg
ICAgcGFuZWwtPmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xS
ZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gcmV0dXJuVG9SZWFsdGltZUJ1dHRvbiA9IE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgIGNvbnRyb2xzLT5tX3JldHVyblRvUmVhbFRpbWVCdXR0b24gPSByZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChyZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJv
bFN0YXR1c0Rpc3BsYXkoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQ+IHN0YXR1c0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJvbHMtPm1fc3RhdHVzRGlzcGxh
eSA9IHN0YXR1c0Rpc3BsYXkuZ2V0KCk7CisgICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzdGF0
dXNEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVD
b250YWluZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
IGNvbnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQo
KTsKKyAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7
CisgICAgY29udHJvbHMtPm1fdGltZWxpbmUgPSB0aW1lbGluZS5nZXQoKTsKKyAgICB0aW1lbGlu
ZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IHRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFD
b250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
IGNvbnRyb2xzLT5tX3RpbWVSZW1haW5pbmdEaXNwbGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXku
Z2V0KCk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVSZW1haW5pbmdE
aXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFp
bmVyLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0aW1lbGluZUNvbnRhaW5lci5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAg
Ly8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3
MTYzPgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IHNlZWtC
YWNrQnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3NlZWtCYWNrQnV0dG9uID0gc2Vla0JhY2tCdXR0b24u
Z2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKHNlZWtCYWNrQnV0dG9uLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBGSVhN
RTogT25seSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gc2Vla0Zvcndh
cmRCdXR0b24gPSBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fc2Vla0ZvcndhcmRCdXR0b24gPSBzZWVrRm9yd2Fy
ZEJ1dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2Vla0ZvcndhcmRCdXR0b24u
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25p
bmcoKSkgeworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRh
aW5lckVsZW1lbnQ+IGNsb3NlZENhcHRpb25zQ29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENh
cHRpb25zVHJhY2tMaXN0ID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBjb250cm9scy0+bV9jbG9zZWRDYXB0aW9u
c1RyYWNrTGlzdCA9IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0LmdldCgpOworICAgICAgICBjbG9z
ZWRDYXB0aW9uc0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3Qu
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFDb250cm9sVG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xz
LmdldCgpKTsKKyAgICAgICAgY29udHJvbHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24g
PSB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVu
ZENoaWxkKHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjb250cm9s
cy0+bV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lciA9IGNsb3NlZENhcHRpb25zQ29udGFpbmVyLmdl
dCgpOworICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoY2xvc2VkQ2FwdGlvbnNDb250YWluZXIu
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0
cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29u
dHJvbHMtPm1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxTY3JlZW5CdXR0b24uZ2V0KCk7CisgICAg
cGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
CisKKyAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5kIHRoZSBzbGlkZXIgZWxlbWVudCBzaG91bGQg
YmUgaW4gdGhlIHNhbWUgZGl2LgorICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcGFuZWxWb2x1
bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisK
KyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlcigpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBjb250cm9scy0+
bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBp
ZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBUaGlzIGlzIGEgZHVw
bGljYXRlIG11dGUgYnV0dG9uLCB3aGljaCBpcyB2aXNpYmxlIGluIHNvbWUgcG9ydHMgYXQgdGhl
IGJvdHRvbSBvZiB0aGUgdm9sdW1lIGJhci4KKyAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgb25s
eSB3aGVuIHRoZSB2b2x1bWUgYmFyIGlzIGRpc3BsYXllZCBiZWxvdyB0aGUgY29udHJvbHMuCisg
ICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4g
dm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0
b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBjb250cm9scy0+bV92b2x1bWVT
bGlkZXJNdXRlQnV0dG9uID0gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAg
dm9sdW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlkZXJNdXRlQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworCisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlckNvbnRhaW5lciA9IHZv
bHVtZVNsaWRlckNvbnRhaW5lci5nZXQoKTsKKyAgICAgICAgcGFuZWxWb2x1bWVDb250cm9sQ29u
dGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlkZXJDb250YWluZXIucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBwYW5lbE11dGVC
dXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBjb250cm9scy0+bV9wYW5lbE11dGVCdXR0b24gPSBw
YW5lbE11dGVCdXR0b24uZ2V0KCk7CisgICAgcGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLT5h
cHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYg
KGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwYW5lbFZv
bHVtZUNvbnRyb2xDb250YWluZXIsIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzU3MTYzPgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWluQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24gPSBmdWxsU2NyZWVuTWlu
Vm9sdW1lQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuTWlu
Vm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRl
ckVsZW1lbnQ+IGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9m
dWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gZnVsbFNjcmVlblZvbHVtZVNsaWRlci5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlblZvbHVtZVNsaWRlci5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuTWF4
Vm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbk1heFZvbHVt
ZUJ1dHRvbiA9IGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFw
cGVuZENoaWxkKGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX3BhbmVs
ID0gcGFuZWwuZ2V0KCk7CisgICAgY29udHJvbHMtPmFwcGVuZENoaWxkKHBhbmVsLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gY29udHJvbHMucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0
TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogY29udHJvbGxlcikKK3sK
KyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0gY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgTWVkaWFDb250cm9sczo6c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
CisgICAgaWYgKG1fcmV3aW5kQnV0dG9uKQorICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2V0TWVk
aWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3JldHVyblRvUmVhbFRpbWVCdXR0
b24pCisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVy
KGNvbnRyb2xsZXIpOworICAgIGlmIChtX3N0YXR1c0Rpc3BsYXkpCisgICAgICAgIG1fc3RhdHVz
RGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVS
ZW1haW5pbmdEaXNwbGF5KQorICAgICAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250YWluZXIpCisg
ICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKKyAgICBpZiAobV9zZWVrQmFja0J1dHRvbikKKyAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+
c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3NlZWtGb3J3YXJkQnV0
dG9uKQorICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbikKKyAgICAgICAgbV92
b2x1bWVTbGlkZXJNdXRlQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Cisg
ICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlckNv
bnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxT
Y3JlZW5NaW5Wb2x1bWVCdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRv
bi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5W
b2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlci0+c2V0TWVkaWFD
b250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0
b24pCisgICAgICAgIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9s
bGVyKGNvbnRyb2xsZXIpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZSgpCit7
CisgICAgTWVkaWFDb250cm9sczo6aGlkZSgpOworICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
LT5oaWRlKCk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+aGlkZSgpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAgICBNZWRpYUNv
bnRyb2xzOjptYWtlVHJhbnNwYXJlbnQoKTsKKyAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+
aGlkZSgpOworICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmhpZGUoKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnJlc2V0KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBk
YXRlU3RhdHVzRGlzcGxheSgpOworCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0
c0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7CisgICAg
ZWxzZQorICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKworICAgIGZsb2F0IGR1
cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisgICAgaWYgKGlzZmluaXRl
KGR1cmF0aW9uKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdG
b3IoTWVkaWFTbGlkZXJQYXJ0KSkgeworICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihk
dXJhdGlvbik7CisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAg
bV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkp
OworICAgICAgICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworCisgICAgaWYgKG1fbWVkaWFDb250cm9s
bGVyLT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5k
bGluZ0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24t
PnNob3coKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7CisK
KyAgICBpZiAobV92b2x1bWVTbGlkZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1
bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKKworICAgIGlmIChtX3RvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xv
c2VkQ2FwdGlvbnMoKSkgeworICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bi0+c2hvdygpOworICAgICAgICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC0+dXBkYXRl
RGlzcGxheSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9wbGF5QnV0dG9uKQorICAg
ICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisgICAgaWYgKG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcikKKyAgICAgICAg
bV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZv
bHVtZSgpKTsKKworICAgIGlmIChtX2lzRnVsbHNjcmVlbikgeworICAgICAgICBpZiAobV9tZWRp
YUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7CisgICAgICAgICAgICBtX3NlZWtCYWNrQnV0
dG9uLT5oaWRlKCk7CisgICAgICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5oaWRlKCk7Cisg
ICAgICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOworICAgICAgICAgICAgbV9yZXR1cm5U
b1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X3NlZWtCYWNrQnV0dG9uLT5zaG93KCk7CisgICAgICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9u
LT5zaG93KCk7CisgICAgICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworICAgICAgICAg
ICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5oaWRlKCk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UKKyNlbmRpZgorICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7
CisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgpOworICAgICAgICBtX3Jl
d2luZEJ1dHRvbi0+c2hvdygpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcmV0dXJuVG9SZWFs
VGltZUJ1dHRvbi0+c2hvdygpOworICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworICAg
IH0KKworICAgIG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnVw
ZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRy
b2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJv
bGxlci0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbGxvdyB0aGUgdGhl
bWUgdG8gZm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJy
ZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNv
bnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1l
RGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5p
bmdUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV90aW1lUmVtYWluaW5nRGlzcGxheS0+
c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
QXBwbGU6OnJlcG9ydGVkRXJyb3IoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXBhZ2Ut
PnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KQorICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CisKKyAgICBpZiAoIXBhZ2Ut
PnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25Q
YXJ0KSkKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKKworICAgIG1fZnVsbFNj
cmVlbkJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQor
ICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIGlmIChtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uICYmICFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0
YXRlSGFuZGxpbmdGb3IoTWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQorICAg
ICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CisgICAgaWYgKG1fY2xv
c2VkQ2FwdGlvbnNDb250YWluZXIpCisgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXIt
PmhpZGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnVwZGF0ZVN0YXR1c0Rpc3Bs
YXkoKQoreworICAgIGlmIChtX3N0YXR1c0Rpc3BsYXkpCisgICAgICAgIG1fc3RhdHVzRGlzcGxh
eS0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpsb2FkZWRNZXRhZGF0
YSgpCit7CisgICAgaWYgKG1fc3RhdHVzRGlzcGxheSAmJiBtX21lZGlhQ29udHJvbGxlci0+aXNM
aXZlU3RyZWFtKCkpCisgICAgICAgIG1fc3RhdHVzRGlzcGxheS0+aGlkZSgpOworCisgICAgTWVk
aWFDb250cm9sczo6bG9hZGVkTWV0YWRhdGEoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBw
bGU6OmNoYW5nZWRNdXRlKCkKK3sKKyAgICBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkTXV0ZSgpOwor
CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbikKKyAgICAgICAgbV92b2x1bWVTbGlk
ZXJNdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBs
ZTo6Y2hhbmdlZFZvbHVtZSgpCit7CisgICAgTWVkaWFDb250cm9sczo6Y2hhbmdlZFZvbHVtZSgp
OworCisgICAgaWYgKG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcikKKyAgICAgICAgbV9mdWxsU2Ny
ZWVuVm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmVudGVyZWRGdWxsc2NyZWVuKCkKK3sKKyAg
ICBNZWRpYUNvbnRyb2xzOjplbnRlcmVkRnVsbHNjcmVlbigpOworICAgIG1fcGFuZWwtPnNldENh
bkJlRHJhZ2dlZCh0cnVlKTsKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNMaXZlU3Ry
ZWFtKCkpIHsKKyAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+aGlkZSgpOworICAgICAgICBtX3Nl
ZWtGb3J3YXJkQnV0dG9uLT5oaWRlKCk7CisgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7
CisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2hvdygpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fc2Vla0JhY2tCdXR0b24tPnNob3coKTsKKyAgICAgICAgbV9zZWVrRm9yd2Fy
ZEJ1dHRvbi0+c2hvdygpOworICAgICAgICBtX3Jld2luZEJ1dHRvbi0+aGlkZSgpOworICAgICAg
ICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPmhpZGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0FwcGxlOjpleGl0ZWRGdWxsc2NyZWVuKCkKK3sKKyAgICBtX3Jld2luZEJ1dHRv
bi0+c2hvdygpOworICAgIG1fc2Vla0JhY2tCdXR0b24tPnNob3coKTsKKyAgICBtX3NlZWtGb3J3
YXJkQnV0dG9uLT5zaG93KCk7CisgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7
CisKKyAgICBtX3BhbmVsLT5zZXRDYW5CZURyYWdnZWQoZmFsc2UpOworCisgICAgLy8gV2Ugd2ls
bCBrZWVwIHVzaW5nIHRoZSBwYW5lbCwgYnV0IHdlIHdhbnQgaXQgdG8gZ28gYmFjayB0byB0aGUg
c3RhbmRhcmQgcG9zaXRpb24uCisgICAgLy8gVGhpcyB3aWxsIG1hdHRlciByaWdodCBhd2F5IGJl
Y2F1c2Ugd2UgdXNlIHRoZSBwYW5lbCBldmVuIHdoZW4gbm90IGZ1bGxzY3JlZW4uCisgICAgLy8g
QW5kIGlmIHdlIHJlZW50ZXIgZnVsbHNjcmVlbiB3ZSBhbHNvIHdhbnQgdGhlIHBhbmVsIGluIHRo
ZSBzdGFuZGFyZCBwb3NpdGlvbi4KKyAgICBtX3BhbmVsLT5yZXNldFBvc2l0aW9uKCk7CisKKyAg
ICBNZWRpYUNvbnRyb2xzOjpleGl0ZWRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sc0FwcGxlOjpzaG93Vm9sdW1lU2xpZGVyKCkKK3sKKyAgICBpZiAoIW1fbWVkaWFDb250cm9s
bGVyLT5oYXNBdWRpbygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQXBwbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4Y2U3NWQzNDUzMzE3Y2ExMjdlZmJmOTNhYWY5YmI3
MGEyZmVhZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9sc0FwcGxlX2gKKyNkZWZpbmUgTWVkaWFD
b250cm9sc0FwcGxlX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUNvbnRyb2xzQXBw
bGUgOiBwdWJsaWMgTWVkaWFDb250cm9scyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sc0FwcGxlPiBjcmVhdGVDb250cm9scyhEb2N1bWVudCopOworCisgICAg
Ly8gTWVkaWFDb250cm9scyBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVk
aWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopIE9WRVJSSURFOworCisgICAg
dmlydHVhbCB2b2lkIGhpZGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVRyYW5z
cGFyZW50KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsK
KworICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkTXV0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBjaGFuZ2VkVm9sdW1lKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJl
ZEZ1bGxzY3JlZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdGVkRnVsbHNjcmVl
bigpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydGVkRXJyb3IoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGVkTWV0YWRhdGEoKSBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Vm9sdW1lU2xpZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTdGF0dXNEaXNwbGF5KCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250
cm9sc0FwcGxlKERvY3VtZW50Kik7CisKKworICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVs
ZW1lbnQqIG1fcmV3aW5kQnV0dG9uOworICAgIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50KiBtX3JldHVyblRvUmVhbFRpbWVCdXR0b247CisgICAgTWVkaWFDb250cm9s
U3RhdHVzRGlzcGxheUVsZW1lbnQqIG1fc3RhdHVzRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQqIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXk7CisgICAg
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KiBtX3RpbWVsaW5lQ29udGFpbmVy
OworICAgIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudCogbV9zZWVrQmFja0J1dHRv
bjsKKyAgICBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQqIG1fc2Vla0Zvcndh
cmRCdXR0b247CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQq
IG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcjsKKyAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuTWluVm9sdW1l
QnV0dG9uOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KiBt
X2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1heEJ1dHRvbkVsZW1lbnQqIG1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbjsKK307CisKK30K
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Yjc3Y2Y3YjIyODUyYjhlNjdk
MDYxNDVhMDc1MTg3M2QxYmM2MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsMjUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUNvbnRyb2xDaHJvbWl1
bUVuY2xvc3VyZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQor
eworfQorCitNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xv
c3VyZUVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKK3sKKyAgICAvLyBNYXBwaW5nIG9udG8g
c2FtZSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBhcyBwYW5lbCBlbGVtZW50LCBzaW5jZSBpdCBo
YXMgc2ltaWxhciBwcm9wZXJ0aWVzLgorICAgIHJldHVybiBNZWRpYUNvbnRyb2xzUGFuZWw7Cit9
CisKK01lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxF
bmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbENo
cm9taXVtRW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJl
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVuY2xvc3VyZSIpKTsKKyAgICBy
ZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbHNDaHJvbWl1bTo6TWVkaWFDb250cm9sc0Nocm9t
aXVtKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCisg
ICAgLCBtX2R1cmF0aW9uRGlzcGxheSgwKQorICAgICwgbV9lbmNsb3N1cmUoMCkKK3sKK30KKwor
Ly8gTWVkaWFDb250cm9sczo6Y3JlYXRlKCkgZm9yIEFuZHJvaWQgaXMgZGVmaW5lZCBpbiBNZWRp
YUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmNwcC4KKyNpZiAhT1MoQU5EUk9JRCkKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250cm9sczo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICByZXR1cm4gTWVkaWFDb250cm9sc0Nocm9taXVtOjpjcmVhdGVDb250cm9scyhk
b2N1bWVudCk7Cit9CisjZW5kaWYKKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21pdW0+
IE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50
KQoreworICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sc0Nocm9taXVtPiBjb250cm9scyA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xzQ2hyb21pdW0oZG9jdW1lbnQpKTsKKworICAgIGlmIChjb250cm9scy0+aW5p
dGlhbGl6ZUNvbnRyb2xzKGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVh
c2UoKTsKKworICAgIHJldHVybiAwOworfQorCitib29sIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6
aW5pdGlhbGl6ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICAvLyBDcmVhdGUg
YW4gZW5jbG9zaW5nIGVsZW1lbnQgZm9yIHRoZSBwYW5lbCBzbyB3ZSBjYW4gdmlzdWFsbHkgb2Zm
c2V0IHRoZSBjb250cm9scyBjb3JyZWN0bHkuCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVs
RW5jbG9zdXJlRWxlbWVudD4gZW5jbG9zdXJlID0gTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVs
RWxlbWVudD4gcGFuZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50PiBwbGF5QnV0dG9uID0gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQo
KTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOworICAgIG1fdGltZWxpbmUgPSB0aW1lbGlu
ZS5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5
ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsK
KyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+aGlkZSgpOworICAgIHBhbmVsLT5hcHBlbmRDaGls
ZChjdXJyZW50VGltZURpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50PiBkdXJhdGlvbkRpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV9kdXJhdGlvbkRp
c3BsYXkgPSBkdXJhdGlvbkRpc3BsYXkuZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGR1
cmF0aW9uRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25F
bGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOworICAgIG1fcGFuZWxNdXRlQnV0dG9uID0gcGFu
ZWxNdXRlQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwYW5lbE11dGVCdXR0
b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVy
ID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAg
ICBtX3ZvbHVtZVNsaWRlciA9IHNsaWRlci5nZXQoKTsKKyAgICBtX3ZvbHVtZVNsaWRlci0+c2V0
Q2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKHRydWUpOworICAgIHBhbmVsLT5hcHBlbmRDaGls
ZChzbGlkZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+c3VwcG9ydHND
bG9zZWRDYXB0aW9uaW5nKCkpIHsKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSBN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCwgdGhpcyk7CisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSB0b2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxk
KHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAg
ICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuQnV0dG9uID0g
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgdGhp
cyk7CisgICAgbV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbHNjcmVlbkJ1dHRvbi5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcGFuZWwgPSBw
YW5lbC5nZXQoKTsKKyAgICBlbmNsb3N1cmUtPmFwcGVuZENoaWxkKHBhbmVsLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9l
bmNsb3N1cmUgPSBlbmNsb3N1cmUuZ2V0KCk7CisgICAgYXBwZW5kQ2hpbGQoZW5jbG9zdXJlLnJl
bGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtOjpzZXRN
ZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQorewor
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisK
KyAgICBpZiAobV9kdXJhdGlvbkRpc3BsYXkpCisgICAgICAgIG1fZHVyYXRpb25EaXNwbGF5LT5z
ZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZW5jbG9zdXJlKQorICAg
ICAgICBtX2VuY2xvc3VyZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIG1f
ZHVyYXRpb25EaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFD
b250cm9sc1RpbWUoZHVyYXRpb24pLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtX2R1cmF0
aW9uRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKGR1cmF0aW9uKTsKKworICAgIE1lZGlhQ29udHJv
bHM6OnJlc2V0KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtOjpwbGF5YmFja1N0
YXJ0ZWQoKQoreworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zaG93KCk7CisgICAgbV9kdXJh
dGlvbkRpc3BsYXktPmhpZGUoKTsKKworICAgIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RhcnRl
ZCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6dXBkYXRlQ3VycmVudFRpbWVE
aXNwbGF5KCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKTsKKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigp
OworCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFmdGVyIHNlZWssIGhpZGUgZHVyYXRpb24gZGlz
cGxheSBhbmQgc2hvdyBjdXJyZW50IHRpbWUuCisgICAgaWYgKG5vdyA+IDApIHsKKyAgICAgICAg
bV9jdXJyZW50VGltZURpc3BsYXktPnNob3coKTsKKyAgICAgICAgbV9kdXJhdGlvbkRpc3BsYXkt
PmhpZGUoKTsKKyAgICB9CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0
aW1lLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNl
dElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUo
bm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVu
dFZhbHVlKG5vdyk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtOjpjaGFuZ2VkTXV0
ZSgpCit7CisgICAgTWVkaWFDb250cm9sczo6Y2hhbmdlZE11dGUoKTsKKworICAgIGlmIChtX21l
ZGlhQ29udHJvbGxlci0+bXV0ZWQoKSkKKyAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVt
ZSgwKTsKKyAgICBlbHNlCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRp
YUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKK30KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK3Zv
aWQgTWVkaWFDb250cm9sc0Nocm9taXVtOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkKK3sKKyAg
ICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IHRleHREaXNwbGF5Q29u
dGFpbmVyID0gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpOworICAgIG1fdGV4dERpc3BsYXlDb250YWluZXIgPSB0ZXh0RGlzcGxheUNvbnRh
aW5lci5nZXQoKTsKKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKKyAgICAgICAgbV90ZXh0
RGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKG1fbWVkaWFDb250cm9sbGVyKTsK
KworICAgIC8vIEluc2VydCBpdCBiZWZvcmUgdGhlIGZpcnN0IGNvbnRyb2xsZXIgZWxlbWVudCBz
byBpdCBhbHdheXMgZGlzcGxheXMgYmVoaW5kIHRoZSBjb250cm9scy4KKyAgICAvLyBJbiB0aGUg
Q2hyb21pdW0gY2FzZSwgdGhhdCdzIHRoZSBlbmNsb3N1cmUgZWxlbWVudC4KKyAgICBpbnNlcnRC
ZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX2VuY2xvc3VyZSwgQVNTRVJU
X05PX0VYQ0VQVElPTiwgdHJ1ZSk7Cit9CisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTYxZGRiMTYxMDRkZmQ0YjM4N2QyYTA3NmNmOWUyYmMwYmRlNjdiZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1
bS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
ZWRpYUNvbnRyb2xzQ2hyb21pdW1faAorI2RlZmluZSBNZWRpYUNvbnRyb2xzQ2hyb21pdW1faAor
CisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3Q7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bFBhbmVsRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworY2xhc3MgTWVkaWFDb250
cm9sc0Nocm9taXVtIDogcHVibGljIE1lZGlhQ29udHJvbHMgeworcHVibGljOgorICAgIC8vIENh
bGxlZCBmcm9tIHBvcnQtc3BlY2lmaWMgcGFyZW50IGNyZWF0ZSBmdW5jdGlvbiB0byBjcmVhdGUg
Y3VzdG9tIGNvbnRyb2xzLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNDaHJv
bWl1bT4gY3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRN
ZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKikgT1ZFUlJJREU7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF5
YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKworICAgIHZvaWQgY2hhbmdlZE11dGUoKSBPVkVSUklE
RTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKSBPVkVSUklE
RTsKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB2b2lkIGNyZWF0ZVRleHRUcmFja0Rp
c3BsYXkoKSBPVkVSUklERTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVk
aWFDb250cm9sc0Nocm9taXVtKERvY3VtZW50Kik7CisKKyAgICBib29sIGluaXRpYWxpemVDb250
cm9scyhEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5p
bmdEaXNwbGF5RWxlbWVudCogbV9kdXJhdGlvbkRpc3BsYXk7CisgICAgTWVkaWFDb250cm9sUGFu
ZWxFbmNsb3N1cmVFbGVtZW50KiBtX2VuY2xvc3VyZTsKK307CisKK30KKworI2VuZGlmCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0Nocm9taXVtQW5kcm9pZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQ2hyb21pdW1BbmRyb2lkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2JjNWFlZTY3ZTlmMDBiODgy
Mjc3ZmRlNWVhMzYwNWI4N2MyMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5jcHAKQEAgLTAsMCArMSwx
MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8p
CisjaW5jbHVkZSAiTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK01lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpNZWRpYUNv
bnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBN
ZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQoZG9jdW1lbnQpCit7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ+IE1lZGlhQ29udHJv
bE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1l
bnQoZG9jdW1lbnQpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xPdmVy
bGF5RW5jbG9zdXJlRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LW92ZXJsYXktZW5jbG9zdXJlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHJldHVybiBpZDsKK30KKworTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZDo6TWVk
aWFDb250cm9sc0Nocm9taXVtQW5kcm9pZChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xzQ2hyb21pdW0oZG9jdW1lbnQpCisgICAgLCBtX292ZXJsYXlQbGF5QnV0dG9uKDAp
CisgICAgLCBtX292ZXJsYXlFbmNsb3N1cmUoMCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IHJldHVybiBNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkOjpjcmVhdGUoZG9jdW1lbnQpOwor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ+IE1lZGlhQ29udHJv
bHNDaHJvbWl1bUFuZHJvaWQ6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1bWVudCkKK3sK
KyAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQoZG9jdW1lbnQpKTsKKworICAgIEV4Y2VwdGlv
bkNvZGUgZWM7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1l
bnQ+IG92ZXJsYXlFbmNsb3N1cmUgPSBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheVBsYXlC
dXR0b25FbGVtZW50PiBvdmVybGF5UGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9vdmVybGF5
UGxheUJ1dHRvbiA9IG92ZXJsYXlQbGF5QnV0dG9uLmdldCgpOworICAgIG92ZXJsYXlFbmNsb3N1
cmUtPmFwcGVuZENoaWxkKG92ZXJsYXlQbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9vdmVybGF5
RW5jbG9zdXJlID0gb3ZlcmxheUVuY2xvc3VyZS5nZXQoKTsKKyAgICBjb250cm9scy0+YXBwZW5k
Q2hpbGQob3ZlcmxheUVuY2xvc3VyZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGNvbnRyb2xzLT5pbml0aWFsaXplQ29udHJv
bHMoZG9jdW1lbnQpKQorICAgICAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOworCisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZDo6c2V0TWVk
aWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogY29udHJvbGxlcikKK3sKKyAg
ICBpZiAobV9vdmVybGF5UGxheUJ1dHRvbikKKyAgICAgICAgbV9vdmVybGF5UGxheUJ1dHRvbi0+
c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX292ZXJsYXlFbmNsb3N1
cmUpCisgICAgICAgIG1fb3ZlcmxheUVuY2xvc3VyZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworICAgIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6OnBsYXli
YWNrU3RhcnRlZCgpCit7CisgICAgbV9vdmVybGF5UGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5
cGUoKTsKKyAgICBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnBsYXliYWNrU3RhcnRlZCgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6OnBsYXliYWNrU3RvcHBlZCgpCit7
CisgICAgbV9vdmVybGF5UGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBNZWRp
YUNvbnRyb2xzQ2hyb21pdW06OnBsYXliYWNrU3RvcHBlZCgpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9t
aXVtQW5kcm9pZC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0No
cm9taXVtQW5kcm9pZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxOTI1ODI5MDAzOGNmNDI3NjJkZmRmMmFiOTA3
OGI5NTkwMTgzZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZF9oCisjZGVmaW5lIE1lZGlh
Q29udHJvbHNDaHJvbWl1bUFuZHJvaWRfaAorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUg
Ik1lZGlhQ29udHJvbHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRv
bkVsZW1lbnQ7CisKK2NsYXNzIE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50IDog
cHVibGljIE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Cit9OworCitjbGFzcyBNZWRpYUNv
bnRyb2xzQ2hyb21pdW1BbmRyb2lkIDogcHVibGljIE1lZGlhQ29udHJvbHNDaHJvbWl1bSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9p
ZD4gY3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRp
YUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHBsYXliYWNrU3RhcnRlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
bGF5YmFja1N0b3BwZWQoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRp
YUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkKERvY3VtZW50Kik7CisKKyAgICBNZWRpYUNvbnRyb2xP
dmVybGF5UGxheUJ1dHRvbkVsZW1lbnQqIG1fb3ZlcmxheVBsYXlCdXR0b247CisgICAgTWVkaWFD
b250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQqIG1fb3ZlcmxheUVuY2xvc3VyZTsKK307CisK
K30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAppbmRleCBiMTQ3NDkzMTg5YzhhNmU2YmZiODUyMjRhYmFkNWM2NzdiNTg3YzIxLi42NzdjNTYz
YmZkNDAxMWJiNDliNzhiZjM5YjdkN2ZiY2ZlODEwNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaApAQCAtMjA3LDYgKzIwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgdXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhQ29udHJvbHNGYWRlSW5EdXJhdGlvbigpIHsgcmV0dXJu
IDAuMTsgfQogICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24o
KSB7IHJldHVybiAwLjM7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB0aW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scygpIHsgcmV0dXJuIDMuMDsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGZsb2F0IHRpbWUpIGNvbnN0OwogICAgIHZp
cnR1YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50
VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGZvcm1hdE1l
ZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlv
bikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJD
b250ZXh0TWVudURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRl
eHRNZW51RGF0YS5oCmluZGV4IGEzNjM3MjE5MjY5MDI5NDkyNTQ4MmM2OTEwNDY1ZmNkMGUzNjhk
NzEuLjBhMzNlZTZmZTA4Y2RkNmE1ZDVmYjg2NTg2ZmQ3MDU2OTQ3Y2ExMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oCkBAIC0x
MDAsNyArMTAwLDcgQEAgc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YSB7CiAgICAgICAgIE1lZGlh
Q2FuU2F2ZSA9IDB4MTAsCiAgICAgICAgIE1lZGlhSGFzQXVkaW8gPSAweDIwLAogICAgICAgICBN
ZWRpYUhhc1ZpZGVvID0gMHg0MCwKLSAgICAgICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQgPSAw
eDgwLAorICAgICAgICBNZWRpYUNvbnRyb2xzID0gMHg4MCwKICAgICAgICAgTWVkaWFDYW5Qcmlu
dCA9IDB4MTAwLAogICAgICAgICBNZWRpYUNhblJvdGF0ZSA9IDB4MjAwLAogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNw
cAppbmRleCBhZDExNjA5MGNkZWFhZTYzZDEyNjE2NGUxZDcwY2IwMzc3MjIyOGE0Li45NTU0NjAw
NzJiYjgxYTU1MjZkOTFjYmMxNDQzNDg1OGVhYzJkZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTIxMiw3ICsy
MTIsNyBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNsaWVudEltcGw6Omdl
dEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKAogICAgICAgICBpZiAobWVkaWFFbGVtZW50LT5o
YXNWaWRlbygpKQogICAgICAgICAgICAgZGF0YS5tZWRpYUZsYWdzIHw9IFdlYkNvbnRleHRNZW51
RGF0YTo6TWVkaWFIYXNWaWRlbzsKICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+Y29udHJvbHMo
KSkKLSAgICAgICAgICAgIGRhdGEubWVkaWFGbGFncyB8PSBXZWJDb250ZXh0TWVudURhdGE6Ok1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OworICAgICAgICAgICAgZGF0YS5tZWRpYUZsYWdzIHw9IFdl
YkNvbnRleHRNZW51RGF0YTo6TWVkaWFDb250cm9sczsKICAgICB9IGVsc2UgaWYgKHIuaW5uZXJO
b25TaGFyZWROb2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpCiAgICAgICAg
ICAgICAgICB8fCByLmlubmVyTm9uU2hhcmVkTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
ZW1iZWRUYWcpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gci5pbm5lck5vblNo
YXJlZE5vZGUoKS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGUwYjgyY2FhZjEwNWI3NzM3MTg3ZWM1M2IyYzg3MjAx
NmRiYzliZWEuLjg3ZDFmNDhkYmNmZmFhMTFmNTlhM2RhZWIxMTYyMTgzOGY0OTNjYWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzk4
MSw2ICszOTgxLDkgQEAgd2Via2l0Lm9yZy9iLzg5MTY3IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1y
ZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZhaWx1cmUgXQogI3dlYmtpdC5vcmcvYi85ODc2NiBb
IEFuZHJvaWQgXSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLmh0bWwg
WyBGYWlsdXJlIF0KICN3ZWJraXQub3JnL2IvOTg3NjYgWyBBbmRyb2lkIF0gbWVkaWEvdHJhY2sv
dHJhY2stY3VlLXJlbmRlcmluZy1ob3Jpem9udGFsLmh0bWwgWyBGYWlsdXJlIF0KIAorIyBSZXF1
aXJlcyByZWJhc2VsaW5pbmcgYWZ0ZXIgd2Via2lnLm9yZy9iLzg4ODcxCit3ZWJraXQub3JnL2Iv
ODg4NzEgbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLmh0bWwgWyBGYWlsdXJlIF0KKwogd2Via2l0
Lm9yZy9iLzk4Njg2IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwg
WyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIzMTY2IFsgQW5kcm9pZCBNYWMgV2luIF0gZmFz
dC9jc3MvYmFja2dyb3VuZC1jbGlwLXJhZGl1cy12YWx1ZXMuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173758</attachid>
            <date>2012-11-12 16:35:09 -0800</date>
            <delta_ts>2012-11-13 13:28:36 -0800</delta_ts>
            <desc>Refactoring MediaControls incl a FIXME for after Chrome updates</desc>
            <filename>bug-88871-20121113113310.patch</filename>
            <type>text/plain</type>
            <size>148946</size>
            <attacher name="Silvia Pfeiffer">silviapf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdjOWI1NTZlZjRlNTYw
ODAzMGEyMTY0ODdiMDFjNTI3MTI5ODgzYS4uYTExYjQxM2I0ZjMyNjZjM2QwMzgyMzEwNjRkM2Iw
Y2U1MWE1OTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0xMyAgU2ls
dmlhIFBmZWlmZmVyICA8c2lsdmlhcGZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFuIHVw
IHRoZSBpbmhlcml0YW5jZSB0cmVlIHVuZGVyIHRoZSBNZWRpYUNvbnRyb2xzIENsYXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJl
bW92ZXMgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBDaHJvbWl1bSBhbmQgU2FmYXJpCisg
ICAgICAgIG1lZGlhIGNvbnRyb2xzIHNoYWRvdyBET01zLgorICAgICAgICBUaGlzIGlzIGFjaGll
dmVkIGJ5IHB1bGxpbmcgY29tbW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBpZGVudGljYWwgKG9yCisg
ICAgICAgIGFsbW9zdCBpZGVudGljYWwpIGJldHdlZW4gdGhlIGRpZmZlcmVudCBwbGF0Zm9ybXMg
aW50byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgVGhlIGRlcml2ZWQgY2xhc3NlcyBhcmUgcmVu
YW1lZCBiYXNlZCBvbiB0aGVpciBwbGF0Zm9ybToKKyAgICAgICAgLSBNZWRpYUNvbnRyb2xSb290
RWxlbWVudCAgICAgICAgICAgICAgICB0byBNZWRpYUNvbnRyb2xzQXBwbGUuCisgICAgICAgIC0g
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSAgICAgICAgdG8gTWVkaWFDb250cm9sc0No
cm9taXVtLgorICAgICAgICAtIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lk
IHRvIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuCisgICAgICAgIE1lZGlhQ29udHJvbHMg
aXMgbm93IG5vIGxvbmdlciBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzLCBidXQgaXRzICJjcmVhdGUi
CisgICAgICAgIGZ1bmN0aW9uIGlzIG9ubHkgaW1wbGVtZW50ZWQgaW4gdGhlIHBvcnQtc3BlY2lm
aWMgaGVhZGVyIGZpbGUsIHNvIGl0J3MKKyAgICAgICAgb24gcHVycG9zZSBpbmNvbXBsZXRlIGlu
IHRoZSBNZWRpYUNvbnRyb2xzLmNwcCBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoaXMgaXMgcmVmYWN0b3Jpbmcgd29yayBvbmx5LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICAgUmVuYW1lIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCB0byBN
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwIC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5bY3BwLGhdIHRvIE1lZGlh
Q29udHJvbHNBcHBsZS5bY3BwLGhdIC4KKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAg
IFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgdG8gTWVkaWFDb250cm9sc0FwcGxl
LmNwcCAuCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNv
bnRyb2xSb290RWxlbWVudFtDaHJvbWl1bVtBbmRyb2lkXV0uW2NwcCxoXSB0byBNZWRpYUNvbnRy
b2xzW0FwcGxlLENocm9taXVtW0FuZHJvaWRdXS5bY3BwLGhdIC4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudCBzeW1ib2xz
IHRvIE1lZGlhQ29udHJvbHNBcHBsZSBzeW1ib2xzLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAgIFJlbmFtZSBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5bY3BwLGhdIHRvIE1lZGlhQ29udHJvbHNBcHBsZS5bY3BwLGhdIC4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAgUmVuYW1lIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LltjcHAsaF0gdG8gTWVkaWFDb250cm9sc0FwcGxlLltjcHAsaF0gLgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgICAgUmVtb3ZlIGRlcGVuZGVuY3kgb24gTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuaCAoYmFzZSBjbGFzcyBNZWRpYUNvbnRyb2xzLmggaXMgc3RpbGwgdGhlcmUpLgorICAgICAg
ICAgIFJlbmFtZSB1cGRhdGVUaW1lRGlzcGxheSgpIHRvIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sczo6TWVkaWFDb250cm9scyk6CisgICAgICAgICAgQWRkZWQg
aW5pdGlhbGl6YXRpb24gZm9yIG1lZGlhIGVsZW1lbnRzIHRoYXQgYWxsIHBsYXRmb3JtIGNvbnRy
b2xzIHNoYXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgUmVtb3ZlZCBpbmNsdWRl
IGZpbGVzIHRoYXQgYXJlIGFscmVhZHkgaW5jbHVkZWQgaW4gaGVhZGVyIGZpbGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAg
IEFkZGVkIGNvbnRyb2xsZXIgYXNzaWdubWVudCBmb3IgbWVkaWEgZWxlbWVudHMgdGhhdCBhbGwg
cGxhdGZvcm0gY29udHJvbHMgc2hhcmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xz
OjpyZXNldCk6CisgICAgICAgICAgQWRkZWQgcmVzZXRzIGZvciBtZWRpYSBlbGVtZW50cyB0aGF0
IGFsbCBwbGF0Zm9ybSBjb250cm9scyBzaGFyZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHM6OnJlcG9ydGVkRXJyb3IpOgorICAgICAgICAgIEFkZGVkIGVycm9yIGhhbmRsaW5nIGZv
ciBtZWRpYSBlbGVtZW50cyB0aGF0IGFsbCBwbGF0Zm9ybSBjb250cm9scyBzaGFyZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmxvYWRlZE1ldGFkYXRhKToKKyAgICAgICAgICBB
ZGRlZCBkZWZhdWx0IGFjdGlvbiBmb3IgbG9hZGVkTWV0YWRhdGEgZXZlbnQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHM6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6bWFrZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6c2hvdWxkSGlkZUNvbnRyb2xzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmJ1ZmZlcmluZ1Byb2dyZXNzZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6cGxheWJhY2tTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1N0b3BwZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sczo6Y2hhbmdlZE11dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sczo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xz
OjpjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHM6OmVudGVyZWRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzOjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzOjpzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1Rp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNvbnRhaW5zUmVsYXRlZFRhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnNob3dUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmhpZGVUZXh0VHJhY2tEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnVwZGF0ZVRleHRUcmFja0Rpc3Bs
YXkpOgorICAgICAgICAgIEFkZGVkIGRlZmF1bHQgYWN0aW9ucyBmb3IgYWxsIHRoZXNlIG1lZGlh
IGNvbnRyb2xzIG1lbWJlciBmdW5jdGlvbnMuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgQWRkZWQgaW5jbHVkZSBm
aWxlcyBhbmQgZm9yd2FyZCBjbGFzcyBkZWNsYXJhdGlvbnMgdGhhdCBhbGwgbWVkaWEgY29udHJv
bHMgc2hhcmUuCisgICAgICAgIChNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgICBNYWtlIGFsbCBw
dXJlIHZpcnR1YWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBq
dXN0IHZpcnR1YWwuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjp1cGRhdGVTdGF0
dXNEaXNwbGF5KToKKyAgICAgICAgICBBZGQgYW4gZW1wdHkgdmlydHVhbCB1cGRhdGVTdGF0dXNE
aXNwbGF5IGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgbWVkaWEgZWxlbWVudHMuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcC4KKyAgICAg
ICAgICBSZWR1Y2VkIEFwcGxlLXNwZWNpZmljIG1lZGlhIGNvbnRyb2wgZnVuY3Rpb25zIGJ5IHJl
bHlpbmcgb24gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oLgorICAgICAg
ICAgIFJlZHVjZWQgQXBwbGUtc3BlY2lmaWMgbWVkaWEgY29udHJvbCBlbGVtZW50cyBieSByZWx5
aW5nIG9uIHNvbWUgZWxlbWVudHMgaW4gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwLgorICAg
ICAgICAgIFJlZHVjZWQgQ2hyb21pdW0tc3BlY2lmaWMgbWVkaWEgY29udHJvbCBmdW5jdGlvbnMg
YnkgcmVseWluZyBvbiBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBpbiB0aGUgYmFzZSBjbGFzcy4K
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW0uaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW0uaC4KKyAgICAgICAgICBSZWR1Y2VkIENocm9taXVtLXNwZWNpZmljIG1lZGlhIGNvbnRy
b2wgZnVuY3Rpb25zIGJ5IHJlbHlpbmcgb24gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhl
IGJhc2UgY2xhc3MuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVt
QW5kcm9pZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZC5jcHAuCisgICAgICAgICAgUmVuYW1l
ZCBjbGFzcyBuYW1lIGFuZCBiYXNlIGNsYXNzIG5hbWUuCisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuaC4K
KyAgICAgICAgICBSZW5hbWVkIGNsYXNzIG5hbWUgYW5kIGJhc2UgY2xhc3MgbmFtZS4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjp0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk6CisgICAg
ICAgICAgTW92ZWQgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMg
dmFyaWFibGUgZnJvbSBhbGwgY2xhc3NlcyB0byBhIHRoZW1lLXNwZWNpZmljIGZ1bmN0aW9uLgor
CiAyMDEyLTExLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBOZXR3b3JrUHJvY2VzczogVXNlIGFuIGFjY3VyYXRlIHNob3VsZENvbnRlbnRTbmlmZiB2YWx1
ZSB3aGVuIGNyZWF0aW5nIFJlc291cmNlSGFuZGxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBkN2NhNmY4MmU3MzJhODc2ZmQ4ZDk2MDQ2ZTU3N2EwMjVmYmQwZDM0Li5lNTA4NWM3YjU3
ODVmZWI3ZDQ5MjYzMTE0N2NmYmQzNDM4OGQ1MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTEzICBTaWx2aWEgUGZlaWZmZXIgIDxzaWx2aWFw
ZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgdGhlIGluaGVyaXRhbmNlIHRyZWUg
dW5kZXIgdGhlIE1lZGlhQ29udHJvbHMgQ2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODg3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBjb2RlIGR1cGxpY2F0aW9u
IGJldHdlZW4gdGhlIENocm9taXVtIGFuZCBTYWZhcmkKKyAgICAgICAgbWVkaWEgY29udHJvbHMg
c2hhZG93IERPTXMuCisgICAgICAgIFRoZSBkZXJpdmVkIGNsYXNzZXMgYXJlIHJlbmFtZWQgYmFz
ZWQgb24gdGhlaXIgcGxhdGZvcm06CisgICAgICAgIC0gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQg
ICAgICAgICAgICAgICAgdG8gTWVkaWFDb250cm9sc0FwcGxlLgorICAgICAgICAtIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW0gICAgICAgIHRvIE1lZGlhQ29udHJvbHNDaHJvbWl1bS4K
KyAgICAgICAgLSBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZCB0byBNZWRp
YUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLgorCisgICAgICAgICogcHVibGljL1dlYkNvbnRleHRN
ZW51RGF0YS5oOgorICAgICAgICAgIE1vdmUgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQgdG8gTWVk
aWFDb250cm9scy4KKyAgICAgICAgKiBzcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURl
ZmF1bHRJdGVtcyk6CisgICAgICAgICAgTW92ZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudCB0byBN
ZWRpYUNvbnRyb2xzLgorCiAyMDEyLTExLTEyICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTdXByZXNzaW5nIGEgU2tpYSBjaGFu
Z2UgdG8gcHJldmVudCBsYXlvdXQgdGVzdCBicmVha2FnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMDdjYWFlNDVkMDNjOTZhZDcyMTg0YjJiNmZiMzBjZTZiMjk2N2NjZS4uODJhNWIwMmIxOGIy
MjFhNWVmMDFiYzViZTM4NDBkNmYzOWNjNTg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE1
MzcsNyArMTUzNyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAogICAgIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAotICAgIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbFJvb3RFbGVtZW50LmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBs
ZS5jcHAKICAgICBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1NlbGVjdFJ1
bGVGZWF0dXJlU2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTMwMGNj
YzYzZjIwNjliZWQ5MzY3NzFhZTg3ODViMWE1ZWVhYWNiOC4uYWFlMjFlYzgzOGMxMTdkZDI4NDdm
OTk3NWQ5YzUwMzFhNDk3MTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
NTQ4LDggKzM1NDgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xSb290RWxlbWVudC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFJvb3RFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0Vs
ZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkOWNlNmNlNGUxZjZiNTNjNTJkNTNhNDdhZjkzY2Ex
ZTQ3YmZmNGMwLi44YjQyNDZiOWI5OGFkMTYxZmQxOTlmOTA2ZDk5ZGU4ZWYzNWMxMWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTczMSw3ICs3MzEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5jcHAgXAogICAgIGh0bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVtZW50
LmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAotICAgIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBcCisgICAgaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0FwcGxlLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cCBcCiAgICAgaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBcCiAgICAgaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAy
YmIwZmM3MGZiYmEyMzJhNDEzMTA3Y2VhZTE4Y2I1N2RiNjExYTZiLi4zZTFjNTlkMDQxNmMzZGY2
ZWQ1ZjQ3MDhiMDJmZWY4Y2RmNGU1Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00NDE0LDEwICs0
NDE0LDEwIEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oJywKICAg
ICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgnLAotICAgICAgICAgICAg
J2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwJywKLSAgICAg
ICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmgnLAot
ICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1B
bmRyb2lkLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bUFuZHJvaWQuaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0Nocm9taXVtLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0Nocm9taXVtLmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHND
aHJvbWl1bUFuZHJvaWQuY3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQ2hyb21pdW1BbmRyb2lkLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxl
bWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDUwM2ViZDczMTNmNjUzM2Q4MDEwOGQ4ZDkxMjQy
N2M4OTlkMWFiMDUuLjdjYmEzZWNhNGU5NmNjZjcwNTE1OTJkMzA4NzJiMzhhMjk4YTgyYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgpAQCAtNjkxMCw3ICs2OTEwLDcgQEAgX19aTks3V2ViQ29yZTE2SFRN
TFZpZGVvRWxlbWVudDdpc1ZpZGVvRXYKIF9fWk43V2ViQ29yZTZDaHJvbWUzNHJlcXVpcmVzRnVs
bHNjcmVlbkZvclZpZGVvUGxheWJhY2tFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50
MTllbnN1cmVNZWRpYUNvbnRyb2xzRXYKIF9fWk43V2ViQ29yZTEzTWVkaWFDb250cm9sczZjcmVh
dGVFUE5TXzE2SFRNTE1lZGlhRWxlbWVudEUKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ2Y3JlYXRlRVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCitfX1pON1dlYkNvcmUyM01l
ZGlhQ29udHJvbHNBcHBsZTZjcmVhdGVFUE5TXzE2SFRNTE1lZGlhRWxlbWVudEUKIF9fWk43V2Vi
Q29yZTEzTWVkaWFDb250cm9sc0MyRVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCiBfX1pON1dlYkNv
cmUyNE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDZjcmVhdGVFUE5TXzE2SFRNTE1lZGlhRWxlbWVu
dEUKIF9fWk43V2ViQ29yZTMxTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDZjcmVhdGVF
UE5TXzE2SFRNTE1lZGlhRWxlbWVudEUKQEAgLTY5ODAsOCArNjk4MCw4IEBAIF9fWk43V2ViQ29y
ZTQxTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ2Y3JlYXRlRVBOU18x
NkhUTUxNZWRpYUVsCiBfX1pON1dlYkNvcmU0NE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
aW5CdXR0b25FbGVtZW50NmNyZWF0ZUVQTlNfMTZIVE1MTWVkaWFFbGVtZW50RQogX19aTjdXZWJD
b3JlNDFNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDZjcmVhdGVFUE5T
XzE2SFRNTE1lZGlhRWxlbWVudEUKIF9fWk43V2ViQ29yZTQ0TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ2Y3JlYXRlRVBOU18xNkhUTUxNZWRpYUVsZW1lbnRFCi1f
X1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50NXJlc2V0RXYKLV9fWk43V2ViQ29y
ZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxOXVwZGF0ZVN0YXR1c0Rpc3BsYXlFdgorX19aTjdX
ZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGU1cmVzZXRFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNv
bnRyb2xzQXBwbGUxOXVwZGF0ZVN0YXR1c0Rpc3BsYXlFdgogX19aTjdXZWJDb3JlMzJNZWRpYUNv
bnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDZ1cGRhdGVFdgogX19aTks3V2ViQ29yZTE2SFRNTE1l
ZGlhRWxlbWVudDEwcmVhZHlTdGF0ZUV2CiBfX1pOSzdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50
MTBjdXJyZW50U3JjRXYKQEAgLTcwMDUsOCArNzAwNSw4IEBAIF9fWk5LN1dlYkNvcmUxNkhUTUxN
ZWRpYUVsZW1lbnQ3Y2FuUGxheUV2CiBfX1pON1dlYkNvcmUyNE1lZGlhQ29udHJvbElucHV0RWxl
bWVudDRzaG93RXYKIF9fWk43V2ViQ29yZTE5Q1NTU3R5bGVEZWNsYXJhdGlvbjE0cmVtb3ZlUHJv
cGVydHlFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTI2Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24xNHJlbW92ZVByb3BlcnR5RWlSaQotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xS
b290RWxlbWVudDEwbWFrZU9wYXF1ZUV2Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RF
bGVtZW50NHNob3dFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUxMG1ha2VPcGFx
dWVFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGU0c2hvd0V2CiBfX1pON1dlYkNv
cmUxOU1lZGlhQ29udHJvbEVsZW1lbnQ0c2hvd0V2CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQyMGluc2VydGVkSW50b0RvY3VtZW50RXYKIF9fWk43V2ViQ29yZTE2SFRNTFZpZGVvRWxl
bWVudDZhdHRhY2hFdgpAQCAtNzAzMCw3ICs3MDMwLDcgQEAgX19aTks3V2ViQ29yZTI3TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlMjhzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nRXYKIF9f
Wk43V2ViQ29yZTEwU2hhZG93Um9vdDZhdHRhY2hFdgogX19aTjdXZWJDb3JlMjFTaGFkb3dDb250
ZW50U2VsZWN0b3JDMkVQTlNfMTBTaGFkb3dSb290RQogX19aTks3V2ViQ29yZTEwU2hhZG93Um9v
dDE2aXNTaGFkb3dCb3VuZGFyeUV2Ci1fX1pOSzdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxl
bWVudDE0c2hhZG93UHNldWRvSWRFdgorX19aTks3V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxl
MTRzaGFkb3dQc2V1ZG9JZEV2CiBfX1pOSzdXZWJDb3JlMjRBcHBseVByb3BlcnR5RGVmYXVsdEJh
c2VJTlNfNkxlbmd0aEVFMTdhcHBseUluaGVyaXRWYWx1ZUVQTlNfMTZDU1NTdHlsZVNlbGVjdG9y
RQogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGU1d2lkdGhFdgogX19aTks3V2ViQ29yZTExUmVu
ZGVyU3R5bGU2aGVpZ2h0RXYKQEAgLTcxMTEsNyArNzExMSw3IEBAIF9fWk43V2ViQ29yZTExTWVk
aWFQbGF5ZXI4c2V0TXV0ZWRFYgogX19aTks3V2ViQ29yZTIyTnVsbE1lZGlhUGxheWVyUHJpdmF0
ZTE0c3VwcG9ydHNNdXRpbmdFdgogX19aTjdXZWJDb3JlMjJOdWxsTWVkaWFQbGF5ZXJQcml2YXRl
OXNldFZvbHVtZUVmCiBfX1pON1dlYkNvcmUxMU1lZGlhUGxheWVyOXNldFZvbHVtZUVmCi1fX1pO
N1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MTNjaGFuZ2VkVm9sdW1lRXYKK19fWk43
V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTNjaGFuZ2VkVm9sdW1lRXYKIF9fWk43V2ViQ29y
ZTExTWVkaWFQbGF5ZXI0bG9hZEVSS04zV1RGNlN0cmluZ0VSS05TXzExQ29udGVudFR5cGVFCiBf
X1pOSzdXZWJDb3JlMTFDb250ZW50VHlwZTR0eXBlRXYKIF9fWk5LN1dlYkNvcmUxMUNvbnRlbnRU
eXBlOXBhcmFtZXRlckVSS04zV1RGNlN0cmluZ0UKQEAgLTcyODEsNyArNzI4MSw3IEBAIF9fWlRo
bjEyMF9ON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQyOG1lZGlhUGxheWVyUmVhZHlTdGF0ZUNo
YW5nZWRFUE5TXzExTWVkaWFQCiBfX1pON1dlYkNvcmUxMU1lZGlhUGxheWVyMTByZWFkeVN0YXRl
RXYKIF9fWk5LN1dlYkNvcmUzME1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjEwcmVhZHlT
dGF0ZUV2CiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQxM3NldFJlYWR5U3RhdGVFTlNf
MTFNZWRpYVBsYXllcjEwUmVhZHlTdGF0ZUUKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQxNGxvYWRlZE1ldGFkYXRhRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0Fw
cGxlMTRsb2FkZWRNZXRhZGF0YUV2CiBfX1pOSzdXZWJDb3JlMzBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb244ZHVyYXRpb25FdgogX19aTks3V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzE2cGxhdGZvcm1EdXJhdGlvbkV2CiBfX1pOSzdXZWJDb3JlMTFNZWRp
YVBsYXllcjhkdXJhdGlvbkV2CkBAIC03MjkyLDcgKzcyOTIsNyBAQCBfX1pOSzdXZWJDb3JlMjdN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UzMW1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRp
bWVFdgogX19aTks3V2ViQ29yZTExTWVkaWFQbGF5ZXIxMWN1cnJlbnRUaW1lRXYKIF9fWk5LN1dl
YkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMxMWN1cnJlbnRUaW1lRXYK
IF9fWk43V2ViQ29yZTI3TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50MTFzZXRQb3NpdGlvbkVm
Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MTd1cGRhdGVUaW1lRGlzcGxh
eUV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTE3dXBkYXRlVGltZURpc3BsYXlF
dgogX19aTks3V2ViQ29yZTExUmVuZGVyVGhlbWUzMGZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50
VGltZUVmZgogX19aTks3V2ViQ29yZTExUmVuZGVyVGhlbWUyM2Zvcm1hdE1lZGlhQ29udHJvbHNU
aW1lRWYKIF9fWk43V2ViQ29yZTMwTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50MTVzZXRD
dXJyZW50VmFsdWVFZgpAQCAtNzMwNCw3ICs3MzA0LDcgQEAgX19aTjdXZWJDb3JlMTZIVE1MTWVk
aWFFbGVtZW50MTV1cGRhdGVQbGF5U3RhdGVFdgogX19aTks3V2ViQ29yZTExTWVkaWFQbGF5ZXI2
cGF1c2VkRXYKIF9fWk5LN1dlYkNvcmUzME1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjZw
YXVzZWRFdgogX19aTks3V2ViQ29yZTM0TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzRyYXRlRXYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxNXBsYXliYWNr
U3RvcHBlZEV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTE1cGxheWJhY2tTdG9w
cGVkRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmU5RmxvYXRSZWN0RUxtMEVFMTVyZXNlcnZl
Q2FwYWNpdHlFbQogX19aTks3V2ViQ29yZTExUmVuZGVyQmxvY2sxOXZpcnR1YWxDb250aW51YXRp
b25FdgogX19aTjdXZWJDb3JlMTFSZW5kZXJMYXllcjExcmVtb3ZlQ2hpbGRFUFMwXwpAQCAtNzQ5
Nyw3ICs3NDk3LDcgQEAgX19aTjdXZWJDb3JlMzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDMTdkZXN0cm95VmlkZW9MYXllckV2CiAtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGRp
c2Nvbm5lY3RdCiBfX1pON1dlYkNvcmUzME1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkQy
RXYKIF9fWlRobjhfTjdXZWJDb3JlMTBTaGFkb3dSb290RDBFdgotX19aTjdXZWJDb3JlMjNNZWRp
YUNvbnRyb2xSb290RWxlbWVudEQwRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxl
RDBFdgogX19aTjdXZWJDb3JlMjRNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnREMEV2CiBfX1pON1dl
YkNvcmUzMU1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnREMEV2CiBfX1pON1dlYkNvcmUx
NkhUTUxJbnB1dEVsZW1lbnREMkV2CkBAIC0xODQ5MCw3ICsxODQ5MCw3IEBAIF9fWk5LN1dlYkNv
cmUyN01lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTE0c3VwcG9ydHNNdXRpbmdFdgogX19aTjdX
ZWJDb3JlMzRNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOXNldFZvbHVtZUVmCiBf
X1pON1dlYkNvcmUxMU1lZGlhUGxheWVyNHBsYXlFdgogX19aTjdXZWJDb3JlMzBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb240cGxheUV2Ci1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJv
b3RFbGVtZW50MTVwbGF5YmFja1N0YXJ0ZWRFdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xz
QXBwbGUxNXBsYXliYWNrU3RhcnRlZEV2CiBfX1pOSzdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50
MTJpc0Z1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMjFXZWJHTFJlbmRlcmluZ0NvbnRleHQxN3Zp
ZGVvRnJhbWVUb0ltYWdlRVBOU18xNkhUTUxWaWRlb0VsZW1lbnRFCiBfX1pOSzdXZWJDb3JlMTZI
VE1MVmlkZW9FbGVtZW50MTB2aWRlb1dpZHRoRXYKQEAgLTE4NTA2LDkgKzE4NTA2LDkgQEAgX19a
TjdXZWJDb3JlMjRDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ5ZHJhd0ltYWdlRVBOU18xNkhUTUxW
aWRlb0VsZW1lbnRFZmZmZlJpCiBfX1pON1dlYkNvcmUyOGpzSFRNTFZpZGVvRWxlbWVudFZpZGVv
V2lkdGhFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQog
X19aTjdXZWJDb3JlMjlqc0hUTUxWaWRlb0VsZW1lbnRWaWRlb0hlaWdodEVQTjNKU0M5RXhlY1N0
YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZpZXJFCiBfX1pON1dlYkNvcmUxNkhUTUxN
ZWRpYUVsZW1lbnQyNnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkRVBOU181VGltZXJJUzBfRUUK
LV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxOHBsYXliYWNrUHJvZ3Jlc3Nl
ZEV2CitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTE4cGxheWJhY2tQcm9ncmVzc2Vk
RXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxWaWRlb0VsZW1lbnQ4aGFzVmlkZW9FdgotX19aTjdXZWJD
b3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDE1bWFrZVRyYW5zcGFyZW50RXYKK19fWk43V2Vi
Q29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTVtYWtlVHJhbnNwYXJlbnRFdgogX19aTjdXZWJDb3Jl
MTFSZW5kZXJUaGVtZTI4bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlvbkV2CiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJTbGlkZXIzNnJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbkV2
CiBfX1pON1dlYkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMxMnBsYXRm
b3JtUGxheUV2CkBAIC0xOTc0Myw3ICsxOTc0Myw3IEBAIF9fWk43V2ViQ29yZTI5c2V0SlNIVE1M
TWVkaWFFbGVtZW50QXV0b3BsYXlFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBf
CiBfX1pON1dlYkNvcmUyNmpzSFRNTE1lZGlhRWxlbWVudENvbnRyb2xzRVBOM0pTQzlFeGVjU3Rh
dGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk43V2ViQ29yZTI5c2V0SlNI
VE1MTWVkaWFFbGVtZW50Q29udHJvbHNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVO
UzBfN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQxMXNldENvbnRyb2xz
RWIKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ0aGlkZUV2CitfX1pON1dl
YkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTRoaWRlRXYKIF9fWk43V2ViQ29yZTIyanNIVE1MTWVk
aWFFbGVtZW50TG9vcEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50
aWZpZXJFCiBfX1pON1dlYkNvcmUyNXNldEpTSFRNTE1lZGlhRWxlbWVudExvb3BFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxN2pzSFRN
TERvY3VtZW50QWxsRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRp
ZmllckUKQEAgLTI2OTQwLDEzICsyNjk0MCwxMyBAQCBfX1pON1dlYkNvcmUxNkhUTUxWaWRlb0Vs
ZW1lbnQyMXdlYmtpdEVudGVyRnVsbHNjcmVlbkViUmkKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlh
RWxlbWVudDE1ZW50ZXJGdWxsc2NyZWVuRXYKIF9fWk43V2ViQ29yZTE2UmVuZGVyRnVsbFNjcmVl
bjE3Y3JlYXRlUGxhY2Vob2xkZXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFSZW5kZXJTdHlsZUVF
RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQyNmRpZEJlY29t
ZUZ1bGxzY3JlZW5FbGVtZW50RXYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQxN2VudGVyZWRGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxl
MTdlbnRlcmVkRnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUxNFJlbmRlclRoZW1lTWFjMjdwYWlu
dE1lZGlhU2Vla0ZvcndhcmRCdXR0b25FUE5TXzEyUmVuZGVyT2JqZWN0RVJLTlNfOVBhaW50SW5m
b0VSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTRSZW5kZXJUaGVtZU1hYzI0cGFpbnRNZWRp
YVNlZWtCYWNrQnV0dG9uRVBOU18xMlJlbmRlck9iamVjdEVSS05TXzlQYWludEluZm9FUktOU183
SW50UmVjdEUKLV9fWk43V2ViQ29yZTVUaW1lcklOU18yM01lZGlhQ29udHJvbFJvb3RFbGVtZW50
RUU1ZmlyZWRFdgotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDMyaGlkZUZ1
bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWRFUE5TXzVUaW1lcklTMF9FRQorX19aTjdXZWJDb3Jl
NVRpbWVySU5TXzIzTWVkaWFDb250cm9sc0FwcGxlRUU1ZmlyZWRFdgorX19aTjdXZWJDb3JlMjNN
ZWRpYUNvbnRyb2xzQXBwbGUzMmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkRVBOU181
VGltZXJJUzBfRUUKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDMwd2lsbFN0b3BCZWlu
Z0Z1bGxzY3JlZW5FbGVtZW50RXYKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQxNmV4aXRlZEZ1bGxzY3JlZW5FdgorX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRyb2xzQXBwbGUx
NmV4aXRlZEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMjdNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UzMmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkRXYKIF9fWk5LN1dlYkNvcmUy
Mk51bGxNZWRpYVBsYXllclByaXZhdGUxM3BsYXRmb3JtTGF5ZXJFdgogX19aTks3V2ViQ29yZTIy
TnVsbE1lZGlhUGxheWVyUHJpdmF0ZThidWZmZXJlZEV2CkBAIC0yODE2NCw4ICsyODE2NCw4IEBA
IF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDRsb2FkRWJSaQogX19aTks3V2ViQ29yZTE2
SFRNTE1lZGlhRWxlbWVudDhoYXNWaWRlb0V2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJNZWRpYTEw
cmVuZGVyTmFtZUV2CiBfX1pON1dlYkNvcmUyN01lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDE5
ZGVmYXVsdEV2ZW50SGFuZGxlckVQTlNfNUV2ZW50RQotX19aTjdXZWJDb3JlMjNNZWRpYUNvbnRy
b2xSb290RWxlbWVudDE5ZGVmYXVsdEV2ZW50SGFuZGxlckVQTlNfNUV2ZW50RQotX19aTjdXZWJD
b3JlMjNNZWRpYUNvbnRyb2xSb290RWxlbWVudDE4c2hvdWxkSGlkZUNvbnRyb2xzRXYKK19fWk43
V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTlkZWZhdWx0RXZlbnRIYW5kbGVyRVBOU181RXZl
bnRFCitfX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbHNBcHBsZTE4c2hvdWxkSGlkZUNvbnRyb2xz
RXYKIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlhRWxlbWVudDE0YmVnaW5TY3J1YmJpbmdFdgogX19a
TjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MTRzZXRDdXJyZW50VGltZUVmUmkKIF9fWk5LN1dl
YkNvcmUzNE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMyMW1lZGlhVGltZUZvclRp
bWVWYWx1ZUVmCkBAIC0yODIxMCw3ICsyODIxMCw3IEBAIF9fWk43V2ViQ29yZTE2SFRNTE1lZGlh
RWxlbWVudDMwc2V0V2Via2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlRWIKIF9fWk43V2ViQ29yZTE2
SFRNTE1lZGlhRWxlbWVudDI0c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlRWIKIF9fWk43V2ViQ29y
ZTExTWVkaWFQbGF5ZXIyNHNldENsb3NlZENhcHRpb25zVmlzaWJsZUViCiBfX1pON1dlYkNvcmUz
NE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMyNHNldENsb3NlZENhcHRpb25zVmlz
aWJsZUViCi1fX1pON1dlYkNvcmUyM01lZGlhQ29udHJvbFJvb3RFbGVtZW50MzFjaGFuZ2VkQ2xv
c2VkQ2FwdGlvbnNWaXNpYmlsaXR5RXYKK19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxl
MzFjaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5RXYKIF9fWk43V2ViQ29yZTQ1TWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50MTd1cGRhdGVEaXNwbGF5VHlw
ZUV2CiBfX1pOSzdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MjFjbG9zZWRDYXB0aW9uc1Zpc2li
bGVFdgogX19aTjdXZWJDb3JlMTNNZWRpYURvY3VtZW50QzFFUE5TXzVGcmFtZUVSS05TXzRLVVJM
RQpAQCAtMjgyNTMsNyArMjgyNTMsNyBAQCBfX1pON1dlYkNvcmUyOHNldEpTSFRNTE1lZGlhRWxl
bWVudFByZWxvYWRFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfNwogX19aTjdX
ZWJDb3JlTDIyZGVzY2VuZGVudFZpZGVvRWxlbWVudEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUy
NnNldEpTSFRNTE1lZGlhRWxlbWVudE11dGVkRVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmpl
Y3RFTlMwXzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50OHNldE11dGVk
RWIKLV9fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sUm9vdEVsZW1lbnQxMWNoYW5nZWRNdXRlRXYK
K19fWk43V2ViQ29yZTIzTWVkaWFDb250cm9sc0FwcGxlMTFjaGFuZ2VkTXV0ZUV2CiBfX1pON1dl
YkNvcmUyOU1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50MTFjaGFuZ2VkTXV0ZUV2CiBfX1pO
N1dlYkNvcmUyOU1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50MTd1cGRhdGVEaXNwbGF5VHlw
ZUV2CiBfX1pON1dlYkNvcmU0MHNldEpTSFRNTE1lZGlhRWxlbWVudERlZmF1bHRQbGF5YmFja1Jh
dGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfN0pTVmFsdWVFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA3ODlmNWZlMDVh
MzljYTA5NGZkNjExNmU3YWRmZmU3NzIyZmI4ZjAuLjE2Yzc4YmYzNTFiM2YyNzRkNDFjZDE2ZGMx
M2ZkYWQ0MmIzMmFjNGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02NDI5OCwxMSArNjQyOTgsMTEgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50LmNwcCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xNZWRp
YUNvbnRyb2xzQXBwbGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCIK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xNZWRpYUNvbnRyb2xzQXBwbGUuaCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2YzdmYTJhNDJmN2EwZWQ1MGFl
NzY1Y2FlODdiYzA5OGJhNzhkYjEuLmIzOWE3NjU1MWY0ODhkMWQ4ZWI5NmI3YjJiYzczZDdhZTky
MGI2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEwNTAsOCArMTA1MCw4IEBACiAJCTQxNEI4Njc0MTNBRDA3NEUwMEI0QjM3
MyAvKiBGaWxlSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0Qjg2NzIxM0FEMDc0RTAwQjRCMzczIC8qIEZpbGVJY29uTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MEY5
RjExMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MEY5RUYxMkI2RTBFNzAwMDhDODYw
IC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovOyB9OwogCQk0MTUwRjlGMjEyQjZFMEU3MDAwOEM4
NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTBGOUYwMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVt
YkVsZW1lbnQuY3BwICovOyB9OwotCQk0MTU3QUY4MDEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxl
bWVudC5oICovOyB9OwotCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE1N0FGN0YxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
LmNwcCAqLzsgfTsKKwkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNB
cHBsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1
N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oICovOyB9OworCQk0
MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTdBRjdGMTJGMUZCMDQw
MEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICovOyB9OwogCQk0MTYyQTQ1MDEwMTE0
NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi87IH07CiAJCTQxNjJBNDUxMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oICovOyB9OwogCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBK
U0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovOyB9OwpAQCAtODIwNSw4ICs4MjA1
LDggQEAKIAkJNDE0Qjg2NzIxM0FEMDc0RTAwQjRCMzczIC8qIEZpbGVJY29uTG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVJY29uTG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTBGOUVGMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJU
aHVtYkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xpZGVyVGh1
bWJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTBGOUYwMTJCNkUw
RTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2xpZGVyVGh1bWJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDE1N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNTdBRjdGMTJG
MUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTdBRjdFMTJGMUZCMDQwMEE4QzZGNSAvKiBN
ZWRpYUNvbnRyb2xzQXBwbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFDb250cm9sc0FwcGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNTdBRjdG
MTJGMUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sc0FwcGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RTEwMTE0
NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHBhdGggPSB3b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE2MkE0NEYxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBwYXRoID0g
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1MTAyLDggKzE1MTAyLDggQEAKIAkJCQk1N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZG
MTQgLyogSW5zZXJ0aW9uUG9pbnQuaCAqLywKIAkJCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovLAogCQkJCTQxNzI1M0E5MTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovLAotCQkJCTQxNTdBRjdGMTJGMUZCMDQw
MEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgKi8sCi0JCQkJNDE1N0FGN0Ux
MkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmggKi8sCisJCQkJNDE1
N0FGN0YxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgKi8sCisJCQkJ
NDE1N0FGN0UxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5oICovLAogCQkJ
CTFGM0MzQkU4MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmNwcCAqLywKIAkJCQkx
RjNDM0JFOTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oICovLAogCQkJCUE3OEU1
MjZEMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuY3BwICovLApAQCAtMjQ1
NDIsNyArMjQ1NDIsNyBAQAogCQkJCTQxNzI1M0FCMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNv
bnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNjVDQ0ExNDVC
NDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNDE1N0FGODAxMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTU3QUY4MDEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFD
b250cm9sc0FwcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjNDM0JFQjEzNUNBRjNDMDBCOEMx
QUMgLyogTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjgxMjM5Mjkx
MDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENkYyNTJE
MTNGNUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjc4NDAsNyArMjc4NDAsNyBAQAogCQkJCTQ5RTkxMUM2MEVGODZENDcwMDlE
MENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE3MjUzQUExMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNTdBRjgxMTJG
MUZCMDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUYzQzNCRUExMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTcyMDVBQjcxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ2RjI1MkMxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCAwYmJmNzYz
YTgwNTdmNmUyZDhkYWQxZmJlYTM2ZGEzMjM0OWJkODIxLi5mZGU4YmE0ZWU0MjY4MTZhZmNkM2Mw
N2NlY2Q0ZDA4OTVhYWViYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtOTM1LDcgKzkzNCw3IEBAIHZvaWQgTWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAg
IFJlbmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJTbGlkZXIocmVuZGVyZXIoKSk7CiAgICAg
aWYgKHNsaWRlciAmJiBzbGlkZXItPmluRHJhZ01vZGUoKSkKLSAgICAgICAgbV9jb250cm9scy0+
dXBkYXRlVGltZURpc3BsYXkoKTsKKyAgICAgICAgbV9jb250cm9scy0+dXBkYXRlQ3VycmVudFRp
bWVEaXNwbGF5KCk7CiB9CiAKIGJvb2wgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIyYTAxOGZkOTcwMDRhNjc3NTZlOTJlMWVkNTAyZTBiOWMwZmU4OGYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPKQotI2luY2x1ZGUgIk1lZGlhQ29udHJv
bFJvb3RFbGVtZW50LmgiCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTWVkaWFDb250
cm9sRWxlbWVudHMuaCIKLSNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGFnZS5o
IgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVGV4dC5oIgotCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgotI2VuZGlmCi0KLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0
IGRvdWJsZSB0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IDM7
Ci0KLU1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQotICAgICwgbV9t
ZWRpYUNvbnRyb2xsZXIoMCkKLSAgICAsIG1fcmV3aW5kQnV0dG9uKDApCi0gICAgLCBtX3BsYXlC
dXR0b24oMCkKLSAgICAsIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbigwKQotICAgICwgbV9zdGF0
dXNEaXNwbGF5KDApCi0gICAgLCBtX2N1cnJlbnRUaW1lRGlzcGxheSgwKQotICAgICwgbV90aW1l
bGluZSgwKQotICAgICwgbV90aW1lUmVtYWluaW5nRGlzcGxheSgwKQotICAgICwgbV90aW1lbGlu
ZUNvbnRhaW5lcigwKQotICAgICwgbV9zZWVrQmFja0J1dHRvbigwKQotICAgICwgbV9zZWVrRm9y
d2FyZEJ1dHRvbigwKQotICAgICwgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbigwKQotICAg
ICwgbV9wYW5lbE11dGVCdXR0b24oMCkKLSAgICAsIG1fdm9sdW1lU2xpZGVyKDApCi0gICAgLCBt
X3ZvbHVtZVNsaWRlck11dGVCdXR0b24oMCkKLSAgICAsIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
KDApCi0gICAgLCBtX2Z1bGxTY3JlZW5CdXR0b24oMCkKLSAgICAsIG1fZnVsbFNjcmVlbk1pblZv
bHVtZUJ1dHRvbigwKQotICAgICwgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKDApCi0gICAgLCBt
X2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24oMCkKLSAgICAsIG1fcGFuZWwoMCkKLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgLCBtX3RleHREaXNwbGF5Q29udGFpbmVyKDApCi0jZW5kaWYK
LSAgICAsIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpCi0gICAgLCBtX2lz
TW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCi0gICAgLCBtX2lzRnVsbHNjcmVlbihmYWxzZSkKLXsK
LX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVu
dD4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17
Ci0gICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQoZG9jdW1lbnQpKTsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLQotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiByZXdpbmRCdXR0b24gPSBNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX3Jld2lu
ZEJ1dHRvbiA9IHJld2luZEJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocmV3
aW5kQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlC
dXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
LSAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5l
bC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAo
ZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0aW1lQnV0dG9uID0gTWVkaWFDb250
cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
Y29udHJvbHMtPm1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbiA9IHJldHVyblRvUmVhbHRpbWVCdXR0
b24uZ2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHJldHVyblRvUmVhbHRpbWVCdXR0b24u
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sU3RhdHVz
RGlzcGxheSgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxl
bWVudD4gc3RhdHVzRGlzcGxheSA9IE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBjb250cm9scy0+bV9zdGF0dXNEaXNwbGF5ID0gc3Rh
dHVzRGlzcGxheS5nZXQoKTsKLSAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxkKHN0YXR1c0Rpc3Bs
YXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEN1
cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJv
bEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29udHJv
bHMtPm1fY3VycmVudFRpbWVEaXNwbGF5ID0gY3VycmVudFRpbWVEaXNwbGF5LmdldCgpOwotICAg
IHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChjdXJyZW50VGltZURpc3BsYXkucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKLSAgICBj
b250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOwotICAgIHRpbWVsaW5lQ29udGFp
bmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAo
ZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1h
aW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29udHJv
bHMtPm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsK
LSAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXku
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGNvbnRyb2xzLT5tX3RpbWVsaW5lQ29udGFpbmVyID0gdGltZWxpbmVDb250YWluZXIuZ2V0
KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGSVhN
RTogT25seSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+Ci0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gc2Vla0JhY2tCdXR0
b24gPSBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgY29udHJvbHMtPm1fc2Vla0JhY2tCdXR0b24gPSBzZWVrQmFja0J1dHRvbi5nZXQoKTsK
LSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2Vla0JhY2tCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZJWE1FOiBPbmx5
IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQ
dHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBzZWVrRm9yd2FyZEJ1dHRv
biA9IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKLSAgICBjb250cm9scy0+bV9zZWVrRm9yd2FyZEJ1dHRvbiA9IHNlZWtGb3J3YXJkQnV0dG9u
LmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrRm9yd2FyZEJ1dHRvbi5yZWxlYXNl
KCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYg
KGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7
Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFDb250cm9sVG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBjb250
cm9scy0+bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IHRvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uLmdldCgpOwotICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQodG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgICAgIGlmIChlYykKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVu
IG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQo
KSk7Ci0gICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxTY3JlZW5CdXR0b24u
Z2V0KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7Ci0KLSAgICAvLyBUaGUgbXV0ZSBidXR0b24gYW5kIHRoZSBzbGlkZXIgZWxl
bWVudCBzaG91bGQgYmUgaW4gdGhlIHNhbWUgZGl2LgotICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVu
dD4gcGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7Ci0KLSAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlh
Q29udHJvbFZvbHVtZVNsaWRlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotCi0g
ICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAg
ICBjb250cm9scy0+bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7Ci0gICAgICAgIHZvbHVt
ZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICAvLyBU
aGlzIGlzIGEgZHVwbGljYXRlIG11dGUgYnV0dG9uLCB3aGljaCBpcyB2aXNpYmxlIGluIHNvbWUg
cG9ydHMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdm9sdW1lIGJhci4KLSAgICAgICAgLy8gSXQncyBp
bXBvcnRhbnQgb25seSB3aGVuIHRoZSB2b2x1bWUgYmFyIGlzIGRpc3BsYXllZCBiZWxvdyB0aGUg
Y29udHJvbHMuCi0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0
dG9uRWxlbWVudD4gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBjb250cm9s
cy0+bV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uID0gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi5nZXQo
KTsKLSAgICAgICAgdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlk
ZXJNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotCi0gICAgICAgIGlmIChlYykKLSAg
ICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlckNv
bnRhaW5lciA9IHZvbHVtZVNsaWRlckNvbnRhaW5lci5nZXQoKTsKLSAgICAgICAgcGFuZWxWb2x1
bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlkZXJDb250YWluZXIucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKLSAgICBjb250cm9scy0+bV9wYW5lbE11
dGVCdXR0b24gPSBwYW5lbE11dGVCdXR0b24uZ2V0KCk7Ci0gICAgcGFuZWxWb2x1bWVDb250cm9s
Q29udGFpbmVyLT5hcHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHBhbmVsLT5hcHBlbmRD
aGlsZChwYW5lbFZvbHVtZUNvbnRyb2xDb250YWluZXIsIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVl
ZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRv
biA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24gPSBm
dWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChm
dWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChl
YykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZVNsaWRlckVsZW1lbnQ+IGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBj
b250cm9scy0+bV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gZnVsbFNjcmVlblZvbHVtZVNsaWRl
ci5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlblZvbHVtZVNsaWRlci5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBm
dWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1h
eEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29udHJvbHMtPm1fZnVsbFNj
cmVlbk1heFZvbHVtZUJ1dHRvbiA9IGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24uZ2V0KCk7Ci0g
ICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24ucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnRy
b2xzLT5tX3BhbmVsID0gcGFuZWwuZ2V0KCk7Ci0gICAgY29udHJvbHMtPmFwcGVuZENoaWxkKHBh
bmVsLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNl
KiBjb250cm9sbGVyKQotewotICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVy
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOwot
Ci0gICAgaWYgKG1fcmV3aW5kQnV0dG9uKQotICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2V0TWVk
aWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3BsYXlCdXR0b24pCi0gICAgICAg
IG1fcGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmICht
X3JldHVyblRvUmVhbFRpbWVCdXR0b24pCi0gICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRv
bi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3N0YXR1c0Rpc3Bs
YXkpCi0gICAgICAgIG1fc3RhdHVzRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOwotICAgIGlmIChtX2N1cnJlbnRUaW1lRGlzcGxheSkKLSAgICAgICAgbV9jdXJyZW50VGlt
ZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90aW1l
bGluZSkKLSAgICAgICAgbV90aW1lbGluZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIp
OwotICAgIGlmIChtX3RpbWVSZW1haW5pbmdEaXNwbGF5KQotICAgICAgICBtX3RpbWVSZW1haW5p
bmdEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdGlt
ZWxpbmVDb250YWluZXIpCi0gICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9zZWVrQmFja0J1dHRvbikKLSAgICAgICAg
bV9zZWVrQmFja0J1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlm
IChtX3NlZWtGb3J3YXJkQnV0dG9uKQotICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zZXRN
ZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24pCi0gICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9wYW5lbE11dGVCdXR0b24pCi0gICAg
ICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0g
ICAgaWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0TWVkaWFD
b250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24p
Ci0gICAgICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOwotICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKLSAgICAgICAgbV92
b2x1bWVTbGlkZXJDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAg
ICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uKQotICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9mdWxsU2NyZWVuTWluVm9s
dW1lQnV0dG9uKQotICAgICAgICBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24tPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVy
KQotICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXItPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKLSAgICBpZiAobV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uKQotICAgICAg
ICBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKLSAgICBpZiAobV9wYW5lbCkKLSAgICAgICAgbV9wYW5lbC0+c2V0TWVkaWFDb250cm9s
bGVyKGNvbnRyb2xsZXIpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAobV90ZXh0
RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2V0TWVk
aWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotI2VuZGlmCi0gICAgcmVzZXQoKTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvdygpCi17Ci0gICAgbV9wYW5lbC0+c2V0SXNE
aXNwbGF5ZWQodHJ1ZSk7Ci0gICAgbV9wYW5lbC0+c2hvdygpOwotfQotCi12b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OjpoaWRlKCkKLXsKLSAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZChm
YWxzZSk7Ci0gICAgbV9wYW5lbC0+aGlkZSgpOwotICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
LT5oaWRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Om1ha2VPcGFxdWUo
KQotewotICAgIG1fcGFuZWwtPm1ha2VPcGFxdWUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKLXsKLSAgICBtX3BhbmVsLT5tYWtlVHJhbnNw
YXJlbnQoKTsKLSAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOwotfQotCi12b2lk
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpyZXNldCgpCi17Ci0gICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKLQotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3Vw
cG9ydHNGdWxsc2NyZWVuKCkpCi0gICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2hvdygpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7Ci0KLSAgICBmbG9h
dCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwotICAgIGlmIChpc2Zp
bml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRs
aW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKLSAgICAgICAgbV90aW1lbGluZS0+c2V0RHVyYXRp
b24oZHVyYXRpb24pOwotICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zaG93KCk7Ci0gICAg
ICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpKTsKLSAgICAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
bV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOwotCi0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVy
LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkKLSAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPnNo
b3coKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7Ci0KLSAg
ICBpZiAobV92b2x1bWVTbGlkZXIpCi0gICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUo
bV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKLQotICAgIGlmIChtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uKSB7Ci0gICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2Vk
Q2FwdGlvbnMoKSkKLSAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNo
b3coKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbi0+aGlkZSgpOwotICAgIH0KLQotICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5
cGUoKTsKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAobV9mdWxsU2NyZWVu
Vm9sdW1lU2xpZGVyKQotICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXItPnNldFZvbHVt
ZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwotCi0gICAgaWYgKG1faXNGdWxsc2NyZWVu
KSB7Ci0gICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkpIHsKLSAg
ICAgICAgICAgIG1fc2Vla0JhY2tCdXR0b24tPmhpZGUoKTsKLSAgICAgICAgICAgIG1fc2Vla0Zv
cndhcmRCdXR0b24tPmhpZGUoKTsKLSAgICAgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7
Ci0gICAgICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPnNob3coKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1fc2Vla0JhY2tCdXR0b24tPnNob3coKTsKLSAgICAgICAg
ICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNob3coKTsKLSAgICAgICAgICAgIG1fcmV3aW5kQnV0
dG9uLT5oaWRlKCk7Ci0gICAgICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPmhpZGUo
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgaWYgKCFtX21lZGlhQ29udHJv
bGxlci0+aXNMaXZlU3RyZWFtKCkpIHsKLSAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9u
LT5oaWRlKCk7Ci0gICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93KCk7Ci0gICAgICAgIG1fcmV3
aW5kQnV0dG9uLT5oaWRlKCk7Ci0gICAgfQotCi0gICAgbWFrZU9wYXF1ZSgpOwotfQotCi12b2lk
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWQoKQotewotICAgIG1fcGxh
eUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlv
bihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Ci0gICAgdXBkYXRlVGltZURpc3Bs
YXkoKTsKLQotICAgIGlmIChtX2lzRnVsbHNjcmVlbikKLSAgICAgICAgc3RhcnRIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
cGxheWJhY2tQcm9ncmVzc2VkKCkKLXsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21l
ZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Ci0gICAgdXBkYXRlVGltZURpc3BsYXkoKTsK
LSAgICAKLSAgICBpZiAoIW1faXNNb3VzZU92ZXJDb250cm9scyAmJiBtX21lZGlhQ29udHJvbGxl
ci0+aGFzVmlkZW8oKSkKLSAgICAgICAgbWFrZVRyYW5zcGFyZW50KCk7Ci19Ci0KLXZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrU3RvcHBlZCgpCi17Ci0gICAgbV9wbGF5QnV0
dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1f
bWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKLSAgICB1cGRhdGVUaW1lRGlzcGxheSgp
OwotICAgIG1ha2VPcGFxdWUoKTsKLSAgICAKLSAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9s
c1RpbWVyKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0ZVRpbWVE
aXNwbGF5KCkKLXsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKTsKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigp
OwotCi0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhl
IHRpbWUuCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+
c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGlt
ZShub3csIGR1cmF0aW9uKSwgZWMpOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJy
ZW50VmFsdWUobm93KTsKLSAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJh
dGlvbiksIGVjKTsKLSAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUo
bm93IC0gZHVyYXRpb24pOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpyZXBv
cnRlZEVycm9yKCkKLXsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAg
IGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFwYWdlLT50aGVtZSgpLT5o
YXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkKLSAgICAgICAg
bV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOwotCi0gICAgaWYgKCFwYWdlLT50aGVtZSgpLT5o
YXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCi0gICAg
ICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7Ci0KLSAgICAgbV9mdWxsU2NyZWVuQnV0dG9u
LT5oaWRlKCk7Ci0KLSAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCi0gICAgICAgIG1f
dm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7Ci0gICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24gJiYgIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGlu
Z0ZvcihNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uUGFydCkpCi0gICAgICAgIG1fdG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6dXBkYXRlU3RhdHVzRGlzcGxheSgpCi17Ci0gICAgaWYgKG1fc3RhdHVzRGlz
cGxheSkKLSAgICAgICAgbV9zdGF0dXNEaXNwbGF5LT51cGRhdGUoKTsKLX0KLQotdm9pZCBNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6bG9hZGVkTWV0YWRhdGEoKQotewotICAgIGlmIChtX3N0YXR1
c0Rpc3BsYXkgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKQotICAgICAgICBt
X3N0YXR1c0Rpc3BsYXktPmhpZGUoKTsKLQotICAgIHJlc2V0KCk7Ci19Ci0KLXZvaWQgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OmNoYW5nZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHkoKQotewot
ICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKQotICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpjaGFuZ2VkTXV0ZSgpCi17Ci0gICAgbV9wYW5lbE11dGVCdXR0
b24tPmNoYW5nZWRNdXRlKCk7Ci0gICAgaWYgKG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbikKLSAg
ICAgICAgbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOwotfQotCi12b2lk
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjaGFuZ2VkVm9sdW1lKCkKLXsKLSAgICBpZiAobV92
b2x1bWVTbGlkZXIpCi0gICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNv
bnRyb2xsZXItPnZvbHVtZSgpKTsKLQotICAgIGlmIChtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIp
Ci0gICAgICAgIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250
cm9sbGVyLT52b2x1bWUoKSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmVu
dGVyZWRGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IHRydWU7Ci0KLSAgICBp
ZiAobV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7Ci0gICAgICAgIG1fc2Vla0Jh
Y2tCdXR0b24tPmhpZGUoKTsKLSAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+aGlkZSgpOwot
ICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOwotICAgICAgICBtX3JldHVyblRvUmVhbFRp
bWVCdXR0b24tPnNob3coKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3NlZWtCYWNrQnV0dG9u
LT5zaG93KCk7Ci0gICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNob3coKTsKLSAgICAgICAg
bV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKLSAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9u
LT5oaWRlKCk7Ci0gICAgfQotCi0gICAgbV9wYW5lbC0+c2V0Q2FuQmVEcmFnZ2VkKHRydWUpOwot
ICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKHRydWUpOwotCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgp
LT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7Ci0KLSAgICBzdGFydEhpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50OjpleGl0ZWRGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOwot
Ci0gICAgLy8gInNob3ciIGFjdHVhbGx5IG1lYW5zIHJlbW92YWwgb2YgZGlzcGxheTpub25lIHN0
eWxlLCBzbyB3ZSBhcmUganVzdCBjbGVhcmluZyBzdHlsZXMKLSAgICAvLyB3aGVuIGV4aXRpbmcg
ZnVsbHNjcmVlbi4KLSAgICAvLyBGSVhNRTogQ2xhcmlmeSBuYW1pbmcgb2Ygc2hvdy9oaWRlIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzU4MTU3PgotICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7Ci0g
ICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygpOwotICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNo
b3coKTsKLSAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPnNob3coKTsKLQotICAgIG1fcGFu
ZWwtPnNldENhbkJlRHJhZ2dlZChmYWxzZSk7Ci0gICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5zZXRJ
c0Z1bGxzY3JlZW4oZmFsc2UpOwotCi0gICAgLy8gV2Ugd2lsbCBrZWVwIHVzaW5nIHRoZSBwYW5l
bCwgYnV0IHdlIHdhbnQgaXQgdG8gZ28gYmFjayB0byB0aGUgc3RhbmRhcmQgcG9zaXRpb24uCi0g
ICAgLy8gVGhpcyB3aWxsIG1hdHRlciByaWdodCBhd2F5IGJlY2F1c2Ugd2UgdXNlIHRoZSBwYW5l
bCBldmVuIHdoZW4gbm90IGZ1bGxzY3JlZW4uCi0gICAgLy8gQW5kIGlmIHdlIHJlZW50ZXIgZnVs
bHNjcmVlbiB3ZSBhbHNvIHdhbnQgdGhlIHBhbmVsIGluIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4K
LSAgICBtX3BhbmVsLT5yZXNldFBvc2l0aW9uKCk7Ci0KLSAgICBzdG9wSGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyKCk7ICAgIAotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpz
aG93Vm9sdW1lU2xpZGVyKCkKLXsKLSAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRp
bygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIp
Ci0gICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7Ci19Ci0KLWJvb2wgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3VsZEhpZGVDb250cm9scygpCi17Ci0gICAgcmV0dXJu
ICFtX3BhbmVsLT5ob3ZlcmVkKCk7Ci19Ci0KLWJvb2wgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
OmNvbnRhaW5zUmVsYXRlZFRhcmdldChFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKCFldmVudC0+
aXNNb3VzZUV2ZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBFdmVudFRhcmdldCog
cmVsYXRlZFRhcmdldCA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPnJlbGF0ZWRU
YXJnZXQoKTsKLSAgICBpZiAoIXJlbGF0ZWRUYXJnZXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gY29udGFpbnMocmVsYXRlZFRhcmdldC0+dG9Ob2RlKCkpOwotfQotCi12b2lk
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKLXsKLSAgICBNZWRpYUNvbnRyb2xzOjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLQot
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgewot
ICAgICAgICBpZiAoIWNvbnRhaW5zUmVsYXRlZFRhcmdldChldmVudCkpIHsKLSAgICAgICAgICAg
IG1faXNNb3VzZU92ZXJDb250cm9scyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoIW1fbWVkaWFD
b250cm9sbGVyLT5jYW5QbGF5KCkpIHsKLSAgICAgICAgICAgICAgICBtYWtlT3BhcXVlKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNob3VsZEhpZGVDb250cm9scygpKQotICAgICAgICAgICAgICAg
ICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW91dEV2ZW50KSB7Ci0gICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50
KSkgewotICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gZmFsc2U7Ci0gICAgICAg
ICAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KSB7
Ci0gICAgICAgIGlmIChtX2lzRnVsbHNjcmVlbikgewotICAgICAgICAgICAgLy8gV2hlbiB3ZSBn
ZXQgYSBtb3VzZSBtb3ZlIGluIGZ1bGxzY3JlZW4gbW9kZSwgc2hvdyB0aGUgbWVkaWEgY29udHJv
bHMsIGFuZCBzdGFydCBhIHRpbWVyCi0gICAgICAgICAgICAvLyB0aGF0IHdpbGwgaGlkZSB0aGUg
bWVkaWEgY29udHJvbHMgYWZ0ZXIgYSAzIHNlY29uZHMgd2l0aG91dCBhIG1vdXNlIG1vdmUuCi0g
ICAgICAgICAgICBtYWtlT3BhcXVlKCk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkSGlkZUNvbnRy
b2xzKCkpCi0gICAgICAgICAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIo
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQotewotICAgIGlmICghbV9pc0Z1bGxz
Y3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2hpZGVGdWxsc2NyZWVuQ29udHJv
bHNUaW1lci5zdGFydE9uZVNob3QodGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5n
Q29udHJvbHMpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpoaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4qKQot
ewotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+cGF1c2VkKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBpZiAoIW1faXNGdWxsc2NyZWVuKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaWYgKCFzaG91bGRIaWRlQ29udHJvbHMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgp
LT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7Ci0KLSAgICBtYWtlVHJhbnNw
YXJlbnQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c3RvcEhpZGVGdWxs
c2NyZWVuQ29udHJvbHNUaW1lcigpCi17Ci0gICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGlt
ZXIuc3RvcCgpOwotfQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpCi17Ci0gICAgaWYgKG1fdGV4
dERpc3BsYXlDb250YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0RGlzcGxheUNvbnRhaW5lciA9IE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsK
LSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERpc3BsYXlDb250YWluZXIuZ2V0KCk7
Ci0KLSAgICAvLyBJbnNlcnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQg
c28gaXQgYWx3YXlzIGRpc3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMuCi0gICAgRXhjZXB0aW9u
Q29kZSBlYzsKLSAgICBpbnNlcnRCZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgp
LCBtX3BhbmVsLCBlYywgdHJ1ZSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6
OnNob3dUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWlu
ZXIpCi0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICBtX3RleHREaXNwbGF5
Q29udGFpbmVyLT5zaG93KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Omhp
ZGVUZXh0VHJhY2tEaXNwbGF5KCkKLXsKLSAgICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIp
Ci0gICAgICAgIGNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICBtX3RleHREaXNwbGF5Q29u
dGFpbmVyLT5oaWRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0
ZVRleHRUcmFja0Rpc3BsYXkoKQotewotICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikK
LSAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotCi0gICAgbV90ZXh0RGlzcGxheUNv
bnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOwotCi19Ci0jZW5kaWYKLQotY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlh
LWNvbnRyb2xzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJl
dHVybiBpZDsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6YnVmZmVyaW5nUHJv
Z3Jlc3NlZCgpCi17Ci0gICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJv
Z3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwKLSAgICAvLyBwbGF5YmFjayBwbGF5YmFj
a1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KLSAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXItPnBhdXNlZCgpKQotICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlh
Q29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBiMDlkODc0NWI3YWM2MWE3ZDU5NmQ0MWEyMzg5
NjZiNjFmNGI0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBNZWRpYUNvbnRyb2xSb290RWxlbWVudF9oCi0jZGVmaW5lIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50X2gKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgIk1lZGlh
Q29udHJvbHMuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSFRNTElucHV0RWxlbWVudDsKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1j
bGFzcyBFdmVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1j
bGFzcyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDsK
LWNsYXNzIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OwotY2xhc3Mg
TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OwotY2xhc3MgTWVk
aWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ7Ci1jbGFzcyBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5RWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Owot
Y2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OwotY2xhc3MgTWVkaWFD
b250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sU2Vla0Zvcndh
cmRCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1j
bGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1pbkJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xp
ZGVyRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OwotY2xhc3MgTWVkaWFQbGF5
ZXI7Ci0KLWNsYXNzIFJlbmRlckJveDsKLWNsYXNzIFJlbmRlck1lZGlhOwotCi0jaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDsKLWNsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50OwotI2VuZGlmCi0K
LWNsYXNzIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbHMgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50YXRpb24u
Ci0gICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKik7
Ci0KLSAgICB2b2lkIHNob3coKTsKLSAgICB2b2lkIGhpZGUoKTsKLSAgICB2b2lkIG1ha2VPcGFx
dWUoKTsKLSAgICB2b2lkIG1ha2VUcmFuc3BhcmVudCgpOwotCi0gICAgdm9pZCByZXNldCgpOwot
Ci0gICAgdm9pZCBwbGF5YmFja1Byb2dyZXNzZWQoKTsKLSAgICB2b2lkIHBsYXliYWNrU3RhcnRl
ZCgpOwotICAgIHZvaWQgcGxheWJhY2tTdG9wcGVkKCk7Ci0KLSAgICB2b2lkIGNoYW5nZWRNdXRl
KCk7Ci0gICAgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7Ci0KLSAgICB2b2lkIGVudGVyZWRGdWxsc2Ny
ZWVuKCk7Ci0gICAgdm9pZCBleGl0ZWRGdWxsc2NyZWVuKCk7Ci0KLSAgICB2b2lkIHJlcG9ydGVk
RXJyb3IoKTsKLSAgICB2b2lkIGxvYWRlZE1ldGFkYXRhKCk7Ci0gICAgdm9pZCBjaGFuZ2VkQ2xv
c2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7Ci0KLSAgICB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKTsK
LSAgICB2b2lkIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0gICAgdm9pZCB1cGRhdGVTdGF0dXNEaXNw
bGF5KCk7Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgdm9pZCBjcmVhdGVUZXh0VHJh
Y2tEaXNwbGF5KCk7Ci0gICAgdm9pZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQg
aGlkZVRleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXko
KTsKLSNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhpZGVDb250cm9scygpOwotCi0g
ICAgdm9pZCBidWZmZXJpbmdQcm9ncmVzc2VkKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJl
c3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KLQotcHJp
dmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSb290RWxlbWVudChEb2N1bWVudCopOwotCi0gICAgdmly
dHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKLSAgICB2b2lkIGhpZGVGdWxs
c2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Piop
OwotICAgIHZvaWQgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLSAgICB2b2lk
IHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLQotICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotCi0gICAgYm9vbCBjb250YWlu
c1JlbGF0ZWRUYXJnZXQoRXZlbnQqKTsKLQotICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSog
bV9tZWRpYUNvbnRyb2xsZXI7Ci0KLSAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50
KiBtX3Jld2luZEJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCogbV9w
bGF5QnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50
KiBtX3JldHVyblRvUmVhbFRpbWVCdXR0b247Ci0gICAgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQqIG1fc3RhdHVzRGlzcGxheTsKLSAgICBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURp
c3BsYXlFbGVtZW50KiBtX2N1cnJlbnRUaW1lRGlzcGxheTsKLSAgICBNZWRpYUNvbnRyb2xUaW1l
bGluZUVsZW1lbnQqIG1fdGltZWxpbmU7Ci0gICAgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rp
c3BsYXlFbGVtZW50KiBtX3RpbWVSZW1haW5pbmdEaXNwbGF5OwotICAgIE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudCogbV90aW1lbGluZUNvbnRhaW5lcjsKLSAgICBNZWRpYUNv
bnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQqIG1fc2Vla0JhY2tCdXR0b247Ci0gICAgTWVkaWFD
b250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50KiBtX3NlZWtGb3J3YXJkQnV0dG9uOwotICAg
IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCogbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50KiBtX3BhbmVsTXV0ZUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVt
ZW50KiBtX3ZvbHVtZVNsaWRlcjsKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0
dG9uRWxlbWVudCogbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uOwotICAgIE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyOwotICAg
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5CdXR0b247
Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQqIG1fZnVs
bFNjcmVlbk1pblZvbHVtZUJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
U2xpZGVyRWxlbWVudCogbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyOwotICAgIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KiBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVC
dXR0b247Ci0gICAgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KiBtX3BhbmVsOwotI2lmIEVOQUJM
RShWSURFT19UUkFDSykKLSAgICBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
KiBtX3RleHREaXNwbGF5Q29udGFpbmVyOwotI2VuZGlmCi0gICAgVGltZXI8TWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ+IG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyOwotICAgIGJvb2wgbV9p
c01vdXNlT3ZlckNvbnRyb2xzOwotICAgIGJvb2wgbV9pc0Z1bGxzY3JlZW47Ci19OwotCi19Ci0K
LSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4MmQ4ZjkyNjBlNmIyYmNmYWRiYzVmZjc3ZTA0YWMwYTg3OTY5NGNl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPKQotI2luY2x1ZGUgIk1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uaCIKLQotI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCi0jaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgotI2luY2x1
ZGUgIlRleHQuaCIKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSNpbmNsdWRlICJUZXh0VHJh
Y2tDdWUuaCIKLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0YXRpYyBjb25zdCBkb3VibGUgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMgPSAyOwotCi1NZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQotewotfQotCi1NZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQ6
OmRpc3BsYXlUeXBlKCkgY29uc3QKLXsKLSAgICAvLyBNYXBwaW5nIG9udG8gc2FtZSBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZSBhcyBwYW5lbCBlbGVtZW50LCBzaW5jZSBpdCBoYXMgc2ltaWxhciBw
cm9wZXJ0aWVzLgotICAgIHJldHVybiBNZWRpYUNvbnRyb2xzUGFuZWw7Ci19Ci0KLU1lZGlhQ29u
dHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9z
dXJlRWxlbWVudChkb2N1bWVudCkKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5l
bEVuY2xvc3VyZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkpOwotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwg
KCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVuY2xvc3VyZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLU1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW06Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0oRG9jdW1lbnQq
IGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9scyhkb2N1bWVudCkKLSAgICAsIG1fbWVkaWFD
b250cm9sbGVyKDApCi0gICAgLCBtX3BsYXlCdXR0b24oMCkKLSAgICAsIG1fY3VycmVudFRpbWVE
aXNwbGF5KDApCi0gICAgLCBtX2R1cmF0aW9uRGlzcGxheSgwKQotICAgICwgbV90aW1lbGluZSgw
KQotICAgICwgbV9wYW5lbE11dGVCdXR0b24oMCkKLSAgICAsIG1fdm9sdW1lU2xpZGVyKDApCi0g
ICAgLCBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKDApCi0gICAgLCBtX2Z1bGxzY3JlZW5C
dXR0b24oMCkKLSAgICAsIG1fcGFuZWwoMCkKLSAgICAsIG1fZW5jbG9zdXJlKDApCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgICwgbV90ZXh0RGlzcGxheUNvbnRhaW5lcigwKQotI2VuZGlm
Ci0gICAgLCBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAmTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bTo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpCi0g
ICAgLCBtX2lzTW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCi0gICAgLCBtX2lzRnVsbHNjcmVlbihm
YWxzZSkKLXsKLX0KLQotLy8gTWVkaWFDb250cm9sczo6Y3JlYXRlKCkgZm9yIEFuZHJvaWQgaXMg
ZGVmaW5lZCBpbiBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZC5jcHAuCi0j
aWYgIU9TKEFORFJPSUQpCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29udHJvbHM6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Q2hyb21pdW06OmNyZWF0ZShkb2N1bWVudCk7Ci19Ci0jZW5kaWYKLQotUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIGlmICghZG9j
dW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShkb2N1bWVudCkpOwotCi0gICAgaWYgKGNvbnRyb2xzLT5p
bml0aWFsaXplQ29udHJvbHMoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gY29udHJvbHMucmVs
ZWFzZSgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bTo6aW5pdGlhbGl6ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAg
ICAvLyBDcmVhdGUgYW4gZW5jbG9zaW5nIGVsZW1lbnQgZm9yIHRoZSBwYW5lbCBzbyB3ZSBjYW4g
dmlzdWFsbHkgb2Zmc2V0IHRoZSBjb250cm9scyBjb3JyZWN0bHkuCi0gICAgUmVmUHRyPE1lZGlh
Q29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gZW5jbG9zdXJlID0gTWVkaWFDb250cm9sUGFu
ZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotCi0gICAgUmVmUHRyPE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudD4gcGFuZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjOwotCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBwbGF5QnV0dG9uID0gTWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgbV9wbGF5QnV0dG9uID0gcGxh
eUJ1dHRvbi5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxlYXNl
KCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOwotICAgIG1fdGltZWxp
bmUgPSB0aW1lbGluZS5nZXQoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVu
dFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlz
cGxheS5nZXQoKTsKLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+aGlkZSgpOwotICAgIHBhbmVs
LT5hcHBlbmRDaGlsZChjdXJyZW50VGltZURpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0g
ICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBkdXJhdGlvbkRpc3BsYXkgPSBNZWRpYUNv
bnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
bV9kdXJhdGlvbkRpc3BsYXkgPSBkdXJhdGlvbkRpc3BsYXkuZ2V0KCk7Ci0gICAgcGFuZWwtPmFw
cGVuZENoaWxkKGR1cmF0aW9uRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAo
ZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5l
bE11dGVCdXR0b25FbGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11
dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOwotICAgIG1fcGFuZWxNdXRl
QnV0dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChw
YW5lbE11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudD4gc2xpZGVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKLSAgICBtX3ZvbHVtZVNsaWRlciA9IHNsaWRlci5nZXQoKTsKLSAgICBtX3ZvbHVt
ZVNsaWRlci0+c2V0Q2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9uKHRydWUpOwotICAgIHBhbmVs
LT5hcHBlbmRDaGlsZChzbGlkZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUo
KS0+c3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkpIHsKLSAgICAgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gdG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24gPSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24g
PSB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKLSAgICAgICAgcGFuZWwtPmFwcGVu
ZENoaWxkKHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuQnV0
dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCwgdGhpcyk7Ci0gICAgbV9mdWxsc2NyZWVuQnV0dG9uID0gZnVsbHNjcmVlbkJ1dHRvbi5nZXQo
KTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkJ1dHRvbi5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fcGFu
ZWwgPSBwYW5lbC5nZXQoKTsKLSAgICBlbmNsb3N1cmUtPmFwcGVuZENoaWxkKHBhbmVsLnJlbGVh
c2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgbV9lbmNsb3N1cmUgPSBlbmNsb3N1cmUuZ2V0KCk7Ci0gICAgYXBwZW5kQ2hpbGQoZW5jbG9z
dXJlLnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bTo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSog
Y29udHJvbGxlcikKLXsKLSAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0gY29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fbWVkaWFDb250cm9sbGVyID0gY29udHJvbGxlcjsKLQot
ICAgIGlmIChtX3BsYXlCdXR0b24pCi0gICAgICAgIG1fcGxheUJ1dHRvbi0+c2V0TWVkaWFDb250
cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmIChtX2N1cnJlbnRUaW1lRGlzcGxheSkKLSAgICAg
ICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
LSAgICBpZiAobV9kdXJhdGlvbkRpc3BsYXkpCi0gICAgICAgIG1fZHVyYXRpb25EaXNwbGF5LT5z
ZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdGltZWxpbmUpCi0gICAg
ICAgIG1fdGltZWxpbmUtPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAo
bV9wYW5lbE11dGVCdXR0b24pCi0gICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5zZXRNZWRpYUNv
bnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBt
X3ZvbHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIGlmICht
X3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKQotICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fZnVs
bHNjcmVlbkJ1dHRvbikKLSAgICAgICAgbV9mdWxsc2NyZWVuQnV0dG9uLT5zZXRNZWRpYUNvbnRy
b2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fcGFuZWwpCi0gICAgICAgIG1fcGFuZWwtPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV9lbmNsb3N1cmUpCi0gICAg
ICAgIG1fZW5jbG9zdXJlLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChtX3RleHREaXNwbGF5Q29udGFpbmVyKQotICAgICAg
ICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7
Ci0jZW5kaWYKLSAgICByZXNldCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW06OnNob3coKQotewotICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKHRydWUpOwot
ICAgIG1fcGFuZWwtPnNob3coKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtOjpoaWRlKCkKLXsKLSAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZChmYWxzZSk7Ci0g
ICAgbV9wYW5lbC0+aGlkZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW06Om1ha2VPcGFxdWUoKQotewotICAgIG1fcGFuZWwtPm1ha2VPcGFxdWUoKTsKLX0KLQot
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjptYWtlVHJhbnNwYXJlbnQoKQot
ewotICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW06OnJlc2V0KCkKLXsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBk
YXRlU3RhdHVzRGlzcGxheSgpOwotCi0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJv
bGxlci0+ZHVyYXRpb24oKTsKLSAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
Ci0gICAgbV90aW1lbGluZS0+c2hvdygpOwotCi0gICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElu
bmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlvbiks
IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRDdXJyZW50
VmFsdWUoZHVyYXRpb24pOwotCi0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNv
bnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0KLSAg
ICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwotCi0gICAgaWYgKG1fdm9sdW1lU2xpZGVyKSB7
Ci0gICAgICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkpCi0gICAgICAgICAg
ICBtX3ZvbHVtZVNsaWRlci0+aGlkZSgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1f
dm9sdW1lU2xpZGVyLT5zaG93KCk7Ci0gICAgICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9s
dW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgewotICAgICAgICBpZiAobV9tZWRp
YUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25zKCkpCi0gICAgICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
dG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUoKTsKLSAgICB9Ci0KLSAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXItPnN1cHBvcnRzRnVsbHNjcmVlbigpICYmIG1fbWVkaWFDb250cm9sbGVy
LT5oYXNWaWRlbygpKQotICAgICAgICBtX2Z1bGxzY3JlZW5CdXR0b24tPnNob3coKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fZnVsbHNjcmVlbkJ1dHRvbi0+aGlkZSgpOwotICAgIG1ha2VPcGFxdWUo
KTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpwbGF5YmFja1N0
YXJ0ZWQoKQotewotICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAgICBt
X3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7
Ci0gICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNob3coKTsKLSAgICBtX2R1cmF0aW9uRGlzcGxh
eS0+aGlkZSgpOwotICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7Ci0KLSAgICBpZiAobV9pc0Z1bGxz
Y3JlZW4pCi0gICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJhY2tQcm9ncmVzc2Vk
KCkKLXsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3Vy
cmVudFRpbWUoKSk7Ci0gICAgdXBkYXRlVGltZURpc3BsYXkoKTsKLQotICAgIGlmICghbV9pc01v
dXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygpKQotICAgICAg
ICBtYWtlVHJhbnNwYXJlbnQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtOjpwbGF5YmFja1N0b3BwZWQoKQotewotICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlz
cGxheVR5cGUoKTsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxl
ci0+Y3VycmVudFRpbWUoKSk7Ci0gICAgdXBkYXRlVGltZURpc3BsYXkoKTsKLSAgICBtYWtlT3Bh
cXVlKCk7Ci0KLSAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6dXBkYXRlVGltZURpc3BsYXkoKQot
ewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwotICAg
IGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7Ci0KLSAgICBQ
YWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gQWZ0ZXIgc2VlaywgaGlkZSBkdXJhdGlvbiBkaXNwbGF5IGFuZCBz
aG93IGN1cnJlbnQgdGltZS4KLSAgICBpZiAobm93ID4gMCkgewotICAgICAgICBtX2N1cnJlbnRU
aW1lRGlzcGxheS0+c2hvdygpOwotICAgICAgICBtX2R1cmF0aW9uRGlzcGxheS0+aGlkZSgpOwot
ICAgIH0KLQotICAgIC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUuCi0gICAg
RXhjZXB0aW9uQ29kZSBlYzsKLSAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0
KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3csIGR1cmF0
aW9uKSwgZWMpOwotICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93
KTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpyZXBvcnRlZEVy
cm9yKCkKLXsKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlmICgh
cGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsK
LSAgICBtX3ZvbHVtZVNsaWRlci0+aGlkZSgpOwotICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uKQotICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7
Ci0gICAgbV9mdWxsc2NyZWVuQnV0dG9uLT5oaWRlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bTo6dXBkYXRlU3RhdHVzRGlzcGxheSgpCi17Ci19Ci0KLWJvb2wg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c2hvdWxkSGlkZUNvbnRyb2xzKCkKLXsK
LSAgICByZXR1cm4gIW1fcGFuZWwtPmhvdmVyZWQoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtOjpsb2FkZWRNZXRhZGF0YSgpCi17Ci0gICAgcmVzZXQoKTsKLX0K
LQotYm9vbCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpjb250YWluc1JlbGF0ZWRU
YXJnZXQoRXZlbnQqIGV2ZW50KQotewotICAgIGlmICghZXZlbnQtPmlzTW91c2VFdmVudCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQgPSBz
dGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5yZWxhdGVkVGFyZ2V0KCk7Ci0gICAgaWYg
KCFyZWxhdGVkVGFyZ2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNvbnRh
aW5zKHJlbGF0ZWRUYXJnZXQtPnRvTm9kZSgpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAg
ICBNZWRpYUNvbnRyb2xzOjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLQotICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgewotICAgICAgICBp
ZiAoIWNvbnRhaW5zUmVsYXRlZFRhcmdldChldmVudCkpIHsKLSAgICAgICAgICAgIG1faXNNb3Vz
ZU92ZXJDb250cm9scyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVy
LT5jYW5QbGF5KCkpIHsKLSAgICAgICAgICAgICAgICBtYWtlT3BhcXVlKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEhpZGVDb250cm9scygpKQotICAgICAgICAgICAgICAgICAgICBzdGFy
dEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50KSB7Ci0gICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgewotICAg
ICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gZmFsc2U7Ci0gICAgICAgICAgICBzdG9w
SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KSB7Ci0gICAgICAg
IGlmIChtX2lzRnVsbHNjcmVlbikgewotICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgYSBtb3Vz
ZSBtb3ZlIGluIGZ1bGxzY3JlZW4gbW9kZSwgc2hvdyB0aGUgbWVkaWEgY29udHJvbHMsIGFuZCBz
dGFydCBhIHRpbWVyCi0gICAgICAgICAgICAvLyB0aGF0IHdpbGwgaGlkZSB0aGUgbWVkaWEgY29u
dHJvbHMgYWZ0ZXIgYSAyIHNlY29uZHMgd2l0aG91dCBhIG1vdXNlIG1vdmUuCi0gICAgICAgICAg
ICBtYWtlT3BhcXVlKCk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkpCi0g
ICAgICAgICAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpz
dGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpCi17Ci0gICAgaWYgKCFtX2lzRnVsbHNj
cmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGlt
ZXIuc3RhcnRPbmVTaG90KHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRy
b2xzKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpoaWRlRnVs
bHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtPiopCi17Ci0gICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5wYXVzZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lzRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKCFzaG91bGRIaWRlQ29udHJvbHMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bWFrZVRyYW5zcGFyZW50KCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJv
bWl1bTo6c3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpCi17Ci0gICAgbV9oaWRlRnVs
bHNjcmVlbkNvbnRyb2xzVGltZXIuc3RvcCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW06OmNoYW5nZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHkoKQotewotICAg
IGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKQotICAgICAgICBtX3RvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwotfQotCi12b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmNoYW5nZWRNdXRlKCkKLXsKLSAgICBtX3BhbmVsTXV0
ZUJ1dHRvbi0+Y2hhbmdlZE11dGUoKTsKLQotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+bXV0
ZWQoKSkKLSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZSgwKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVt
ZSgpKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpjaGFuZ2Vk
Vm9sdW1lKCkKLXsKLSAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9s
bGVyLT52b2x1bWUoKSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bTo6ZW50ZXJlZEZ1bGxzY3JlZW4oKQotewotICAgIG1faXNGdWxsc2NyZWVuID0gdHJ1ZTsKLSAg
ICBtX2Z1bGxzY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbih0cnVlKTsKLSAgICBzdGFydEhp
ZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW06OmV4aXRlZEZ1bGxzY3JlZW4oKQotewotICAgIG1faXNGdWxsc2NyZWVu
ID0gZmFsc2U7Ci0gICAgbV9mdWxsc2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4oZmFsc2Up
OwotICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKLX0KLQotdm9pZCBNZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpzaG93Vm9sdW1lU2xpZGVyKCkKLXsKLSAgICBp
ZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3ZvbHVtZVNsaWRlci0+c2hvdygpOwotfQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpjcmVhdGVUZXh0VHJhY2tEaXNw
bGF5KCkKLXsKLSAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IHRl
eHREaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1fdGV4dERpc3BsYXlDb250YWluZXIgPSB0ZXh0
RGlzcGxheUNvbnRhaW5lci5nZXQoKTsKLQotICAgIGlmIChtX21lZGlhQ29udHJvbGxlcikKLSAg
ICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKG1fbWVkaWFD
b250cm9sbGVyKTsKLQotICAgIC8vIEluc2VydCBpdCBiZWZvcmUgdGhlIGZpcnN0IGNvbnRyb2xs
ZXIgZWxlbWVudCBzbyBpdCBhbHdheXMgZGlzcGxheXMgYmVoaW5kIHRoZSBjb250cm9scy4KLSAg
ICBpbnNlcnRCZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX2VuY2xvc3Vy
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTiwgdHJ1ZSk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnRDaHJvbWl1bTo6c2hvd1RleHRUcmFja0Rpc3BsYXkoKQotewotICAgIGlmICghbV90
ZXh0RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwot
ICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnNob3coKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtOjpoaWRlVGV4dFRyYWNrRGlzcGxheSgpCi17Ci0gICAgaWYg
KCFtX3RleHREaXNwbGF5Q29udGFpbmVyKQotICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5
KCk7Ci0gICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+aGlkZSgpOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKQotewot
ICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKLSAgICAgICAgY3JlYXRlVGV4dFRyYWNr
RGlzcGxheSgpOwotCi0gICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgp
OwotfQotI2VuZGlmCi0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bTo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiBpZDsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpidWZmZXJpbmdQcm9ncmVzc2VkKCkK
LXsKLSAgICAvLyBXZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGJ1ZmZlcmluZyBwcm9ncmVzcyB3aGVu
IHBhdXNlZCwgZHVyaW5nIG5vcm1hbAotICAgIC8vIHBsYXliYWNrIHBsYXliYWNrUHJvZ3Jlc3Nl
ZCgpIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgotICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+cGF1
c2VkKCkpCi0gICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMyMDYxMjMzMjY3NzhjOGU1ODc3Nzg5
MDU4NzY1MjIxNDQwZDg3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1faAot
I2RlZmluZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtX2gKLQotI2lmIEVOQUJMRShW
SURFTykKLQotI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCi0jaW5jbHVkZSAiTWVk
aWFDb250cm9scy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1jbGFzcyBF
dmVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ7Ci1jbGFzcyBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbEN1cnJlbnRU
aW1lRGlzcGxheUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxh
eUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ7Ci1jbGFzcyBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ7Ci1jbGFz
cyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRy
b2xNdXRlQnV0dG9uRWxlbWVudDsKLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1l
bnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xD
aHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQ7Ci1jbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U7
Ci1jbGFzcyBNZWRpYVBsYXllcjsKLQotY2xhc3MgUmVuZGVyQm94OwotY2xhc3MgUmVuZGVyTWVk
aWE7Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1jbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OwotY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQ7Ci0jZW5kaWYKLQotY2xhc3MgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewotcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOwotCi1w
cml2YXRlOgotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUo
KSBjb25zdDsKLX07Ci0KLWNsYXNzIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFDb250cm9s
UGFuZWxFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19OwotCi1jbGFzcyBNZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtIDogcHVibGljIE1lZGlhQ29udHJvbHMgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0+IGNy
ZWF0ZShEb2N1bWVudCopOwotCi0gICAgLy8gTWVkaWFDb250cm9scyBpbXBsZW1lbnRhdGlvbi4K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZSopOwotCi0gICAgdm9pZCBzaG93KCk7Ci0gICAgdm9pZCBoaWRlKCk7Ci0gICAgdm9pZCBt
YWtlT3BhcXVlKCk7Ci0gICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKLQotICAgIHZvaWQgcmVz
ZXQoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1Byb2dyZXNzZWQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGxheWJhY2tTdGFydGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXliYWNrU3Rv
cHBlZCgpOwotCi0gICAgdm9pZCBjaGFuZ2VkTXV0ZSgpOwotICAgIHZvaWQgY2hhbmdlZFZvbHVt
ZSgpOwotCi0gICAgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpOwotICAgIHZvaWQgZXhpdGVkRnVs
bHNjcmVlbigpOwotCi0gICAgdm9pZCByZXBvcnRlZEVycm9yKCk7Ci0gICAgdm9pZCBsb2FkZWRN
ZXRhZGF0YSgpOwotICAgIHZvaWQgY2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOwot
Ci0gICAgdm9pZCBzaG93Vm9sdW1lU2xpZGVyKCk7Ci0gICAgdm9pZCB1cGRhdGVUaW1lRGlzcGxh
eSgpOwotICAgIHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpOwotCi0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIHZvaWQgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwotICAgIHZvaWQgc2hv
d1RleHRUcmFja0Rpc3BsYXkoKTsKLSAgICB2b2lkIGhpZGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0g
ICAgdm9pZCB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7Ci0jZW5kaWYKLQotICAgIHZvaWQgYnVm
ZmVyaW5nUHJvZ3Jlc3NlZCgpOwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEhpZGVDb250cm9s
cygpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bShEb2N1bWVudCopOwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWws
IG90aGVyd2lzZSByZXR1cm4gZmFsc2UuCi0gICAgYm9vbCBpbml0aWFsaXplQ29udHJvbHMoRG9j
dW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwotICAgIHZvaWQgaGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGlt
ZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4qKTsKLSAgICB2b2lkIHN0YXJ0SGlk
ZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Ci0gICAgdm9pZCBzdG9wSGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyKCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKLQotICAgIGJvb2wgY29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50
Kik7Ci0KLSAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9sbGVyOwot
Ci0gICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIG1fcGxheUJ1dHRvbjsKLSAgICBN
ZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KiBtX2N1cnJlbnRUaW1lRGlzcGxh
eTsKLSAgICBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQqIG1fZHVyYXRp
b25EaXNwbGF5OwotICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCogbV90aW1lbGluZTsK
LSAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KiBtX3BhbmVsTXV0ZUJ1dHRv
bjsKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlcjsK
LSAgICBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqIG1fdG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRv
bkVsZW1lbnQqIG1fZnVsbHNjcmVlbkJ1dHRvbjsKLSAgICBNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQqIG1fcGFuZWw7Ci0gICAgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50KiBtX2Vu
Y2xvc3VyZTsKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50KiBtX3RleHREaXNwbGF5Q29udGFpbmVyOwotI2VuZGlmCi0K
LSAgICBUaW1lcjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBtX2hpZGVGdWxsc2Ny
ZWVuQ29udHJvbHNUaW1lcjsKLSAgICBib29sIG1faXNNb3VzZU92ZXJDb250cm9sczsKLSAgICBi
b29sIG1faXNGdWxsc2NyZWVuOwotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtQW5kcm9pZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRmZTg0OGRjODFmNjgzYjNkNzUyNWQ3Njk2NDI1MGZlYWExNWFmZGQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bUFuZHJvaWQuaCIKLQotI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1l
bnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICA6IE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkK
LXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudD4g
TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xPdmVybGF5RW5j
bG9zdXJlRWxlbWVudChkb2N1bWVudCkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Ci17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVk
aWEtY29udHJvbHMtb3ZlcmxheS1lbmNsb3N1cmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi1NZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtQW5kcm9pZDo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQo
RG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bShkb2N1bWVudCkKLSAgICAsIG1fb3ZlcmxheVBsYXlCdXR0b24oMCkKLSAgICAsIG1fb3Zlcmxh
eUVuY2xvc3VyZSgwKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29u
dHJvbHM6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkOjpjcmVhdGUoZG9jdW1lbnQpOwotfQotCi1Q
YXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkPiBNZWRpYUNv
bnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKLXsKLSAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkPiBjb250cm9s
cyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZChk
b2N1bWVudCkpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLQotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudD4gb3ZlcmxheUVuY2xvc3VyZSA9IE1lZGlhQ29u
dHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1lbnQ+IG92ZXJsYXlQbGF5QnV0dG9u
ID0gTWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGNvbnRyb2xzLT5tX292ZXJsYXlQbGF5QnV0dG9uID0gb3ZlcmxheVBsYXlCdXR0b24u
Z2V0KCk7Ci0gICAgb3ZlcmxheUVuY2xvc3VyZS0+YXBwZW5kQ2hpbGQob3ZlcmxheVBsYXlCdXR0
b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIGNvbnRyb2xzLT5tX292ZXJsYXlFbmNsb3N1cmUgPSBvdmVybGF5RW5jbG9zdXJlLmdl
dCgpOwotICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChvdmVybGF5RW5jbG9zdXJlLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
Y29udHJvbHMtPmluaXRpYWxpemVDb250cm9scyhkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBj
b250cm9scy5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZDo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZSogY29udHJvbGxlcikKLXsKLSAgICBpZiAobV9vdmVybGF5UGxheUJ1
dHRvbikKLSAgICAgICAgbV9vdmVybGF5UGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOwotICAgIGlmIChtX292ZXJsYXlFbmNsb3N1cmUpCi0gICAgICAgIG1fb3Zlcmxh
eUVuY2xvc3VyZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwotICAgIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
LX0KLQotdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZDo6cGxheWJh
Y2tTdGFydGVkKCkKLXsKLSAgICBtX292ZXJsYXlQbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlw
ZSgpOwotICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnBsYXliYWNrU3RhcnRl
ZCgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkOjpw
bGF5YmFja1N0b3BwZWQoKQotewotICAgIG1fb3ZlcmxheVBsYXlCdXR0b24tPnVwZGF0ZURpc3Bs
YXlUeXBlKCk7Ci0gICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJhY2tT
dG9wcGVkKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFu
ZHJvaWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM3NzQ4M2Y5OGUyMjg2MGMz
NzVhODU4NDc1MDBlNjFhODQ0YzdjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtQW5kcm9pZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWRf
aAotI2RlZmluZSBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtQW5kcm9pZF9oCi0KLSNp
ZiBFTkFCTEUoVklERU8pCi0KLSNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9t
aXVtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFDb250cm9sT3Zlcmxh
eVBsYXlCdXR0b25FbGVtZW50OwotCi1jbGFzcyBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJl
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1
cmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBN
ZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudChEb2N1bWVudCopOwotICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsKLQotY2xh
c3MgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQgOiBwdWJsaWMgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bUFuZHJvaWQ+IGNyZWF0ZShEb2N1bWVu
dCopOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tTdGFydGVkKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHBsYXliYWNrU3RvcHBlZCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW1BbmRyb2lkKERvY3VtZW50Kik7Ci0KLSAg
ICBNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1lbnQqIG1fb3ZlcmxheVBsYXlCdXR0
b247Ci0gICAgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQqIG1fb3ZlcmxheUVu
Y2xvc3VyZTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAppbmRleCAyZDAwNzkyNTI0MTdhYjM1YmM4MzQy
N2JlMWQwNmI4NDMyMmU0NWEwLi5iNWU5ZmY3MDliZmQyMzc3YmYyZTZlZGYzODFkYTAwNjZmNDBi
OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcApA
QCAtMjcsMjAgKzI3LDM3NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFZJ
REVPKQotCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgogCi0jaW5jbHVkZSAiSFRNTERpdkVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFDb250cm9sczo6TWVkaWFDb250
cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6
OmRpdlRhZywgZG9jdW1lbnQpCisgICAgLCBtX21lZGlhQ29udHJvbGxlcigwKQorICAgICwgbV9w
YW5lbCgwKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAsIG1fdGV4dERpc3BsYXlDb250
YWluZXIoMCkKKyNlbmRpZgorICAgICwgbV9wbGF5QnV0dG9uKDApCisgICAgLCBtX2N1cnJlbnRU
aW1lRGlzcGxheSgwKQorICAgICwgbV90aW1lbGluZSgwKQorICAgICwgbV9wYW5lbE11dGVCdXR0
b24oMCkKKyAgICAsIG1fdm9sdW1lU2xpZGVyKDApCisgICAgLCBtX3RvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uKDApCisgICAgLCBtX2Z1bGxTY3JlZW5CdXR0b24oMCkKKyAgICAsIG1faGlkZUZ1
bGxzY3JlZW5Db250cm9sc1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xzOjpoaWRlRnVsbHNjcmVl
bkNvbnRyb2xzVGltZXJGaXJlZCkKKyAgICAsIG1faXNGdWxsc2NyZWVuKGZhbHNlKQorICAgICwg
bV9pc01vdXNlT3ZlckNvbnRyb2xzKGZhbHNlKQoreworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6
OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIp
Cit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7CisKKyAgICBpZiAobV9w
YW5lbCkKKyAgICAgICAgbV9wYW5lbC0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikK
KyAgICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworI2VuZGlmCisgICAgaWYgKG1fcGxheUJ1dHRvbikKKyAgICAgICAgbV9wbGF5QnV0
dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fY3VycmVudFRp
bWVEaXNwbGF5KQorICAgICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0TWVkaWFDb250cm9s
bGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVsaW5lKQorICAgICAgICBtX3RpbWVsaW5l
LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fcGFuZWxNdXRlQnV0
dG9uKQorICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXIt
PnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90b2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbikKKyAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+c2V0
TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24p
CisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnJlc2V0KCkKK3sKKyAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworCisgICAgdXBkYXRlQ3Vy
cmVudFRpbWVEaXNwbGF5KCk7CisKKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9s
bGVyLT5kdXJhdGlvbigpOworICAgIGlmIChpc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhl
bWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsK
KyAgICAgICAgbV90aW1lbGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworICAgICAgICBtX3Rp
bWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7Cisg
ICAgfQorCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRo
ZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0
KSkKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPnNob3coKTsKKyAgICBlbHNlCisgICAgICAg
IG1fcGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXIpIHsK
KyAgICAgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAgICAgICAg
IG1fdm9sdW1lU2xpZGVyLT5oaWRlKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV92
b2x1bWVTbGlkZXItPnNob3coKTsKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1
bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlh
Q29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAgIH0KKworICAgIGlmIChtX2Z1
bGxTY3JlZW5CdXR0b24pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0
c0Z1bGxzY3JlZW4oKSAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlkZW8oKSkKKyAgICAgICAg
ICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2hvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBtYWtlT3BhcXVlKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5n
Rm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKSB7CisgICAgICAgIG1fcGFuZWxNdXRlQnV0dG9uLT5o
aWRlKCk7CisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5oaWRlKCk7CisgICAgfQorCisgICAgaWYg
KG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gJiYgIXBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uUGFy
dCkpCisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUoKTsKKworICAg
IGlmIChtX2Z1bGxTY3JlZW5CdXR0b24gJiYgIXBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVk
U3RhdGVIYW5kbGluZ0ZvcihNZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvblBhcnQpKQorICAgICAg
ICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjps
b2FkZWRNZXRhZGF0YSgpCit7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
OjpzaG93KCkKK3sKKyAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKKyAgICBtX3Bh
bmVsLT5zaG93KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6aGlkZSgpCit7CisgICAgbV9w
YW5lbC0+c2V0SXNEaXNwbGF5ZWQoZmFsc2UpOworICAgIG1fcGFuZWwtPmhpZGUoKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzOjptYWtlT3BhcXVlKCkKK3sKKyAgICBtX3BhbmVsLT5tYWtlT3Bh
cXVlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAg
ICBtX3BhbmVsLT5tYWtlVHJhbnNwYXJlbnQoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xzOjpz
aG91bGRIaWRlQ29udHJvbHMoKQoreworICAgIHJldHVybiAhbV9wYW5lbC0+aG92ZXJlZCgpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbHM6OmJ1ZmZlcmluZ1Byb2dyZXNzZWQoKQoreworICAgIC8v
IFdlIG9ubHkgbmVlZCB0byB1cGRhdGUgYnVmZmVyaW5nIHByb2dyZXNzIHdoZW4gcGF1c2VkLCBk
dXJpbmcgbm9ybWFsCisgICAgLy8gcGxheWJhY2sgcGxheWJhY2tQcm9ncmVzc2VkKCkgd2lsbCB0
YWtlIGNhcmUgb2YgaXQuCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5wYXVzZWQoKSkKKyAg
ICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRU
aW1lKCkpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnBsYXliYWNrU3RhcnRlZCgpCit7Cisg
ICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKKyAgICB1cGRhdGVD
dXJyZW50VGltZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAg
c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xzOjpwbGF5YmFja1Byb2dyZXNzZWQoKQoreworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9u
KG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKKyAgICB1cGRhdGVDdXJyZW50VGlt
ZURpc3BsYXkoKTsKKworICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFD
b250cm9sbGVyLT5oYXNWaWRlbygpKQorICAgICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzOjpwbGF5YmFja1N0b3BwZWQoKQoreworICAgIG1fcGxheUJ1dHRv
bi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21l
ZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNw
bGF5KCk7CisgICAgbWFrZU9wYXF1ZSgpOworCisgICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJv
bHNUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZUN1cnJlbnRUaW1lRGlz
cGxheSgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1l
KCk7CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX2N1cnJl
bnRUaW1lRGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29u
dHJvbHNUaW1lKG5vdyksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVu
dFZhbHVlKG5vdyk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6c2hvd1ZvbHVtZVNsaWRlcigp
Cit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV92b2x1bWVTbGlkZXItPnNob3coKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xzOjpjaGFuZ2VkTXV0ZSgpCit7CisgICAgbV9wYW5lbE11dGVCdXR0b24tPmNoYW5nZWRNdXRl
KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6Y2hhbmdlZFZvbHVtZSgpCit7CisgICAgaWYg
KG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVk
aWFDb250cm9sbGVyLT52b2x1bWUoKSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6Y2hhbmdl
ZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpCit7CisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24pCisgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnVwZGF0
ZURpc3BsYXlUeXBlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1bGxzY3Jl
ZW4oKQoreworICAgIG1faXNGdWxsc2NyZWVuID0gdHJ1ZTsKKyAgICBtX2Z1bGxTY3JlZW5CdXR0
b24tPnNldElzRnVsbHNjcmVlbih0cnVlKTsKKworICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0Q3Vyc29ySGlkZGVuVW50
aWxNb3VzZU1vdmVzKHRydWUpOworCisgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGlt
ZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpleGl0ZWRGdWxsc2NyZWVuKCkKK3sKKyAg
ICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNG
dWxsc2NyZWVuKGZhbHNlKTsKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sczo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCit7CisgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwor
CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KSB7
CisgICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgeworICAgICAgICAg
ICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghbV9tZWRp
YUNvbnRyb2xsZXItPmNhblBsYXkoKSkgeworICAgICAgICAgICAgICAgIG1ha2VPcGFxdWUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSGlkZUNvbnRyb2xzKCkpCisgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KSB7CisgICAgICAgIGlmICghY29udGFp
bnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgeworICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRy
b2xzID0gZmFsc2U7CisgICAgICAgICAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgeworICAgICAgICBpZiAobV9p
c0Z1bGxzY3JlZW4pIHsKKyAgICAgICAgICAgIC8vIFdoZW4gd2UgZ2V0IGEgbW91c2UgbW92ZSBp
biBmdWxsc2NyZWVuIG1vZGUsIHNob3cgdGhlIG1lZGlhIGNvbnRyb2xzLCBhbmQgc3RhcnQgYSB0
aW1lcgorICAgICAgICAgICAgLy8gdGhhdCB3aWxsIGhpZGUgdGhlIG1lZGlhIGNvbnRyb2xzIGFm
dGVyIGEgMyBzZWNvbmRzIHdpdGhvdXQgYSBtb3VzZSBtb3ZlLgorICAgICAgICAgICAgbWFrZU9w
YXF1ZSgpOworICAgICAgICAgICAgaWYgKHNob3VsZEhpZGVDb250cm9scygpKQorICAgICAgICAg
ICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xzPiopCit7CisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyLT5wYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRIaWRl
Q29udHJvbHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5V
bnRpbE1vdXNlTW92ZXModHJ1ZSk7CisKKyAgICBtYWtlVHJhbnNwYXJlbnQoKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xzOjpzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpCit7Cisg
ICAgaWYgKCFtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyLnN0YXJ0T25lU2hvdChwYWdlLT50
aGVtZSgpLT50aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scygpKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzOjpzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
KCkKK3sKKyAgICBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lci5zdG9wKCk7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sczo6c2hhZG93UHNldWRvSWQoKSBjb25zdAor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzIikpOworICAgIHJldHVybiBpZDsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xz
Ojpjb250YWluc1JlbGF0ZWRUYXJnZXQoRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghZXZlbnQt
PmlzTW91c2VFdmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRXZlbnRUYXJnZXQq
IHJlbGF0ZWRUYXJnZXQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5yZWxhdGVk
VGFyZ2V0KCk7CisgICAgaWYgKCFyZWxhdGVkVGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIGNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQtPnRvTm9kZSgpKTsKK30KKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKK3ZvaWQgTWVkaWFDb250cm9sczo6Y3JlYXRlVGV4dFRyYWNr
RGlzcGxheSgpCit7CisgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
PiB0ZXh0RGlzcGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0g
dGV4dERpc3BsYXlDb250YWluZXIuZ2V0KCk7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIp
CisgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihtX21l
ZGlhQ29udHJvbGxlcik7CisKKyAgICAvLyBJbnNlcnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250
cm9sbGVyIGVsZW1lbnQgc28gaXQgYWx3YXlzIGRpc3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMu
CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBpbnNlcnRCZWZvcmUodGV4dERpc3BsYXlDb250
YWluZXIucmVsZWFzZSgpLCBtX3BhbmVsLCBlYywgdHJ1ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sczo6c2hvd1RleHRUcmFja0Rpc3BsYXkoKQogeworICAgIGlmICghbV90ZXh0RGlzcGxheUNv
bnRhaW5lcikKKyAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOworICAgIG1fdGV4dERp
c3BsYXlDb250YWluZXItPnNob3coKTsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlVGV4
dFRyYWNrRGlzcGxheSgpCit7CisgICAgaWYgKCFtX3RleHREaXNwbGF5Q29udGFpbmVyKQorICAg
ICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CisgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5l
ci0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHM6OnVwZGF0ZVRleHRUcmFja0Rpc3Bs
YXkoKQoreworICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKKyAgICAgICAgY3JlYXRl
VGV4dFRyYWNrRGlzcGxheSgpOworCisgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRl
RGlzcGxheSgpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKaW5kZXggMjg5MDhhOWExMDdlNDU3MDM5Mjg2ODMyMDMz
ZGJhMjhkMDM3YjYzNi4uOTQyYzBmNDE5OTkxNmVhNDgzMGUyZTdkYzcwNzA4YzIxNDBkZDdiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaApAQCAtMjksNjQg
KzI5LDExNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMu
aCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIK
KyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBQYWdlOworY2xh
c3MgTWVkaWFQbGF5ZXI7CiAKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlck1lZGlhOwor
CisvLyBBbiBhYnN0cmFjdCBjbGFzcyB3aXRoIHRoZSBtZWRpYSBjb250cm9sIGVsZW1lbnRzIHRo
YXQgYWxsIHBvcnRzIHN1cHBvcnQuCiBjbGFzcyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxE
aXZFbGVtZW50IHsKICAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhQ29udHJvbHMoKSB7fQog
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbXBsZW1lbnRlZCBpbiB5b3VyIHBvcnQt
c3BlY2lmaWMgbWVkaWEKLSAgICAvLyBjb250cm9scyBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBj
b250cm9scyBpbXBsZW1lbnRhdGlvbiBzaW5jZSBpdCB3aWxsIHJldHVybiBhIGNoaWxkIGluc3Rh
bmNlLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNyZWF0ZShEb2N1bWVu
dCopOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqKTsKKworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwor
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRlZEVycm9yKCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRl
ZE1ldGFkYXRhKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdygpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgaGlkZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZU9wYXF1ZSgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVRyYW5zcGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
aG93KCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZU9w
YXF1ZSgpOworICAgIHZpcnR1YWwgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlcmluZ1Byb2dyZXNzZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGxheWJhY2tTdGFydGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXliYWNrUHJvZ3Jl
c3NlZCgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0b3BwZWQoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwbGF5YmFja1Byb2dyZXNzZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXli
YWNrU3RhcnRlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tTdG9wcGVkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0dXNEaXNwbGF5KCkgeyB9OworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hv
d1ZvbHVtZVNsaWRlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNoYW5nZWRNdXRlKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkVm9sdW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
aGFuZ2VkTXV0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4
aXRlZEZ1bGxzY3JlZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRDbG9zZWRDYXB0
aW9uc1Zpc2liaWxpdHkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRlZEVycm9yKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBsb2FkZWRNZXRhZGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdGVkRnVsbHNjcmVl
bigpOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRpbWVEaXNwbGF5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTdGF0dXNEaXNwbGF5KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZEhpZGVDb250cm9scygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUZ1bGxz
Y3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9scz4qKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIHZpcnR1YWwgdm9pZCBzaG93VGV4dFRyYWNrRGlzcGxheSgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1RleHRUcmFja0Rp
c3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVRleHRUcmFja0Rpc3BsYXkoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogI2VuZGlmCiAKLSAgICB2aXJ0
dWFsIHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3NlZCgpID0gMDsKLQogcHJvdGVjdGVkOgotICAgIE1l
ZGlhQ29udHJvbHMoRG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xzKERvY3Vt
ZW50Kik7CiAKLXByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9scygpOworICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29udGFp
bnNSZWxhdGVkVGFyZ2V0KEV2ZW50Kik7CisKKyAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uq
IG1fbWVkaWFDb250cm9sbGVyOwogCisgICAgLy8gQ29udGFpbmVyIGZvciB0aGUgbWVkaWEgY29u
dHJvbCBlbGVtZW50cy4KKyAgICBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQqIG1fcGFuZWw7CisK
KyAgICAvLyBDb250YWluZXIgZm9yIHRoZSB0ZXh0IHRyYWNrIGN1ZXMuCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQqIG1f
dGV4dERpc3BsYXlDb250YWluZXI7CisjZW5kaWYKKworICAgIC8vIE1lZGlhIGNvbnRyb2wgZWxl
bWVudHMuCisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIG1fcGxheUJ1dHRvbjsK
KyAgICBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KiBtX2N1cnJlbnRUaW1l
RGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQqIG1fdGltZWxpbmU7Cisg
ICAgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCogbV9wYW5lbE11dGVCdXR0b247
CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCogbV92b2x1bWVTbGlkZXI7Cisg
ICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KiBtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50KiBtX2Z1bGxTY3JlZW5CdXR0b247CisKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xzPiBt
X2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcjsKKyAgICBib29sIG1faXNGdWxsc2NyZWVuOwor
ICAgIGJvb2wgbV9pc01vdXNlT3ZlckNvbnRyb2xzOworCitwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc01lZGlhQ29udHJvbHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07CiAKIGlu
bGluZSBNZWRpYUNvbnRyb2xzKiB0b01lZGlhQ29udHJvbHMoTm9kZSogbm9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlNTM5YzYwMDBlNWJkODExMmNhNzZiYjc4YWRjYjc3M2M1NDY4MmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CkBAIC0wLDAgKzEsNDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRy
b2xzQXBwbGUuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xF
bGVtZW50cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjZW5kaWYKKwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUNvbnRyb2xzQXBw
bGU6Ok1lZGlhQ29udHJvbHNBcHBsZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNv
bnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9yZXdpbmRCdXR0b24oMCkKKyAgICAsIG1fcmV0dXJu
VG9SZWFsVGltZUJ1dHRvbigwKQorICAgICwgbV9zdGF0dXNEaXNwbGF5KDApCisgICAgLCBtX3Rp
bWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX3RpbWVsaW5lQ29udGFpbmVyKDApCisgICAg
LCBtX3NlZWtCYWNrQnV0dG9uKDApCisgICAgLCBtX3NlZWtGb3J3YXJkQnV0dG9uKDApCisgICAg
LCBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24oMCkKKyAgICAsIG1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyKDApCisgICAgLCBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24oMCkKKyAgICAsIG1fZnVs
bFNjcmVlblZvbHVtZVNsaWRlcigwKQorICAgICwgbV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9u
KDApCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250cm9sczo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gTWVkaWFDb250cm9sc0FwcGxl
OjpjcmVhdGVDb250cm9scyhkb2N1bWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9s
c0FwcGxlPiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbHNBcHBsZT4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sc0FwcGxlKGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
UGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9uID0gTWVkaWFDb250cm9sUmV3aW5k
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9yZXdpbmRC
dXR0b24gPSByZXdpbmRCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKHJld2lu
ZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
biAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBwbGF5QnV0
dG9uID0gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgY29udHJvbHMtPm1fcGxheUJ1dHRvbiA9IHBsYXlCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwt
PmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVj
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1Jl
YWx0aW1lQnV0dG9uRWxlbWVudD4gcmV0dXJuVG9SZWFsdGltZUJ1dHRvbiA9IE1lZGlhQ29udHJv
bFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNv
bnRyb2xzLT5tX3JldHVyblRvUmVhbFRpbWVCdXR0b24gPSByZXR1cm5Ub1JlYWx0aW1lQnV0dG9u
LmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChyZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLnJl
bGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXkoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1l
bnQ+IHN0YXR1c0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJvbHMtPm1fc3RhdHVzRGlzcGxheSA9IHN0YXR1
c0Rpc3BsYXkuZ2V0KCk7CisgICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzdGF0dXNEaXNwbGF5
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xz
LT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsKKyAgICB0
aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29u
dHJvbHMtPm1fdGltZWxpbmUgPSB0aW1lbGluZS5nZXQoKTsKKyAgICB0aW1lbGluZUNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVj
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQ+IHRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9sVGlt
ZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xz
LT5tX3RpbWVSZW1haW5pbmdEaXNwbGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXkuZ2V0KCk7Cisg
ICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVSZW1haW5pbmdEaXNwbGF5LnJl
bGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFpbmVyLmdldCgp
OworICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0aW1lbGluZUNvbnRhaW5lci5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gRklYTUU6
IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgorICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IHNlZWtCYWNrQnV0dG9u
ID0gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIGNvbnRyb2xzLT5tX3NlZWtCYWNrQnV0dG9uID0gc2Vla0JhY2tCdXR0b24uZ2V0KCk7Cisg
ICAgcGFuZWwtPmFwcGVuZENoaWxkKHNlZWtCYWNrQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBGSVhNRTogT25seSBj
cmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gc2Vla0ZvcndhcmRCdXR0b24g
PSBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CisgICAgY29udHJvbHMtPm1fc2Vla0ZvcndhcmRCdXR0b24gPSBzZWVrRm9yd2FyZEJ1dHRvbi5n
ZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2Vla0ZvcndhcmRCdXR0b24ucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChk
b2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgewor
ICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVt
ZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJv
bHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbi5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxkKHRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogT25seSBjcmVhdGUgd2hlbiBu
ZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+CisgICAgUmVmUHRyPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuQnV0dG9uID0gTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkp
OworICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2NyZWVuQnV0dG9uLmdl
dCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworCisgICAgLy8gVGhlIG11dGUgYnV0dG9uIGFuZCB0aGUgc2xpZGVyIGVsZW1l
bnQgc2hvdWxkIGJlIGluIHRoZSBzYW1lIGRpdi4KKyAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IHBhbmVsVm9sdW1lQ29udHJvbENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworCisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXIoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAg
Y29udHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1bWVT
bGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gVGhp
cyBpcyBhIGR1cGxpY2F0ZSBtdXRlIGJ1dHRvbiwgd2hpY2ggaXMgdmlzaWJsZSBpbiBzb21lIHBv
cnRzIGF0IHRoZSBib3R0b20gb2YgdGhlIHZvbHVtZSBiYXIuCisgICAgICAgIC8vIEl0J3MgaW1w
b3J0YW50IG9ubHkgd2hlbiB0aGUgdm9sdW1lIGJhciBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhlIGNv
bnRyb2xzLgorICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRv
bkVsZW1lbnQ+IHZvbHVtZVNsaWRlck11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJvbHMt
Pm1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IHZvbHVtZVNsaWRlck11dGVCdXR0b24uZ2V0KCk7
CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xpZGVy
TXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKworICAgICAgICBpZiAoZWMpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXJDb250
YWluZXIgPSB2b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCk7CisgICAgICAgIHBhbmVsVm9sdW1l
Q29udHJvbENvbnRhaW5lci0+YXBwZW5kQ2hpbGQodm9sdW1lU2xpZGVyQ29udGFpbmVyLnJlbGVh
c2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4g
cGFuZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29udHJvbHMtPm1fcGFuZWxNdXRl
QnV0dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOworICAgIHBhbmVsVm9sdW1lQ29udHJvbENv
bnRhaW5lci0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwYW5lbC0+YXBwZW5kQ2hp
bGQocGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRl
ZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24g
PSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uID0gZnVs
bFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVs
bFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVTbGlkZXJFbGVtZW50PiBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29u
dHJvbHMtPm1fZnVsbFNjcmVlblZvbHVtZVNsaWRlciA9IGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIu
Z2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gZnVs
bFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3Jl
ZW5NYXhWb2x1bWVCdXR0b24gPSBmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLmdldCgpOworICAg
IHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9s
cy0+bV9wYW5lbCA9IHBhbmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChwYW5l
bC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
QXBwbGU6OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRy
b2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIE1lZGlhQ29udHJvbHM6OnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKworICAgIGlmIChtX3Jld2luZEJ1dHRvbikKKyAgICAgICAgbV9yZXdpbmRCdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9yZXR1cm5Ub1Jl
YWxUaW1lQnV0dG9uKQorICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9zdGF0dXNEaXNwbGF5KQorICAgICAg
ICBtX3N0YXR1c0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBp
ZiAobV90aW1lUmVtYWluaW5nRGlzcGxheSkKKyAgICAgICAgbV90aW1lUmVtYWluaW5nRGlzcGxh
eS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVsaW5lQ29u
dGFpbmVyKQorICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7CisgICAgaWYgKG1fc2Vla0JhY2tCdXR0b24pCisgICAgICAgIG1fc2Vla0Jh
Y2tCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9zZWVr
Rm9yd2FyZEJ1dHRvbikKKyAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+c2V0TWVkaWFDb250
cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24pCisg
ICAgICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92b2x1
bWVTbGlkZXJDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBp
ZiAobV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uKQorICAgICAgICBtX2Z1bGxTY3JlZW5NaW5W
b2x1bWVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9m
dWxsU2NyZWVuVm9sdW1lU2xpZGVyKQorICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIt
PnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsU2NyZWVuTWF4
Vm9sdW1lQnV0dG9uKQorICAgICAgICBtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24tPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6
OmhpZGUoKQoreworICAgIE1lZGlhQ29udHJvbHM6OmhpZGUoKTsKKyAgICBtX3ZvbHVtZVNsaWRl
ckNvbnRhaW5lci0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6bWFrZVRy
YW5zcGFyZW50KCkKK3sKKyAgICBNZWRpYUNvbnRyb2xzOjptYWtlVHJhbnNwYXJlbnQoKTsKKyAg
ICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJv
bHNBcHBsZTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTdGF0dXNEaXNw
bGF5KCk7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnN1cHBvcnRzRnVsbHNjcmVlbigp
KQorICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3coKTsKKyAgICBlbHNlCisgICAgICAg
IG1fZnVsbFNjcmVlbkJ1dHRvbi0+aGlkZSgpOworCisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21l
ZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVyYXRpb24pIHx8
IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRl
clBhcnQpKSB7CisgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAg
ICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hvdygpOworICAgICAgICBtX3RpbWVsaW5lLT5z
ZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7CisgICAgICAgIHVw
ZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIH0gZWxzZQorICAgICAgICBtX3RpbWVsaW5l
Q29udGFpbmVyLT5oaWRlKCk7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlv
KCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlh
TXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOworICAg
IGVsc2UKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKKworICAgIGlmIChtX3Zv
bHVtZVNsaWRlcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29u
dHJvbGxlci0+dm9sdW1lKCkpOworCisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b24pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNDbG9zZWRDYXB0aW9ucygp
KQorICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+c2hvdygpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRl
KCk7CisgICAgfQorCisgICAgaWYgKG1fcGxheUJ1dHRvbikKKyAgICAgICAgbV9wbGF5QnV0dG9u
LT51cGRhdGVEaXNwbGF5VHlwZSgpOworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAg
IGlmIChtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlblZvbHVt
ZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CisKKyAgICBp
ZiAobV9pc0Z1bGxzY3JlZW4pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0xp
dmVTdHJlYW0oKSkgeworICAgICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+aGlkZSgpOworICAg
ICAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+aGlkZSgpOworICAgICAgICAgICAgbV9yZXdp
bmRCdXR0b24tPnNob3coKTsKKyAgICAgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+
c2hvdygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+
c2hvdygpOworICAgICAgICAgICAgbV9zZWVrRm9yd2FyZEJ1dHRvbi0+c2hvdygpOworICAgICAg
ICAgICAgbV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKKyAgICAgICAgICAgIG1fcmV0dXJuVG9SZWFs
VGltZUJ1dHRvbi0+aGlkZSgpOworICAgICAgICB9CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICBp
ZiAoIW1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkgeworICAgICAgICBtX3JldHVy
blRvUmVhbFRpbWVCdXR0b24tPmhpZGUoKTsKKyAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNob3co
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3JldHVyblRvUmVhbFRpbWVCdXR0b24tPnNob3co
KTsKKyAgICAgICAgbV9yZXdpbmRCdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBtYWtlT3Bh
cXVlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjp1cGRhdGVDdXJyZW50VGltZURp
c3BsYXkoKQoreworICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIGZvcm1hdCB0aGUg
dGltZS4KKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5z
ZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1l
KG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldEN1cnJl
bnRWYWx1ZShub3cpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVyVGV4dChw
YWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3csIGR1cmF0
aW9uKSwgZWMpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShu
b3cgLSBkdXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXBvcnRlZEVy
cm9yKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25E
aXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFTbGlkZXJQYXJ0KSkKKyAgICAgICAgbV90aW1l
bGluZUNvbnRhaW5lci0+aGlkZSgpOworCisgICAgaWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25E
aXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1f
cGFuZWxNdXRlQnV0dG9uLT5oaWRlKCk7CisKKyAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUo
KTsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92b2x1bWVT
bGlkZXJDb250YWluZXItPmhpZGUoKTsKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1l
ZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6
dXBkYXRlU3RhdHVzRGlzcGxheSgpCit7CisgICAgaWYgKG1fc3RhdHVzRGlzcGxheSkKKyAgICAg
ICAgbV9zdGF0dXNEaXNwbGF5LT51cGRhdGUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBw
bGU6OmxvYWRlZE1ldGFkYXRhKCkKK3sKKyAgICBpZiAobV9zdGF0dXNEaXNwbGF5ICYmIG1fbWVk
aWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkKKyAgICAgICAgbV9zdGF0dXNEaXNwbGF5LT5o
aWRlKCk7CisKKyAgICBNZWRpYUNvbnRyb2xzOjpsb2FkZWRNZXRhZGF0YSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbHNBcHBsZTo6Y2hhbmdlZE11dGUoKQoreworICAgIE1lZGlhQ29udHJvbHM6
OmNoYW5nZWRNdXRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uKQorICAg
ICAgICBtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24tPmNoYW5nZWRNdXRlKCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sc0FwcGxlOjpjaGFuZ2VkVm9sdW1lKCkKK3sKKyAgICBNZWRpYUNvbnRyb2xz
OjpjaGFuZ2VkVm9sdW1lKCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKQor
ICAgICAgICBtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJv
bGxlci0+dm9sdW1lKCkpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6ZW50ZXJlZEZ1
bGxzY3JlZW4oKQoreworICAgIE1lZGlhQ29udHJvbHM6OmVudGVyZWRGdWxsc2NyZWVuKCk7Cisg
ICAgbV9wYW5lbC0+c2V0Q2FuQmVEcmFnZ2VkKHRydWUpOworCisgICAgaWYgKG1fbWVkaWFDb250
cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkgeworICAgICAgICBtX3NlZWtCYWNrQnV0dG9uLT5oaWRl
KCk7CisgICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPmhpZGUoKTsKKyAgICAgICAgbV9yZXdp
bmRCdXR0b24tPnNob3coKTsKKyAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zaG93
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygpOworICAg
ICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zaG93KCk7CisgICAgICAgIG1fcmV3aW5kQnV0dG9u
LT5oaWRlKCk7CisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgpOworICAg
IH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmV4aXRlZEZ1bGxzY3JlZW4oKQorewor
ICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7CisgICAgbV9zZWVrQmFja0J1dHRvbi0+c2hvdygp
OworICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNob3coKTsKKyAgICBtX3JldHVyblRvUmVhbFRp
bWVCdXR0b24tPnNob3coKTsKKworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZChmYWxzZSk7
CisKKyAgICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBhbmVsLCBidXQgd2Ugd2FudCBpdCB0
byBnbyBiYWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4KKyAgICAvLyBUaGlzIHdpbGwgbWF0
dGVyIHJpZ2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBhbmVsIGV2ZW4gd2hlbiBub3QgZnVs
bHNjcmVlbi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBmdWxsc2NyZWVuIHdlIGFsc28gd2Fu
dCB0aGUgcGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAgIG1fcGFuZWwtPnJlc2V0
UG9zaXRpb24oKTsKKworICAgIE1lZGlhQ29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dWb2x1bWVTbGlkZXIoKQoreworICAgIGlm
ICghbV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXJDb250
YWluZXItPnNob3coKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhjZTc1ZDM0NTMzMTdj
YTEyN2VmYmY5M2FhZjliYjcwYTJmZWFkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xzQXBwbGVf
aAorI2RlZmluZSBNZWRpYUNvbnRyb2xzQXBwbGVfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisj
aW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1lZGlhQ29udHJvbHNBcHBsZSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQXBwbGU+IGNyZWF0ZUNvbnRyb2xzKERv
Y3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZp
cnR1YWwgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKikg
T1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRNdXRlKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRWb2x1bWUoKSBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBleGl0ZWRGdWxsc2NyZWVuKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
ZWRFcnJvcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBsb2FkZWRNZXRhZGF0YSgpIE9W
RVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKSBPVkVSUklERTsKKworcHJpdmF0
ZToKKyAgICBNZWRpYUNvbnRyb2xzQXBwbGUoRG9jdW1lbnQqKTsKKworCisgICAgTWVkaWFDb250
cm9sUmV3aW5kQnV0dG9uRWxlbWVudCogbV9yZXdpbmRCdXR0b247CisgICAgTWVkaWFDb250cm9s
UmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQqIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbjsK
KyAgICBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudCogbV9zdGF0dXNEaXNwbGF5Owor
ICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCogbV90aW1lUmVtYWlu
aW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQqIG1f
dGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
KiBtX3NlZWtCYWNrQnV0dG9uOworICAgIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxl
bWVudCogbV9zZWVrRm9yd2FyZEJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJN
dXRlQnV0dG9uRWxlbWVudCogbV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uOworICAgIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQqIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
OworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KiBtX2Z1
bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b247CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZVNsaWRlckVsZW1lbnQqIG1fZnVsbFNjcmVlblZvbHVtZVNsaWRlcjsKKyAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCogbV9mdWxsU2NyZWVuTWF4Vm9sdW1l
QnV0dG9uOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2
ODNlYjMwY2FmZDdjY2I5N2UwZTNjMzNmMTNhMjZlYzBhZjc1NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKQEAg
LTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNDaHJvbWl1
bS5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01l
ZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudDo6TWVkaWFDb250cm9sQ2hyb21pdW1F
bmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVs
ZW1lbnQoZG9jdW1lbnQpCit7Cit9CisKK01lZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29u
dHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAoreworICAg
IC8vIE1hcHBpbmcgb250byBzYW1lIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGFzIHBhbmVsIGVs
ZW1lbnQsIHNpbmNlIGl0IGhhcyBzaW1pbGFyIHByb3BlcnRpZXMuCisgICAgcmV0dXJuIE1lZGlh
Q29udHJvbHNQYW5lbDsKK30KKworTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IDogTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50KGRvY3VtZW50KQoreworfQor
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJlRWxlbWVudD4gTWVkaWFDb250
cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50
KGRvY3VtZW50KSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGFuZWxF
bmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW5j
bG9zdXJlIikpOworICAgIHJldHVybiBpZDsKK30KKworTWVkaWFDb250cm9sc0Nocm9taXVtOjpN
ZWRpYUNvbnRyb2xzQ2hyb21pdW0oRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250
cm9scyhkb2N1bWVudCkKKyAgICAsIG1fZHVyYXRpb25EaXNwbGF5KDApCisgICAgLCBtX2VuY2xv
c3VyZSgwKQoreworfQorCisvLyBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoKSBmb3IgQW5kcm9pZCBp
cyBkZWZpbmVkIGluIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuY3BwLgorI2lmICFPUyhB
TkRST0lEKQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBNZWRpYUNvbnRyb2xzQ2hyb21pdW06
OmNyZWF0ZUNvbnRyb2xzKGRvY3VtZW50KTsKK30KKyNlbmRpZgorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbHNDaHJvbWl1bT4gTWVkaWFDb250cm9sc0Nocm9taXVtOjpjcmVhdGVDb250cm9scyhE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzQ2hyb21pdW0+IGNvbnRyb2xz
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNDaHJvbWl1bShkb2N1bWVudCkpOworCisgICAg
aWYgKGNvbnRyb2xzLT5pbml0aWFsaXplQ29udHJvbHMoZG9jdW1lbnQpKQorICAgICAgICByZXR1
cm4gY29udHJvbHMucmVsZWFzZSgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFD
b250cm9sc0Nocm9taXVtOjppbml0aWFsaXplQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIC8vIENyZWF0ZSBhbiBlbmNsb3NpbmcgZWxlbWVudCBmb3IgdGhlIHBhbmVsIHNvIHdl
IGNhbiB2aXN1YWxseSBvZmZzZXQgdGhlIGNvbnRyb2xzIGNvcnJlY3RseS4KKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50PiBlbmNsb3N1cmUgPSBNZWRpYUNvbnRy
b2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBtX3BsYXlCdXR0b24g
PSBwbGF5QnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJl
bGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7CisgICAgbV90
aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0aW1lbGlu
ZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBj
dXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5ID0gY3VycmVudFRp
bWVEaXNwbGF5LmdldCgpOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5oaWRlKCk7CisgICAg
cGFuZWwtPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGR1cmF0aW9uRGlzcGxheSA9IE1l
ZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBtX2R1cmF0aW9uRGlzcGxheSA9IGR1cmF0aW9uRGlzcGxheS5nZXQoKTsKKyAgICBwYW5l
bC0+YXBwZW5kQ2hpbGQoZHVyYXRpb25EaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJv
bFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IHBhbmVsTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBh
bmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgdGhpcyk7CisgICAgbV9wYW5l
bE11dGVCdXR0b24gPSBwYW5lbE11dGVCdXR0b24uZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHBhbmVsTXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIG1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOworICAgIG1f
dm9sdW1lU2xpZGVyLT5zZXRDbGVhck11dGVkT25Vc2VySW50ZXJhY3Rpb24odHJ1ZSk7CisgICAg
cGFuZWwtPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50
aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgeworICAgICAgICBSZWZQdHI8TWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbiA9IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLmdldCgpOworICAgICAgICBwYW5lbC0+
YXBwZW5kQ2hpbGQodG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxzY3Jl
ZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCB0aGlzKTsKKyAgICBtX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsc2NyZWVuQnV0dG9u
LmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuQnV0dG9uLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9wYW5lbCA9IHBhbmVsLmdldCgpOworICAgIGVuY2xvc3VyZS0+YXBwZW5kQ2hpbGQocGFuZWwu
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtX2VuY2xvc3VyZSA9IGVuY2xvc3VyZS5nZXQoKTsKKyAgICBhcHBlbmRDaGlsZChl
bmNsb3N1cmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQ2hy
b21pdW06OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRy
b2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIE1lZGlhQ29udHJvbHM6OnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKworICAgIGlmIChtX2R1cmF0aW9uRGlzcGxheSkKKyAgICAgICAgbV9kdXJhdGlv
bkRpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9lbmNs
b3N1cmUpCisgICAgICAgIG1fZW5jbG9zdXJlLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxl
cik7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtOjpyZXNldCgpCit7CisgICAgUGFn
ZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9u
KCk7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5m
b3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlvbiksIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgIG1fZHVyYXRpb25EaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUoZHVyYXRpb24pOworCisgICAg
TWVkaWFDb250cm9sczo6cmVzZXQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06
OnBsYXliYWNrU3RhcnRlZCgpCit7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNob3coKTsK
KyAgICBtX2R1cmF0aW9uRGlzcGxheS0+aGlkZSgpOworCisgICAgTWVkaWFDb250cm9sczo6cGxh
eWJhY2tTdGFydGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtOjp1cGRhdGVD
dXJyZW50VGltZURpc3BsYXkoKQoreworICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmR1cmF0aW9uKCk7CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWZ0ZXIgc2VlaywgaGlkZSBk
dXJhdGlvbiBkaXNwbGF5IGFuZCBzaG93IGN1cnJlbnQgdGltZS4KKyAgICBpZiAobm93ID4gMCkg
eworICAgICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2hvdygpOworICAgICAgICBtX2R1cmF0
aW9uRGlzcGxheS0+aGlkZSgpOworICAgIH0KKworICAgIC8vIEFsbG93IHRoZSB0aGVtZSB0byBm
b3JtYXQgdGhlIHRpbWUuCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX2N1cnJlbnRUaW1l
RGlzcGxheS0+c2V0SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHND
dXJyZW50VGltZShub3csIGR1cmF0aW9uKSwgZWMpOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5
LT5zZXRDdXJyZW50VmFsdWUobm93KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06
OmNoYW5nZWRNdXRlKCkKK3sKKyAgICBNZWRpYUNvbnRyb2xzOjpjaGFuZ2VkTXV0ZSgpOworCisg
ICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5tdXRlZCgpKQorICAgICAgICBtX3ZvbHVtZVNsaWRl
ci0+c2V0Vm9sdW1lKDApOworICAgIGVsc2UKKyAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZv
bHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOworfQorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQordm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW06OmNyZWF0ZVRleHRUcmFja0Rpc3Bs
YXkoKQoreworICAgIGlmIChtX3RleHREaXNwbGF5Q29udGFpbmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gdGV4
dERpc3BsYXlDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lciA9IHRleHRE
aXNwbGF5Q29udGFpbmVyLmdldCgpOworCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQorICAg
ICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIobV9tZWRpYUNv
bnRyb2xsZXIpOworCisgICAgLy8gSW5zZXJ0IGl0IGJlZm9yZSB0aGUgZmlyc3QgY29udHJvbGxl
ciBlbGVtZW50IHNvIGl0IGFsd2F5cyBkaXNwbGF5cyBiZWhpbmQgdGhlIGNvbnRyb2xzLgorICAg
IC8vIEluIHRoZSBDaHJvbWl1bSBjYXNlLCB0aGF0J3MgdGhlIGVuY2xvc3VyZSBlbGVtZW50Lgor
ICAgIGluc2VydEJlZm9yZSh0ZXh0RGlzcGxheUNvbnRhaW5lci5yZWxlYXNlKCksIG1fZW5jbG9z
dXJlLCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0No
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21p
dW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNjFkZGIxNjEwNGRmZDRiMzg3ZDJhMDc2Y2Y5ZTJiYzBiZGU2N2Jl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0Nocm9taXVtLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lZGlhQ29udHJvbHNDaHJvbWl1bV9oCisjZGVmaW5lIE1lZGlhQ29udHJvbHND
aHJvbWl1bV9oCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xz
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb250cm9sQ2hyb21pdW1F
bmNsb3N1cmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgeworcHJvdGVjdGVk
OgorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChEb2N1
bWVudCopOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
ZGlzcGxheVR5cGUoKSBjb25zdDsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9z
dXJlRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xDaHJvbWl1bUVuY2xvc3VyZUVsZW1lbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRW5jbG9z
dXJlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
TWVkaWFDb250cm9sUGFuZWxFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Cit9OworCitjbGFz
cyBNZWRpYUNvbnRyb2xzQ2hyb21pdW0gOiBwdWJsaWMgTWVkaWFDb250cm9scyB7CitwdWJsaWM6
CisgICAgLy8gQ2FsbGVkIGZyb20gcG9ydC1zcGVjaWZpYyBwYXJlbnQgY3JlYXRlIGZ1bmN0aW9u
IHRvIGNyZWF0ZSBjdXN0b20gY29udHJvbHMuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sc0Nocm9taXVtPiBjcmVhdGVDb250cm9scyhEb2N1bWVudCopOworCisgICAgdmlydHVh
bCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqKSBPVkVS
UklERTsKKworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOworCisgICAgdmlydHVh
bCB2b2lkIHBsYXliYWNrU3RhcnRlZCgpIE9WRVJSSURFOworCisgICAgdm9pZCBjaGFuZ2VkTXV0
ZSgpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpIE9WRVJSSURFOworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQgY3JlYXRl
VGV4dFRyYWNrRGlzcGxheSgpIE9WRVJSSURFOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBl
eHBsaWNpdCBNZWRpYUNvbnRyb2xzQ2hyb21pdW0oRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaW5p
dGlhbGl6ZUNvbnRyb2xzKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9s
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBtX2R1cmF0aW9uRGlzcGxheTsKKyAgICBNZWRp
YUNvbnRyb2xQYW5lbEVuY2xvc3VyZUVsZW1lbnQqIG1fZW5jbG9zdXJlOworfTsKKworfQorCisj
ZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYmM1YWVl
NjdlOWYwMGI4ODIyNzdmZGU1ZWEzNjA1Yjg3YzIwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmNwcApA
QCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1l
bnQ6Ok1lZGlhQ29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbENocm9taXVtRW5jbG9zdXJlRWxlbWVudChkb2N1bWVudCkK
K3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudD4g
TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xPdmVybGF5RW5j
bG9zdXJlRWxlbWVudChkb2N1bWVudCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbE92ZXJsYXlFbmNsb3N1cmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVk
aWEtY29udHJvbHMtb3ZlcmxheS1lbmNsb3N1cmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitNZWRpYUNvbnRyb2xzQ2hyb21pdW1B
bmRyb2lkOjpNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkKERvY3VtZW50KiBkb2N1bWVudCkK
KyAgICA6IE1lZGlhQ29udHJvbHNDaHJvbWl1bShkb2N1bWVudCkKKyAgICAsIG1fb3ZlcmxheVBs
YXlCdXR0b24oMCkKKyAgICAsIG1fb3ZlcmxheUVuY2xvc3VyZSgwKQoreworfQorCitQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgcmV0dXJuIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQ6OmNyZWF0ZShk
b2N1bWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZD4g
TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZDo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqIGRv
Y3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZD4gY29udHJvbHMgPSBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZChkb2N1bWVudCkpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5j
bG9zdXJlRWxlbWVudD4gb3ZlcmxheUVuY2xvc3VyZSA9IE1lZGlhQ29udHJvbE92ZXJsYXlFbmNs
b3N1cmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xP
dmVybGF5UGxheUJ1dHRvbkVsZW1lbnQ+IG92ZXJsYXlQbGF5QnV0dG9uID0gTWVkaWFDb250cm9s
T3ZlcmxheVBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xz
LT5tX292ZXJsYXlQbGF5QnV0dG9uID0gb3ZlcmxheVBsYXlCdXR0b24uZ2V0KCk7CisgICAgb3Zl
cmxheUVuY2xvc3VyZS0+YXBwZW5kQ2hpbGQob3ZlcmxheVBsYXlCdXR0b24ucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xz
LT5tX292ZXJsYXlFbmNsb3N1cmUgPSBvdmVybGF5RW5jbG9zdXJlLmdldCgpOworICAgIGNvbnRy
b2xzLT5hcHBlbmRDaGlsZChvdmVybGF5RW5jbG9zdXJlLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoY29udHJvbHMtPmluaXRp
YWxpemVDb250cm9scyhkb2N1bWVudCkpCisgICAgICAgIHJldHVybiBjb250cm9scy5yZWxlYXNl
KCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRy
b2lkOjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9s
bGVyKQoreworICAgIGlmIChtX292ZXJsYXlQbGF5QnV0dG9uKQorICAgICAgICBtX292ZXJsYXlQ
bGF5QnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fb3Zl
cmxheUVuY2xvc3VyZSkKKyAgICAgICAgbV9vdmVybGF5RW5jbG9zdXJlLT5zZXRNZWRpYUNvbnRy
b2xsZXIoY29udHJvbGxlcik7CisgICAgTWVkaWFDb250cm9sc0Nocm9taXVtOjpzZXRNZWRpYUNv
bnRyb2xsZXIoY29udHJvbGxlcik7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtQW5k
cm9pZDo6cGxheWJhY2tTdGFydGVkKCkKK3sKKyAgICBtX292ZXJsYXlQbGF5QnV0dG9uLT51cGRh
dGVEaXNwbGF5VHlwZSgpOworICAgIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cGxheWJhY2tTdGFy
dGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZDo6cGxheWJhY2tT
dG9wcGVkKCkKK3sKKyAgICBtX292ZXJsYXlQbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgp
OworICAgIE1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cGxheWJhY2tTdG9wcGVkKCk7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQ2hyb21pdW1BbmRyb2lkLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE5MjU4MjkwMDM4Y2Y0Mjc2
MmRmZGYyYWI5MDc4Yjk1OTAxODNlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQuaApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xzQ2hyb21pdW1BbmRyb2lkX2gKKyNk
ZWZpbmUgTWVkaWFDb250cm9sc0Nocm9taXVtQW5kcm9pZF9oCisKKyNpZiBFTkFCTEUoVklERU8p
CisjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNDaHJv
bWl1bS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhQ29udHJvbE92ZXJs
YXlQbGF5QnV0dG9uRWxlbWVudDsKKworY2xhc3MgTWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3Vy
ZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sQ2hyb21pdW1FbmNsb3N1cmVFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9z
dXJlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
TWVkaWFDb250cm9sT3ZlcmxheUVuY2xvc3VyZUVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKK307CisKK2Ns
YXNzIE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQgOiBwdWJsaWMgTWVkaWFDb250cm9sc0No
cm9taXVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQ2hy
b21pdW1BbmRyb2lkPiBjcmVhdGVDb250cm9scyhEb2N1bWVudCopOworCisgICAgdmlydHVhbCB2
b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheWJhY2tTdGFydGVkKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IE1lZGlhQ29udHJvbHNDaHJvbWl1bUFuZHJvaWQoRG9jdW1lbnQqKTsKKworICAgIE1l
ZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudCogbV9vdmVybGF5UGxheUJ1dHRvbjsK
KyAgICBNZWRpYUNvbnRyb2xPdmVybGF5RW5jbG9zdXJlRWxlbWVudCogbV9vdmVybGF5RW5jbG9z
dXJlOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5oCmluZGV4IGIxNDc0OTMxODljOGE2ZTZiZmI4NTIyNGFiYWQ1YzY3N2I1ODdj
MjEuLjY3N2M1NjNiZmQ0MDExYmI0OWI3OGJmMzliN2Q3ZmJjZmU4MTA3NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0yMDcsNiArMjA3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCB1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWVkaWFDb250cm9sc0ZhZGVJbkR1cmF0aW9u
KCkgeyByZXR1cm4gMC4xOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWVkaWFDb250cm9sc0ZhZGVP
dXREdXJhdGlvbigpIHsgcmV0dXJuIDAuMzsgfQorICAgIHZpcnR1YWwgZG91YmxlIHRpbWVXaXRo
b3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKCkgeyByZXR1cm4gMy4wOyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgZm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZmxvYXQgdGltZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgZm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKGZs
b2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlvbikgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJp
bmcgZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUoZmxvYXQgY3VycmVudFRpbWUsIGZs
b2F0IGR1cmF0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29udGV4dE1lbnVEYXRhLmgKaW5kZXggYTM2MzcyMTkyNjkwMjk0OTI1NDgyYzY5MTA0
NjVmY2QwZTM2OGQ3MS4uN2FhZWU5ZDUyMzQ4ODM1ZWQ0NTJhYjAxNjU1YTVhZTQ4MmM1MTE3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGV4dE1lbnVE
YXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGV4dE1lbnVE
YXRhLmgKQEAgLTEwMCw3ICsxMDAsOSBAQCBzdHJ1Y3QgV2ViQ29udGV4dE1lbnVEYXRhIHsKICAg
ICAgICAgTWVkaWFDYW5TYXZlID0gMHgxMCwKICAgICAgICAgTWVkaWFIYXNBdWRpbyA9IDB4MjAs
CiAgICAgICAgIE1lZGlhSGFzVmlkZW8gPSAweDQwLAorICAgICAgICAvLyBGSVhNRTogUmVtb3Zl
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50IGFmdGVyIHBhdGNoIGxhbmRzIGZvciB3ZWJraXQub3Jn
L2IvODg4NzEuCiAgICAgICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50ID0gMHg4MCwKKyAgICAg
ICAgTWVkaWFDb250cm9scyA9IDB4ODAsCiAgICAgICAgIE1lZGlhQ2FuUHJpbnQgPSAweDEwMCwK
ICAgICAgICAgTWVkaWFDYW5Sb3RhdGUgPSAweDIwMCwKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggYWQx
MTYwOTBjZGVhYWU2M2QxMjYxNjRlMWQ3MGNiMDM3NzIyMjhhNC4uOTU1NDYwMDcyYmI4MWE1NTI2
ZDkxY2JjMTQ0MzQ4NThlYWMyZGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgUGxh
dGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51
RnJvbURlZmF1bHRJdGVtcygKICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+aGFzVmlkZW8oKSkK
ICAgICAgICAgICAgIGRhdGEubWVkaWFGbGFncyB8PSBXZWJDb250ZXh0TWVudURhdGE6Ok1lZGlh
SGFzVmlkZW87CiAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPmNvbnRyb2xzKCkpCi0gICAgICAg
ICAgICBkYXRhLm1lZGlhRmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYUNvbnRyb2xS
b290RWxlbWVudDsKKyAgICAgICAgICAgIGRhdGEubWVkaWFGbGFncyB8PSBXZWJDb250ZXh0TWVu
dURhdGE6Ok1lZGlhQ29udHJvbHM7CiAgICAgfSBlbHNlIGlmIChyLmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQogICAgICAgICAgICAgICAgfHwg
ci5pbm5lck5vblNoYXJlZE5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKSkg
ewogICAgICAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHIuaW5uZXJOb25TaGFyZWROb2RlKCkt
PnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtbW91bnRhaW5saW9uL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1tYWMtbW91bnRhaW5saW9uL1Rlc3RFeHBlY3RhdGlvbnMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNm
ZDVkMDg4NjExYzA2NGQ3ODg1NTliMWUyZGY2NDEyMmY2NmMwYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1tb3VudGFpbmxpb24vVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMCwwICsxLDggQEAKKyMgTk9URTogVGhpcyBmaWxlIGlzIHRlbXBvcmFyeSBh
bmQgc2hvdWxkIG9ubHkgYmUgbW9kaWZpZWQgYnkKKyMgZHByYW5rZUBjaHJvbWl1bS5vcmcgb3Ig
b3RoZXJzIHdvcmtpbmcgb24gZ2V0dGluZyB0aGUgQ2hyb21pdW0gcG9ydAorIyBwYXNzaW5nIGNs
ZWFubHkgb24gTW91bnRhaW4gTGlvbi4KKyMKKyMgQWxsIG5vcm1hbCB0ZXN0IHN1cHByZXNzaW9u
cyBzaG91bGQgZ28gaW4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9ucyBpbnN0ZWFkCisjCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZDRkYjg3Njc4ZDRmNWY5YzZiOWE3ZDc5ODI3MGU3NWNmNzg4
ODBhMS4uMGUyOWVmODhkZTEyZjJiYWI1YjNjNzJiOGM1MDE5OWQ0OWQwYjYxOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTcxLDYg
KzM5NzEsOSBAQCB3ZWJraXQub3JnL2IvODkxNjcgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRl
cmluZy12ZXJ0aWNhbC5odG1sIFsgRmFpbHVyZSBdCiAjd2Via2l0Lm9yZy9iLzk4NzY2IFsgQW5k
cm9pZCBdIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZh
aWx1cmUgXQogI3dlYmtpdC5vcmcvYi85ODc2NiBbIEFuZHJvaWQgXSBtZWRpYS90cmFjay90cmFj
ay1jdWUtcmVuZGVyaW5nLWhvcml6b250YWwuaHRtbCBbIEZhaWx1cmUgXQogCisjIFJlcXVpcmUg
cmViYXNlbGluaW5nIGFmdGVyIHdlYmtpZy5vcmcvYi84ODg3MQord2Via2l0Lm9yZy9iLzg4ODcx
IG1lZGlhL3ZpZGVvLWVtcHR5LXNvdXJjZS5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmtpdC5vcmcv
Yi85ODY4NiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy5odG1sIFsgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMzE2NiBbIEFuZHJvaWQgTWFjIFdpbiBdIGZhc3QvY3Nz
L2JhY2tncm91bmQtY2xpcC1yYWRpdXMtdmFsdWVzLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1
cmUgXQo=
</data>
<flag name="review"
          id="188560"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="188695"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>