<?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>30707</bug_id>
          
          <creation_ts>2009-10-22 23:55:25 -0700</creation_ts>
          <short_desc>WebInspector: Refactors InspectorTimelineAgent to eliminate TimelineItem classes</short_desc>
          <delta_ts>2009-10-27 13:56:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Eric Ayers">zundel</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>knorton</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>zundel</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>157111</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Ayers">zundel</who>
    <bug_when>2009-10-22 23:55:25 -0700</bug_when>
    <thetext>This patch is in response to comments in issues 30578, 30467 that prescribe removing the Timeline item classes in favor of creating a ScriptObject directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157113</commentid>
    <comment_count>1</comment_count>
      <attachid>41715</attachid>
    <who name="Eric Ayers">zundel</who>
    <bug_when>2009-10-22 23:57:24 -0700</bug_when>
    <thetext>Created attachment 41715
WebInspector: Refactors InspectorTimelineAgent to remove TimelineItem classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157159</commentid>
    <comment_count>2</comment_count>
      <attachid>41715</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-23 07:37:54 -0700</bug_when>
    <thetext>Comment on attachment 41715
WebInspector: Refactors InspectorTimelineAgent to remove TimelineItem classes

I see how lack of getters hurts you, sorry about that - we should probably implement those. It would be great if you made the stack explicit other than encapuslating it into your new class. It would look really short then, no heap allocations, brought back assert. What do I miss, why the additional complexity?

struct TimelineEventEntry {
    public TimelineEvent(object, children, type) : object(object), children(children), type(type) {}
    ScriptObject object;
    ScriptArray children;
    int type;
}

Vector&lt; TimelineEventEntry &gt; m_eventStack;


InspectorTimelineAgent::willRecalculateStyle()
{
    pushTimelineItem(TimelineItemFactory::createGenericTimelineItem(m_frontend, currentTimeInMilliseconds()), RecalculateStylesTimelineItemType);
}

InspectorTimelineAgent::didRecalculateStyle()
{
    popTimelineItem(RecalculateStylesTimelineItemType);
}

InspectorTimelineAgent::pushTimelineItem(ScriptObject event, int type)
{
    ScriptArray children = m_frontend-&gt;newScriptArray();
    event.set(&quot;type&quot;, type);
    event.set(&quot;children&quot;, children);
    m_eventStack.append(TimelineEventEntry(event, children, type));
}

InspectorTimelineAgent::popTimelineItem(int type)
{
    TimelineEventEntry event = m_eventStack.last();
    m_eventStack.removeLast();
    ASSERT(event.type == type);
    event.object.set(&quot;endTime&quot;, currentTimeInMilliseconds());

    if (m_eventStack.size()) {
        TimelineEventEntry parent = m_eventStack.last();
        parent.children.set(parent.children.length(), event.object);
    } else {
        m_frontend-&gt;addItemToTimeline(event.object);
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157160</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-23 07:45:50 -0700</bug_when>
    <thetext>Your ChangeLog should have url of this bug. This is a requirement (see other entries).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157178</commentid>
    <comment_count>4</comment_count>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-10-23 10:10:44 -0700</bug_when>
    <thetext>A Vector will work just fine, here&apos;s the reason I used a singly linked list:

Without getters on ScriptObject&apos;s there is no getting around having a C++ wrapper object because you need a place to keep the m_children ScriptArray. Since you have to create a C++ object anyway, it would be better to have constant-time push/pop of a linked list rather than the aggregated constant-time of a sensibly growing Vector (I haven&apos;t even looked to see if WTF::Vector uses a growth strategy that will give us aggregated constant time).

So, a Vector will work just fine here but it&apos;s actually too complex a data structure for our needs and adds some unfortunate runtime complexity. But I think it&apos;s a pretty minor detail overall, so I&apos;ll defer to your judgement.


(In reply to comment #2)
&gt; (From update of attachment 41715 [details])
&gt; I see how lack of getters hurts you, sorry about that - we should probably
&gt; implement those. It would be great if you made the stack explicit other than
&gt; encapuslating it into your new class. It would look really short then, no heap
&gt; allocations, brought back assert. What do I miss, why the additional
&gt; complexity?
&gt; 
&gt; struct TimelineEventEntry {
&gt;     public TimelineEvent(object, children, type) : object(object),
&gt; children(children), type(type) {}
&gt;     ScriptObject object;
&gt;     ScriptArray children;
&gt;     int type;
&gt; }
&gt; 
&gt; Vector&lt; TimelineEventEntry &gt; m_eventStack;
&gt; 
&gt; 
&gt; InspectorTimelineAgent::willRecalculateStyle()
&gt; {
&gt;     pushTimelineItem(TimelineItemFactory::createGenericTimelineItem(m_frontend,
&gt; currentTimeInMilliseconds()), RecalculateStylesTimelineItemType);
&gt; }
&gt; 
&gt; InspectorTimelineAgent::didRecalculateStyle()
&gt; {
&gt;     popTimelineItem(RecalculateStylesTimelineItemType);
&gt; }
&gt; 
&gt; InspectorTimelineAgent::pushTimelineItem(ScriptObject event, int type)
&gt; {
&gt;     ScriptArray children = m_frontend-&gt;newScriptArray();
&gt;     event.set(&quot;type&quot;, type);
&gt;     event.set(&quot;children&quot;, children);
&gt;     m_eventStack.append(TimelineEventEntry(event, children, type));
&gt; }
&gt; 
&gt; InspectorTimelineAgent::popTimelineItem(int type)
&gt; {
&gt;     TimelineEventEntry event = m_eventStack.last();
&gt;     m_eventStack.removeLast();
&gt;     ASSERT(event.type == type);
&gt;     event.object.set(&quot;endTime&quot;, currentTimeInMilliseconds());
&gt; 
&gt;     if (m_eventStack.size()) {
&gt;         TimelineEventEntry parent = m_eventStack.last();
&gt;         parent.children.set(parent.children.length(), event.object);
&gt;     } else {
&gt;         m_frontend-&gt;addItemToTimeline(event.object);
&gt;     }
&gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157360</commentid>
    <comment_count>5</comment_count>
      <attachid>41761</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-10-23 16:12:03 -0700</bug_when>
    <thetext>Created attachment 41761
Addresses issues raised by pfeldman.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157361</commentid>
    <comment_count>6</comment_count>
      <attachid>41761</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-23 16:19:45 -0700</bug_when>
    <thetext>Comment on attachment 41761
Addresses issues raised by pfeldman.

Couple of  nits that can be addressed in further patches.

+     TimelineItemEntry entry = m_itemStack.last();

ASSERT(m_itemStack.size()); ?

+     if (m_itemStack.isEmpty()) {


no { here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157362</commentid>
    <comment_count>7</comment_count>
      <attachid>41761</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-23 16:21:45 -0700</bug_when>
    <thetext>Comment on attachment 41761
Addresses issues raised by pfeldman.

Rejecting patch 41761 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Pavel Feldman&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
ng file WebCore/inspector/DOMDispatchTimelineItem.h
rm &apos;WebCore/inspector/DOMDispatchTimelineItem.h&apos;
patching file WebCore/inspector/InspectorTimelineAgent.cpp
patching file WebCore/inspector/InspectorTimelineAgent.h
patching file WebCore/inspector/TimelineItem.cpp
rm &apos;WebCore/inspector/TimelineItem.cpp&apos;
patching file WebCore/inspector/TimelineItem.h
rm &apos;WebCore/inspector/TimelineItem.h&apos;
patching file WebCore/inspector/TimelineItemFactory.cpp
patching file WebCore/inspector/TimelineItemFactory.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157370</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 16:40:37 -0700</bug_when>
    <thetext>Hum... the last 500 characters was not enough to show the failure here.  In short, the patch failed to apply, probably just out of date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157387</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-23 17:25:08 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/inspector/DOMDispatchTimelineItem.cpp
	M	WebCore/inspector/DOMDispatchTimelineItem.h
	M	WebCore/inspector/InspectorTimelineAgent.cpp
	M	WebCore/inspector/InspectorTimelineAgent.h
	M	WebCore/inspector/TimelineItem.cpp
	M	WebCore/inspector/TimelineItem.h
	A	WebCore/inspector/TimelineItemFactory.cpp
	A	WebCore/inspector/TimelineItemFactory.h
Committed r50013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158347</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-27 13:56:06 -0700</bug_when>
    <thetext>Looks like the commit-queue&apos;s rejection was real.

http://trac.webkit.org/changeset/50150
http://trac.webkit.org/changeset/50152

Were clean-up commits to remove the files which didn&apos;t get removed during pavel&apos;s manual landing.  I&apos;m not yet sure what was &quot;wrong&quot; with this patch yet such that svn-apply failed on the commit-queue (or what the failure was for Pavel).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41715</attachid>
            <date>2009-10-22 23:57:24 -0700</date>
            <delta_ts>2009-10-23 07:37:54 -0700</delta_ts>
            <desc>WebInspector: Refactors InspectorTimelineAgent to remove TimelineItem classes</desc>
            <filename>webkit-timeline-agent-refactor.patch</filename>
            <type>text/plain</type>
            <size>39121</size>
            <attacher name="Eric Ayers">zundel</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTk2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMTAtMjIgIEVyaWMgWi4gQXllcnMgIDx6dW5kZWxAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWZhY3RvcnMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCB0byBlbGltaW5hdGUgVGltZWxpbmVJdGVt
IGNsYXNzZXMuCisgICAgICAgIE5vdyBhIFNjcmlwdE9iamVjdCBpcyBjcmVhdGVkIGltbWVkaWF0
ZWx5IHdpdGggbm8gaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGlu
c3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmg6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERpc3BhdGNoRE9NRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRGlzcGF0Y2hET01FdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZExheW91dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUmVjYWxjdWxhdGVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNhbGN1
bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Ondp
bGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQ
YWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsV3Jp
dGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdy
aXRlSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRD
b21wbGV0ZUN1cnJlbnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6cHVzaEN1cnJlbnRUaW1lbGluZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6cG9wQ3VycmVudFRpbWVsaW5lSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpUaW1lbGluZUl0ZW1MaXN0Tm9kZTo6VGlt
ZWxpbmVJdGVtTGlzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6VGltZWxpbmVJdGVtTGlzdE5vZGU6OmFkZENoaWxkVGltZWxpbmVJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbUxpc3ROb2Rl
OjpnZXRVcGRhdGVkVGltZWxpbmVJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6VGltZWxpbmVJdGVtTGlzdE5vZGU6OnJlbGVhc2VQcmV2aW91cyk6CisgICAgICAgICogaW5z
cGVjdG9yL1RpbWVsaW5lSXRlbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1Rp
bWVsaW5lSXRlbS5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW1G
YWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW1GYWN0b3J5
OjpjcmVhdGVHZW5lcmljVGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5l
SXRlbUZhY3Rvcnk6OmNyZWF0ZURPTURpc3BhdGNoVGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVsaW5lSXRlbUZhY3Rvcnk6OnVwZGF0ZVRpbWVsaW5lSXRlbSk6CisgICAgICAg
ICogaW5zcGVjdG9yL1RpbWVsaW5lSXRlbUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtRmFjdG9yeTo6VGltZWxpbmVJ
dGVtRmFjdG9yeSk6CisKIDIwMDktMTAtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91
Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcgJiBHZW9mZiBH
YXJlbi4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDk5NTYpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5LDggKzExODksOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggXAogCVdlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0
ZW0uY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uaCBcCisJV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVJdGVtRmFjdG9yeS5jcHAgXAorCVdlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lSXRlbUZhY3RvcnkuaCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKIAlXZWJD
b3JlL2xvYWRlci9DYWNoZS5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZVBvbGljeS5oIFwKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDk5NTYpCisr
KyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTIyMywxNCArMzUyMjMsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3Bw
Ig0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+
DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFj
a2VuZC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzUzMzUsMTEgKzM1MzI3LDExIEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxUaW1lbGluZUl0ZW0uY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxUaW1lbGluZUl0ZW1GYWN0b3J5LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxUaW1lbGluZUl0ZW0uaCINCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcVGltZWxpbmVJdGVtRmFjdG9yeS5oIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDk5NTYpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE5MSwxMCArMTE5
MSwxMCBAQAogCQk2NURGMzI2MTA5RDFFMTk5MDAwQkUzMjUgLyogVXNlckFnZW50U3R5bGVTaGVl
dHNEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NjU4MUFGMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3Bw
ICovOyB9OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBC
RUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBG
b250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87IH07
Ci0JCTc1MDkyQkZFMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTA5MkJG
QzEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwICovOyB9Owot
CQk3NTA5MkJGRjEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1MDkyQkZEMTA0
QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oICovOyB9OwogCQk3NTQx
MzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTcxMDJFMDBFODAw
MDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLzsgfTsKIAkJNzU0MTMzQUExMDJF
MDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAw
IC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovOyB9OworCQk3NTUzQ0ZFODEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVJdGVtRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lSXRlbUZhY3RvcnkuaCAqLzsgfTsKKwkJNzU1M0NGRTkxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lSXRlbUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lSXRlbUZhY3Rv
cnkuY3BwICovOyB9OwogCQk3NTc5M0U4MzBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1Nzkz
RTgwMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwICovOyB9OwogCQk3NTc5M0U4
NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVz
c2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM4MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3Nh
Z2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NTc5M0VDNjBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuY3BwICovOyB9OwpA
QCAtMTIwMiw4ICsxMjAyLDYgQEAKIAkJNzU3OTNFRDMwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1l
c3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oICovOyB9Owog
CQk3NTc5M0VENDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDEwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5tbSAqLzsgfTsKIAkJNzU3OTNFRDUwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9N
TWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKLQkJNzVBOTRBMDMxMDRCNzRGQjAwMDY2NzND
IC8qIFRpbWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NUE5NEEwMTEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmNwcCAq
LzsgfTsKLQkJNzVBOTRBMDQxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOTRBMDIxMDRCNzRG
QjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovOyB9OwogCQk3NjkzQkFEMjEwNkMyRENBMDA3
QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdp
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2
OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIz
IC8qIFBsdWdpbkhhbHRlci5jcHAgKi87IH07CiAJCTc2OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLzsgfTsK
QEAgLTY0ODAsMTAgKzY0NzgsMTAgQEAKIAkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJs
b2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1RkVBODY4MDk4MzNBREUw
MEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJG
RTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3NTA5MkJGQzEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRGlzcGF0Y2hUaW1lbGlu
ZUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NTA5MkJGRDEwNEI4MEY5
MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNBOTEwMkUw
MEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lSXRlbUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZWxp
bmVJdGVtRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTUzQ0ZFNzEw
OEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVJdGVtRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZUl0ZW1GYWN0b3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU3OTNFODAwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVzc2FnZUV2
ZW50LmNwcDsgcGF0aCA9IGRvbS9NZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCTc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lc3NhZ2VFdmVudC5oOyBwYXRoID0g
ZG9tL01lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTc1Nzkz
RTgyMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBNZXNzYWdlRXZlbnQuaWRsOyBwYXRoID0gZG9tL01lc3NhZ2VFdmVudC5pZGw7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTY0OTIsOCArNjQ5MCw2IEBACiAJCTc1Nzkz
RUQwMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3NTc5M0VEMTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU3OTNFRDIwRDBDRTg1QjAwN0ZD
MEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3NUE5NEEwMTEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVsaW5lSXRlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1QTk0QTAyMTA0Qjc0RkIwMDA2NjczQyAvKiBU
aW1lbGluZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGltZWxpbmVJ
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUNFMTA2QzJEQ0EwMDdC
MDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIYWx0YWJsZVBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFD
RjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkhhbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSGFsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDM1Niw4ICsxMDM1Miw2IEBACiAJCQkJMUM4MUI5NTkwRTk3
MzMwODAwMjY2RTA3IC8qIGZyb250LWVuZCAqLywKIAkJCQk0MUYwNjE4RDBGNUYwNjk4MDBBMDdF
QUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwICovLAogCQkJCTQxRjA2MThDMEY1RjA2OTgwMEEwN0VB
QyAvKiBDb25zb2xlTWVzc2FnZS5oICovLAotCQkJCTc1MDkyQkZDMTA0QjgwRjkwMDNERDE2OCAv
KiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgKi8sCi0JCQkJNzUwOTJCRkQxMDRCODBGOTAw
M0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmggKi8sCiAJCQkJN0E3NEVDQjgxMDE4
MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuY3BwICovLAogCQkJCTdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JCYWNrZW5kLmggKi8sCiAJCQkJN0E3NEVDQjYxMDE4
Mzk5QTAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuaWRsICovLApAQCAtMTAzODcsOCArMTAz
ODEsOCBAQAogCQkJCTFDODFCOUZDMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuY3BwICovLAogCQkJCTFDODFCOUZCMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0
UHJvZmlsZU5vZGUuaCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxp
emVkU3RyaW5ncy5qcyAqLywKLQkJCQk3NUE5NEEwMTEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxp
bmVJdGVtLmNwcCAqLywKLQkJCQk3NUE5NEEwMjEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJ
dGVtLmggKi8sCisJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lSXRlbUZh
Y3RvcnkuaCAqLywKKwkJCQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVJdGVt
RmFjdG9yeS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGluc3BlY3RvcjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNTk2MCw3ICsxNTk1NCw2IEBACiAJCQkJQkM2ODZDQkMwRTBD
MzQ5RDAwREU4QTA4IC8qIERPTUNTU1ZhcmlhYmxlc1J1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTEwQjlDQ0MwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNv
bHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3REFBRUYwRkY5NjE1RDAwQ0UwMTM4IC8qIERP
TURhdGFHcmlkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzUwOTJCRkYxMDRCODBG
OTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NUFDQUJCMDBBOUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1MDg5Q0RCMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE5NTBBQzVENTM1MDA1MzI3MEYgLyogRE9NRG9jdW1l
bnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzkxMCw3ICsxNzkwMyw2IEBACiAJCQkJ
NTFERjZEN0UwQjkyQTE2RDAwQzJEQzg1IC8qIFRocmVhZENoZWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTg1QkNGMjkwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNzVBOTRBMDQxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5l
SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRp
bWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURBNzUgLyogVGlt
ZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUUwRUZBQzkwNjAwOUQwQ0FGIC8q
IFRpbWluZ0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE4MDYzLDYgKzE4MDU1LDcgQEAK
IAkJCQkzMzE0QUNFQzEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90
aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODAxOTU1MTA4QkFGQjMwMENCMkIxRiAvKiBG
RUdhdXNzaWFuQmx1ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzU1M0NGRTgxMDhGNDczRjAwRUEy
ODFFIC8qIFRpbWVsaW5lSXRlbUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg1MzUsNyAr
MTg1MjgsNiBAQAogCQkJCUJDNjg2Q0I2MEUwQzM0MzkwMERFOEEwOCAvKiBET01DU1NWYXJpYWJs
ZXNSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwQjlDQ0QwQjc0N0E0NDAwM0VEODkwIC8q
IERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDN0RBQUVF
MEZGOTYxNUQwMENFMDEzOCAvKiBET01EYXRhR3JpZERhdGFTb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNzUwOTJCRkUxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJ
dGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBQkIxMEE5Q0FGODAwMDY3MUU5MCAvKiBE
T01Eb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDg5Q0RDMEE5OEM0MjgwMEEyNzVB
QSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDQTk3NUQw
QTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSBpbiBTb3VyY2VzICovLApAQCAt
MjAwNjUsNyArMjAwNTcsNiBAQAogCQkJCTUxREY2RDgwMEI5MkExOEUwMEMyREM4NSAvKiBUaHJl
YWRDaGVjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxRkY1N0E2MEYwMTI1NkIwMDg5MUVCQiAv
KiBUaHJlYWRHbG9iYWxEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE4NUJDRjI4MEYzMjc5
Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzVBOTRB
MDMxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzMwOUVBNDA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlFOTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjAxOTcsNiArMjAxODgsNyBAQAogCQkJCTMzMTRBQ0VC
MTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg0ODAxOTU0MTA4QkFGQjMwMENCMkIxRiAvKiBGRUdhdXNzaWFu
Qmx1ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyog
VGltZWxpbmVJdGVtRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAJKHJldmlzaW9uIDQ5OTU2KQor
KysgV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotKiBtZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0qIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0qIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0qCi0q
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0q
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oIgotCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01EaXNwYXRjaFRp
bWVsaW5lSXRlbTo6RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0oUGFzc093blB0cjxUaW1lbGluZUl0
ZW0+IHByZXZpb3VzLCBkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBFdmVudCYgZXZlbnQpCi0gICAg
OiBUaW1lbGluZUl0ZW0ocHJldmlvdXMsIHN0YXJ0VGltZSwgRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW1UeXBlKQotICAgICwgbV9ldmVudFR5cGUoZXZlbnQudHlwZSgpLnN0cmluZygpKQotewotfQot
Ci1TY3JpcHRPYmplY3QgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW06OmNvbnZlcnRUb1NjcmlwdE9i
amVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCi17Ci0gICAgU2NyaXB0T2JqZWN0IHNl
bGZPYmogPSBUaW1lbGluZUl0ZW06OmNvbnZlcnRUb1NjcmlwdE9iamVjdChmcm9udGVuZCk7Ci0g
ICAgU2NyaXB0T2JqZWN0IGRhdGFPYmogPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7Ci0g
ICAgZGF0YU9iai5zZXQoInR5cGUiLCBtX2V2ZW50VHlwZSk7Ci0gICAgc2VsZk9iai5zZXQoImRh
dGEiLCBkYXRhT2JqKTsKLSAgICByZXR1cm4gc2VsZk9iajsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9p
bnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaAkocmV2aXNpb24gNDk5NTYpCisrKyBX
ZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDU4ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotKiBt
ZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0q
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0qIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0qCi0qIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0qIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZm5kZWYgRE9N
RGlzcGF0Y2hUaW1lbGluZUl0ZW1faAotI2RlZmluZSBET01EaXNwYXRjaFRpbWVsaW5lSXRlbV9o
Ci0KLSNpbmNsdWRlICJUaW1lbGluZUl0ZW0uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBFdmVudDsKLSAgICBjbGFzcyBJ
bnNwZWN0b3JGcm9udGVuZDsKLQotICAgIGNsYXNzIERPTURpc3BhdGNoVGltZWxpbmVJdGVtIDog
cHVibGljIFRpbWVsaW5lSXRlbSB7Ci0gICAgcHVibGljOgotICAgICAgICBET01EaXNwYXRjaFRp
bWVsaW5lSXRlbShQYXNzT3duUHRyPFRpbWVsaW5lSXRlbT4gcHJldmlvdXMsIGRvdWJsZSBzdGFy
dFRpbWUsIGNvbnN0IEV2ZW50Jik7Ci0KLSAgICAgICAgdmlydHVhbCB+RE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW0oKSB7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBTY3JpcHRP
YmplY3QgY29udmVydFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKik7Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBTdHJpbmcgbV9ldmVudFR5cGU7Ci0gICAgfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW1faCkKLQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAJKHJldmlzaW9uIDQ5OTU2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw5IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5j
bHVkZSAiVGltZWxpbmVJdGVtLmgiCisjaW5jbHVkZSAiVGltZWxpbmVJdGVtRmFjdG9yeS5oIgog
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTU1LDU2ICs1NCw1MSBAQCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpCiAKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbERpc3BhdGNoRE9NRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50KQogewot
ICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBET01EaXNwYXRjaFRpbWVsaW5lSXRlbSht
X2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBjdXJyZW50VGltZUluTWlsbGlzZWNvbmRz
KCksIGV2ZW50KTsKKyAgICBwdXNoQ3VycmVudFRpbWVsaW5lSXRlbShUaW1lbGluZUl0ZW1GYWN0
b3J5OjpjcmVhdGVET01EaXNwYXRjaFRpbWVsaW5lSXRlbShtX2Zyb250ZW5kLCBjdXJyZW50VGlt
ZUluTWlsbGlzZWNvbmRzKCksIGV2ZW50KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkRGlzcGF0Y2hET01FdmVudCgpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRpbWVs
aW5lSXRlbS0+dHlwZSgpID09IERPTURpc3BhdGNoVGltZWxpbmVJdGVtVHlwZSk7CiAgICAgZGlk
Q29tcGxldGVDdXJyZW50UmVjb3JkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbExheW91dCgpCiB7Ci0gICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gbmV3IFRpbWVs
aW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBjdXJyZW50VGltZUluTWls
bGlzZWNvbmRzKCksIExheW91dFRpbWVsaW5lSXRlbVR5cGUpOworICAgIHB1c2hDdXJyZW50VGlt
ZWxpbmVJdGVtKFRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lbGluZUl0ZW0o
bV9mcm9udGVuZCwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBMYXlvdXRUaW1lbGluZUl0
ZW1UeXBlKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0KCkK
IHsKLSAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gTGF5b3V0VGlt
ZWxpbmVJdGVtVHlwZSk7CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoKQogewotICAg
IG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJyZW50VGltZWxp
bmVJdGVtLnJlbGVhc2UoKSwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBSZWNhbGN1bGF0
ZVN0eWxlc1RpbWVsaW5lSXRlbVR5cGUpOworICAgIHB1c2hDdXJyZW50VGltZWxpbmVJdGVtKFRp
bWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lbGluZUl0ZW0obV9mcm9udGVuZCwg
Y3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBSZWNhbGN1bGF0ZVN0eWxlc1RpbWVsaW5lSXRl
bVR5cGUpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNhbGN1bGF0
ZVN0eWxlKCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0g
UmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlKTsKICAgICBkaWRDb21wbGV0ZUN1cnJl
bnRSZWNvcmQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUGFpbnQo
KQogewotICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJy
ZW50VGltZWxpbmVJdGVtLnJlbGVhc2UoKSwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBQ
YWludFRpbWVsaW5lSXRlbVR5cGUpOworICAgIHB1c2hDdXJyZW50VGltZWxpbmVJdGVtKFRpbWVs
aW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lbGluZUl0ZW0obV9mcm9udGVuZCwgY3Vy
cmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBQYWludFRpbWVsaW5lSXRlbVR5cGUpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYWludCgpCiB7Ci0gICAgQVNTRVJUKG1f
Y3VycmVudFRpbWVsaW5lSXRlbS0+dHlwZSgpID09IFBhaW50VGltZWxpbmVJdGVtVHlwZSk7CiAg
ICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFdyaXRlSFRNTCgpCiB7Ci0gICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0g
bmV3IFRpbWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBjdXJyZW50
VGltZUluTWlsbGlzZWNvbmRzKCksIFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUpOworICAgIHB1
c2hDdXJyZW50VGltZWxpbmVJdGVtKFRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNU
aW1lbGluZUl0ZW0obV9mcm9udGVuZCwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBQYXJz
ZUhUTUxUaW1lbGluZUl0ZW1UeXBlKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkV3JpdGVIVE1MKCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50
eXBlKCkgPT0gUGFyc2VIVE1MVGltZWxpbmVJdGVtVHlwZSk7CiAgICAgZGlkQ29tcGxldGVDdXJy
ZW50UmVjb3JkKCk7CiB9CiAKQEAgLTExNSwxNCArMTA5LDExIEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6cmVzZXQoKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENv
bXBsZXRlQ3VycmVudFJlY29yZCgpCiB7Ci0gICAgT3duUHRyPFRpbWVsaW5lSXRlbT4gaXRlbSht
X2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpKTsKLSAgICBtX2N1cnJlbnRUaW1lbGluZUl0
ZW0gPSBpdGVtLT5yZWxlYXNlUHJldmlvdXMoKTsKLQotICAgIGl0ZW0tPnNldEVuZFRpbWUoY3Vy
cmVudFRpbWVJbk1pbGxpc2Vjb25kcygpKTsKLSAgICBpZiAobV9jdXJyZW50VGltZWxpbmVJdGVt
LmdldCgpKQotICAgICAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0tPmFkZENoaWxkSXRlbShpdGVt
LnJlbGVhc2UoKSk7CisgICAgU2NyaXB0T2JqZWN0IGl0ZW0gPSBwb3BDdXJyZW50VGltZWxpbmVJ
dGVtKCk7CisgICAgaWYgKG1fY3VycmVudFRpbWVsaW5lSXRlbSkKKyAgICAgICAgbV9jdXJyZW50
VGltZWxpbmVJdGVtLT5hZGRDaGlsZFRpbWVsaW5lSXRlbShpdGVtKTsKICAgICBlbHNlCi0gICAg
ICAgIGl0ZW0tPmFkZFRvVGltZWxpbmUobV9mcm9udGVuZCk7CisgICAgICAgIG1fZnJvbnRlbmQt
PmFkZEl0ZW1Ub1RpbWVsaW5lKGl0ZW0pOwogfQogCiBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6Y3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpCkBAIC0xMzAsNiArMTIxLDM3IEBAIGRv
dWJsZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjdXJyZW50VGkKICAgICByZXR1cm4gY3VycmVu
dFRpbWUoKSAqIDEwMDAuMDsKIH0KIAordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNo
Q3VycmVudFRpbWVsaW5lSXRlbShTY3JpcHRPYmplY3QgaXRlbSkKK3sKKyAgICBtX2N1cnJlbnRU
aW1lbGluZUl0ZW0gPSBuZXcgVGltZWxpbmVJdGVtTGlzdE5vZGUobV9jdXJyZW50VGltZWxpbmVJ
dGVtLnJlbGVhc2UoKSwgbV9mcm9udGVuZCwgaXRlbSk7Cit9CisKK1NjcmlwdE9iamVjdCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojpwb3BDdXJyZW50VGltZWxpbmVJdGVtKCkKK3sKKyAgICBPd25Q
dHI8VGltZWxpbmVJdGVtTGlzdE5vZGU+IGl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVh
c2UoKSk7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gaXRlbS0+cmVsZWFzZVByZXZpb3Vz
KCk7CisgICAgcmV0dXJuIGl0ZW0tPmdldFVwZGF0ZWRUaW1lbGluZUl0ZW0oKTsKK30KKworLy8g
VGltZWxpbmVJdGVtTGlzdE5vZGUKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRl
bUxpc3ROb2RlOjpUaW1lbGluZUl0ZW1MaXN0Tm9kZShQYXNzT3duUHRyPFRpbWVsaW5lSXRlbUxp
c3ROb2RlPiBwcmV2aW91cywgSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBTY3JpcHRPYmpl
Y3QgaXRlbSkKKyAgICA6IG1fcHJldmlvdXMocHJldmlvdXMpCisgICAgLCBtX2l0ZW0oaXRlbSkK
KyAgICAsIG1fY2hpbGRyZW4oZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCkpCit7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVJdGVtTGlzdE5vZGU6OmFkZENoaWxk
VGltZWxpbmVJdGVtKFNjcmlwdE9iamVjdCYgaXRlbSkKK3sKKyAgICBtX2NoaWxkcmVuLnNldCht
X2NoaWxkcmVuLmxlbmd0aCgpLCBpdGVtKTsKK30KKworU2NyaXB0T2JqZWN0IEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbUxpc3ROb2RlOjpnZXRVcGRhdGVkVGltZWxpbmVJdGVt
KCkKK3sKKyAgICBUaW1lbGluZUl0ZW1GYWN0b3J5Ojp1cGRhdGVUaW1lbGluZUl0ZW0obV9pdGVt
LCBjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCksIG1fY2hpbGRyZW4pOworICAgIHJldHVybiBt
X2l0ZW07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCShyZXZpc2lvbiA0OTk1NikKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwot
ICAgIGNsYXNzIFRpbWVsaW5lSXRlbTsKIAogICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQgewogICAgIHB1YmxpYzoKQEAgLTYxLDEyICs2MCwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgZGlkV3JpdGVIVE1MKCk7CiAgICAgICAgIHZvaWQgd2lsbFdyaXRlSFRN
TCgpOwogICAgIHByaXZhdGU6CisgICAgICAgIGNsYXNzIFRpbWVsaW5lSXRlbUxpc3ROb2RlIHsK
KyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgVGltZWxpbmVJdGVtTGlzdE5vZGUoUGFzc093
blB0cjxUaW1lbGluZUl0ZW1MaXN0Tm9kZT4gcHJldmlvdXMsIEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCwgU2NyaXB0T2JqZWN0KTsKKworICAgICAgICAgICAgdm9pZCBhZGRDaGlsZFRpbWVs
aW5lSXRlbShTY3JpcHRPYmplY3QmIGl0ZW0pOworCisgICAgICAgICAgICBUaW1lbGluZUl0ZW1M
aXN0Tm9kZSogcmVsZWFzZVByZXZpb3VzKCkgeyByZXR1cm4gbV9wcmV2aW91cy5yZWxlYXNlKCk7
IH0KKworICAgICAgICAgICAgU2NyaXB0T2JqZWN0IGdldFVwZGF0ZWRUaW1lbGluZUl0ZW0oKTsK
KyAgICAgICAgcHJpdmF0ZTogICAgICAgICAgICAKKyAgICAgICAgICAgIE93blB0cjxUaW1lbGlu
ZUl0ZW1MaXN0Tm9kZT4gbV9wcmV2aW91czsKKyAgICAgICAgICAgIFNjcmlwdE9iamVjdCBtX2l0
ZW07CisgICAgICAgICAgICBTY3JpcHRBcnJheSBtX2NoaWxkcmVuOworICAgICAgICB9OworICAg
ICAgICAKKyAgICAgICAgdm9pZCBwdXNoQ3VycmVudFRpbWVsaW5lSXRlbShTY3JpcHRPYmplY3Qg
aXRlbSk7CisgICAgICAgIAorICAgICAgICBTY3JpcHRPYmplY3QgcG9wQ3VycmVudFRpbWVsaW5l
SXRlbSgpOworCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25k
cygpOwogCiAgICAgICAgIHZvaWQgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7Ci0KKyAgICAg
ICAgCiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwotICAgICAgICBPd25Q
dHI8VGltZWxpbmVJdGVtPiBtX2N1cnJlbnRUaW1lbGluZUl0ZW07CisgICAgICAgIE93blB0cjxU
aW1lbGluZUl0ZW1MaXN0Tm9kZT4gbV9jdXJyZW50VGltZWxpbmVJdGVtOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRl
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcAko
cmV2aXNpb24gNDk5NTYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDgxICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotKiBtZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0qIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0q
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0qIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaW1lbGluZUl0ZW0uaCIKLQotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1
ZGUgIlNjcmlwdEFycmF5LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotVGltZWxpbmVJdGVtOjpUaW1lbGluZUl0ZW0oUGFzc093blB0cjxUaW1l
bGluZUl0ZW0+IHByZXZpb3VzLCBkb3VibGUgc3RhcnRUaW1lLCBUaW1lbGluZUl0ZW1UeXBlIGl0
ZW1UeXBlKQotICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1lKQotICAgICwgbV9lbmRUaW1lKDAu
MCkKLSAgICAsIG1faXRlbVR5cGUoaXRlbVR5cGUpCi0gICAgLCBtX3ByZXZpb3VzKHByZXZpb3Vz
KQotewotfQotCi12b2lkIFRpbWVsaW5lSXRlbTo6YWRkVG9UaW1lbGluZShJbnNwZWN0b3JGcm9u
dGVuZCogZnJvbnRlbmQpCi17Ci0gICAgZnJvbnRlbmQtPmFkZEl0ZW1Ub1RpbWVsaW5lKGNvbnZl
cnRUb1NjcmlwdE9iamVjdChmcm9udGVuZCkpOwotfQotCi1TY3JpcHRPYmplY3QgVGltZWxpbmVJ
dGVtOjpjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQot
ewotICAgIFNjcmlwdE9iamVjdCBzZWxmT2JqID0gZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgp
OwotICAgIHNlbGZPYmouc2V0KCJ0aW1lIiwgbV9zdGFydFRpbWUpOwotICAgIHNlbGZPYmouc2V0
KCJ0eXBlIiwgc3RhdGljX2Nhc3Q8aW50PihtX2l0ZW1UeXBlKSk7Ci0gICAgc2VsZk9iai5zZXQo
ImR1cmF0aW9uIiwgbV9lbmRUaW1lIC0gbV9zdGFydFRpbWUpOwotICAgIFNjcmlwdEFycmF5IGNo
aWxkcmVuID0gY29udmVydENoaWxkcmVuVG9TY3JpcHRBcnJheShmcm9udGVuZCk7Ci0gICAgc2Vs
Zk9iai5zZXQoImNoaWxkcmVuIiwgY2hpbGRyZW4pOwotICAgIHJldHVybiBzZWxmT2JqOwotfQot
Ci1TY3JpcHRBcnJheSBUaW1lbGluZUl0ZW06OmNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXko
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQotewotICAgIFNjcmlwdEFycmF5IGNoaWxkcmVu
ID0gZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoaWxkcmVuLnNldChpLCBtX2No
aWxkcmVuW2ldLT5jb252ZXJ0VG9TY3JpcHRPYmplY3QoZnJvbnRlbmQpKTsKLSAgICByZXR1cm4g
Y2hpbGRyZW47Ci19Ci0KLXZvaWQgVGltZWxpbmVJdGVtOjphZGRDaGlsZEl0ZW0oUGFzc093blB0
cjxUaW1lbGluZUl0ZW0+IHRpbWVsaW5lSXRlbSkKLXsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZCh0
aW1lbGluZUl0ZW0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmgJKHJldmlzaW9u
IDQ5OTU2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0q
IG1ldDoKLSoKLSogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0qIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotKiBkaXN0cmlidXRpb24uCi0qICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSoKLSogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0qIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0qIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI2lmbmRlZiBU
aW1lbGluZUl0ZW1faAotI2RlZmluZSBUaW1lbGluZUl0ZW1faAotCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZDsKLSAgICBjbGFzcyBUaW1lbGluZUl0ZW07Ci0gICAgY2xhc3MgU2NyaXB0QXJyYXk7Ci0gICAg
Y2xhc3MgU2NyaXB0T2JqZWN0OwotCi0gICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPFRpbWVsaW5l
SXRlbT4gPiBUaW1lbGluZUl0ZW1zOwotCi0gICAgLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0
aCBUaW1lbGluZUFnZW50LmpzCi0gICAgZW51bSBUaW1lbGluZUl0ZW1UeXBlIHsKLSAgICAgICAg
RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1UeXBlID0gMCwKLSAgICAgICAgTGF5b3V0VGltZWxpbmVJ
dGVtVHlwZSA9IDEsCi0gICAgICAgIFJlY2FsY3VsYXRlU3R5bGVzVGltZWxpbmVJdGVtVHlwZSA9
IDIsCi0gICAgICAgIFBhaW50VGltZWxpbmVJdGVtVHlwZSA9IDMsCi0gICAgICAgIFBhcnNlSFRN
TFRpbWVsaW5lSXRlbVR5cGUgPSA0LAotICAgIH07Ci0KLSAgICBjbGFzcyBUaW1lbGluZUl0ZW0g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgVGltZWxpbmVJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJ
dGVtPiwgZG91YmxlIHN0YXJ0VGltZSwgVGltZWxpbmVJdGVtVHlwZSk7Ci0KLSAgICAgICAgdmly
dHVhbCB+VGltZWxpbmVJdGVtKCkgeyB9Ci0KLSAgICAgICAgVGltZWxpbmVJdGVtKiBwcmV2aW91
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KLQotICAgICAgICBQYXNzT3du
UHRyPFRpbWVsaW5lSXRlbSo+IHJlbGVhc2VQcmV2aW91cygpIHsgcmV0dXJuIG1fcHJldmlvdXMu
cmVsZWFzZSgpOyB9Ci0KLSAgICAgICAgdm9pZCBhZGRUb1RpbWVsaW5lKEluc3BlY3RvckZyb250
ZW5kKik7Ci0KLSAgICAgICAgdm9pZCBhZGRDaGlsZEl0ZW0oUGFzc093blB0cjxUaW1lbGluZUl0
ZW0+KTsKLQotICAgICAgICB2b2lkIHNldEVuZFRpbWUoZG91YmxlIGVuZFRpbWUpIHsgbV9lbmRU
aW1lID0gZW5kVGltZTsgfQotCi0gICAgICAgIFRpbWVsaW5lSXRlbVR5cGUgdHlwZSgpIHsgcmV0
dXJuIG1faXRlbVR5cGU7IH0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0
T2JqZWN0IGNvbnZlcnRUb1NjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCopOwotCi0gICAg
ICAgIFNjcmlwdEFycmF5IGNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkoSW5zcGVjdG9yRnJv
bnRlbmQqKTsKLSAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIGRvdWJsZSBtX3N0YXJ0VGlt
ZTsKLSAgICAgICAgZG91YmxlIG1fZW5kVGltZTsKLSAgICAgICAgVGltZWxpbmVJdGVtVHlwZSBt
X2l0ZW1UeXBlOwotICAgICAgICBPd25QdHI8VGltZWxpbmVJdGVtPiBtX3ByZXZpb3VzOwotICAg
ICAgICBUaW1lbGluZUl0ZW1zIG1fY2hpbGRyZW47Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoVGltZWxpbmVJdGVtX2gpCkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5LmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbUZhY3RvcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRpbWVsaW5lSXRlbUZh
Y3RvcnkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJFdmVudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIK
KyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gc3Rh
dGljCitTY3JpcHRPYmplY3QgVGltZWxpbmVJdGVtRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVs
aW5lSXRlbShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIGRvdWJsZSBzdGFydFRpbWUsIFRp
bWVsaW5lSXRlbVR5cGUgdHlwZSkKK3sKKyAgICBTY3JpcHRPYmplY3QgaXRlbSA9IGZyb250ZW5k
LT5uZXdTY3JpcHRPYmplY3QoKTsKKyAgICBpdGVtLnNldCgic3RhcnRUaW1lIiwgc3RhcnRUaW1l
KTsKKyAgICBpdGVtLnNldCgidHlwZSIsIHR5cGUpOworICAgIHJldHVybiBpdGVtOworfQorCisv
LyBzdGF0aWMKK1NjcmlwdE9iamVjdCBUaW1lbGluZUl0ZW1GYWN0b3J5OjpjcmVhdGVET01EaXNw
YXRjaFRpbWVsaW5lSXRlbShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIGRvdWJsZSBzdGFy
dFRpbWUsIGNvbnN0IEV2ZW50JiBldmVudCkKK3sKKyAgICBTY3JpcHRPYmplY3QgaXRlbSA9IGNy
ZWF0ZUdlbmVyaWNUaW1lbGluZUl0ZW0oZnJvbnRlbmQsIHN0YXJ0VGltZSwgRE9NRGlzcGF0Y2hU
aW1lbGluZUl0ZW1UeXBlKTsKKyAgICBTY3JpcHRPYmplY3QgZGF0YSA9IGZyb250ZW5kLT5uZXdT
Y3JpcHRPYmplY3QoKTsKKyAgICBkYXRhLnNldCgidHlwZSIsIGV2ZW50LnR5cGUoKS5zdHJpbmco
KSk7CisgICAgaXRlbS5zZXQoImRhdGEiLCBkYXRhKTsKKyAgICByZXR1cm4gaXRlbTsKK30KKyAg
ICAKKy8vIHN0YXRpYwordm9pZCBUaW1lbGluZUl0ZW1GYWN0b3J5Ojp1cGRhdGVUaW1lbGluZUl0
ZW0oU2NyaXB0T2JqZWN0JiBpdGVtLCBkb3VibGUgZW5kVGltZSwgU2NyaXB0QXJyYXkmIGNoaWxk
cmVuKQoreworICAgIGl0ZW0uc2V0KCJlbmRUaW1lIiwgZW5kVGltZSk7CisgICAgaXRlbS5zZXQo
ImNoaWxkcmVuIiwgY2hpbGRyZW4pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVJdGVtRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
SXRlbUZhY3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
SXRlbUZhY3RvcnkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFRpbWVs
aW5lSXRlbUZhY3RvcnlfaAorI2RlZmluZSBUaW1lbGluZUl0ZW1GYWN0b3J5X2gKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRXZlbnQ7CisgICAgY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmQ7CisgICAgY2xhc3MgU2NyaXB0QXJyYXk7CisgICAgY2xhc3MgU2NyaXB0T2JqZWN0Owor
CisgICAgLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1lbGluZUFnZW50LmpzCisgICAg
ZW51bSBUaW1lbGluZUl0ZW1UeXBlIHsKKyAgICAgICAgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1U
eXBlID0gMCwKKyAgICAgICAgTGF5b3V0VGltZWxpbmVJdGVtVHlwZSA9IDEsCisgICAgICAgIFJl
Y2FsY3VsYXRlU3R5bGVzVGltZWxpbmVJdGVtVHlwZSA9IDIsCisgICAgICAgIFBhaW50VGltZWxp
bmVJdGVtVHlwZSA9IDMsCisgICAgICAgIFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUgPSA0LAor
ICAgIH07CisKKyAgICBjbGFzcyBUaW1lbGluZUl0ZW1GYWN0b3J5IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBTY3JpcHRPYmplY3QgY3JlYXRlR2VuZXJpY1RpbWVsaW5lSXRlbShJbnNw
ZWN0b3JGcm9udGVuZCosIGRvdWJsZSBzdGFydFRpbWUsIFRpbWVsaW5lSXRlbVR5cGUpOworICAg
ICAgICAKKyAgICAgICAgc3RhdGljIFNjcmlwdE9iamVjdCBjcmVhdGVET01EaXNwYXRjaFRpbWVs
aW5lSXRlbShJbnNwZWN0b3JGcm9udGVuZCosIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IEV2ZW50
Jik7CisgICAgICAgICAgICAgICAgCisgICAgICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVRpbWVsaW5l
SXRlbShTY3JpcHRPYmplY3QmLCBkb3VibGUgZW5kVGltZSwgU2NyaXB0QXJyYXkmIGNoaWxkcmVu
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFRpbWVsaW5lSXRlbUZhY3RvcnkoKSB7IH0KKyAg
ICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChUaW1l
bGluZUl0ZW1GYWN0b3J5X2gpCg==
</data>
<flag name="review"
          id="23160"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41761</attachid>
            <date>2009-10-23 16:12:03 -0700</date>
            <delta_ts>2009-10-23 16:21:45 -0700</delta_ts>
            <desc>Addresses issues raised by pfeldman.</desc>
            <filename>30707.diff</filename>
            <type>text/plain</type>
            <size>39621</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmU2OTEyNC4uNzkyMjljNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAwOS0xMC0yMyAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZXMgdGhlIG5lZWQgZm9yIEMrKyBUaW1lbGluZSB0eXBlcyBp
biBJbnNwZWN0b3JUaW1lbGluZUFnZW50IGluIGZhdm9yCisgICAgICAgIG9mIFNjcmlwdE9iamVj
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDcw
NworCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGluc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmg6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxs
RGlzcGF0Y2hET01FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpkaWREaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxSZWNhbGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFRpbWVsaW5lSXRlbSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbUVudHJ5OjpUaW1l
bGluZUl0ZW1FbnRyeSk6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpUaW1lbGluZUl0ZW1GYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZWxpbmVJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZURPTURpc3Bh
dGNoVGltZWxpbmVJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVJdGVtRmFjdG9y
eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpUaW1l
bGluZUl0ZW1GYWN0b3J5OjpUaW1lbGluZUl0ZW1GYWN0b3J5KToKKwogMjAwOS0xMC0yMyAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhZTJmMTZiLi4xMGU4Mzg3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExNjEs
OCArMTE2MSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pY3UvdW5pY29kZS91
dmVyc2lvbi5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogCVdl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggXAotCVdlYkNvcmUvaW5zcGVjdG9yL0RP
TURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0
Y2hUaW1lbGluZUl0ZW0uaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBcCiAJV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgXApAQCAtMTE4OSw4ICsxMTg3
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZS5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3Bw
IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCi0JV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVJdGVtLmggXAorCVdlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbUZhY3RvcnkuY3BwIFwK
KwlXZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5LmggXAogCVdlYkNvcmUvbG9h
ZGVyL0NhY2hlLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaCBcCiAJV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVQb2xpY3kuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZjYTVkODguLjJjMDA5OTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNTA3LDgg
KzE1MDcsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01E
aXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01EaXNw
YXRjaFRpbWVsaW5lSXRlbS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCcsCkBAIC0xNTM0
LDggKzE1MzIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oJywKLSAgICAgICAg
ICAgICdpbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9y
L1RpbWVsaW5lSXRlbS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVJdGVtRmFj
dG9yeS5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5Lmgn
LAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCcsCiAgICAgICAg
ICAgICAnbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAnLApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNGI0NjQyZS4uOGY3NTkxNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNjA0MywxNCArMzYwNDMsNiBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0K
LQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXERPTURpc3BhdGNoVGlt
ZWxpbmVJdGVtLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZC5jcHAiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpAQCAtMzYxNTUsMTEgKzM2MTQ3LDExIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxUaW1lbGluZUl0ZW0uY3Bw
Ig0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxUaW1lbGluZUl0ZW1GYWN0b3J5LmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3RvclxUaW1lbGluZUl0ZW0uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcVGltZWxpbmVJdGVtRmFjdG9yeS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0
ZXINCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQwYmI3
NDUuLjgzZTlkNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTkxLDEwICsxMTkxLDEwIEBACiAJCTY1REYzMjYxMDlEMUUxOTkwMDBCRTMyNSAvKiBV
c2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUYwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0
eWxlU2hlZXRzRGF0YS5jcHAgKi87IH07CiAJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQ
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZh
c3RQYXRoLmNwcCAqLzsgfTsKLQkJNzUwOTJCRkUxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3Bh
dGNoVGltZWxpbmVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1MDkyQkZDMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5l
SXRlbS5jcHAgKi87IH07Ci0JCTc1MDkyQkZGMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRj
aFRpbWVsaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzUwOTJCRkQxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVt
LmggKi87IH07CiAJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovOyB9
OwogCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNB
OTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi87IH07CisJ
CTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZUl0ZW1GYWN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVJdGVtRmFjdG9yeS5oICovOyB9OworCQk3NTUzQ0ZFOTEwOEY0
NzNGMDBFQTI4MUUgLyogVGltZWxpbmVJdGVtRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUgLyog
VGltZWxpbmVJdGVtRmFjdG9yeS5jcHAgKi87IH07CiAJCTc1NzkzRTgzMEQwQ0UwQjMwMDdGQzBB
QyAvKiBNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzU3OTNFODAwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5jcHAg
Ki87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0Uw
QjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzgwRDBDRTcyRDAw
N0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUM2MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VF
dmVudC5jcHAgKi87IH07CkBAIC0xMjAyLDggKzEyMDIsNiBAQAogCQk3NTc5M0VEMzBEMENFODVC
MDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2Fn
ZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUQ0MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdl
RXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTc5M0VEMTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tICovOyB9OwogCQk3
NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQyMEQwQ0U4
NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovOyB9OwotCQk3NUE5NEEw
MzEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QTk0QTAxMTA0Qjc0RkIwMDA2NjczQyAvKiBU
aW1lbGluZUl0ZW0uY3BwICovOyB9OwotCQk3NUE5NEEwNDEwNEI3NEZCMDAwNjY3M0MgLyogVGlt
ZWxpbmVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NUE5NEEwMjEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmggKi87IH07CiAJCTc2
OTNCQUQyMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0UxMDZDMkRDQTAwN0IwODIz
IC8qIEhhbHRhYmxlUGx1Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzY5M0JBRDMxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFD
RjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLzsgfTsKIAkJNzY5M0JBRDQx
MDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdp
bkhhbHRlci5oICovOyB9OwpAQCAtNjQ4MCwxMCArNjQ3OCwxMCBAQAogCQk2NUY4MDY5NzA1NEQ5
Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
NjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTc1MDkyQkZDMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRj
aFRpbWVsaW5lSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTc1MDkyQkZEMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAg
LyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTUzQ0ZFNjEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVJdGVtRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaW1lbGluZUl0ZW1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTc1NTNDRkU3MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZUl0ZW1GYWN0b3J5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVsaW5lSXRlbUZhY3Rv
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENFMEIzMDA3
RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gZG9tL01lc3NhZ2VFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8q
IE1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVzc2Fn
ZUV2ZW50Lmg7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJNzU3OTNFODIwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lc3NhZ2VFdmVudC5pZGw7IHBhdGggPSBkb20vTWVz
c2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtNjQ5Miw4ICs2
NDkwLDYgQEAKIAkJNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRUQxMEQwQ0U4NUIwMDdGQzBBQyAvKiBE
T01NZXNzYWdlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NTWVzc2FnZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5
M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1QTk0QTAxMTA0Qjc0RkIwMDA2NjczQyAvKiBU
aW1lbGluZUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGlt
ZWxpbmVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzVBOTRBMDIxMDRC
NzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaW1lbGluZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5
M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbHRhYmxlUGx1Z2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBs
dWdpbkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzU2LDggKzEwMzUyLDYgQEAK
IAkJCQkxQzgxQjk1OTBFOTczMzA4MDAyNjZFMDcgLyogZnJvbnQtZW5kICovLAogCQkJCTQxRjA2
MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCiAJCQkJNDFGMDYx
OEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggKi8sCi0JCQkJNzUwOTJCRkMx
MDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcCAqLywKLQkJCQk3
NTA5MkJGRDEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCAqLywK
IAkJCQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5jcHAgKi8s
CiAJCQkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuaCAqLywK
IAkJCQk3QTc0RUNCNjEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5pZGwgKi8s
CkBAIC0xMDM4Nyw4ICsxMDM4MSw4IEBACiAJCQkJMUM4MUI5RkMwRTk3MzNDQjAwMjY2RTA3IC8q
IEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8sCiAJCQkJMUM4MUI5RkIwRTk3MzNDQjAwMjY2
RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovLAogCQkJCUJDQzY0RjVGMERDRkI4NEUw
MDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICovLAotCQkJCTc1QTk0QTAxMTA0Qjc0RkIw
MDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uY3BwICovLAotCQkJCTc1QTk0QTAyMTA0Qjc0RkIwMDA2
NjczQyAvKiBUaW1lbGluZUl0ZW0uaCAqLywKKwkJCQk3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUg
LyogVGltZWxpbmVJdGVtRmFjdG9yeS5oICovLAorCQkJCTc1NTNDRkU3MTA4RjQ3M0YwMEVBMjgx
RSAvKiBUaW1lbGluZUl0ZW1GYWN0b3J5LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW5zcGVj
dG9yOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE1OTYwLDcgKzE1OTU0LDYgQEAK
IAkJCQlCQzY4NkNCQzBFMEMzNDlEMDBERThBMDggLyogRE9NQ1NTVmFyaWFibGVzUnVsZUludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUNDQzBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9N
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdEQUFFRjBGRjk2
MTVEMDBDRTAxMzggLyogRE9NRGF0YUdyaWREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3NTA5MkJGRjEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTg1QUNBQkIwMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwODlDREIwQTk4QzQyODAwQTI3NUFBIC8qIERPTURv
Y3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMTk1MEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01Eb2N1bWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTE3OTEwLDcg
KzE3OTAzLDYgQEAKIAkJCQk1MURGNkQ3RTBCOTJBMTZEMDBDMkRDODUgLyogVGhyZWFkQ2hlY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkY1N0EzMEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJlYWRH
bG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIg
LyogVGhyZWFkVGltZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3NUE5NEEwNDEwNEI3NEZCMDAw
NjY3M0MgLyogVGltZWxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA1QjI0RDA5OEYx
QjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0IwMENENjMz
MTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBF
RkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTgw
NjMsNiArMTgwNTUsNyBAQAogCQkJCTMzMTRBQ0VDMTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2Vw
dGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAv
KiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4MDE5NTUxMDhC
QUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3NpYW5CbHVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3NTUz
Q0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVJdGVtRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0xODUzNSw3ICsxODUyOCw2IEBACiAJCQkJQkM2ODZDQjYwRTBDMzQzOTAwREU4QTA4
IC8qIERPTUNTU1ZhcmlhYmxlc1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTBCOUNDRDBC
NzQ3QTQ0MDAzRUQ4OTAgLyogRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM3REFBRUUwRkY5NjE1RDAwQ0UwMTM4IC8qIERPTURhdGFHcmlkRGF0YVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3NTA5MkJGRTEwNEI4MEY5MDAzREQxNjggLyogRE9N
RGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVBQ0FCQjEwQTlD
QUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlD
REMwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NUNBOTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC0yMDA2NSw3ICsyMDA1Nyw2IEBACiAJCQkJNTFERjZEODAwQjkyQTE4
RTAwQzJEQzg1IC8qIFRocmVhZENoZWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFGRjU3QTYw
RjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTg1QkNGMjgwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk3NUE5NEEwMzEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBRjBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDMzBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtYXRpb25NYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMDE5Nyw2ICsyMDE4OCw3
IEBACiAJCQkJMzMxNEFDRUIxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ4MDE5NTQxMDhCQUZCMzAwQ0Iy
QjFGIC8qIEZFR2F1c3NpYW5CbHVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc1NTNDRkU5MTA4
RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZUl0ZW1GYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwCmluZGV4IGFj
ZmY1MTMuLmU2OWRlMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0RPTURpc3BhdGNo
VGltZWxpbmVJdGVtLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVs
aW5lSXRlbS5jcHAKQEAgLTEsNTggKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0qIG1ldDoKLSoKLSogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0qIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotKiBkaXN0cmlidXRpb24uCi0qICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0qIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0qIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgi
Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTURpc3Bh
dGNoVGltZWxpbmVJdGVtOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbShQYXNzT3duUHRyPFRpbWVs
aW5lSXRlbT4gcHJldmlvdXMsIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IEV2ZW50JiBldmVudCkK
LSAgICA6IFRpbWVsaW5lSXRlbShwcmV2aW91cywgc3RhcnRUaW1lLCBET01EaXNwYXRjaFRpbWVs
aW5lSXRlbVR5cGUpCi0gICAgLCBtX2V2ZW50VHlwZShldmVudC50eXBlKCkuc3RyaW5nKCkpCi17
Ci19Ci0KLVNjcmlwdE9iamVjdCBET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2Ny
aXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKLXsKLSAgICBTY3JpcHRPYmpl
Y3Qgc2VsZk9iaiA9IFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KGZyb250ZW5k
KTsKLSAgICBTY3JpcHRPYmplY3QgZGF0YU9iaiA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3Qo
KTsKLSAgICBkYXRhT2JqLnNldCgidHlwZSIsIG1fZXZlbnRUeXBlKTsKLSAgICBzZWxmT2JqLnNl
dCgiZGF0YSIsIGRhdGFPYmopOwotICAgIHJldHVybiBzZWxmT2JqOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgKaW5kZXggMzg0Y2UyNS4uZTY5ZGUyOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oCkBAIC0xLDU4
ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotKiBtZXQ6Ci0qCi0q
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0qIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0qIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSog
ZGlzdHJpYnV0aW9uLgotKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0qIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0qCi0qIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0qIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0qIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNpZm5kZWYgRE9NRGlzcGF0Y2hU
aW1lbGluZUl0ZW1faAotI2RlZmluZSBET01EaXNwYXRjaFRpbWVsaW5lSXRlbV9oCi0KLSNpbmNs
dWRlICJUaW1lbGluZUl0ZW0uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBFdmVudDsKLSAgICBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZDsKLQotICAgIGNsYXNzIERPTURpc3BhdGNoVGltZWxpbmVJdGVtIDogcHVibGljIFRp
bWVsaW5lSXRlbSB7Ci0gICAgcHVibGljOgotICAgICAgICBET01EaXNwYXRjaFRpbWVsaW5lSXRl
bShQYXNzT3duUHRyPFRpbWVsaW5lSXRlbT4gcHJldmlvdXMsIGRvdWJsZSBzdGFydFRpbWUsIGNv
bnN0IEV2ZW50Jik7Ci0KLSAgICAgICAgdmlydHVhbCB+RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0o
KSB7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBTY3JpcHRPYmplY3QgY29u
dmVydFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKik7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBTdHJpbmcgbV9ldmVudFR5cGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1faCkKLQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA0YTZh
ZDcxLi5kMWQ1NGYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcApAQCAtMzMsMTAgKzMzLDkgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJUaW1lbGluZUl0ZW0uaCIK
KyNpbmNsdWRlICJUaW1lbGluZUl0ZW1GYWN0b3J5LmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIApAQCAtNDQsNyArNDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQogICAgIDogbV9mcm9udGVuZChmcm9udGVuZCkKLSAgICAsIG1fY3VycmVu
dFRpbWVsaW5lSXRlbSgwKQogewogICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKIH0KQEAgLTU1LDc0
ICs1Myw3NCBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERpc3BhdGNoRE9NRXZlbnQo
Y29uc3QgRXZlbnQmIGV2ZW50KQogewotICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBE
T01EaXNwYXRjaFRpbWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBj
dXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCksIGV2ZW50KTsKKyAgICBwdXNoQ3VycmVudFRpbWVs
aW5lSXRlbShUaW1lbGluZUl0ZW1GYWN0b3J5OjpjcmVhdGVET01EaXNwYXRjaFRpbWVsaW5lSXRl
bShtX2Zyb250ZW5kLCBjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCksIGV2ZW50KSwgRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW1UeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpkaWREaXNwYXRjaERPTUV2ZW50KCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJ
dGVtLT50eXBlKCkgPT0gRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1UeXBlKTsKLSAgICBkaWRDb21w
bGV0ZUN1cnJlbnRSZWNvcmQoKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW1UeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
Ojp3aWxsTGF5b3V0KCkKIHsKLSAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgVGltZWxp
bmVJdGVtKG1fY3VycmVudFRpbWVsaW5lSXRlbS5yZWxlYXNlKCksIGN1cnJlbnRUaW1lSW5NaWxs
aXNlY29uZHMoKSwgTGF5b3V0VGltZWxpbmVJdGVtVHlwZSk7CisgICAgcHVzaEN1cnJlbnRUaW1l
bGluZUl0ZW0oVGltZWxpbmVJdGVtRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVsaW5lSXRlbSht
X2Zyb250ZW5kLCBjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkpLCBMYXlvdXRUaW1lbGluZUl0
ZW1UeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRMYXlvdXQoKQog
ewotICAgIEFTU0VSVChtX2N1cnJlbnRUaW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBMYXlvdXRUaW1l
bGluZUl0ZW1UeXBlKTsKLSAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKKyAgICBkaWRD
b21wbGV0ZUN1cnJlbnRSZWNvcmQoTGF5b3V0VGltZWxpbmVJdGVtVHlwZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoKQogewotICAgIG1f
Y3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJyZW50VGltZWxpbmVJ
dGVtLnJlbGVhc2UoKSwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpLCBSZWNhbGN1bGF0ZVN0
eWxlc1RpbWVsaW5lSXRlbVR5cGUpOworICAgIHB1c2hDdXJyZW50VGltZWxpbmVJdGVtKFRpbWVs
aW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lbGluZUl0ZW0obV9mcm9udGVuZCwgY3Vy
cmVudFRpbWVJbk1pbGxpc2Vjb25kcygpKSwgUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1U
eXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0
eWxlKCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gUmVj
YWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlKTsKLSAgICBkaWRDb21wbGV0ZUN1cnJlbnRS
ZWNvcmQoKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoUmVjYWxjdWxhdGVTdHlsZXNU
aW1lbGluZUl0ZW1UeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxs
UGFpbnQoKQogewotICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0o
bV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVhc2UoKSwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25k
cygpLCBQYWludFRpbWVsaW5lSXRlbVR5cGUpOworICAgIHB1c2hDdXJyZW50VGltZWxpbmVJdGVt
KFRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lbGluZUl0ZW0obV9mcm9udGVu
ZCwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpKSwgUGFpbnRUaW1lbGluZUl0ZW1UeXBlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYWludCgpCiB7Ci0gICAgQVNT
RVJUKG1fY3VycmVudFRpbWVsaW5lSXRlbS0+dHlwZSgpID09IFBhaW50VGltZWxpbmVJdGVtVHlw
ZSk7Ci0gICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7CisgICAgZGlkQ29tcGxldGVDdXJy
ZW50UmVjb3JkKFBhaW50VGltZWxpbmVJdGVtVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbFdyaXRlSFRNTCgpCiB7Ci0gICAgbV9jdXJyZW50VGltZWxpbmVJdGVt
ID0gbmV3IFRpbWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBjdXJy
ZW50VGltZUluTWlsbGlzZWNvbmRzKCksIFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUpOworICAg
IHB1c2hDdXJyZW50VGltZWxpbmVJdGVtKFRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVy
aWNUaW1lbGluZUl0ZW0obV9mcm9udGVuZCwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpKSwg
UGFyc2VIVE1MVGltZWxpbmVJdGVtVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkV3JpdGVIVE1MKCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVt
LT50eXBlKCkgPT0gUGFyc2VIVE1MVGltZWxpbmVJdGVtVHlwZSk7Ci0gICAgZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKCk7CisgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFBhcnNlSFRNTFRp
bWVsaW5lSXRlbVR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0
KCkKIHsKLSAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0uc2V0KDApOworICAgIG1faXRlbVN0YWNr
LmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVD
dXJyZW50UmVjb3JkKFRpbWVsaW5lSXRlbVR5cGUgdHlwZSkKIHsKLSAgICBPd25QdHI8VGltZWxp
bmVJdGVtPiBpdGVtKG1fY3VycmVudFRpbWVsaW5lSXRlbS5yZWxlYXNlKCkpOwotICAgIG1fY3Vy
cmVudFRpbWVsaW5lSXRlbSA9IGl0ZW0tPnJlbGVhc2VQcmV2aW91cygpOwotCi0gICAgaXRlbS0+
c2V0RW5kVGltZShjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkpOwotICAgIGlmIChtX2N1cnJl
bnRUaW1lbGluZUl0ZW0uZ2V0KCkpCi0gICAgICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbS0+YWRk
Q2hpbGRJdGVtKGl0ZW0ucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIGl0ZW0tPmFkZFRv
VGltZWxpbmUobV9mcm9udGVuZCk7CisgICAgVGltZWxpbmVJdGVtRW50cnkgZW50cnkgPSBtX2l0
ZW1TdGFjay5sYXN0KCk7CisgICAgbV9pdGVtU3RhY2sucmVtb3ZlTGFzdCgpOworICAgIEFTU0VS
VChlbnRyeS50eXBlID09IHR5cGUpOworICAgIGVudHJ5Lml0ZW0uc2V0KCJ0eXBlIiwgdHlwZSk7
CisgICAgZW50cnkuaXRlbS5zZXQoImNoaWxkcmVuIiwgZW50cnkuY2hpbGRyZW4pOworICAgIGVu
dHJ5Lml0ZW0uc2V0KCJlbmRUaW1lIiwgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAg
ICAKKyAgICBpZiAobV9pdGVtU3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZnJvbnRlbmQt
PmFkZEl0ZW1Ub1RpbWVsaW5lKGVudHJ5Lml0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIFRp
bWVsaW5lSXRlbUVudHJ5IHBhcmVudCA9IG1faXRlbVN0YWNrLmxhc3QoKTsKKyAgICAgICAgcGFy
ZW50LmNoaWxkcmVuLnNldChwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoKCksIGVudHJ5Lml0ZW0pOwor
ICAgIH0KIH0KIAogZG91YmxlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmN1cnJlbnRUaW1lSW5N
aWxsaXNlY29uZHMoKQpAQCAtMTMwLDYgKzEyOCwxMSBAQCBkb3VibGUgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6Y3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpCiAgICAgcmV0dXJuIGN1cnJlbnRU
aW1lKCkgKiAxMDAwLjA7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEN1
cnJlbnRUaW1lbGluZUl0ZW0oU2NyaXB0T2JqZWN0IGl0ZW0sIFRpbWVsaW5lSXRlbVR5cGUgdHlw
ZSkKK3sKKyAgICBtX2l0ZW1TdGFjay5hcHBlbmQoVGltZWxpbmVJdGVtRW50cnkoaXRlbSwgbV9m
cm9udGVuZC0+bmV3U2NyaXB0QXJyYXkoKSwgdHlwZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDFhN2MzYmYuLmNlZWZlZDcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTM0LDEzICszNCwyMCBA
QAogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdEFycmF5LmgiCiAK
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBF
dmVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLSAgICBjbGFzcyBUaW1lbGluZUl0
ZW07CisKKyAgICAvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIFRpbWVsaW5lQWdlbnQuanMK
KyAgICBlbnVtIFRpbWVsaW5lSXRlbVR5cGUgeworICAgICAgICBET01EaXNwYXRjaFRpbWVsaW5l
SXRlbVR5cGUgPSAwLAorICAgICAgICBMYXlvdXRUaW1lbGluZUl0ZW1UeXBlID0gMSwKKyAgICAg
ICAgUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlID0gMiwKKyAgICAgICAgUGFpbnRU
aW1lbGluZUl0ZW1UeXBlID0gMywKKyAgICAgICAgUGFyc2VIVE1MVGltZWxpbmVJdGVtVHlwZSA9
IDQsCisgICAgfTsKIAogICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgewogICAgIHB1
YmxpYzoKQEAgLTYwLDEzICs2NywyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZGlkUGFpbnQoKTsKICAgICAgICAgdm9pZCBkaWRXcml0ZUhUTUwoKTsKICAgICAgICAgdm9p
ZCB3aWxsV3JpdGVIVE1MKCk7CisKICAgICBwcml2YXRlOgorICAgICAgICBzdHJ1Y3QgVGltZWxp
bmVJdGVtRW50cnkgeworICAgICAgICAgICAgVGltZWxpbmVJdGVtRW50cnkoU2NyaXB0T2JqZWN0
IGl0ZW0sIFNjcmlwdEFycmF5IGNoaWxkcmVuLCBUaW1lbGluZUl0ZW1UeXBlIHR5cGUpIDogaXRl
bShpdGVtKSwgY2hpbGRyZW4oY2hpbGRyZW4pLCB0eXBlKHR5cGUpIHsgfQorICAgICAgICAgICAg
U2NyaXB0T2JqZWN0IGl0ZW07CisgICAgICAgICAgICBTY3JpcHRBcnJheSBjaGlsZHJlbjsKKyAg
ICAgICAgICAgIFRpbWVsaW5lSXRlbVR5cGUgdHlwZTsKKyAgICAgICAgfTsKKyAgICAgICAgCisg
ICAgICAgIHZvaWQgcHVzaEN1cnJlbnRUaW1lbGluZUl0ZW0oU2NyaXB0T2JqZWN0LCBUaW1lbGlu
ZUl0ZW1UeXBlKTsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3VycmVudFRpbWVJ
bk1pbGxpc2Vjb25kcygpOwogCi0gICAgICAgIHZvaWQgZGlkQ29tcGxldGVDdXJyZW50UmVjb3Jk
KCk7Ci0KKyAgICAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVJdGVt
VHlwZSk7CisgICAgICAgIAogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsK
LSAgICAgICAgT3duUHRyPFRpbWVsaW5lSXRlbT4gbV9jdXJyZW50VGltZWxpbmVJdGVtOworICAg
ICAgICAKKyAgICAgICAgVmVjdG9yPCBUaW1lbGluZUl0ZW1FbnRyeSA+IG1faXRlbVN0YWNrOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lSXRlbS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0u
Y3BwCmluZGV4IGIzNjhjNDkuLmU2OWRlMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lSXRlbS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNw
cApAQCAtMSw4MSArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSog
bWV0OgotKgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0qIGRpc3RyaWJ1dGlvbi4KLSogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKgotKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0qICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0qIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiVGltZWxpbmVJdGVtLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJTY3JpcHRB
cnJheS5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVRpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiBw
cmV2aW91cywgZG91YmxlIHN0YXJ0VGltZSwgVGltZWxpbmVJdGVtVHlwZSBpdGVtVHlwZSkKLSAg
ICA6IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKLSAgICAsIG1fZW5kVGltZSgwLjApCi0gICAgLCBt
X2l0ZW1UeXBlKGl0ZW1UeXBlKQotICAgICwgbV9wcmV2aW91cyhwcmV2aW91cykKLXsKLX0KLQot
dm9pZCBUaW1lbGluZUl0ZW06OmFkZFRvVGltZWxpbmUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQotewotICAgIGZyb250ZW5kLT5hZGRJdGVtVG9UaW1lbGluZShjb252ZXJ0VG9TY3JpcHRP
YmplY3QoZnJvbnRlbmQpKTsKLX0KLQotU2NyaXB0T2JqZWN0IFRpbWVsaW5lSXRlbTo6Y29udmVy
dFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKLXsKLSAgICBTY3Jp
cHRPYmplY3Qgc2VsZk9iaiA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKLSAgICBzZWxm
T2JqLnNldCgidGltZSIsIG1fc3RhcnRUaW1lKTsKLSAgICBzZWxmT2JqLnNldCgidHlwZSIsIHN0
YXRpY19jYXN0PGludD4obV9pdGVtVHlwZSkpOwotICAgIHNlbGZPYmouc2V0KCJkdXJhdGlvbiIs
IG1fZW5kVGltZSAtIG1fc3RhcnRUaW1lKTsKLSAgICBTY3JpcHRBcnJheSBjaGlsZHJlbiA9IGNv
bnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkoZnJvbnRlbmQpOwotICAgIHNlbGZPYmouc2V0KCJj
aGlsZHJlbiIsIGNoaWxkcmVuKTsKLSAgICByZXR1cm4gc2VsZk9iajsKLX0KLQotU2NyaXB0QXJy
YXkgVGltZWxpbmVJdGVtOjpjb252ZXJ0Q2hpbGRyZW5Ub1NjcmlwdEFycmF5KEluc3BlY3RvckZy
b250ZW5kKiBmcm9udGVuZCkKLXsKLSAgICBTY3JpcHRBcnJheSBjaGlsZHJlbiA9IGZyb250ZW5k
LT5uZXdTY3JpcHRBcnJheSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxk
cmVuLnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbi5zZXQoaSwgbV9jaGlsZHJlbltpXS0+
Y29udmVydFRvU2NyaXB0T2JqZWN0KGZyb250ZW5kKSk7Ci0gICAgcmV0dXJuIGNoaWxkcmVuOwot
fQotCi12b2lkIFRpbWVsaW5lSXRlbTo6YWRkQ2hpbGRJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJ
dGVtPiB0aW1lbGluZUl0ZW0pCi17Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQodGltZWxpbmVJdGVt
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmgKaW5kZXggMTkwOTIzMC4uZTY5ZGUyOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvVGltZWxpbmVJdGVtLmgKQEAgLTEsODggKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0qIG1ldDoKLSoKLSogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0qIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKiBkaXN0cmlidXRpb24uCi0qICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0qIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0qIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotKi8KLQotI2lmbmRlZiBUaW1lbGluZUl0ZW1faAotI2RlZmluZSBUaW1lbGluZUl0ZW1f
aAotCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBj
bGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLSAgICBjbGFzcyBUaW1lbGluZUl0ZW07Ci0gICAgY2xh
c3MgU2NyaXB0QXJyYXk7Ci0gICAgY2xhc3MgU2NyaXB0T2JqZWN0OwotCi0gICAgdHlwZWRlZiBW
ZWN0b3I8T3duUHRyPFRpbWVsaW5lSXRlbT4gPiBUaW1lbGluZUl0ZW1zOwotCi0gICAgLy8gTXVz
dCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1lbGluZUFnZW50LmpzCi0gICAgZW51bSBUaW1lbGlu
ZUl0ZW1UeXBlIHsKLSAgICAgICAgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1UeXBlID0gMCwKLSAg
ICAgICAgTGF5b3V0VGltZWxpbmVJdGVtVHlwZSA9IDEsCi0gICAgICAgIFJlY2FsY3VsYXRlU3R5
bGVzVGltZWxpbmVJdGVtVHlwZSA9IDIsCi0gICAgICAgIFBhaW50VGltZWxpbmVJdGVtVHlwZSA9
IDMsCi0gICAgICAgIFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUgPSA0LAotICAgIH07Ci0KLSAg
ICBjbGFzcyBUaW1lbGluZUl0ZW0gewotICAgIHB1YmxpYzoKLSAgICAgICAgVGltZWxpbmVJdGVt
KFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiwgZG91YmxlIHN0YXJ0VGltZSwgVGltZWxpbmVJdGVt
VHlwZSk7Ci0KLSAgICAgICAgdmlydHVhbCB+VGltZWxpbmVJdGVtKCkgeyB9Ci0KLSAgICAgICAg
VGltZWxpbmVJdGVtKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7
IH0KLQotICAgICAgICBQYXNzT3duUHRyPFRpbWVsaW5lSXRlbSo+IHJlbGVhc2VQcmV2aW91cygp
IHsgcmV0dXJuIG1fcHJldmlvdXMucmVsZWFzZSgpOyB9Ci0KLSAgICAgICAgdm9pZCBhZGRUb1Rp
bWVsaW5lKEluc3BlY3RvckZyb250ZW5kKik7Ci0KLSAgICAgICAgdm9pZCBhZGRDaGlsZEl0ZW0o
UGFzc093blB0cjxUaW1lbGluZUl0ZW0+KTsKLQotICAgICAgICB2b2lkIHNldEVuZFRpbWUoZG91
YmxlIGVuZFRpbWUpIHsgbV9lbmRUaW1lID0gZW5kVGltZTsgfQotCi0gICAgICAgIFRpbWVsaW5l
SXRlbVR5cGUgdHlwZSgpIHsgcmV0dXJuIG1faXRlbVR5cGU7IH0KLSAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHZpcnR1YWwgU2NyaXB0T2JqZWN0IGNvbnZlcnRUb1NjcmlwdE9iamVjdChJbnNwZWN0
b3JGcm9udGVuZCopOwotCi0gICAgICAgIFNjcmlwdEFycmF5IGNvbnZlcnRDaGlsZHJlblRvU2Ny
aXB0QXJyYXkoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICAgIAotICAgIHByaXZhdGU6Ci0gICAg
ICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKLSAgICAgICAgZG91YmxlIG1fZW5kVGltZTsKLSAgICAg
ICAgVGltZWxpbmVJdGVtVHlwZSBtX2l0ZW1UeXBlOwotICAgICAgICBPd25QdHI8VGltZWxpbmVJ
dGVtPiBtX3ByZXZpb3VzOwotICAgICAgICBUaW1lbGluZUl0ZW1zIG1fY2hpbGRyZW47Ci0gICAg
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoVGltZWxp
bmVJdGVtX2gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0
b3J5LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbUZhY3RvcnkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMGJkNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRpbWVsaW5lSXRlbUZhY3RvcnkuaCIK
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKKyNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gc3RhdGljCitTY3Jp
cHRPYmplY3QgVGltZWxpbmVJdGVtRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVsaW5lSXRlbShJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIGRvdWJsZSBzdGFydFRpbWUpCit7CisgICAgU2Ny
aXB0T2JqZWN0IGl0ZW0gPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CisgICAgaXRlbS5z
ZXQoInN0YXJ0VGltZSIsIHN0YXJ0VGltZSk7CisgICAgcmV0dXJuIGl0ZW07Cit9CisKKy8vIHN0
YXRpYworU2NyaXB0T2JqZWN0IFRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZURPTURpc3BhdGNo
VGltZWxpbmVJdGVtKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCwgZG91YmxlIHN0YXJ0VGlt
ZSwgY29uc3QgRXZlbnQmIGV2ZW50KQoreworICAgIFNjcmlwdE9iamVjdCBpdGVtID0gY3JlYXRl
R2VuZXJpY1RpbWVsaW5lSXRlbShmcm9udGVuZCwgc3RhcnRUaW1lKTsKKyAgICBTY3JpcHRPYmpl
Y3QgZGF0YSA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKKyAgICBkYXRhLnNldCgidHlw
ZSIsIGV2ZW50LnR5cGUoKS5zdHJpbmcoKSk7CisgICAgaXRlbS5zZXQoImRhdGEiLCBkYXRhKTsK
KyAgICByZXR1cm4gaXRlbTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lSXRlbUZhY3RvcnkuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbUZhY3Rvcnku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTVkNjQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtRmFjdG9yeS5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworIAorI2lmbmRlZiBUaW1lbGluZUl0ZW1GYWN0b3J5X2gKKyNkZWZpbmUgVGltZWxpbmVJ
dGVtRmFjdG9yeV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEV2ZW50Owor
ICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworICAgIGNsYXNzIFNjcmlwdE9iamVjdDsKKwor
ICAgIGNsYXNzIFRpbWVsaW5lSXRlbUZhY3RvcnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFNjcmlwdE9iamVjdCBjcmVhdGVHZW5lcmljVGltZWxpbmVJdGVtKEluc3BlY3RvckZyb250
ZW5kKiwgZG91YmxlIHN0YXJ0VGltZSk7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgU2NyaXB0
T2JqZWN0IGNyZWF0ZURPTURpc3BhdGNoVGltZWxpbmVJdGVtKEluc3BlY3RvckZyb250ZW5kKiwg
ZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgRXZlbnQmKTsgICAgICAgICAgICAgICAgCisgICAgcHJp
dmF0ZToKKyAgICAgICAgVGltZWxpbmVJdGVtRmFjdG9yeSgpIHsgfQorICAgIH07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKFRpbWVsaW5lSXRlbUZhY3Rv
cnlfaCkK
</data>
<flag name="review"
          id="23212"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="23214"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>