<?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>40227</bug_id>
          
          <creation_ts>2010-06-07 04:32:58 -0700</creation_ts>
          <short_desc>Web Inspector: Provide detailed network info in the resources panel.</short_desc>
          <delta_ts>2010-07-09 03:38:15 -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>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>fishd</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>234785</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-07 04:32:58 -0700</bug_when>
    <thetext>I looked at what information other tools provide:

1) Firebug Network info:
- DNS Lookup: DNS resolution time
- Connecting: Elapsed time required to create a TCP connection.
- Blocking: Elapsed time spent in a browser queue waiting for a network connection. Displayed only in the case where this situation happens.
- Sending: Time needed to send request data to the server.
- Waiting: Waiting for the response (till the first byte is received from the server).
- Receiving: Time necessary to download response body.

FireBug Cache info:
- Last Modified - last time the cache entry was modified
- Last Fetched - last time the cache entry was opened
- Expires - expiration time of the cache entry
- Data Size - cache entry data size
- Fetch Count - number of times the cache entry has been opened
- Device - id for the device that stores this cache entry

2) Page Speed
- DNS - The browser is performing a DNS lookup for this resource
- Wait - The browser is waiting to establish a network (TCP) connection with the web server.
- Connect - The browser is establishing a network (TCP) connection with the web server. This event only appears for new connections; not for connections that are reused.
- Send - The browser has sent the HTTP request. Only GET requests are shown.
- Connected - The browser is waiting for data over the network. The event ends when the browser ends the TCP connection. Resources that show lengthy Connected events may benefit from optimization to reduce payload size, such as compression

3) dynaTrace seems to present subset:
- DNS
- Connect
- Server
- Transfer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234807</commentid>
    <comment_count>1</comment_count>
      <attachid>58018</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-07 05:43:29 -0700</bug_when>
    <thetext>Created attachment 58018
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234823</commentid>
    <comment_count>2</comment_count>
      <attachid>58018</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-06-07 06:38:05 -0700</bug_when>
    <thetext>Comment on attachment 58018
[PATCH] Proposed change.

WebCore/platform/network/ResourceResponseBase.h:173
 +      mutable unsigned m_connectionID;
These fields should be behind #if ENABLE(INSPECTOR).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234859</commentid>
    <comment_count>3</comment_count>
      <attachid>58031</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-07 08:18:59 -0700</bug_when>
    <thetext>Created attachment 58031
[PATCH] Same with comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235106</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-06-07 19:48:36 -0700</bug_when>
    <thetext>Bug about needing this info on Apple&apos;s WebKit port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235214</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-08 05:15:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Bug about needing this info on Apple&apos;s WebKit port?

Yes, it does need a bug for your port! Leaving it to you as we discussed offline. 

Who would be the best person to look at the WebCore/platform/network/ResourceResponseBase.h and allow 6 new fields there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238266</commentid>
    <comment_count>6</comment_count>
      <attachid>58031</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 00:03:33 -0700</bug_when>
    <thetext>Comment on attachment 58031
[PATCH] Same with comments addressed.


&gt; +        var data = [WebInspector.UIString(&quot;DNS Lookup&quot;), Number.secondsToString(resource.dnsResolveTime),
&gt; +                    WebInspector.UIString(&quot;Blocking&quot;), Number.secondsToString(resource.blockingTime),
&gt; +                    WebInspector.UIString(&quot;Connecting&quot;), Number.secondsToString(resource.connectingTime),
&gt; +                    WebInspector.UIString(&quot;Sending&quot;), Number.secondsToString(resource.sendingTime),
&gt; +                    WebInspector.UIString(&quot;Waiting&quot;), Number.secondsToString(resource.waitingTime),
&gt; +                    WebInspector.UIString(&quot;Receiving&quot;), Number.secondsToString(resource.endTime - resource.responseReceivedTime)];

These would need WebInpector.UIString in the Number.secondsToString call.
I wonder if we should just make that automatically the default.


&gt; .cpp
&gt; +unsigned ResourceResponseBase::connectionID() const
&gt; +{
&gt; +    return m_connectionID;
&gt; +}
&gt; +
&gt; +void ResourceResponseBase::setConnectionID(unsigned connectionID)
&gt; +{
&gt; +    m_connectionID = connectionID;
&gt; +}

&gt; .h
&gt; +    unsigned connectionID() const;
&gt; +    void setConnectionID(unsigned connectionID);

Can these implementations just move to the .h? That
seems to be common for single lines. It also makes
it easier to read (for me). That way we know its
the obvious thing =)


&gt; +#if ENABLE(INSPECTOR)
&gt; +    mutable unsigned m_connectionID;
&gt; +    mutable double m_dnsResolveTime;
&gt; +    mutable double m_connectingTime;
&gt; +    mutable double m_blockingTime;
&gt; +    mutable double m_sendingTime;
&gt; +    mutable double m_waitingTime;
&gt; +#endif
&gt;  };

Did these need to be mutable? I don&apos;t see them
being set when they are in any const functions
like m_age and m_date. Or does this have to
do with something else?


&gt; +double WebURLResponse::waitingTime() const
&gt; +{
&gt; +    return m_private-&gt;m_resourceResponse-&gt;waitingTime();
&gt; +}
&gt; +
&gt; +void WebURLResponse::setWaitingTime(double waitingTime)
&gt; +{
&gt; +    m_private-&gt;m_resourceResponse-&gt;setWaitingTime(waitingTime);
&gt; +}

Ditto. This is chromium code, but I think its much easier
scanning through lots of code when simple functions like this
are onelined in the .h.

I don&apos;t know the details on the mac side, so I&apos;ll ask around.


I&apos;m leaving r? because I don&apos;t really know how much this affects
memory usage. However, this is INSPECTOR only, so my guess is
its fine. I&apos;d like someone with more experience to take a look.
Otherwise I give it a thumbs up. Got a screenshot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248194</commentid>
    <comment_count>7</comment_count>
      <attachid>60879</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-08 07:53:46 -0700</bug_when>
    <thetext>Created attachment 60879
[PATCH] Same rebaselined, now uses RefPtr for timing info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248202</commentid>
    <comment_count>8</comment_count>
      <attachid>60882</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-08 08:01:56 -0700</bug_when>
    <thetext>Created attachment 60882
[IMAGE] Looks with the patch applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248211</commentid>
    <comment_count>9</comment_count>
      <attachid>60879</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-08 08:12:28 -0700</bug_when>
    <thetext>Comment on attachment 60879
[PATCH] Same rebaselined, now uses RefPtr for timing info.

WebKit/chromium/src/WebURLResponse.cpp:35
 +  #include &quot;ResourceLoadTiming.h&quot;
mind includes order</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248234</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-07-08 08:52:03 -0700</bug_when>
    <thetext>Can you make the time coulmn be right aligned, so the units line up making the nunbers easier to read?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248240</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-08 08:58:25 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Can you make the time coulmn be right aligned, so the units line up making the nunbers easier to read?

Sure. I&apos;m actually thinking of putting this data into a separate tab (next to Headers and Content). Something line &quot;Timing&quot;. Not sure how much data we are able to put there though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248250</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-07-08 09:05:51 -0700</bug_when>
    <thetext>Another tab seems fine, but I like the popup since it is in context with the whole timeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248439</commentid>
    <comment_count>13</comment_count>
      <attachid>60931</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-08 12:39:14 -0700</bug_when>
    <thetext>Created attachment 60931
[PATCH] Same with WebKit/chromium/*/WebURLLoadTiming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248460</commentid>
    <comment_count>14</comment_count>
      <attachid>60931</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 12:59:32 -0700</bug_when>
    <thetext>Comment on attachment 60931
[PATCH] Same with WebKit/chromium/*/WebURLLoadTiming

WebKit/chromium/public/WebURLResponse.h:76
 +      WEBKIT_API void setConnectionID(unsigned);
nit: please make these attributes readable as well.

WebKit/chromium/src/WebURLResponse.cpp:103
 +      m_private-&gt;m_resourceResponse-&gt;setResourceLoadTiming(ResourceLoadTiming::create());
why should setting a connection ID set an implicit ResourceLoadTiming object?

WebKit/chromium/src/WebURLResponse.cpp:109
 +      ASSERT(loadTiming.get());
why is it invalid to set a null loadTiming object?

WebKit/chromium/public/WebURLLoadTiming.h:60
 +      WEBKIT_API void setDomainLookupTimes(double start, double end);
i know it means more typing for you, but individual setters and getters
for these properties is really the way to go.  that way, this API is
more flexible and potentially useful for future applications without
requiring an API change.  these functions will get optimized away by
the compiler :)

I did not review any of the inspector changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248485</commentid>
    <comment_count>15</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-08 13:23:19 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 60931 [details])
&gt; WebKit/chromium/public/WebURLResponse.h:76
&gt;  +      WEBKIT_API void setConnectionID(unsigned);
&gt; nit: please make these attributes readable as well.
&gt; 

Will do.

&gt; WebKit/chromium/src/WebURLResponse.cpp:103
&gt;  +      m_private-&gt;m_resourceResponse-&gt;setResourceLoadTiming(ResourceLoadTiming::create());
&gt; why should setting a connection ID set an implicit ResourceLoadTiming object?
&gt; 
&gt; WebKit/chromium/src/WebURLResponse.cpp:109
&gt;  +      ASSERT(loadTiming.get());
&gt; why is it invalid to set a null loadTiming object?

Will fix. Both have been there before I migrated to the new struct and introduced the flag that controls the timing. It is just that every time I am looking for review overseas I find myself in a hurry and in the midnight :)

&gt; WebKit/chromium/public/WebURLLoadTiming.h:60
&gt;  +      WEBKIT_API void setDomainLookupTimes(double start, double end);
&gt; i know it means more typing for you, but individual setters and getters
&gt; for these properties is really the way to go.  that way, this API is
&gt; more flexible and potentially useful for future applications without
&gt; requiring an API change.  these functions will get optimized away by
&gt; the compiler :)
&gt; 

Heh. I am happy to add compiler some more optimization work.

&gt; I did not review any of the inspector changes.

Thanks! I had it reviewed earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248804</commentid>
    <comment_count>16</comment_count>
      <attachid>61010</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-09 00:56:31 -0700</bug_when>
    <thetext>Created attachment 61010
[PATCH] Addressed review comments (added getters, removed asserts).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248826</commentid>
    <comment_count>17</comment_count>
      <attachid>61010</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-09 01:14:52 -0700</bug_when>
    <thetext>Comment on attachment 61010
[PATCH] Addressed review comments (added getters, removed asserts).

WebKit/chromium/public/WebURLLoadTiming.h:37
 +  namespace WebCore { class ResourceLoadTiming; }
move this to its own line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248888</commentid>
    <comment_count>18</comment_count>
      <attachid>60879</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-09 03:19:10 -0700</bug_when>
    <thetext>Comment on attachment 60879
[PATCH] Same rebaselined, now uses RefPtr for timing info.

Cleared Yury Semikhatsky&apos;s review+ from obsolete attachment 60879 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248899</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-09 03:38:15 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/English.lproj/localizedStrings.js
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorResource.cpp
	M	WebCore/inspector/InspectorResource.h
	M	WebCore/inspector/front-end/ResourcesPanel.js
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/loader/appcache/ApplicationCacheGroup.cpp
	M	WebCore/platform/network/ResourceLoadTiming.h
	M	WebCore/platform/network/ResourceRequestBase.h
	M	WebCore/platform/network/ResourceResponseBase.cpp
	M	WebCore/platform/network/ResourceResponseBase.h
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/WebKit.gyp
	M	WebKit/chromium/public/WebDevToolsAgent.h
	A	WebKit/chromium/public/WebURLLoadTiming.h
	M	WebKit/chromium/public/WebURLRequest.h
	M	WebKit/chromium/public/WebURLResponse.h
	M	WebKit/chromium/src/WebDevToolsAgentImpl.cpp
	M	WebKit/chromium/src/WebDevToolsAgentImpl.h
	A	WebKit/chromium/src/WebURLLoadTiming.cpp
	M	WebKit/chromium/src/WebURLRequest.cpp
	M	WebKit/chromium/src/WebURLResponse.cpp
Committed r62927</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58018</attachid>
            <date>2010-06-07 05:43:29 -0700</date>
            <delta_ts>2010-06-07 08:18:59 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>network_timers</filename>
            <type>text/plain</type>
            <size>17778</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM4NWE4ZS4uNWE2MDA4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNi0wNyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdv
cmsgaW5mbyBpbiB0aGUgcmVzb3VyY2VzCisgICAgICAgIHBhbmVsIChmcm9udC1lbmQgcGFydCAr
IHJlc291cmNlIHN0dWIpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5lbGVtZW50
c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwucHJvdG90eXBlLl9nZXRQb3BvdmVyQW5jaG9yKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3Nob3dQb3BvdmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRlQmFy
R3JhcGhMYWJlbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlR3JhcGgpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLnVwZGF0ZVJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29ubmVjdGlvbklEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2VCYXNlOjpzZXRDb25uZWN0aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmRuc1Jlc29sdmVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRETlNSZXNvbHZlVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGluZ1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3RpbmdUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpibG9ja2luZ1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEJsb2NraW5nVGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2VuZGluZ1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFNlbmRpbmdUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjp3YWl0aW5nVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0V2FpdGluZ1RpbWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxMC0wNi0wNyAgSm9jZWx5biBU
dXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcwppbmRleCA2M2E1ODhmLi5kMjlkZjFjIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBhbmQgYi9XZWJDb3JlL0VuZ2xpc2gu
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggOTk5YjhkNi4uYzE1M2ZmOQotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2UuY3BwCkBAIC0xMjcsNiArMTI3LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcmVzcG9u
c2VTdGF0dXNDb2RlID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBtX3Jlc3BvbnNl
U3RhdHVzVGV4dCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7CiAgICAgbV9zdWdnZXN0ZWRG
aWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CisgICAgbV9jb25uZWN0aW9u
SUQgPSByZXNwb25zZS5jb25uZWN0aW9uSUQoKTsKKyAgICBtX2Ruc1Jlc29sdmVUaW1lID0gcmVz
cG9uc2UuZG5zUmVzb2x2ZVRpbWUoKTsKKyAgICBtX2Nvbm5lY3RpbmdUaW1lID0gcmVzcG9uc2Uu
Y29ubmVjdGluZ1RpbWUoKTsKKyAgICBtX2Jsb2NraW5nVGltZSA9IHJlc3BvbnNlLmJsb2NraW5n
VGltZSgpOworICAgIG1fc2VuZGluZ1RpbWUgPSByZXNwb25zZS5zZW5kaW5nVGltZSgpOworICAg
IG1fd2FpdGluZ1RpbWUgPSByZXNwb25zZS53YWl0aW5nVGltZSgpOwogCiAgICAgbV9jaGFuZ2Vz
LnNldChSZXNwb25zZUNoYW5nZSk7CiAgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKQEAg
LTE3Myw2ICsxNzksMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2Jq
ZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICAgICAgU2NyaXB0T2JqZWN0IHJl
c3BvbnNlSGVhZGVycyA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICAgICAgcG9w
dWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVs
ZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VI
ZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImNvbm5lY3Rpb25JRCIsIG1fY29ubmVj
dGlvbklEKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRuc1Jlc29sdmVUaW1lIiwgbV9kbnNS
ZXNvbHZlVGltZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJjb25uZWN0aW5nVGltZSIsIG1f
Y29ubmVjdGluZ1RpbWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiYmxvY2tpbmdUaW1lIiwg
bV9ibG9ja2luZ1RpbWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgic2VuZGluZ1RpbWUiLCBt
X3NlbmRpbmdUaW1lKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoIndhaXRpbmdUaW1lIiwgbV93
YWl0aW5nVGltZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRSZXNwb25zZUNoYW5nZSIs
IHRydWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5YjkxODg5Li4xMWFkNjI4Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApAQCAtMTcyLDYgKzE3MiwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGRvdWJsZSBtX2VuZFRpbWU7CiAgICAgICAgIGRvdWJsZSBtX2xvYWRF
dmVudFRpbWU7CiAgICAgICAgIGRvdWJsZSBtX2RvbUNvbnRlbnRFdmVudFRpbWU7CisgICAgICAg
IHVuc2lnbmVkIG1fY29ubmVjdGlvbklEOworICAgICAgICBkb3VibGUgbV9kbnNSZXNvbHZlVGlt
ZTsKKyAgICAgICAgZG91YmxlIG1fY29ubmVjdGluZ1RpbWU7CisgICAgICAgIGRvdWJsZSBtX2Js
b2NraW5nVGltZTsKKyAgICAgICAgZG91YmxlIG1fc2VuZGluZ1RpbWU7CisgICAgICAgIGRvdWJs
ZSBtX3dhaXRpbmdUaW1lOwogICAgICAgICBTY3JpcHRTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnQ7
CiAgICAgICAgIFR5cGUgbV9vdmVycmlkZUNvbnRlbnRUeXBlOwogICAgICAgICBDaGFuZ2VzIG1f
Y2hhbmdlczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5q
cwppbmRleCBiMmRmYTE1Li5iYTJlYjM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00OCw2ICs0OCw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmZpbHRlcih0aGlzLmZpbHRlckFsbEVs
ZW1lbnQsIGZhbHNlKTsKICAgICB0aGlzLmdyYXBoc1RyZWVFbGVtZW50LmNoaWxkcmVuWzBdLnNl
bGVjdCgpOwogICAgIHRoaXMuX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7CisKKyAg
ICB0aGlzLl9wb3BvdmVySGVscGVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVySGVscGVyKHRo
aXMuZWxlbWVudCwgdGhpcy5fZ2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9zaG93
UG9wb3Zlci5iaW5kKHRoaXMpLCB0cnVlKTsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKQEAgLTczNSw2ICs3MzcsNDQgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBlbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0
aW9uc0ZvcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFsgdGhpcy5jb250YWlu
ZXJFbGVtZW50IF07CisgICAgfSwKKworICAgIF9nZXRQb3BvdmVyQW5jaG9yOiBmdW5jdGlvbihl
bGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIGFuY2hvciA9IGVsZW1lbnQuZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhDbGFzcygicmVzb3VyY2VzLWdyYXBoLWJhci1hcmVhIik7CisgICAgICAgIGlm
ICghYW5jaG9yKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZhciByZXNvdXJj
ZSA9IGFuY2hvci5yZXNvdXJjZTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmNvbm5lY3Rpb25J
RCA/IGFuY2hvciA6IG51bGw7CisgICAgfSwKKworICAgIF9zaG93UG9wb3ZlcjogZnVuY3Rpb24o
YW5jaG9yKQorICAgIHsKKyAgICAgICAgdmFyIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRhYmxlIik7CisgICAgICAgIHZhciByZXNvdXJjZSA9IGFuY2hvci5yZXNvdXJj
ZTsKKyAgICAgICAgdmFyIGRhdGEgPSBbIkROUyBMb29rdXAiLCBOdW1iZXIuc2Vjb25kc1RvU3Ry
aW5nKHJlc291cmNlLmRuc1Jlc29sdmVUaW1lKSwKKyAgICAgICAgICAgICAgICAgICAgIkJsb2Nr
aW5nIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyhyZXNvdXJjZS5ibG9ja2luZ1RpbWUpLAorICAg
ICAgICAgICAgICAgICAgICAiQ29ubmVjdGluZyIsIE51bWJlci5zZWNvbmRzVG9TdHJpbmcocmVz
b3VyY2UuY29ubmVjdGluZ1RpbWUpLAorICAgICAgICAgICAgICAgICAgICAiU2VuZGluZyIsIE51
bWJlci5zZWNvbmRzVG9TdHJpbmcocmVzb3VyY2Uuc2VuZGluZ1RpbWUpLAorICAgICAgICAgICAg
ICAgICAgICAiV2FpdGluZyIsIE51bWJlci5zZWNvbmRzVG9TdHJpbmcocmVzb3VyY2Uud2FpdGlu
Z1RpbWUpLAorICAgICAgICAgICAgICAgICAgICAiUmVjZWl2aW5nIiwgTnVtYmVyLnNlY29uZHNU
b1N0cmluZyhyZXNvdXJjZS5lbmRUaW1lIC0gcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUp
XTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDIpIHsK
KyAgICAgICAgICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAg
ICAgICAgICB0YWJsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodHIpOworCisgICAgICAgICAgICB2YXIg
dGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICAgICAgdGQudGV4dENv
bnRlbnQgPSBkYXRhW2ldOworICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOworCisgICAg
ICAgICAgICB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgICAgICB0
ZC50ZXh0Q29udGVudCA9IGRhdGFbaSArIDFdOworICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQo
dGQpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlBvcG92ZXIodGFibGVFbGVtZW50KTsKKyAgICAgICAgcG9wb3Zlci5zaG93KGFuY2hvci5maXJz
dENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAgICAgcmV0dXJuIHBvcG92ZXI7CiAgICAgfQogfQog
CkBAIC04NTgsNiArODk4LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZUNhbGN1bGF0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YXIgbGVmdExhYmVsID0g
cmlnaHRMYWJlbDsKIAorICAgICAgICBpZiAocmVzb3VyY2UuY29ubmVjdGlvbklEKQorICAgICAg
ICAgICAgcmV0dXJuIHtsZWZ0OiBsZWZ0TGFiZWwsIHJpZ2h0OiByaWdodExhYmVsIH07CisKICAg
ICAgICAgaWYgKGhhc0xhdGVuY3kgJiYgcmlnaHRMYWJlbCkgewogICAgICAgICAgICAgdmFyIHRv
dGFsID0gdGhpcy5mb3JtYXRWYWx1ZShyZXNvdXJjZS5kdXJhdGlvbik7CiAgICAgICAgICAgICB2
YXIgdG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgbGF0ZW5jeSwgJXMgZG93bmxv
YWQgKCVzIHRvdGFsKSIsIGxlZnRMYWJlbCwgcmlnaHRMYWJlbCwgdG90YWwpOwpAQCAtODY4LDcg
KzkxMSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVDYWxjdWxhdG9yLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBpZiAocmVzb3VyY2UuY2FjaGVkKQogICAgICAgICAgICAgdG9vbHRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgKGZyb20gY2FjaGUpIiwgdG9vbHRpcCk7Ci0KICAg
ICAgICAgcmV0dXJuIHtsZWZ0OiBsZWZ0TGFiZWwsIHJpZ2h0OiByaWdodExhYmVsLCB0b29sdGlw
OiB0b29sdGlwfTsKICAgICB9LAogCkBAIC0xMjA4LDYgKzEyNTAsNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VHcmFwaCA9IGZ1bmN0aW9uKHJlc291cmNlKQogCiAgICAgdGhpcy5fYmFyQXJlYUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9iYXJBcmVh
RWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2VzLWdyYXBoLWJhci1hcmVhIGhpZGRlbiI7Cisg
ICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQucmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICB0aGlzLl9n
cmFwaEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYmFyQXJlYUVsZW1lbnQpOwogCiAgICAgdGhp
cy5fYmFyTGVmdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDhhNzhjZDIuLmUxMzE3MWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTE2Niw2ICsx
MTY2LDEzIEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHBheWxvYWQpCiAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSBwYXlsb2FkLnN0YXR1
c1RleHQ7CiAgICAgICAgIHJlc291cmNlLnN1Z2dlc3RlZEZpbGVuYW1lID0gcGF5bG9hZC5zdWdn
ZXN0ZWRGaWxlbmFtZTsKICAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcGF5bG9h
ZC5yZXNwb25zZUhlYWRlcnM7CisgICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25JRCA9IHBheWxv
YWQuY29ubmVjdGlvbklEOworICAgICAgICByZXNvdXJjZS5kbnNSZXNvbHZlVGltZSA9IHBheWxv
YWQuZG5zUmVzb2x2ZVRpbWU7CisgICAgICAgIHJlc291cmNlLmNvbm5lY3RpbmdUaW1lID0gcGF5
bG9hZC5jb25uZWN0aW5nVGltZTsKKyAgICAgICAgcmVzb3VyY2UuYmxvY2tpbmdUaW1lID0gcGF5
bG9hZC5ibG9ja2luZ1RpbWU7CisgICAgICAgIHJlc291cmNlLnNlbmRpbmdUaW1lID0gcGF5bG9h
ZC5zZW5kaW5nVGltZTsKKyAgICAgICAgcmVzb3VyY2Uud2FpdGluZ1RpbWUgPSBwYXlsb2FkLndh
aXRpbmdUaW1lOworICAgICAgICByZXNvdXJjZS5yZWNlaXZpbmdUaW1lID0gcGF5bG9hZC5yZWNl
aXZpbmdUaW1lOwogICAgIH0KIAogICAgIGlmIChwYXlsb2FkLmRpZFR5cGVDaGFuZ2UpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMzE5MmExOC4uODkwNDJhZAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTU3
LDYgKzU3LDEyIEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSgp
CiAgICAgLCBtX2RhdGUoMC4wKQogICAgICwgbV9leHBpcmVzKDAuMCkKICAgICAsIG1fbGFzdE1v
ZGlmaWVkKDAuMCkKKyAgICAsIG1fY29ubmVjdGlvbklEKDApCisgICAgLCBtX2Ruc1Jlc29sdmVU
aW1lKDAuMCkKKyAgICAsIG1fY29ubmVjdGluZ1RpbWUoMC4wKQorICAgICwgbV9ibG9ja2luZ1Rp
bWUoMC4wKQorICAgICwgbV9zZW5kaW5nVGltZSgwLjApCisgICAgLCBtX3dhaXRpbmdUaW1lKDAu
MCkKIHsKIH0KIApAQCAtODIsNiArODgsMTIgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291
cmNlUmVzcG9uc2VCYXNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHkKICAg
ICAsIG1fZGF0ZSgwLjApCiAgICAgLCBtX2V4cGlyZXMoMC4wKQogICAgICwgbV9sYXN0TW9kaWZp
ZWQoMC4wKQorICAgICwgbV9jb25uZWN0aW9uSUQoMCkKKyAgICAsIG1fZG5zUmVzb2x2ZVRpbWUo
MC4wKQorICAgICwgbV9jb25uZWN0aW5nVGltZSgwLjApCisgICAgLCBtX2Jsb2NraW5nVGltZSgw
LjApCisgICAgLCBtX3NlbmRpbmdUaW1lKDAuMCkKKyAgICAsIG1fd2FpdGluZ1RpbWUoMC4wKQog
ewogfQogCkBAIC00NTIsNiArNDY0LDY1IEBAIHRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsK
IH0KIAordW5zaWduZWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rpb25JRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbklEOworfQorCit2b2lkIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRDb25uZWN0aW9uSUQodW5zaWduZWQgY29ubmVjdGlvbklEKQoreworICAgIG1f
Y29ubmVjdGlvbklEID0gY29ubmVjdGlvbklEOworfQorCitkb3VibGUgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmRuc1Jlc29sdmVUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kbnNSZXNvbHZl
VGltZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RE5TUmVzb2x2ZVRpbWUo
ZG91YmxlIGRuc1Jlc29sdmVUaW1lKQoreworICAgIG1fZG5zUmVzb2x2ZVRpbWUgPSBkbnNSZXNv
bHZlVGltZTsKK30KKworZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW5nVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGluZ1RpbWU7Cit9CisKK3ZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3RpbmdUaW1lKGRvdWJsZSBjb25uZWN0aW5nVGlt
ZSkKK3sKKyAgICBtX2Nvbm5lY3RpbmdUaW1lID0gY29ubmVjdGluZ1RpbWU7Cit9CisKK2RvdWJs
ZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YmxvY2tpbmdUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9ibG9ja2luZ1RpbWU7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEJs
b2NraW5nVGltZShkb3VibGUgYmxvY2tpbmdUaW1lKQoreworICAgIG1fYmxvY2tpbmdUaW1lID0g
YmxvY2tpbmdUaW1lOworfQorCitkb3VibGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNlbmRpbmdU
aW1lKCkgY29uc3QgeworICAgIHJldHVybiBtX3NlbmRpbmdUaW1lOworfQorCit2b2lkIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpzZXRTZW5kaW5nVGltZShkb3VibGUgc2VuZGluZ1RpbWUpCit7Cisg
ICAgbV9zZW5kaW5nVGltZSA9IHNlbmRpbmdUaW1lOworfQorCitkb3VibGUgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OndhaXRpbmdUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93YWl0aW5nVGlt
ZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0V2FpdGluZ1RpbWUoZG91Ymxl
IHdhaXRpbmdUaW1lKQoreworICAgIG1fd2FpdGluZ1RpbWUgPSB3YWl0aW5nVGltZTsKK30KKwog
dm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGF6eUluaXQoKSBjb25zdAogewogICAgIGNvbnN0
X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSo+KHN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9u
c2UqPih0aGlzKSktPnBsYXRmb3JtTGF6eUluaXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCA3NGUyM2E0Li41ZmY2ZGZjCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC05NSw2ICs5NSwzMCBAQCBwdWJsaWM6CiAgICAgZG91
YmxlIGV4cGlyZXMoKSBjb25zdDsKICAgICBkb3VibGUgbGFzdE1vZGlmaWVkKCkgY29uc3Q7CiAK
KyAgICAvLyBDb25uZWN0aW9uIChzb2NrZXQpIGlkLgorICAgIHVuc2lnbmVkIGNvbm5lY3Rpb25J
RCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkIGNvbm5lY3Rpb25J
RCk7CisKKyAgICAvLyBETlMgcmVzb2x1dGlvbiB0aW1lIGZvciB0aGlzIHJlc291cmNlLCBpbiBz
ZWNvbmRzLgorICAgIGRvdWJsZSBkbnNSZXNvbHZlVGltZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
RE5TUmVzb2x2ZVRpbWUoZG91YmxlIGRuc1Jlc29sdmVUaW1lKTsKKworICAgIC8vIEVsYXBzZWQg
dGltZSByZXF1aXJlZCB0byBjcmVhdGUgYSBUQ1AgY29ubmVjdGlvbiwgaW4gc2Vjb25kcy4KKyAg
ICBkb3VibGUgY29ubmVjdGluZ1RpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbm5lY3RpbmdU
aW1lKGRvdWJsZSBjb25uZWN0aW5nVGltZSk7CisKKyAgICAvLyBFbGFwc2VkIHRpbWUgc3BlbnQg
aW4gYSBicm93c2VyIHF1ZXVlIHdhaXRpbmcgZm9yIGEgbmV0d29yayBjb25uZWN0aW9uLCBpbiBz
ZWNvbmRzLgorICAgIGRvdWJsZSBibG9ja2luZ1RpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEJs
b2NraW5nVGltZShkb3VibGUgYmxvY2tpbmdUaW1lKTsKKworICAgIC8vIFRpbWUgbmVlZGVkIHRv
IHNlbmQgcmVxdWVzdCBkYXRhIHRvIHRoZSBzZXJ2ZXIsIGluIHNlY29uZHMuCisgICAgZG91Ymxl
IHNlbmRpbmdUaW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZW5kaW5nVGltZShkb3VibGUgc2Vu
ZGluZ1RpbWUpOworCisgICAgLy8gV2FpdGluZyBmb3IgdGhlIHJlc3BvbnNlICh0aWxsIHRoZSBm
aXJzdCBieXRlIGlzIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlciksIGluIHNlY29uZHMuCisgICAg
ZG91YmxlIHdhaXRpbmdUaW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXYWl0aW5nVGltZShkb3Vi
bGUgd2FpdGluZ1RpbWUpOworCiAgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ugc3ViY2xhc3Mg
bWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIHByb3ZpZGUgcGxhdGZvcm0tc3BlY2lmaWMgbWVt
b3J5IHVzYWdlIGluZm9ybWF0aW9uCiAgICAgdW5zaWduZWQgbWVtb3J5VXNhZ2UoKSBjb25zdAog
ICAgIHsKQEAgLTEyNSw3ICsxNDksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1faHR0cFN0
YXR1c1RleHQ7CiAgICAgSFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgdGlt
ZV90IG1fbGFzdE1vZGlmaWVkRGF0ZTsKLQogICAgIGJvb2wgbV9pc051bGwgOiAxOwogICAgIAog
cHJpdmF0ZToKQEAgLTE0Niw2ICsxNjksMTMgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIGRvdWJs
ZSBtX2RhdGU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9leHBpcmVzOwogICAgIG11dGFibGUgZG91
YmxlIG1fbGFzdE1vZGlmaWVkOworCisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25J
RDsKKyAgICBtdXRhYmxlIGRvdWJsZSBtX2Ruc1Jlc29sdmVUaW1lOworICAgIG11dGFibGUgZG91
YmxlIG1fY29ubmVjdGluZ1RpbWU7CisgICAgbXV0YWJsZSBkb3VibGUgbV9ibG9ja2luZ1RpbWU7
CisgICAgbXV0YWJsZSBkb3VibGUgbV9zZW5kaW5nVGltZTsKKyAgICBtdXRhYmxlIGRvdWJsZSBt
X3dhaXRpbmdUaW1lOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDVmODVlNS4u
ZmE0YmI2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDYtMDcgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBkZXRhaWxl
ZCBuZXR3b3JrIGluZm8gaW4gdGhlIHJlc291cmNlcyBwYW5lbCAoZnJvbnQtZW5kIHBhcnQgKyBy
ZXNvdXJjZSBzdHViKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1
ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogcHVibGljL1dlYlVSTFJlc3BvbnNlLmg6CisgICAg
ICAgICogc3JjL1dlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVz
cG9uc2U6OmNvbm5lY3Rpb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpz
ZXRDb25uZWN0aW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6ZG5zUmVz
b2x2ZVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6c2V0RE5TUmVzb2x2
ZVRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6Y29ubmVjdGluZ1RpbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6c2V0Q29ubmVjdGluZ1RpbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6YmxvY2tpbmdUaW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OnNldEJsb2NraW5nVGltZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFJlc3BvbnNlOjpzZW5kaW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFJlc3BvbnNlOjpzZXRTZW5kaW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3Bv
bnNlOjp3YWl0aW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpzZXRX
YWl0aW5nVGltZSk6CisKIDIwMTAtMDYtMDcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IGIzYzA4NGMuLjA0MjI5ZTcKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxSZXNwb25zZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9u
c2UuaApAQCAtNzIsNiArNzIsMjQgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkgV2ViVVJMIHVy
bCgpIGNvbnN0OwogICAgIFdFQktJVF9BUEkgdm9pZCBzZXRVUkwoY29uc3QgV2ViVVJMJik7CiAK
KyAgICBXRUJLSVRfQVBJIHVuc2lnbmVkIGNvbm5lY3Rpb25JRCgpIGNvbnN0OworICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRDb25uZWN0aW9uSUQodW5zaWduZWQpOworCisgICAgV0VCS0lUX0FQSSBk
b3VibGUgZG5zUmVzb2x2ZVRpbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0RE5T
UmVzb2x2ZVRpbWUoZG91YmxlKTsKKworICAgIFdFQktJVF9BUEkgZG91YmxlIGJsb2NraW5nVGlt
ZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRCbG9ja2luZ1RpbWUoZG91YmxlKTsK
KworICAgIFdFQktJVF9BUEkgZG91YmxlIGNvbm5lY3RpbmdUaW1lKCkgY29uc3Q7CisgICAgV0VC
S0lUX0FQSSB2b2lkIHNldENvbm5lY3RpbmdUaW1lKGRvdWJsZSk7CisKKyAgICBXRUJLSVRfQVBJ
IGRvdWJsZSBzZW5kaW5nVGltZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRTZW5k
aW5nVGltZShkb3VibGUpOworCisgICAgV0VCS0lUX0FQSSBkb3VibGUgd2FpdGluZ1RpbWUoKSBj
b25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0V2FpdGluZ1RpbWUoZG91YmxlKTsKKwogICAg
IFdFQktJVF9BUEkgZG91YmxlIHJlc3BvbnNlVGltZSgpIGNvbnN0OwogICAgIFdFQktJVF9BUEkg
dm9pZCBzZXRSZXNwb25zZVRpbWUoZG91YmxlKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJl
c3BvbnNlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFhYmE1NGUu
LmZmODY2NWEKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTkzLDYgKzkzLDY2
IEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldFVSTChjb25zdCBXZWJVUkwmIHVybCkKICAgICBt
X3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+c2V0VVJMKHVybCk7CiB9CiAKK3Vuc2lnbmVk
IFdlYlVSTFJlc3BvbnNlOjpjb25uZWN0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+Y29ubmVjdGlvbklEKCk7Cit9CisKK3ZvaWQgV2Vi
VVJMUmVzcG9uc2U6OnNldENvbm5lY3Rpb25JRCh1bnNpZ25lZCBjb25uZWN0aW9uSUQpCit7Cisg
ICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNldENvbm5lY3Rpb25JRChjb25uZWN0
aW9uSUQpOworfQorCitkb3VibGUgV2ViVVJMUmVzcG9uc2U6OmRuc1Jlc29sdmVUaW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPmRuc1Jlc29s
dmVUaW1lKCk7Cit9CisKK3ZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldEROU1Jlc29sdmVUaW1lKGRv
dWJsZSBkbnNSZXNvbHZlVGltZSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25z
ZS0+c2V0RE5TUmVzb2x2ZVRpbWUoZG5zUmVzb2x2ZVRpbWUpOworfQorCitkb3VibGUgV2ViVVJM
UmVzcG9uc2U6OmNvbm5lY3RpbmdUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5tX3Jlc291cmNlUmVzcG9uc2UtPmNvbm5lY3RpbmdUaW1lKCk7Cit9CisKK3ZvaWQgV2ViVVJM
UmVzcG9uc2U6OnNldENvbm5lY3RpbmdUaW1lKGRvdWJsZSBjb25uZWN0aW5nVGltZSkKK3sKKyAg
ICBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+c2V0Q29ubmVjdGluZ1RpbWUoY29ubmVj
dGluZ1RpbWUpOworfQorCitkb3VibGUgV2ViVVJMUmVzcG9uc2U6OmJsb2NraW5nVGltZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5ibG9ja2lu
Z1RpbWUoKTsKK30KKwordm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0QmxvY2tpbmdUaW1lKGRvdWJs
ZSBibG9ja2luZ1RpbWUpCit7CisgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNl
dEJsb2NraW5nVGltZShibG9ja2luZ1RpbWUpOworfQorCitkb3VibGUgV2ViVVJMUmVzcG9uc2U6
OnNlbmRpbmdUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tX3Jlc291cmNl
UmVzcG9uc2UtPnNlbmRpbmdUaW1lKCk7Cit9CisKK3ZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldFNl
bmRpbmdUaW1lKGRvdWJsZSBzZW5kaW5nVGltZSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fcmVzb3Vy
Y2VSZXNwb25zZS0+c2V0U2VuZGluZ1RpbWUoc2VuZGluZ1RpbWUpOworfQorCitkb3VibGUgV2Vi
VVJMUmVzcG9uc2U6OndhaXRpbmdUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5tX3Jlc291cmNlUmVzcG9uc2UtPndhaXRpbmdUaW1lKCk7Cit9CisKK3ZvaWQgV2ViVVJMUmVz
cG9uc2U6OnNldFdhaXRpbmdUaW1lKGRvdWJsZSB3YWl0aW5nVGltZSkKK3sKKyAgICBtX3ByaXZh
dGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+c2V0V2FpdGluZ1RpbWUod2FpdGluZ1RpbWUpOworfQor
CiBkb3VibGUgV2ViVVJMUmVzcG9uc2U6OnJlc3BvbnNlVGltZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5yZXNwb25zZVRpbWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58031</attachid>
            <date>2010-06-07 08:18:59 -0700</date>
            <delta_ts>2010-07-08 07:53:46 -0700</delta_ts>
            <desc>[PATCH] Same with comments addressed.</desc>
            <filename>resource_info</filename>
            <type>text/plain</type>
            <size>18067</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM4NWE4ZS4uNWE2MDA4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNi0wNyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdv
cmsgaW5mbyBpbiB0aGUgcmVzb3VyY2VzCisgICAgICAgIHBhbmVsIChmcm9udC1lbmQgcGFydCAr
IHJlc291cmNlIHN0dWIpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5lbGVtZW50
c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwucHJvdG90eXBlLl9nZXRQb3BvdmVyQW5jaG9yKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3Nob3dQb3BvdmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRlQmFy
R3JhcGhMYWJlbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlR3JhcGgpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLnVwZGF0ZVJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29ubmVjdGlvbklEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2VCYXNlOjpzZXRDb25uZWN0aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmRuc1Jlc29sdmVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRETlNSZXNvbHZlVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGluZ1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3RpbmdUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpibG9ja2luZ1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEJsb2NraW5nVGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2VuZGluZ1RpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFNlbmRpbmdUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjp3YWl0aW5nVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0V2FpdGluZ1RpbWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxMC0wNi0wNyAgSm9jZWx5biBU
dXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcwppbmRleCA2M2E1ODhmLi5kMjlkZjFjIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBhbmQgYi9XZWJDb3JlL0VuZ2xpc2gu
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDk5OWI4
ZDYuLmMxNTNmZjkKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMTI3LDYg
KzEyNywxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3Jlc3BvbnNlU3RhdHVzQ29kZSA9IHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgbV9yZXNwb25zZVN0YXR1c1RleHQgPSByZXNw
b25zZS5odHRwU3RhdHVzVGV4dCgpOwogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNwb25z
ZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworICAgIG1fY29ubmVjdGlvbklEID0gcmVzcG9uc2UuY29u
bmVjdGlvbklEKCk7CisgICAgbV9kbnNSZXNvbHZlVGltZSA9IHJlc3BvbnNlLmRuc1Jlc29sdmVU
aW1lKCk7CisgICAgbV9jb25uZWN0aW5nVGltZSA9IHJlc3BvbnNlLmNvbm5lY3RpbmdUaW1lKCk7
CisgICAgbV9ibG9ja2luZ1RpbWUgPSByZXNwb25zZS5ibG9ja2luZ1RpbWUoKTsKKyAgICBtX3Nl
bmRpbmdUaW1lID0gcmVzcG9uc2Uuc2VuZGluZ1RpbWUoKTsKKyAgICBtX3dhaXRpbmdUaW1lID0g
cmVzcG9uc2Uud2FpdGluZ1RpbWUoKTsKIAogICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFu
Z2UpOwogICAgIG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CkBAIC0xNzMsNiArMTc5LDEyIEBA
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9u
dGVuZCogZnJvbnRlbmQpCiAgICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBm
cm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CiAgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVj
dCgmcmVzcG9uc2VIZWFkZXJzLCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzKTsKICAgICAgICAganNv
bk9iamVjdC5zZXQoInJlc3BvbnNlSGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7CisgICAgICAg
IGpzb25PYmplY3Quc2V0KCJjb25uZWN0aW9uSUQiLCBtX2Nvbm5lY3Rpb25JRCk7CisgICAgICAg
IGpzb25PYmplY3Quc2V0KCJkbnNSZXNvbHZlVGltZSIsIG1fZG5zUmVzb2x2ZVRpbWUpOworICAg
ICAgICBqc29uT2JqZWN0LnNldCgiY29ubmVjdGluZ1RpbWUiLCBtX2Nvbm5lY3RpbmdUaW1lKTsK
KyAgICAgICAganNvbk9iamVjdC5zZXQoImJsb2NraW5nVGltZSIsIG1fYmxvY2tpbmdUaW1lKTsK
KyAgICAgICAganNvbk9iamVjdC5zZXQoInNlbmRpbmdUaW1lIiwgbV9zZW5kaW5nVGltZSk7Cisg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJ3YWl0aW5nVGltZSIsIG1fd2FpdGluZ1RpbWUpOwogICAg
ICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9k
ZSAxMDA3NTUKaW5kZXggOWI5MTg4OS4uMTFhZDYyOAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmgKQEAgLTE3Miw2ICsxNzIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBk
b3VibGUgbV9lbmRUaW1lOwogICAgICAgICBkb3VibGUgbV9sb2FkRXZlbnRUaW1lOwogICAgICAg
ICBkb3VibGUgbV9kb21Db250ZW50RXZlbnRUaW1lOworICAgICAgICB1bnNpZ25lZCBtX2Nvbm5l
Y3Rpb25JRDsKKyAgICAgICAgZG91YmxlIG1fZG5zUmVzb2x2ZVRpbWU7CisgICAgICAgIGRvdWJs
ZSBtX2Nvbm5lY3RpbmdUaW1lOworICAgICAgICBkb3VibGUgbV9ibG9ja2luZ1RpbWU7CisgICAg
ICAgIGRvdWJsZSBtX3NlbmRpbmdUaW1lOworICAgICAgICBkb3VibGUgbV93YWl0aW5nVGltZTsK
ICAgICAgICAgU2NyaXB0U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50OwogICAgICAgICBUeXBlIG1f
b3ZlcnJpZGVDb250ZW50VHlwZTsKICAgICAgICAgQ2hhbmdlcyBtX2NoYW5nZXM7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYjJkZmExNS4u
OGJhNGFiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qcwpAQCAtNDgsNiArNDgsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5maWx0ZXIodGhpcy5maWx0ZXJBbGxFbGVtZW50LCBmYWxzZSk7CiAg
ICAgdGhpcy5ncmFwaHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5zZWxlY3QoKTsKICAgICB0aGlz
Ll9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IGZhbHNlOworCisgICAgdGhpcy5fcG9wb3Zlckhl
bHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlcih0aGlzLmVsZW1lbnQsIHRoaXMu
X2dldFBvcG92ZXJBbmNob3IuYmluZCh0aGlzKSwgdGhpcy5fc2hvd1BvcG92ZXIuYmluZCh0aGlz
KSwgdHJ1ZSk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7
CkBAIC03MzUsNiArNzM3LDUwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3I6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBbIHRoaXMuY29udGFpbmVyRWxlbWVudCBdOworICAg
IH0sCisKKyAgICBfZ2V0UG9wb3ZlckFuY2hvcjogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7Cisg
ICAgICAgIHZhciBhbmNob3IgPSBlbGVtZW50LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3Mo
InJlc291cmNlcy1ncmFwaC1iYXItYXJlYSIpOworICAgICAgICBpZiAoIWFuY2hvcikKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBhbmNob3IucmVzb3Vy
Y2U7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5jb25uZWN0aW9uSUQgPyBhbmNob3IgOiBudWxs
OworICAgIH0sCisKKyAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKGFuY2hvcikKKyAgICB7Cisg
ICAgICAgIHZhciB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIp
OworICAgICAgICB2YXIgcmVzb3VyY2UgPSBhbmNob3IucmVzb3VyY2U7CisgICAgICAgIHZhciBk
YXRhID0gW1dlYkluc3BlY3Rvci5VSVN0cmluZygiRE5TIExvb2t1cCIpLCBOdW1iZXIuc2Vjb25k
c1RvU3RyaW5nKHJlc291cmNlLmRuc1Jlc29sdmVUaW1lKSwKKyAgICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbG9ja2luZyIpLCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5n
KHJlc291cmNlLmJsb2NraW5nVGltZSksCisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29ubmVjdGluZyIpLCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHJlc291cmNl
LmNvbm5lY3RpbmdUaW1lKSwKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZW5kaW5nIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcocmVzb3VyY2Uuc2VuZGluZ1Rp
bWUpLAorICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhaXRpbmci
KSwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyhyZXNvdXJjZS53YWl0aW5nVGltZSksCisgICAgICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2aW5nIiksIE51bWJlci5z
ZWNvbmRzVG9TdHJpbmcocmVzb3VyY2UuZW5kVGltZSAtIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2
ZWRUaW1lKV07CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSAr
PSAyKSB7CisgICAgICAgICAgICB2YXIgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIp
OworICAgICAgICAgICAgdGFibGVFbGVtZW50LmFwcGVuZENoaWxkKHRyKTsKKworICAgICAgICAg
ICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgICAgIHRk
LnRleHRDb250ZW50ID0gZGF0YVtpXTsKKyAgICAgICAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsK
KworICAgICAgICAgICAgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAg
ICAgICAgdGQudGV4dENvbnRlbnQgPSBkYXRhW2kgKyAxXTsKKyAgICAgICAgICAgIHRyLmFwcGVu
ZENoaWxkKHRkKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBwb3BvdmVyID0gbmV3IFdlYklu
c3BlY3Rvci5Qb3BvdmVyKHRhYmxlRWxlbWVudCk7CisgICAgICAgIHBvcG92ZXIuc2hvdyhhbmNo
b3IuZmlyc3RDaGlsZC5uZXh0U2libGluZyk7CisgICAgICAgIHJldHVybiBwb3BvdmVyOworICAg
IH0sCisKKyAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iu
UGFuZWwucHJvdG90eXBlLmhpZGUuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5fcG9wb3Zlckhl
bHBlci5oaWRlUG9wdXAoKTsKICAgICB9CiB9CiAKQEAgLTg1OCw2ICs5MDQsOSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHZhciBsZWZ0TGFiZWwgPSByaWdodExhYmVsOwogCisgICAgICAgIGlmIChy
ZXNvdXJjZS5jb25uZWN0aW9uSUQpCisgICAgICAgICAgICByZXR1cm4ge2xlZnQ6IGxlZnRMYWJl
bCwgcmlnaHQ6IHJpZ2h0TGFiZWx9OworCiAgICAgICAgIGlmIChoYXNMYXRlbmN5ICYmIHJpZ2h0
TGFiZWwpIHsKICAgICAgICAgICAgIHZhciB0b3RhbCA9IHRoaXMuZm9ybWF0VmFsdWUocmVzb3Vy
Y2UuZHVyYXRpb24pOwogICAgICAgICAgICAgdmFyIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiVzIGxhdGVuY3ksICVzIGRvd25sb2FkICglcyB0b3RhbCkiLCBsZWZ0TGFiZWwsIHJp
Z2h0TGFiZWwsIHRvdGFsKTsKQEAgLTg2OCw3ICs5MTcsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHJlc291cmNlLmNh
Y2hlZCkKICAgICAgICAgICAgIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIChm
cm9tIGNhY2hlKSIsIHRvb2x0aXApOwotCiAgICAgICAgIHJldHVybiB7bGVmdDogbGVmdExhYmVs
LCByaWdodDogcmlnaHRMYWJlbCwgdG9vbHRpcDogdG9vbHRpcH07CiAgICAgfSwKIApAQCAtMTIw
OCw2ICsxMjU2LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlR3JhcGggPSBmdW5jdGlvbihyZXNv
dXJjZSkKIAogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQuY2xhc3NOYW1lID0gInJlc291cmNl
cy1ncmFwaC1iYXItYXJlYSBoaWRkZW4iOworICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LnJlc291
cmNlID0gcmVzb3VyY2U7CiAgICAgdGhpcy5fZ3JhcGhFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2JhckFyZWFFbGVtZW50KTsKIAogICAgIHRoaXMuX2JhckxlZnRFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcwppbmRleCA4YTc4Y2QyLi5lMTMxNzFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKQEAgLTExNjYsNiArMTE2NiwxMyBAQCBXZWJJbnNwZWN0b3IudXBkYXRl
UmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQogICAgICAgICByZXNvdXJj
ZS5zdGF0dXNUZXh0ID0gcGF5bG9hZC5zdGF0dXNUZXh0OwogICAgICAgICByZXNvdXJjZS5zdWdn
ZXN0ZWRGaWxlbmFtZSA9IHBheWxvYWQuc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgICAgIHJlc291
cmNlLnJlc3BvbnNlSGVhZGVycyA9IHBheWxvYWQucmVzcG9uc2VIZWFkZXJzOworICAgICAgICBy
ZXNvdXJjZS5jb25uZWN0aW9uSUQgPSBwYXlsb2FkLmNvbm5lY3Rpb25JRDsKKyAgICAgICAgcmVz
b3VyY2UuZG5zUmVzb2x2ZVRpbWUgPSBwYXlsb2FkLmRuc1Jlc29sdmVUaW1lOworICAgICAgICBy
ZXNvdXJjZS5jb25uZWN0aW5nVGltZSA9IHBheWxvYWQuY29ubmVjdGluZ1RpbWU7CisgICAgICAg
IHJlc291cmNlLmJsb2NraW5nVGltZSA9IHBheWxvYWQuYmxvY2tpbmdUaW1lOworICAgICAgICBy
ZXNvdXJjZS5zZW5kaW5nVGltZSA9IHBheWxvYWQuc2VuZGluZ1RpbWU7CisgICAgICAgIHJlc291
cmNlLndhaXRpbmdUaW1lID0gcGF5bG9hZC53YWl0aW5nVGltZTsKKyAgICAgICAgcmVzb3VyY2Uu
cmVjZWl2aW5nVGltZSA9IHBheWxvYWQucmVjZWl2aW5nVGltZTsKICAgICB9CiAKICAgICBpZiAo
cGF5bG9hZC5kaWRUeXBlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDMxOTJhMTguLjRlYzMzNWMKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC01Nyw2ICs1NywxNCBAQCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogICAgICwgbV9kYXRlKDAuMCkKICAgICAsIG1f
ZXhwaXJlcygwLjApCiAgICAgLCBtX2xhc3RNb2RpZmllZCgwLjApCisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICAsIG1fY29ubmVjdGlvbklEKDApCisgICAgLCBtX2Ruc1Jlc29sdmVUaW1lKDAu
MCkKKyAgICAsIG1fY29ubmVjdGluZ1RpbWUoMC4wKQorICAgICwgbV9ibG9ja2luZ1RpbWUoMC4w
KQorICAgICwgbV9zZW5kaW5nVGltZSgwLjApCisgICAgLCBtX3dhaXRpbmdUaW1lKDAuMCkKKyNl
bmRpZgogewogfQogCkBAIC04Miw2ICs5MCwxNCBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeQog
ICAgICwgbV9kYXRlKDAuMCkKICAgICAsIG1fZXhwaXJlcygwLjApCiAgICAgLCBtX2xhc3RNb2Rp
ZmllZCgwLjApCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAsIG1fY29ubmVjdGlvbklEKDAp
CisgICAgLCBtX2Ruc1Jlc29sdmVUaW1lKDAuMCkKKyAgICAsIG1fY29ubmVjdGluZ1RpbWUoMC4w
KQorICAgICwgbV9ibG9ja2luZ1RpbWUoMC4wKQorICAgICwgbV9zZW5kaW5nVGltZSgwLjApCisg
ICAgLCBtX3dhaXRpbmdUaW1lKDAuMCkKKyNlbmRpZgogewogfQogCkBAIC00NTIsNiArNDY4LDY3
IEBAIHRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNU
T1IpCit1bnNpZ25lZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGlvbklEKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uSUQ7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNldENvbm5lY3Rpb25JRCh1bnNpZ25lZCBjb25uZWN0aW9uSUQpCit7CisgICAgbV9j
b25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7Cit9CisKK2RvdWJsZSBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZG5zUmVzb2x2ZVRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2Ruc1Jlc29sdmVU
aW1lOworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRETlNSZXNvbHZlVGltZShk
b3VibGUgZG5zUmVzb2x2ZVRpbWUpCit7CisgICAgbV9kbnNSZXNvbHZlVGltZSA9IGRuc1Jlc29s
dmVUaW1lOworfQorCitkb3VibGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3RpbmdUaW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW5nVGltZTsKK30KKwordm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGluZ1RpbWUoZG91YmxlIGNvbm5lY3RpbmdUaW1l
KQoreworICAgIG1fY29ubmVjdGluZ1RpbWUgPSBjb25uZWN0aW5nVGltZTsKK30KKworZG91Ymxl
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpibG9ja2luZ1RpbWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX2Jsb2NraW5nVGltZTsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Qmxv
Y2tpbmdUaW1lKGRvdWJsZSBibG9ja2luZ1RpbWUpCit7CisgICAgbV9ibG9ja2luZ1RpbWUgPSBi
bG9ja2luZ1RpbWU7Cit9CisKK2RvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2VuZGluZ1Rp
bWUoKSBjb25zdCB7CisgICAgcmV0dXJuIG1fc2VuZGluZ1RpbWU7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldFNlbmRpbmdUaW1lKGRvdWJsZSBzZW5kaW5nVGltZSkKK3sKKyAg
ICBtX3NlbmRpbmdUaW1lID0gc2VuZGluZ1RpbWU7Cit9CisKK2RvdWJsZSBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6d2FpdGluZ1RpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dhaXRpbmdUaW1l
OworfQorCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRXYWl0aW5nVGltZShkb3VibGUg
d2FpdGluZ1RpbWUpCit7CisgICAgbV93YWl0aW5nVGltZSA9IHdhaXRpbmdUaW1lOworfQorI2Vu
ZGlmCisKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmxhenlJbml0KCkgY29uc3QKIHsKICAg
ICBjb25zdF9jYXN0PFJlc291cmNlUmVzcG9uc2UqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlKj4odGhpcykpLT5wbGF0Zm9ybUxhenlJbml0KCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKaW5kZXggNzRlMjNhNC4uNmJhZWQ2OQotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtOTUsNiArOTUsMzIgQEAgcHVibGljOgog
ICAgIGRvdWJsZSBleHBpcmVzKCkgY29uc3Q7CiAgICAgZG91YmxlIGxhc3RNb2RpZmllZCgpIGNv
bnN0OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAvLyBDb25uZWN0aW9uIChzb2NrZXQp
IGlkLgorICAgIHVuc2lnbmVkIGNvbm5lY3Rpb25JRCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29u
bmVjdGlvbklEKHVuc2lnbmVkIGNvbm5lY3Rpb25JRCk7CisKKyAgICAvLyBETlMgcmVzb2x1dGlv
biB0aW1lIGZvciB0aGlzIHJlc291cmNlLCBpbiBzZWNvbmRzLgorICAgIGRvdWJsZSBkbnNSZXNv
bHZlVGltZSgpIGNvbnN0OworICAgIHZvaWQgc2V0RE5TUmVzb2x2ZVRpbWUoZG91YmxlIGRuc1Jl
c29sdmVUaW1lKTsKKworICAgIC8vIEVsYXBzZWQgdGltZSByZXF1aXJlZCB0byBjcmVhdGUgYSBU
Q1AgY29ubmVjdGlvbiwgaW4gc2Vjb25kcy4KKyAgICBkb3VibGUgY29ubmVjdGluZ1RpbWUoKSBj
b25zdDsKKyAgICB2b2lkIHNldENvbm5lY3RpbmdUaW1lKGRvdWJsZSBjb25uZWN0aW5nVGltZSk7
CisKKyAgICAvLyBFbGFwc2VkIHRpbWUgc3BlbnQgaW4gYSBicm93c2VyIHF1ZXVlIHdhaXRpbmcg
Zm9yIGEgbmV0d29yayBjb25uZWN0aW9uLCBpbiBzZWNvbmRzLgorICAgIGRvdWJsZSBibG9ja2lu
Z1RpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEJsb2NraW5nVGltZShkb3VibGUgYmxvY2tpbmdU
aW1lKTsKKworICAgIC8vIFRpbWUgbmVlZGVkIHRvIHNlbmQgcmVxdWVzdCBkYXRhIHRvIHRoZSBz
ZXJ2ZXIsIGluIHNlY29uZHMuCisgICAgZG91YmxlIHNlbmRpbmdUaW1lKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRTZW5kaW5nVGltZShkb3VibGUgc2VuZGluZ1RpbWUpOworCisgICAgLy8gV2FpdGlu
ZyBmb3IgdGhlIHJlc3BvbnNlICh0aWxsIHRoZSBmaXJzdCBieXRlIGlzIHJlY2VpdmVkIGZyb20g
dGhlIHNlcnZlciksIGluIHNlY29uZHMuCisgICAgZG91YmxlIHdhaXRpbmdUaW1lKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRXYWl0aW5nVGltZShkb3VibGUgd2FpdGluZ1RpbWUpOworI2VuZGlmCisK
ICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBt
ZXRob2QgdG8gcHJvdmlkZSBwbGF0Zm9ybS1zcGVjaWZpYyBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRp
b24KICAgICB1bnNpZ25lZCBtZW1vcnlVc2FnZSgpIGNvbnN0CiAgICAgewpAQCAtMTI3LDcgKzE1
Myw3IEBAIHByb3RlY3RlZDoKICAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOwogCiAgICAg
Ym9vbCBtX2lzTnVsbCA6IDE7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUNhY2hl
Q29udHJvbERpcmVjdGl2ZXMoKSBjb25zdDsKIApAQCAtMTQ2LDYgKzE3MiwxNSBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgZG91YmxlIG1fZGF0ZTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX2V4cGly
ZXM7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9sYXN0TW9kaWZpZWQ7CisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIG11dGFibGUgdW5zaWduZWQgbV9jb25uZWN0aW9uSUQ7CisgICAgbXV0YWJs
ZSBkb3VibGUgbV9kbnNSZXNvbHZlVGltZTsKKyAgICBtdXRhYmxlIGRvdWJsZSBtX2Nvbm5lY3Rp
bmdUaW1lOworICAgIG11dGFibGUgZG91YmxlIG1fYmxvY2tpbmdUaW1lOworICAgIG11dGFibGUg
ZG91YmxlIG1fc2VuZGluZ1RpbWU7CisgICAgbXV0YWJsZSBkb3VibGUgbV93YWl0aW5nVGltZTsK
KyNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJldHVybiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDVmODVlNS4uZGZjMzA4
NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMDcgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBkZXRhaWxlZCBuZXR3
b3JrIGluZm8gaW4gdGhlCisgICAgICAgIHJlc291cmNlcyBwYW5lbCAoZnJvbnQtZW5kIHBhcnQg
KyByZXNvdXJjZSBzdHViKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAyMjcKKworICAgICAgICAqIHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oOgor
ICAgICAgICAqIHNyYy9XZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFJlc3BvbnNlOjpjb25uZWN0aW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25z
ZTo6c2V0Q29ubmVjdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OmRu
c1Jlc29sdmVUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OnNldEROU1Jl
c29sdmVUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OmNvbm5lY3RpbmdU
aW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OnNldENvbm5lY3RpbmdUaW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OmJsb2NraW5nVGltZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpzZXRCbG9ja2luZ1RpbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6c2VuZGluZ1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXNwb25zZTo6c2V0U2VuZGluZ1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZTo6d2FpdGluZ1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6
c2V0V2FpdGluZ1RpbWUpOgorCiAyMDEwLTA2LTA3ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQppbmRleCBiM2MwODRjLi4wNDIyOWU3Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMUmVzcG9uc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJl
c3BvbnNlLmgKQEAgLTcyLDYgKzcyLDI0IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIFdlYlVS
TCB1cmwoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIHZvaWQgc2V0VVJMKGNvbnN0IFdlYlVSTCYp
OwogCisgICAgV0VCS0lUX0FQSSB1bnNpZ25lZCBjb25uZWN0aW9uSUQoKSBjb25zdDsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgc2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkKTsKKworICAgIFdFQktJVF9B
UEkgZG91YmxlIGRuc1Jlc29sdmVUaW1lKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNl
dEROU1Jlc29sdmVUaW1lKGRvdWJsZSk7CisKKyAgICBXRUJLSVRfQVBJIGRvdWJsZSBibG9ja2lu
Z1RpbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0QmxvY2tpbmdUaW1lKGRvdWJs
ZSk7CisKKyAgICBXRUJLSVRfQVBJIGRvdWJsZSBjb25uZWN0aW5nVGltZSgpIGNvbnN0OworICAg
IFdFQktJVF9BUEkgdm9pZCBzZXRDb25uZWN0aW5nVGltZShkb3VibGUpOworCisgICAgV0VCS0lU
X0FQSSBkb3VibGUgc2VuZGluZ1RpbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0
U2VuZGluZ1RpbWUoZG91YmxlKTsKKworICAgIFdFQktJVF9BUEkgZG91YmxlIHdhaXRpbmdUaW1l
KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFdhaXRpbmdUaW1lKGRvdWJsZSk7CisK
ICAgICBXRUJLSVRfQVBJIGRvdWJsZSByZXNwb25zZVRpbWUoKSBjb25zdDsKICAgICBXRUJLSVRf
QVBJIHZvaWQgc2V0UmVzcG9uc2VUaW1lKGRvdWJsZSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJV
UkxSZXNwb25zZS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAxYWJh
NTRlLi5mZjg2NjVhCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCkBAIC05Myw2ICs5
Myw2NiBAQCB2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRVUkwoY29uc3QgV2ViVVJMJiB1cmwpCiAg
ICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNldFVSTCh1cmwpOwogfQogCit1bnNp
Z25lZCBXZWJVUkxSZXNwb25zZTo6Y29ubmVjdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPmNvbm5lY3Rpb25JRCgpOworfQorCit2b2lk
IFdlYlVSTFJlc3BvbnNlOjpzZXRDb25uZWN0aW9uSUQodW5zaWduZWQgY29ubmVjdGlvbklEKQor
eworICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5zZXRDb25uZWN0aW9uSUQoY29u
bmVjdGlvbklEKTsKK30KKworZG91YmxlIFdlYlVSTFJlc3BvbnNlOjpkbnNSZXNvbHZlVGltZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5kbnNS
ZXNvbHZlVGltZSgpOworfQorCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRETlNSZXNvbHZlVGlt
ZShkb3VibGUgZG5zUmVzb2x2ZVRpbWUpCit7CisgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVz
cG9uc2UtPnNldEROU1Jlc29sdmVUaW1lKGRuc1Jlc29sdmVUaW1lKTsKK30KKworZG91YmxlIFdl
YlVSTFJlc3BvbnNlOjpjb25uZWN0aW5nVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5jb25uZWN0aW5nVGltZSgpOworfQorCit2b2lkIFdl
YlVSTFJlc3BvbnNlOjpzZXRDb25uZWN0aW5nVGltZShkb3VibGUgY29ubmVjdGluZ1RpbWUpCit7
CisgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNldENvbm5lY3RpbmdUaW1lKGNv
bm5lY3RpbmdUaW1lKTsKK30KKworZG91YmxlIFdlYlVSTFJlc3BvbnNlOjpibG9ja2luZ1RpbWUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+Ymxv
Y2tpbmdUaW1lKCk7Cit9CisKK3ZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldEJsb2NraW5nVGltZShk
b3VibGUgYmxvY2tpbmdUaW1lKQoreworICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNl
LT5zZXRCbG9ja2luZ1RpbWUoYmxvY2tpbmdUaW1lKTsKK30KKworZG91YmxlIFdlYlVSTFJlc3Bv
bnNlOjpzZW5kaW5nVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNv
dXJjZVJlc3BvbnNlLT5zZW5kaW5nVGltZSgpOworfQorCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpz
ZXRTZW5kaW5nVGltZShkb3VibGUgc2VuZGluZ1RpbWUpCit7CisgICAgbV9wcml2YXRlLT5tX3Jl
c291cmNlUmVzcG9uc2UtPnNldFNlbmRpbmdUaW1lKHNlbmRpbmdUaW1lKTsKK30KKworZG91Ymxl
IFdlYlVSTFJlc3BvbnNlOjp3YWl0aW5nVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT53YWl0aW5nVGltZSgpOworfQorCit2b2lkIFdlYlVS
TFJlc3BvbnNlOjpzZXRXYWl0aW5nVGltZShkb3VibGUgd2FpdGluZ1RpbWUpCit7CisgICAgbV9w
cml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNldFdhaXRpbmdUaW1lKHdhaXRpbmdUaW1lKTsK
K30KKwogZG91YmxlIFdlYlVSTFJlc3BvbnNlOjpyZXNwb25zZVRpbWUoKSBjb25zdAogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+cmVzcG9uc2VUaW1lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60879</attachid>
            <date>2010-07-08 07:53:46 -0700</date>
            <delta_ts>2010-07-09 03:19:10 -0700</delta_ts>
            <desc>[PATCH] Same rebaselined, now uses RefPtr for timing info.</desc>
            <filename>resource_timers</filename>
            <type>text/plain</type>
            <size>21067</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTlmNTkyMi4uY2Q3ZmZiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0wNy0wOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdv
cmsgaW5mbyBpbiB0aGUgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmJ1aWxkT2JqZWN0Rm9y
VGltaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbC5wcm90b3R5cGUuZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fZ2V0UG9wb3Zl
ckFuY2hvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBl
Ll9zaG93UG9wb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJv
dG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZUNhbGN1bGF0
b3IucHJvdG90eXBlLmNvbXB1dGVCYXJHcmFwaExhYmVscyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VHcmFwaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRUaW1pbmc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRUaW1pbmc6OmRlZXBDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRp
bWluZzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc6
OlJlc291cmNlTG9hZFRpbWluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y29ubmVjdGlvbklEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRDb25uZWN0aW9uSUQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaDoKKwogMjAxMC0wNy0wNyAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9X
ZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA1Y2FlYjkyYjdk
ZGE1NzQyZDhmNDk1MDU1NmVlOWEyMDdhMzZlMzhhLi5jNGFmMmRmZGIxMDA0MmE5Y2EyMjQ3ODk5
OWQ4NDhlYTNjMmViMGMwIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDIyMgp6Y21hRUhs
PENKd3JWYVB5bTIoKks4SWw+WTg4UjkyN302UCg3LUFVfDc7SiU5aU5UMmhEbVBpZChzMSkjYDhI
MTAKekpjZCs7PGpEJlBNUn1jcCtWWCU5JFkmQDREVlYlcGpjc3pXPHszampoRzN2fUFFMTBiKEFa
TGowdSkxQzclPTF+CnpEO1ZvOyo0T2cwVk5DX1BxSEo8UGhCJGpOJnxuWjdXT0kzMW9kOUZyPE9E
eGFfRiRsSjl6KTlIMUJKJCRLYkp7SwpXR0c+QXQheWU5JTJ2aU1yIyU5aDVfa3txNkp+YF9FCgpk
ZWx0YSA1OAp6Y21leHlsSWdgIXJWYVB5SD04UTdhOEJOQCZOYk9yT0s3c0h5MT9ZeVZEX31oK3FM
QzMkNz50ZFk8YCh1QStVTEsKTWdAb2owKi01dkIwTTMmYXJ+bSl9CgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBmMjBhM2U5Li4zMGFiZTkyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTY0LDcgKzk2NCw2IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAgIC8vIFJlZGlyZWN0IG1heSBoYXZlIGVt
cHR5IFVSTCBhbmQgd2UnZCBsaWtlIHRvIG5vdCBjcmFzaCB3aXRoIGludmFsaWQgSGFzaE1hcCBl
bnRyeS4KICAgICAgICAgLy8gU2VlIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVzdC1y
ZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRU
aW1lKCk7CiAgICAgICAgICAgICByZXNvdXJjZS0+ZW5kVGltaW5nKCk7CiAgICAgICAgICAgICBy
ZXNvdXJjZS0+dXBkYXRlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTk5NSw3ICs5
OTQsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlcwogCiAgICAgaWYgKFJlZlB0cjxJbnNwZWN0
b3JSZXNvdXJjZT4gcmVzb3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcikpIHsK
ICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgcmVz
b3VyY2UtPm1hcmtSZXNwb25zZVJlY2VpdmVkVGltZSgpOwogCiAgICAgICAgIGlmIChyZXNvdXJj
ZSAhPSBtX21haW5SZXNvdXJjZSAmJiBtX2Zyb250ZW5kKQogICAgICAgICAgICAgcmVzb3VyY2Ut
PnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlLmNwcAppbmRleCBmMGUzOTFkLi5hYTRlZmNkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtNjIsNiArNjMsNyBAQCBJbnNwZWN0b3JSZXNvdXJjZTo6
SW5zcGVjdG9yUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbAogICAgICwgbV9lbmRUaW1lKC0xLjApCiAgICAgLCBtX2xvYWRFdmVudFRpbWUoLTEuMCkK
ICAgICAsIG1fZG9tQ29udGVudEV2ZW50VGltZSgtMS4wKQorICAgICwgbV9jb25uZWN0aW9uSUQo
MCkKICAgICAsIG1faXNNYWluUmVzb3VyY2UoZmFsc2UpCiB7CiB9CkBAIC0xMjgsNiArMTMwLDEx
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcmVzcG9uc2VTdGF0dXNUZXh0ID0gcmVzcG9uc2Uu
aHR0cFN0YXR1c1RleHQoKTsKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3Vn
Z2VzdGVkRmlsZW5hbWUoKTsKIAorICAgIG1fY29ubmVjdGlvbklEID0gcmVzcG9uc2UuY29ubmVj
dGlvbklEKCk7DQorICAgIG1fbG9hZFRpbWluZyA9IHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWlu
ZygpOw0KKyAgICBtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID0gbV9sb2FkVGltaW5nICYmIG1fbG9h
ZFRpbWluZy0+aGVhZGVyc0F2YWlsYWJsZSA/IG1fbG9hZFRpbWluZy0+aGVhZGVyc0F2YWlsYWJs
ZSA6IGN1cnJlbnRUaW1lKCk7CisKKyAgICBtX2NoYW5nZXMuc2V0KFRpbWluZ0NoYW5nZSk7CiAg
ICAgbV9jaGFuZ2VzLnNldChSZXNwb25zZUNoYW5nZSk7CiAgICAgbV9jaGFuZ2VzLnNldChUeXBl
Q2hhbmdlKTsKIH0KQEAgLTE0MCw3ICsxNDcsNiBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRl
cnNPYmplY3QoU2NyaXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYQog
ICAgIH0KIH0KIAotCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3Qo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hh
bmdlKE5vQ2hhbmdlKSkKQEAgLTE3Miw2ICsxNzgsOSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
Ojp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgICAg
ICBTY3JpcHRPYmplY3QgcmVzcG9uc2VIZWFkZXJzID0gZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVj
dCgpOwogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlc3BvbnNlSGVhZGVycywgbV9y
ZXNwb25zZUhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXNwb25zZUhl
YWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiY29ubmVj
dGlvbklEIiwgbV9jb25uZWN0aW9uSUQpOworICAgICAgICBpZiAobV9sb2FkVGltaW5nKQorICAg
ICAgICAgICAganNvbk9iamVjdC5zZXQoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGZy
b250ZW5kLCBtX2xvYWRUaW1pbmcuZ2V0KCkpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRp
ZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCkBAIC0zMzUsMTIgKzM0NCw2IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2U6OnN0YXJ0VGltaW5nKCkKICAgICBtX2NoYW5nZXMuc2V0KFRp
bWluZ0NoYW5nZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6Om1hcmtSZXNwb25zZVJl
Y2VpdmVkVGltZSgpCi17Ci0gICAgbV9yZXNwb25zZVJlY2VpdmVkVGltZSA9IGN1cnJlbnRUaW1l
KCk7Ci0gICAgbV9jaGFuZ2VzLnNldChUaW1pbmdDaGFuZ2UpOwotfQotCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlOjplbmRUaW1pbmcoKQogewogICAgIG1fZW5kVGltZSA9IGN1cnJlbnRUaW1lKCk7
CkBAIC0zNzksNiArMzgyLDE4IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OmFkZExlbmd0aChp
bnQgbGVuZ3RoUmVjZWl2ZWQpCiAgICAgbV9jaGFuZ2VzLnNldChUaW1pbmdDaGFuZ2UpOwogfQog
CitTY3JpcHRPYmplY3QgSW5zcGVjdG9yUmVzb3VyY2U6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCwgUmVzb3VyY2VMb2FkVGltaW5nKiB0aW1pbmcpCit7
CisgICAgU2NyaXB0T2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0
KCk7CisgICAganNvbk9iamVjdC5zZXQoImRvbWFpbkxvb2t1cFN0YXJ0IiwgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCk7DQorICAgIGpzb25PYmplY3Quc2V0KCJkb21haW5Mb29rdXBFbmQiLCB0
aW1pbmctPmRvbWFpbkxvb2t1cEVuZCk7DQorICAgIGpzb25PYmplY3Quc2V0KCJjb25uZWN0U3Rh
cnQiLCB0aW1pbmctPmNvbm5lY3RTdGFydCk7DQorICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0
U3RhcnQiLCB0aW1pbmctPnJlcXVlc3RTdGFydCk7DQorICAgIGpzb25PYmplY3Quc2V0KCJyZXF1
ZXN0RW5kIiwgdGltaW5nLT5yZXF1ZXN0RW5kKTsNCisgICAganNvbk9iamVjdC5zZXQoImhlYWRl
cnNBdmFpbGFibGUiLCB0aW1pbmctPmhlYWRlcnNBdmFpbGFibGUpOw0KKyAgICByZXR1cm4ganNv
bk9iamVjdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCmluZGV4IDliOTE4
ODkuLmVkOWVjMzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApAQCAtNDks
OSArNDksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7
CiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKLQorICAgIGNsYXNzIFJlc291cmNlTG9hZFRpbWluZzsKICAg
ICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CisgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
ICAgIGNsYXNzIEluc3BlY3RvclJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9y
UmVzb3VyY2U+IHsKICAgICBwdWJsaWM6CkBAIC0xMDIsNyArMTAyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBTdHJpbmcgcmVxdWVzdEZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0Rm9ybURhdGE7IH0KIAogICAgICAgICB2b2lkIHN0YXJ0VGltaW5nKCk7Ci0gICAg
ICAgIHZvaWQgbWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAgICAgICAgIHZvaWQgbWFya0xv
YWRFdmVudFRpbWUoKTsKICAgICAgICAgdm9pZCBtYXJrRE9NQ29udGVudEV2ZW50VGltZSgpOwog
ICAgICAgICB2b2lkIGVuZFRpbWluZygpOwpAQCAtMTUyLDYgKzE1MSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUoKSBjb25zdDsKICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3Q7CiAKKyAgICAgICAgU2Ny
aXB0T2JqZWN0IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKEluc3BlY3RvckZyb250ZW5kKiwgUmVzb3Vy
Y2VMb2FkVGltaW5nKik7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAg
ICAgICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9sb2FkZXI7CiAgICAgICAgIFJlZlB0cjxG
cmFtZT4gbV9mcmFtZTsKQEAgLTE3Miw2ICsxNzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGRvdWJsZSBtX2VuZFRpbWU7CiAgICAgICAgIGRvdWJsZSBtX2xvYWRFdmVudFRpbWU7
CiAgICAgICAgIGRvdWJsZSBtX2RvbUNvbnRlbnRFdmVudFRpbWU7CisgICAgICAgIHVuc2lnbmVk
IG1fY29ubmVjdGlvbklEOworICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBtX2xv
YWRUaW1pbmc7CiAgICAgICAgIFNjcmlwdFN0cmluZyBtX292ZXJyaWRlQ29udGVudDsKICAgICAg
ICAgVHlwZSBtX292ZXJyaWRlQ29udGVudFR5cGU7CiAgICAgICAgIENoYW5nZXMgbV9jaGFuZ2Vz
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVs
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4
IGVmNmFhMjYuLjljZTBmYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKQEAgLTQ4LDYgKzQ4LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZmlsdGVyKHRoaXMuZmlsdGVyQWxsRWxlbWVudCwg
ZmFsc2UpOwogICAgIHRoaXMuZ3JhcGhzVHJlZUVsZW1lbnQuY2hpbGRyZW5bMF0uc2VsZWN0KCk7
CiAgICAgdGhpcy5fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSBmYWxzZTsKKworICAgIHRoaXMu
X3BvcG92ZXJIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxwZXIodGhpcy5lbGVt
ZW50LCB0aGlzLl9nZXRQb3BvdmVyQW5jaG9yLmJpbmQodGhpcyksIHRoaXMuX3Nob3dQb3BvdmVy
LmJpbmQodGhpcyksIHRydWUpOwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJv
dG90eXBlID0gewpAQCAtNzM1LDYgKzczNyw1NCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlID0gewogICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9y
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gWyB0aGlzLmNvbnRhaW5lckVsZW1l
bnQgXTsKKyAgICB9LAorCisgICAgX2dldFBvcG92ZXJBbmNob3I6IGZ1bmN0aW9uKGVsZW1lbnQp
CisgICAgeworICAgICAgICB2YXIgYW5jaG9yID0gZWxlbWVudC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aENsYXNzKCJyZXNvdXJjZXMtZ3JhcGgtYmFyLWFyZWEiKTsKKyAgICAgICAgaWYgKCFhbmNo
b3IpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIHJlc291cmNlID0gYW5j
aG9yLnJlc291cmNlOworICAgICAgICByZXR1cm4gcmVzb3VyY2UudGltaW5nID8gYW5jaG9yIDog
bnVsbDsKKyAgICB9LAorCisgICAgX3Nob3dQb3BvdmVyOiBmdW5jdGlvbihhbmNob3IpCisgICAg
eworICAgICAgICB2YXIgdGFibGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFi
bGUiKTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gYW5jaG9yLnJlc291cmNlOworICAgICAgICB2
YXIgdGltaW5nSGFzTm9EYXRhID0gcmVzb3VyY2UudGltaW5nLnJlcXVlc3RTdGFydCA9PT0gMDsK
KworICAgICAgICB2YXIgY29ubmVjdGluZ0R1cmF0aW9uID0gcmVzb3VyY2UudGltaW5nLnJlcXVl
c3RTdGFydCAtIHJlc291cmNlLnRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAgICAgIHZhciBkbnNE
dXJhdGlvbiA9IHJlc291cmNlLnRpbWluZy5kb21haW5Mb29rdXBFbmQgLSByZXNvdXJjZS50aW1p
bmcuZG9tYWluTG9va3VwU3RhcnQ7CisgICAgICAgIHZhciBkYXRhID0gW1dlYkluc3BlY3Rvci5V
SVN0cmluZygiRE5TIExvb2t1cCIpLCB0aW1pbmdIYXNOb0RhdGEgPyAiPyIgOiBOdW1iZXIuc2Vj
b25kc1RvU3RyaW5nKGRuc0R1cmF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb25uZWN0aW5nIiksIHRpbWluZ0hhc05vRGF0YSA/ICI/IiA6IE51bWJl
ci5zZWNvbmRzVG9TdHJpbmcoY29ubmVjdGluZ0R1cmF0aW9uIC0gZG5zRHVyYXRpb24pLAorICAg
ICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJsb2NraW5nIiksIHRpbWlu
Z0hhc05vRGF0YSA/ICI/IiA6IE51bWJlci5zZWNvbmRzVG9TdHJpbmcocmVzb3VyY2UudGltaW5n
LnJlcXVlc3RTdGFydCAtIHJlc291cmNlLnN0YXJ0VGltZSAtIGNvbm5lY3RpbmdEdXJhdGlvbiks
CisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZGluZyIpLCB0
aW1pbmdIYXNOb0RhdGEgPyAiPyIgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHJlc291cmNlLnRp
bWluZy5yZXF1ZXN0RW5kIC0gcmVzb3VyY2UudGltaW5nLnJlcXVlc3RTdGFydCksCisgICAgICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2FpdGluZyIpLCB0aW1pbmdIYXNO
b0RhdGEgPyAiPyIgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHJlc291cmNlLnRpbWluZy5oZWFk
ZXJzQXZhaWxhYmxlIC0gcmVzb3VyY2UudGltaW5nLnJlcXVlc3RFbmQpLAorICAgICAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmluZyIpLCB0aW1pbmdIYXNOb0Rh
dGEgPyAiPyIgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHJlc291cmNlLmVuZFRpbWUgLSByZXNv
dXJjZS50aW1pbmcuaGVhZGVyc0F2YWlsYWJsZSldOworCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICAgICAgdmFyIHRyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgICAgIHRhYmxlRWxlbWVudC5hcHBlbmRD
aGlsZCh0cik7CisKKyAgICAgICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRkIik7CisgICAgICAgICAgICB0ZC50ZXh0Q29udGVudCA9IGRhdGFbaV07CisgICAgICAgICAg
ICB0ci5hcHBlbmRDaGlsZCh0ZCk7CisKKyAgICAgICAgICAgIHRkID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKTsKKyAgICAgICAgICAgIHRkLnRleHRDb250ZW50ID0gZGF0YVtpICsgMV07
CisgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgcG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0YWJsZUVsZW1lbnQpOworICAg
ICAgICBwb3BvdmVyLnNob3coYW5jaG9yLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAg
ICByZXR1cm4gcG9wb3ZlcjsKKyAgICB9LAorCisgICAgaGlkZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5oaWRlLmNhbGwodGhpcyk7Cisg
ICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBvcHVwKCk7CiAgICAgfQogfQogCkBAIC04
NTgsNiArOTA4LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZUNhbGN1bGF0b3IucHJvdG90
eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YXIgbGVmdExhYmVsID0gcmlnaHRM
YWJlbDsKIAorICAgICAgICBpZiAocmVzb3VyY2UuY29ubmVjdGlvbklEKQorICAgICAgICAgICAg
cmV0dXJuIHtsZWZ0OiBsZWZ0TGFiZWwsIHJpZ2h0OiByaWdodExhYmVsfTsKKwogICAgICAgICBp
ZiAoaGFzTGF0ZW5jeSAmJiByaWdodExhYmVsKSB7CiAgICAgICAgICAgICB2YXIgdG90YWwgPSB0
aGlzLmZvcm1hdFZhbHVlKHJlc291cmNlLmR1cmF0aW9uKTsKICAgICAgICAgICAgIHZhciB0b29s
dGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyBsYXRlbmN5LCAlcyBkb3dubG9hZCAoJXMg
dG90YWwpIiwgbGVmdExhYmVsLCByaWdodExhYmVsLCB0b3RhbCk7CkBAIC04NjgsNyArOTIxLDYg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGlmIChyZXNvdXJjZS5jYWNoZWQpCiAgICAgICAgICAgICB0b29sdGlwID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlcyAoZnJvbSBjYWNoZSkiLCB0b29sdGlwKTsKLQogICAgICAgICBy
ZXR1cm4ge2xlZnQ6IGxlZnRMYWJlbCwgcmlnaHQ6IHJpZ2h0TGFiZWwsIHRvb2x0aXA6IHRvb2x0
aXB9OwogICAgIH0sCiAKQEAgLTEyMDgsNiArMTI2MCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUdyYXBoID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAKICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50
LmNsYXNzTmFtZSA9ICJyZXNvdXJjZXMtZ3JhcGgtYmFyLWFyZWEgaGlkZGVuIjsKKyAgICB0aGlz
Ll9iYXJBcmVhRWxlbWVudC5yZXNvdXJjZSA9IHJlc291cmNlOwogICAgIHRoaXMuX2dyYXBoRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iYXJBcmVhRWxlbWVudCk7CiAKICAgICB0aGlzLl9iYXJM
ZWZ0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggYzUyNzQ1Zi4uMjRiNWZhMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMTgxLDYgKzExODEsOCBA
QCBXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXls
b2FkKQogICAgICAgICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcGF5bG9hZC5zdGF0dXNUZXh0Owog
ICAgICAgICByZXNvdXJjZS5zdWdnZXN0ZWRGaWxlbmFtZSA9IHBheWxvYWQuc3VnZ2VzdGVkRmls
ZW5hbWU7CiAgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHBheWxvYWQucmVzcG9u
c2VIZWFkZXJzOworICAgICAgICByZXNvdXJjZS5jb25uZWN0aW9uSUQgPSBwYXlsb2FkLmNvbm5l
Y3Rpb25JRDsKKyAgICAgICAgcmVzb3VyY2UudGltaW5nID0gcGF5bG9hZC50aW1pbmc7CiAgICAg
fQogCiAgICAgaWYgKHBheWxvYWQuZGlkVHlwZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCmluZGV4IDU1ZmYxODEuLmM1YTNiOWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUxvYWRUaW1p
bmcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1pbmc+IHsKIHB1YmxpYzoKLSAg
ICBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFRpbWluZyk7CiAgICAgfQpAQCAtNDIsMzMgKzQy
LDIzIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gZGVlcENv
cHkoKQogICAgIHsKICAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4gdGltaW5nID0g
Y3JlYXRlKCk7Ci0gICAgICAgIHRpbWluZy0+cmVkaXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQ7
Ci0gICAgICAgIHRpbWluZy0+cmVkaXJlY3RFbmQgPSByZWRpcmVjdEVuZDsKLSAgICAgICAgdGlt
aW5nLT5yZWRpcmVjdENvdW50ID0gcmVkaXJlY3RDb3VudDsKICAgICAgICAgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0YXJ0OwogICAgICAgICB0aW1pbmctPmRvbWFp
bkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZDsKICAgICAgICAgdGltaW5nLT5jb25uZWN0U3Rh
cnQgPSBjb25uZWN0U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IGNvbm5lY3RF
bmQ7CiAgICAgICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gcmVxdWVzdFN0YXJ0OwogICAgICAg
ICB0aW1pbmctPnJlcXVlc3RFbmQgPSByZXF1ZXN0RW5kOwotICAgICAgICB0aW1pbmctPnJlc3Bv
bnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0OwotICAgICAgICB0aW1pbmctPnJlc3BvbnNlRW5kID0g
cmVzcG9uc2VFbmQ7CisgICAgICAgIHRpbWluZy0+aGVhZGVyc0F2YWlsYWJsZSA9IGhlYWRlcnNB
dmFpbGFibGU7CiAgICAgICAgIHJldHVybiB0aW1pbmcucmVsZWFzZSgpOwogICAgIH0KIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIG90aGVyKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZGlyZWN0U3RhcnQgPT0gb3RoZXIucmVkaXJlY3RTdGFy
dAotICAgICAgICAgICAgJiYgcmVkaXJlY3RFbmQgPT0gb3RoZXIucmVkaXJlY3RFbmQKLSAgICAg
ICAgICAgICYmIHJlZGlyZWN0Q291bnQgPT0gb3RoZXIucmVkaXJlY3RDb3VudAotICAgICAgICAg
ICAgJiYgZG9tYWluTG9va3VwU3RhcnQgPT0gb3RoZXIuZG9tYWluTG9va3VwU3RhcnQKKyAgICAg
ICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0CiAg
ICAgICAgICAgICAmJiBkb21haW5Mb29rdXBFbmQgPT0gb3RoZXIuZG9tYWluTG9va3VwRW5kCiAg
ICAgICAgICAgICAmJiBjb25uZWN0U3RhcnQgPT0gb3RoZXIuY29ubmVjdFN0YXJ0Ci0gICAgICAg
ICAgICAmJiBjb25uZWN0RW5kID09IG90aGVyLmNvbm5lY3RFbmQKICAgICAgICAgICAgICYmIHJl
cXVlc3RTdGFydCA9PSBvdGhlci5yZXF1ZXN0U3RhcnQKICAgICAgICAgICAgICYmIHJlcXVlc3RF
bmQgPT0gb3RoZXIucmVxdWVzdEVuZAotICAgICAgICAgICAgJiYgcmVzcG9uc2VTdGFydCA9PSBv
dGhlci5yZXNwb25zZVN0YXJ0Ci0gICAgICAgICAgICAmJiByZXNwb25zZUVuZCA9PSBvdGhlci5y
ZXNwb25zZUVuZDsKKyAgICAgICAgICAgICYmIGhlYWRlcnNBdmFpbGFibGUgPT0gb3RoZXIuaGVh
ZGVyc0F2YWlsYWJsZTsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3Vy
Y2VMb2FkVGltaW5nJiBvdGhlcikgY29uc3QKQEAgLTc2LDMxICs2NiwyMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAKLSAgICBkb3VibGUgcmVk
aXJlY3RTdGFydDsKLSAgICBkb3VibGUgcmVkaXJlY3RFbmQ7Ci0gICAgdW5zaWduZWQgc2hvcnQg
cmVkaXJlY3RDb3VudDsKICAgICBkb3VibGUgZG9tYWluTG9va3VwU3RhcnQ7CiAgICAgZG91Ymxl
IGRvbWFpbkxvb2t1cEVuZDsKICAgICBkb3VibGUgY29ubmVjdFN0YXJ0OwotICAgIGRvdWJsZSBj
b25uZWN0RW5kOwogICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQ7CiAgICAgZG91YmxlIHJlcXVlc3RF
bmQ7Ci0gICAgZG91YmxlIHJlc3BvbnNlU3RhcnQ7Ci0gICAgZG91YmxlIHJlc3BvbnNlRW5kOwor
ICAgIGRvdWJsZSBoZWFkZXJzQXZhaWxhYmxlOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlTG9h
ZFRpbWluZygpCi0gICAgICAgIDogcmVkaXJlY3RTdGFydCgwLjApCi0gICAgICAgICwgcmVkaXJl
Y3RFbmQoMC4wKQotICAgICAgICAsIHJlZGlyZWN0Q291bnQoMCkKLSAgICAgICAgLCBkb21haW5M
b29rdXBTdGFydCgwLjApCisgICAgICAgIDogZG9tYWluTG9va3VwU3RhcnQoMC4wKQogICAgICAg
ICAsIGRvbWFpbkxvb2t1cEVuZCgwLjApCiAgICAgICAgICwgY29ubmVjdFN0YXJ0KDAuMCkKLSAg
ICAgICAgLCBjb25uZWN0RW5kKDAuMCkKICAgICAgICAgLCByZXF1ZXN0U3RhcnQoMC4wKQogICAg
ICAgICAsIHJlcXVlc3RFbmQoMC4wKQotICAgICAgICAsIHJlc3BvbnNlU3RhcnQoMC4wKQotICAg
ICAgICAsIHJlc3BvbnNlRW5kKDAuMCkKKyAgICAgICAgLCBoZWFkZXJzQXZhaWxhYmxlKDAuMCkK
ICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDYwN2NkN2YuLmEzYjFiZTggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNDU1LDYg
KzQ1NSwyMCBAQCB0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZERhdGUo
KSBjb25zdAogICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7CiB9CiAKK3Vuc2lnbmVkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW9uSUQoKSBjb25zdAoreworICAgIGxhenlJbml0
KCk7CisKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uSUQ7Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldENvbm5lY3Rpb25JRCh1bnNpZ25lZCBjb25uZWN0aW9uSUQpCit7CisgICAg
bGF6eUluaXQoKTsKKworICAgIG1fY29ubmVjdGlvbklEID0gY29ubmVjdGlvbklEOworfQorCiBS
ZXNvdXJjZUxvYWRUaW1pbmcqIFJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXNvdXJjZUxvYWRUaW1p
bmcoKSBjb25zdAogewogICAgIGxhenlJbml0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDY5N2E4NGMuLjFiMTc4ZDQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC05
Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZXhwaXJlcygpIGNvbnN0OwogICAgIGRv
dWJsZSBsYXN0TW9kaWZpZWQoKSBjb25zdDsKIAorICAgIHVuc2lnbmVkIGNvbm5lY3Rpb25JRCgp
IGNvbnN0OworICAgIHZvaWQgc2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkKTsKKwogICAgIFJlc291
cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRUaW1pbmcoUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+KTsKIApAQCAt
MTMwLDYgKzEzMyw3IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV9odHRwU3RhdHVzVGV4dDsK
ICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICB0aW1lX3QgbV9sYXN0
TW9kaWZpZWREYXRlOworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbklEOwogICAgIFJlZlB0cjxS
ZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCiAgICAgYm9vbCBtX2lz
TnVsbCA6IDE7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzNzNmNmY4Li4yNjhmM2JiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0wOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdvcmsgaW5mbyBpbiB0aGUg
cmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogcHVibGljL1dlYlVSTFJlc3BvbnNlLmg6Cisg
ICAgICAgICogc3JjL1dlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
UmVzcG9uc2U6OnNldENvbm5lY3Rpb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3Bv
bnNlOjpzZXREb21haW5Mb29rdXBUaW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3Bv
bnNlOjpzZXRDb25uZWN0U3RhcnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9u
c2U6OnNldFJlcXVlc3RUaW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpz
ZXRIZWFkZXJzQXZhaWxhYmxlVGltZSk6CisKIDIwMTAtMDctMDcgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1p
a2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9u
c2UuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaAppbmRleCAyOTNk
OTU1Li5jNjA2NTllIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJl
c3BvbnNlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCkBA
IC03Miw3ICs3MiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBXZWJVUkwgdXJsKCkgY29u
c3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwmKTsKIAotICAgIFdF
QktJVF9BUEkgZG91YmxlIHJlc3BvbnNlVGltZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9p
ZCBzZXRDb25uZWN0aW9uSUQodW5zaWduZWQpOworICAgIFdFQktJVF9BUEkgdm9pZCBzZXREb21h
aW5Mb29rdXBUaW1lcyhkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAgIFdFQktJVF9BUEkg
dm9pZCBzZXRDb25uZWN0U3RhcnRUaW1lKGRvdWJsZSBzdGFydCk7CisgICAgV0VCS0lUX0FQSSB2
b2lkIHNldFJlcXVlc3RUaW1lcyhkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRIZWFkZXJzQXZhaWxhYmxlVGltZShkb3VibGUgdGltZSk7CisKKyAgICBX
RUJLSVRfQVBJIGRvdWJsZSByZXNwb25zZVRpbWUoKSBjb25zdDsNCiAgICAgV0VCS0lUX0FQSSB2
b2lkIHNldFJlc3BvbnNlVGltZShkb3VibGUpOwogCiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcg
bWltZVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJM
UmVzcG9uc2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKaW5k
ZXggM2YzZGRiYS4uMmVmMWIwYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJV
UkxSZXNwb25zZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5j
cHAKQEAgLTMyLDEyICszMiwxNSBAQAogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCiAKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5n
LmgiCiAKICNpbmNsdWRlICJXZWJIVFRQSGVhZGVyVmlzaXRvci5oIgogI2luY2x1ZGUgIldlYlN0
cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlUHJp
dmF0ZS5oIgogCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Myw2ICs5Niw0NCBAQCB2b2lkIFdlYlVS
TFJlc3BvbnNlOjpzZXRVUkwoY29uc3QgV2ViVVJMJiB1cmwpCiAgICAgbV9wcml2YXRlLT5tX3Jl
c291cmNlUmVzcG9uc2UtPnNldFVSTCh1cmwpOwogfQogCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpz
ZXRDb25uZWN0aW9uSUQodW5zaWduZWQgY29ubmVjdGlvbklEKQoreworICAgIG1fcHJpdmF0ZS0+
bV9yZXNvdXJjZVJlc3BvbnNlLT5zZXRDb25uZWN0aW9uSUQoY29ubmVjdGlvbklEKTsKKyAgICBt
X3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKFJlc291
cmNlTG9hZFRpbWluZzo6Y3JlYXRlKCkpOworfQorCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRE
b21haW5Mb29rdXBUaW1lcyhkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCit7CisgICAgUmVmUHRy
PFJlc291cmNlTG9hZFRpbWluZz4gdGltaW5nID0gbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9u
c2UtPnJlc291cmNlTG9hZFRpbWluZygpOworICAgIGlmICh0aW1pbmcpIHsKKyAgICAgICAgdGlt
aW5nLT5kb21haW5Mb29rdXBTdGFydCA9IHN0YXJ0OworICAgICAgICB0aW1pbmctPmRvbWFpbkxv
b2t1cEVuZCA9IGVuZDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViVVJMUmVzcG9uc2U6OnNldENvbm5l
Y3RTdGFydFRpbWUoZG91YmxlIHRpbWUpCit7CisgICAgUmVmUHRyPFJlc291cmNlTG9hZFRpbWlu
Zz4gdGltaW5nID0gbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnJlc291cmNlTG9hZFRp
bWluZygpOworICAgIGlmICh0aW1pbmcpCisgICAgICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0g
dGltZTsKK30KKwordm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0UmVxdWVzdFRpbWVzKGRvdWJsZSBz
dGFydCwgZG91YmxlIGVuZCkKK3sKKyAgICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiB0aW1p
bmcgPSBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+cmVzb3VyY2VMb2FkVGltaW5nKCk7
CisgICAgaWYgKHRpbWluZykgeworICAgICAgICB0aW1pbmctPnJlcXVlc3RTdGFydCA9IHN0YXJ0
OworICAgICAgICB0aW1pbmctPnJlcXVlc3RFbmQgPSBlbmQ7CisgICAgfQorfQorCit2b2lkIFdl
YlVSTFJlc3BvbnNlOjpzZXRIZWFkZXJzQXZhaWxhYmxlVGltZShkb3VibGUgdGltZSkKK3sKKyAg
ICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiB0aW1pbmcgPSBtX3ByaXZhdGUtPm1fcmVzb3Vy
Y2VSZXNwb25zZS0+cmVzb3VyY2VMb2FkVGltaW5nKCk7CisgICAgaWYgKHRpbWluZykKKyAgICAg
ICAgdGltaW5nLT5oZWFkZXJzQXZhaWxhYmxlID0gdGltZTsKK30KKwogZG91YmxlIFdlYlVSTFJl
c3BvbnNlOjpyZXNwb25zZVRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm1f
cmVzb3VyY2VSZXNwb25zZS0+cmVzcG9uc2VUaW1lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>60882</attachid>
            <date>2010-07-08 08:01:56 -0700</date>
            <delta_ts>2010-07-08 08:01:56 -0700</delta_ts>
            <desc>[IMAGE] Looks with the patch applied.</desc>
            <filename>network_timing.png</filename>
            <type>image/png</type>
            <size>54332</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">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
AAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60931</attachid>
            <date>2010-07-08 12:39:14 -0700</date>
            <delta_ts>2010-07-09 00:56:31 -0700</delta_ts>
            <desc>[PATCH] Same with WebKit/chromium/*/WebURLLoadTiming</desc>
            <filename>network_info</filename>
            <type>text/plain</type>
            <size>35505</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTlmNTkyMi4uMzIwYTQ0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNy0wOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdv
cmsgaW5mbyBpbiB0aGUgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0b3JSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZS5lbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zvcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9nZXRQb3BvdmVyQW5jaG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3Nob3dQb3BvdmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuaGlkZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUu
Y29tcHV0ZUJhckdyYXBoTGFiZWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUdy
YXBoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZFRpbWluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZzo6
ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZzo6UmVzb3VyY2VMb2Fk
VGltaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlcG9ydExvYWRUaW1p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0UmVwb3J0TG9h
ZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25u
ZWN0aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENv
bm5lY3Rpb25JRCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oOgorCiAyMDEwLTA3LTA3ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDVjYWViOTIuLmM0YWYyZGYg
MTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzIGFuZCBiL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBmMjBh
M2U5Li4wZGE3YWFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtOTQ3LDcgKzk0Nyw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNNYWluUmVz
b3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSCiAgICAgcmV0dXJu
IGxvYWRlci0+ZnJhbWUoKSA9PSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpICYmIHJlcXVl
c3RVcmwgPT0gbG9hZGVyLT5yZXF1ZXN0VVJMKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTk2MCwxMSArOTYwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVxdWVzdC5z
ZXRSZXBvcnRMb2FkVGltaW5nKHRydWUpOworCiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7CiAgICAgICAgIC8vIFJlZGlyZWN0IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2Un
ZCBsaWtlIHRvIG5vdCBjcmFzaCB3aXRoIGludmFsaWQgSGFzaE1hcCBlbnRyeS4KICAgICAgICAg
Ly8gU2VlIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24t
cmVkaXJlY3QuaHRtbAogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAgICAgICAg
ICAgICByZXNvdXJjZS0+ZW5kVGltaW5nKCk7CiAgICAgICAgICAgICByZXNvdXJjZS0+dXBkYXRl
UmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTk5NSw3ICs5OTYsNiBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlcwogCiAgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVz
b3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcikpIHsKICAgICAgICAgcmVzb3Vy
Y2UtPnVwZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgcmVzb3VyY2UtPm1hcmtSZXNw
b25zZVJlY2VpdmVkVGltZSgpOwogCiAgICAgICAgIGlmIChyZXNvdXJjZSAhPSBtX21haW5SZXNv
dXJjZSAmJiBtX2Zyb250ZW5kKQogICAgICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9i
amVjdChtX2Zyb250ZW5kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAppbmRleCAwZTVlMmNmLi4yOTUwYTkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgQ2FjaGVkUmVz
b3VyY2UqKTsKIAogICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ29udGVu
dExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggZjBlMzkxZC4uYWE0ZWZjZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTYyLDYgKzYzLDcgQEAgSW5zcGVj
dG9yUmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGwKICAgICAsIG1fZW5kVGltZSgtMS4wKQogICAgICwgbV9sb2FkRXZl
bnRUaW1lKC0xLjApCiAgICAgLCBtX2RvbUNvbnRlbnRFdmVudFRpbWUoLTEuMCkKKyAgICAsIG1f
Y29ubmVjdGlvbklEKDApCiAgICAgLCBtX2lzTWFpblJlc291cmNlKGZhbHNlKQogewogfQpAQCAt
MTI4LDYgKzEzMCwxMSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3Jlc3BvbnNlU3RhdHVzVGV4
dCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7CiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9
IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAKKyAgICBtX2Nvbm5lY3Rpb25JRCA9IHJl
c3BvbnNlLmNvbm5lY3Rpb25JRCgpOw0KKyAgICBtX2xvYWRUaW1pbmcgPSByZXNwb25zZS5yZXNv
dXJjZUxvYWRUaW1pbmcoKTsNCisgICAgbV9yZXNwb25zZVJlY2VpdmVkVGltZSA9IG1fbG9hZFRp
bWluZyAmJiBtX2xvYWRUaW1pbmctPmhlYWRlcnNBdmFpbGFibGUgPyBtX2xvYWRUaW1pbmctPmhl
YWRlcnNBdmFpbGFibGUgOiBjdXJyZW50VGltZSgpOworCisgICAgbV9jaGFuZ2VzLnNldChUaW1p
bmdDaGFuZ2UpOwogICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFuZ2UpOwogICAgIG1fY2hh
bmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CkBAIC0xNDAsNyArMTQ3LDYgQEAgc3RhdGljIHZvaWQg
cG9wdWxhdGVIZWFkZXJzT2JqZWN0KFNjcmlwdE9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWEKICAgICB9CiB9CiAKLQogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRl
U2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBpZiAobV9j
aGFuZ2VzLmhhc0NoYW5nZShOb0NoYW5nZSkpCkBAIC0xNzIsNiArMTc4LDkgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkKICAgICAgICAgU2NyaXB0T2JqZWN0IHJlc3BvbnNlSGVhZGVycyA9IGZyb250ZW5kLT5u
ZXdTY3JpcHRPYmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25z
ZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNl
dCgicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVj
dC5zZXQoImNvbm5lY3Rpb25JRCIsIG1fY29ubmVjdGlvbklEKTsKKyAgICAgICAgaWYgKG1fbG9h
ZFRpbWluZykKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ0aW1pbmciLCBidWlsZE9iamVj
dEZvclRpbWluZyhmcm9udGVuZCwgbV9sb2FkVGltaW5nLmdldCgpKSk7CiAgICAgICAgIGpzb25P
YmplY3Quc2V0KCJkaWRSZXNwb25zZUNoYW5nZSIsIHRydWUpOwogICAgIH0KIApAQCAtMzM1LDEy
ICszNDQsNiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjpzdGFydFRpbWluZygpCiAgICAgbV9j
aGFuZ2VzLnNldChUaW1pbmdDaGFuZ2UpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlOjpt
YXJrUmVzcG9uc2VSZWNlaXZlZFRpbWUoKQotewotICAgIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUg
PSBjdXJyZW50VGltZSgpOwotICAgIG1fY2hhbmdlcy5zZXQoVGltaW5nQ2hhbmdlKTsKLX0KLQog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6ZW5kVGltaW5nKCkKIHsKICAgICBtX2VuZFRpbWUgPSBj
dXJyZW50VGltZSgpOwpAQCAtMzc5LDYgKzM4MiwxOCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
OjphZGRMZW5ndGgoaW50IGxlbmd0aFJlY2VpdmVkKQogICAgIG1fY2hhbmdlcy5zZXQoVGltaW5n
Q2hhbmdlKTsKIH0KIAorU2NyaXB0T2JqZWN0IEluc3BlY3RvclJlc291cmNlOjpidWlsZE9iamVj
dEZvclRpbWluZyhJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIFJlc291cmNlTG9hZFRpbWlu
ZyogdGltaW5nKQoreworICAgIFNjcmlwdE9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5l
d1NjcmlwdE9iamVjdCgpOworICAgIGpzb25PYmplY3Quc2V0KCJkb21haW5Mb29rdXBTdGFydCIs
IHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQpOw0KKyAgICBqc29uT2JqZWN0LnNldCgiZG9tYWlu
TG9va3VwRW5kIiwgdGltaW5nLT5kb21haW5Mb29rdXBFbmQpOw0KKyAgICBqc29uT2JqZWN0LnNl
dCgiY29ubmVjdFN0YXJ0IiwgdGltaW5nLT5jb25uZWN0U3RhcnQpOw0KKyAgICBqc29uT2JqZWN0
LnNldCgicmVxdWVzdFN0YXJ0IiwgdGltaW5nLT5yZXF1ZXN0U3RhcnQpOw0KKyAgICBqc29uT2Jq
ZWN0LnNldCgicmVxdWVzdEVuZCIsIHRpbWluZy0+cmVxdWVzdEVuZCk7DQorICAgIGpzb25PYmpl
Y3Quc2V0KCJoZWFkZXJzQXZhaWxhYmxlIiwgdGltaW5nLT5oZWFkZXJzQXZhaWxhYmxlKTsNCisg
ICAgcmV0dXJuIGpzb25PYmplY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2Uu
aAppbmRleCA5YjkxODg5Li5lZDllYzM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlLmgKQEAgLTQ5LDkgKzQ5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogICAgIGNsYXNzIEZy
YW1lOwotICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci0KKyAgICBjbGFzcyBSZXNvdXJjZUxv
YWRUaW1pbmc7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworICAgIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEluc3BlY3RvclJlc291cmNlPiB7CiAgICAgcHVibGljOgpAQCAtMTAyLDcgKzEwMiw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHJlcXVlc3RGb3JtRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdEZvcm1EYXRhOyB9CiAKICAgICAgICAgdm9pZCBzdGFydFRp
bWluZygpOwotICAgICAgICB2b2lkIG1hcmtSZXNwb25zZVJlY2VpdmVkVGltZSgpOwogICAgICAg
ICB2b2lkIG1hcmtMb2FkRXZlbnRUaW1lKCk7CiAgICAgICAgIHZvaWQgbWFya0RPTUNvbnRlbnRF
dmVudFRpbWUoKTsKICAgICAgICAgdm9pZCBlbmRUaW1pbmcoKTsKQEAgLTE1Miw2ICsxNTEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkg
Y29uc3Q7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0Owog
CisgICAgICAgIFNjcmlwdE9iamVjdCBidWlsZE9iamVjdEZvclRpbWluZyhJbnNwZWN0b3JGcm9u
dGVuZCosIFJlc291cmNlTG9hZFRpbWluZyopOworCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9p
ZGVudGlmaWVyOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fbG9hZGVyOwogICAg
ICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CkBAIC0xNzIsNiArMTczLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBkb3VibGUgbV9lbmRUaW1lOwogICAgICAgICBkb3VibGUgbV9s
b2FkRXZlbnRUaW1lOwogICAgICAgICBkb3VibGUgbV9kb21Db250ZW50RXZlbnRUaW1lOworICAg
ICAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25JRDsKKyAgICAgICAgUmVmUHRyPFJlc291cmNlTG9h
ZFRpbWluZz4gbV9sb2FkVGltaW5nOwogICAgICAgICBTY3JpcHRTdHJpbmcgbV9vdmVycmlkZUNv
bnRlbnQ7CiAgICAgICAgIFR5cGUgbV9vdmVycmlkZUNvbnRlbnRUeXBlOwogICAgICAgICBDaGFu
Z2VzIG1fY2hhbmdlczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcwppbmRleCBlZjZhYTI2Li45Y2UwZmJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00OCw2ICs0OCw4IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmZpbHRlcih0aGlzLmZpbHRl
ckFsbEVsZW1lbnQsIGZhbHNlKTsKICAgICB0aGlzLmdyYXBoc1RyZWVFbGVtZW50LmNoaWxkcmVu
WzBdLnNlbGVjdCgpOwogICAgIHRoaXMuX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7
CisKKyAgICB0aGlzLl9wb3BvdmVySGVscGVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVySGVs
cGVyKHRoaXMuZWxlbWVudCwgdGhpcy5fZ2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlz
Ll9zaG93UG9wb3Zlci5iaW5kKHRoaXMpLCB0cnVlKTsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTczNSw2ICs3MzcsNTQgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBlbGVtZW50c1RvUmVzdG9yZVNjcm9s
bFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFsgdGhpcy5j
b250YWluZXJFbGVtZW50IF07CisgICAgfSwKKworICAgIF9nZXRQb3BvdmVyQW5jaG9yOiBmdW5j
dGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIGFuY2hvciA9IGVsZW1lbnQuZW5jbG9z
aW5nTm9kZU9yU2VsZldpdGhDbGFzcygicmVzb3VyY2VzLWdyYXBoLWJhci1hcmVhIik7CisgICAg
ICAgIGlmICghYW5jaG9yKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZhciBy
ZXNvdXJjZSA9IGFuY2hvci5yZXNvdXJjZTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLnRpbWlu
ZyA/IGFuY2hvciA6IG51bGw7CisgICAgfSwKKworICAgIF9zaG93UG9wb3ZlcjogZnVuY3Rpb24o
YW5jaG9yKQorICAgIHsKKyAgICAgICAgdmFyIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRhYmxlIik7CisgICAgICAgIHZhciByZXNvdXJjZSA9IGFuY2hvci5yZXNvdXJj
ZTsKKyAgICAgICAgdmFyIHRpbWluZ0hhc05vRGF0YSA9IHJlc291cmNlLnRpbWluZy5yZXF1ZXN0
U3RhcnQgPT09IDA7CisKKyAgICAgICAgdmFyIGNvbm5lY3RpbmdEdXJhdGlvbiA9IHJlc291cmNl
LnRpbWluZy5yZXF1ZXN0U3RhcnQgLSByZXNvdXJjZS50aW1pbmcuY29ubmVjdFN0YXJ0OworICAg
ICAgICB2YXIgZG5zRHVyYXRpb24gPSByZXNvdXJjZS50aW1pbmcuZG9tYWluTG9va3VwRW5kIC0g
cmVzb3VyY2UudGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0OworICAgICAgICB2YXIgZGF0YSA9IFtX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkROUyBMb29rdXAiKSwgdGltaW5nSGFzTm9EYXRhID8gIj8i
IDogTnVtYmVyLnNlY29uZHNUb1N0cmluZyhkbnNEdXJhdGlvbiksCisgICAgICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29ubmVjdGluZyIpLCB0aW1pbmdIYXNOb0RhdGEg
PyAiPyIgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKGNvbm5lY3RpbmdEdXJhdGlvbiAtIGRuc0R1
cmF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbG9j
a2luZyIpLCB0aW1pbmdIYXNOb0RhdGEgPyAiPyIgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHJl
c291cmNlLnRpbWluZy5yZXF1ZXN0U3RhcnQgLSByZXNvdXJjZS5zdGFydFRpbWUgLSBjb25uZWN0
aW5nRHVyYXRpb24pLAorICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNlbmRpbmciKSwgdGltaW5nSGFzTm9EYXRhID8gIj8iIDogTnVtYmVyLnNlY29uZHNUb1N0cmlu
ZyhyZXNvdXJjZS50aW1pbmcucmVxdWVzdEVuZCAtIHJlc291cmNlLnRpbWluZy5yZXF1ZXN0U3Rh
cnQpLAorICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhaXRpbmci
KSwgdGltaW5nSGFzTm9EYXRhID8gIj8iIDogTnVtYmVyLnNlY29uZHNUb1N0cmluZyhyZXNvdXJj
ZS50aW1pbmcuaGVhZGVyc0F2YWlsYWJsZSAtIHJlc291cmNlLnRpbWluZy5yZXF1ZXN0RW5kKSwK
KyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZpbmciKSwg
dGltaW5nSGFzTm9EYXRhID8gIj8iIDogTnVtYmVyLnNlY29uZHNUb1N0cmluZyhyZXNvdXJjZS5l
bmRUaW1lIC0gcmVzb3VyY2UudGltaW5nLmhlYWRlcnNBdmFpbGFibGUpXTsKKworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAgIHZh
ciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgICAgICB0YWJsZUVs
ZW1lbnQuYXBwZW5kQ2hpbGQodHIpOworCisgICAgICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICAgICAgdGQudGV4dENvbnRlbnQgPSBkYXRhW2ld
OworICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOworCisgICAgICAgICAgICB0ZCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgICAgICB0ZC50ZXh0Q29udGVudCA9
IGRhdGFbaSArIDFdOworICAgICAgICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOworICAgICAgICB9
CisKKyAgICAgICAgdmFyIHBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGFibGVF
bGVtZW50KTsKKyAgICAgICAgcG9wb3Zlci5zaG93KGFuY2hvci5maXJzdENoaWxkLm5leHRTaWJs
aW5nKTsKKyAgICAgICAgcmV0dXJuIHBvcG92ZXI7CisgICAgfSwKKworICAgIGhpZGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuaGlkZS5j
YWxsKHRoaXMpOworICAgICAgICB0aGlzLl9wb3BvdmVySGVscGVyLmhpZGVQb3B1cCgpOwogICAg
IH0KIH0KIApAQCAtODU4LDYgKzkwOCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVDYWxj
dWxhdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFyIGxlZnRM
YWJlbCA9IHJpZ2h0TGFiZWw7CiAKKyAgICAgICAgaWYgKHJlc291cmNlLmNvbm5lY3Rpb25JRCkK
KyAgICAgICAgICAgIHJldHVybiB7bGVmdDogbGVmdExhYmVsLCByaWdodDogcmlnaHRMYWJlbH07
CisKICAgICAgICAgaWYgKGhhc0xhdGVuY3kgJiYgcmlnaHRMYWJlbCkgewogICAgICAgICAgICAg
dmFyIHRvdGFsID0gdGhpcy5mb3JtYXRWYWx1ZShyZXNvdXJjZS5kdXJhdGlvbik7CiAgICAgICAg
ICAgICB2YXIgdG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgbGF0ZW5jeSwgJXMg
ZG93bmxvYWQgKCVzIHRvdGFsKSIsIGxlZnRMYWJlbCwgcmlnaHRMYWJlbCwgdG90YWwpOwpAQCAt
ODY4LDcgKzkyMSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVDYWxjdWxhdG9yLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAocmVzb3VyY2UuY2FjaGVkKQogICAgICAgICAgICAgdG9v
bHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgKGZyb20gY2FjaGUpIiwgdG9vbHRpcCk7
Ci0KICAgICAgICAgcmV0dXJuIHtsZWZ0OiBsZWZ0TGFiZWwsIHJpZ2h0OiByaWdodExhYmVsLCB0
b29sdGlwOiB0b29sdGlwfTsKICAgICB9LAogCkBAIC0xMjA4LDYgKzEyNjAsNyBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VHcmFwaCA9IGZ1bmN0aW9uKHJlc291cmNlKQogCiAgICAgdGhpcy5fYmFy
QXJlYUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9i
YXJBcmVhRWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2VzLWdyYXBoLWJhci1hcmVhIGhpZGRl
biI7CisgICAgdGhpcy5fYmFyQXJlYUVsZW1lbnQucmVzb3VyY2UgPSByZXNvdXJjZTsKICAgICB0
aGlzLl9ncmFwaEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYmFyQXJlYUVsZW1lbnQpOwogCiAg
ICAgdGhpcy5fYmFyTGVmdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGM1Mjc0NWYuLjI0
YjVmYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTE4
MSw2ICsxMTgxLDggQEAgV2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgcGF5bG9hZCkKICAgICAgICAgcmVzb3VyY2Uuc3RhdHVzVGV4dCA9IHBheWxvYWQu
c3RhdHVzVGV4dDsKICAgICAgICAgcmVzb3VyY2Uuc3VnZ2VzdGVkRmlsZW5hbWUgPSBwYXlsb2Fk
LnN1Z2dlc3RlZEZpbGVuYW1lOwogICAgICAgICByZXNvdXJjZS5yZXNwb25zZUhlYWRlcnMgPSBw
YXlsb2FkLnJlc3BvbnNlSGVhZGVyczsKKyAgICAgICAgcmVzb3VyY2UuY29ubmVjdGlvbklEID0g
cGF5bG9hZC5jb25uZWN0aW9uSUQ7CisgICAgICAgIHJlc291cmNlLnRpbWluZyA9IHBheWxvYWQu
dGltaW5nOwogICAgIH0KIAogICAgIGlmIChwYXlsb2FkLmRpZFR5cGVDaGFuZ2UpIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAppbmRleCA1NWZmMTgx
Li5jNWEzYjljIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VM
b2FkVGltaW5nLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVz
b3VyY2VMb2FkVGltaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkVGltaW5nPiB7
CiBwdWJsaWM6Ci0gICAgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBjcmVhdGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZXNvdXJjZUxvYWRUaW1pbmcpOwogICAgIH0K
QEAgLTQyLDMzICs0MiwyMyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRU
aW1pbmc+IGRlZXBDb3B5KCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1p
bmc+IHRpbWluZyA9IGNyZWF0ZSgpOwotICAgICAgICB0aW1pbmctPnJlZGlyZWN0U3RhcnQgPSBy
ZWRpcmVjdFN0YXJ0OwotICAgICAgICB0aW1pbmctPnJlZGlyZWN0RW5kID0gcmVkaXJlY3RFbmQ7
Ci0gICAgICAgIHRpbWluZy0+cmVkaXJlY3RDb3VudCA9IHJlZGlyZWN0Q291bnQ7CiAgICAgICAg
IHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29rdXBTdGFydDsKICAgICAgICAg
dGltaW5nLT5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQ7CiAgICAgICAgIHRpbWlu
Zy0+Y29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0OwotICAgICAgICB0aW1pbmctPmNvbm5lY3RF
bmQgPSBjb25uZWN0RW5kOwogICAgICAgICB0aW1pbmctPnJlcXVlc3RTdGFydCA9IHJlcXVlc3RT
dGFydDsKICAgICAgICAgdGltaW5nLT5yZXF1ZXN0RW5kID0gcmVxdWVzdEVuZDsKLSAgICAgICAg
dGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gcmVzcG9uc2VTdGFydDsKLSAgICAgICAgdGltaW5nLT5y
ZXNwb25zZUVuZCA9IHJlc3BvbnNlRW5kOworICAgICAgICB0aW1pbmctPmhlYWRlcnNBdmFpbGFi
bGUgPSBoZWFkZXJzQXZhaWxhYmxlOwogICAgICAgICByZXR1cm4gdGltaW5nLnJlbGVhc2UoKTsK
ICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VMb2FkVGltaW5nJiBv
dGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiByZWRpcmVjdFN0YXJ0ID09IG90aGVy
LnJlZGlyZWN0U3RhcnQKLSAgICAgICAgICAgICYmIHJlZGlyZWN0RW5kID09IG90aGVyLnJlZGly
ZWN0RW5kCi0gICAgICAgICAgICAmJiByZWRpcmVjdENvdW50ID09IG90aGVyLnJlZGlyZWN0Q291
bnQKLSAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1
cFN0YXJ0CisgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCA9PSBvdGhlci5kb21haW5M
b29rdXBTdGFydAogICAgICAgICAgICAgJiYgZG9tYWluTG9va3VwRW5kID09IG90aGVyLmRvbWFp
bkxvb2t1cEVuZAogICAgICAgICAgICAgJiYgY29ubmVjdFN0YXJ0ID09IG90aGVyLmNvbm5lY3RT
dGFydAotICAgICAgICAgICAgJiYgY29ubmVjdEVuZCA9PSBvdGhlci5jb25uZWN0RW5kCiAgICAg
ICAgICAgICAmJiByZXF1ZXN0U3RhcnQgPT0gb3RoZXIucmVxdWVzdFN0YXJ0CiAgICAgICAgICAg
ICAmJiByZXF1ZXN0RW5kID09IG90aGVyLnJlcXVlc3RFbmQKLSAgICAgICAgICAgICYmIHJlc3Bv
bnNlU3RhcnQgPT0gb3RoZXIucmVzcG9uc2VTdGFydAotICAgICAgICAgICAgJiYgcmVzcG9uc2VF
bmQgPT0gb3RoZXIucmVzcG9uc2VFbmQ7CisgICAgICAgICAgICAmJiBoZWFkZXJzQXZhaWxhYmxl
ID09IG90aGVyLmhlYWRlcnNBdmFpbGFibGU7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgb3RoZXIpIGNvbnN0CkBAIC03NiwzMSArNjYsMjEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogCi0g
ICAgZG91YmxlIHJlZGlyZWN0U3RhcnQ7Ci0gICAgZG91YmxlIHJlZGlyZWN0RW5kOwotICAgIHVu
c2lnbmVkIHNob3J0IHJlZGlyZWN0Q291bnQ7CiAgICAgZG91YmxlIGRvbWFpbkxvb2t1cFN0YXJ0
OwogICAgIGRvdWJsZSBkb21haW5Mb29rdXBFbmQ7CiAgICAgZG91YmxlIGNvbm5lY3RTdGFydDsK
LSAgICBkb3VibGUgY29ubmVjdEVuZDsKICAgICBkb3VibGUgcmVxdWVzdFN0YXJ0OwogICAgIGRv
dWJsZSByZXF1ZXN0RW5kOwotICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0OwotICAgIGRvdWJsZSBy
ZXNwb25zZUVuZDsKKyAgICBkb3VibGUgaGVhZGVyc0F2YWlsYWJsZTsKIAogcHJpdmF0ZToKICAg
ICBSZXNvdXJjZUxvYWRUaW1pbmcoKQotICAgICAgICA6IHJlZGlyZWN0U3RhcnQoMC4wKQotICAg
ICAgICAsIHJlZGlyZWN0RW5kKDAuMCkKLSAgICAgICAgLCByZWRpcmVjdENvdW50KDApCi0gICAg
ICAgICwgZG9tYWluTG9va3VwU3RhcnQoMC4wKQorICAgICAgICA6IGRvbWFpbkxvb2t1cFN0YXJ0
KDAuMCkKICAgICAgICAgLCBkb21haW5Mb29rdXBFbmQoMC4wKQogICAgICAgICAsIGNvbm5lY3RT
dGFydCgwLjApCi0gICAgICAgICwgY29ubmVjdEVuZCgwLjApCiAgICAgICAgICwgcmVxdWVzdFN0
YXJ0KDAuMCkKICAgICAgICAgLCByZXF1ZXN0RW5kKDAuMCkKLSAgICAgICAgLCByZXNwb25zZVN0
YXJ0KDAuMCkKLSAgICAgICAgLCByZXNwb25zZUVuZCgwLjApCisgICAgICAgICwgaGVhZGVyc0F2
YWlsYWJsZSgwLjApCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCAwYjYzNGNiLi4xNGEwOGNlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTEzMSw2
ICsxMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHJlcG9ydFVwbG9h
ZFByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRVcGxvYWRQcm9ncmVzczsgfQogICAg
ICAgICB2b2lkIHNldFJlcG9ydFVwbG9hZFByb2dyZXNzKGJvb2wgcmVwb3J0VXBsb2FkUHJvZ3Jl
c3MpIHsgbV9yZXBvcnRVcGxvYWRQcm9ncmVzcyA9IHJlcG9ydFVwbG9hZFByb2dyZXNzOyB9CiAK
KyAgICAgICAgLy8gV2hldGhlciB0aGUgdGltaW5nIGluZm9ybWF0aW9uIHNob3VsZCBiZSBjb2xs
ZWN0ZWQgZm9yIHRoZSByZXF1ZXN0LgorICAgICAgICBib29sIHJlcG9ydExvYWRUaW1pbmcoKSBj
b25zdCB7IHJldHVybiBtX3JlcG9ydExvYWRUaW1pbmc7IH0KKyAgICAgICAgdm9pZCBzZXRSZXBv
cnRMb2FkVGltaW5nKGJvb2wgcmVwb3J0TG9hZFRpbWluZykgeyBtX3JlcG9ydExvYWRUaW1pbmcg
PSByZXBvcnRMb2FkVGltaW5nOyB9CisKICAgICAgICAgLy8gV2hhdCB0aGlzIHJlcXVlc3QgaXMg
Zm9yLgogICAgICAgICBUYXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Rh
cmdldFR5cGU7IH0KICAgICAgICAgdm9pZCBzZXRUYXJnZXRUeXBlKFRhcmdldFR5cGUgdHlwZSkg
eyBtX3RhcmdldFR5cGUgPSB0eXBlOyB9CkBAIC0xNDEsNiArMTQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCh0cnVlKQogICAgICAgICAgICAg
LCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzKGZhbHNlKQorICAgICAgICAgICAgLCBtX3JlcG9ydExv
YWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YnJl
c291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTE1NCw2ICsxNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCh0cnVl
KQogICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fcmVwb3J0VXBsb2FkUHJvZ3Jlc3MoZmFsc2UpCisgICAgICAgICAgICAsIG1fcmVw
b3J0TG9hZFRpbWluZyhmYWxzZSkKICAgICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElz
U3VicmVzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMTc0LDYgKzE4MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0
VXBkYXRlZDsKICAgICAgICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZDsK
ICAgICAgICAgYm9vbCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzOworICAgICAgICBib29sIG1fcmVw
b3J0TG9hZFRpbWluZzsKICAgICAgICAgVGFyZ2V0VHlwZSBtX3RhcmdldFR5cGU7CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAKaW5kZXggNjA3Y2Q3Zi4uYTNiMWJlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC00NTUsNiArNDU1LDIwIEBA
IHRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsKIH0KIAordW5zaWduZWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNvbm5lY3Rpb25JRCgpIGNvbnN0Cit7CisgICAgbGF6eUluaXQoKTsKKworICAg
IHJldHVybiBtX2Nvbm5lY3Rpb25JRDsKK30KKwordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkIGNvbm5lY3Rpb25JRCkKK3sKKyAgICBsYXp5SW5pdCgp
OworCisgICAgbV9jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7Cit9CisKIFJlc291cmNlTG9h
ZFRpbWluZyogUmVzb3VyY2VSZXNwb25zZUJhc2U6OnJlc291cmNlTG9hZFRpbWluZygpIGNvbnN0
CiB7CiAgICAgbGF6eUluaXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggNjk3YTg0Yy4uMWIxNzhkNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTk3LDYgKzk3LDkg
QEAgcHVibGljOgogICAgIGRvdWJsZSBleHBpcmVzKCkgY29uc3Q7CiAgICAgZG91YmxlIGxhc3RN
b2RpZmllZCgpIGNvbnN0OwogCisgICAgdW5zaWduZWQgY29ubmVjdGlvbklEKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRDb25uZWN0aW9uSUQodW5zaWduZWQpOworCiAgICAgUmVzb3VyY2VMb2FkVGlt
aW5nKiByZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdDsKICAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFRpbWluZyhQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4pOwogCkBAIC0xMzAsNiArMTMz
LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBI
ZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIHRpbWVfdCBtX2xhc3RNb2RpZmllZERh
dGU7CisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uSUQ7CiAgICAgUmVmUHRyPFJlc291cmNlTG9h
ZFRpbWluZz4gbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAKICAgICBib29sIG1faXNOdWxsIDogMTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDM3M2Y2ZjguLjJmZjEwZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQxIEBACisyMDEwLTA3LTA4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFByb3ZpZGUgZGV0YWlsZWQgbmV0d29yayBpbmZvIGluIHRoZSByZXNvdXJjZXMg
cGFuZWwuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQwMjI3CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZU
b29sc0FnZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYlVSTExvYWRUaW1pbmcuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTExvYWRUaW1pbmc6On5XZWJVUkxMb2FkVGltaW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6V2ViVVJMTG9hZFRpbWluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTExvYWRUaW1pbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTExvYWRUaW1pbmc6OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYlVS
TFJlcXVlc3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAg
KiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZU
b29sc0FnZW50SW1wbDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVVJMTG9hZFRpbWluZy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5nOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxMb2FkVGltaW5nOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGlt
aW5nOjpzZXREb21haW5Mb29rdXBUaW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTExvYWRU
aW1pbmc6OnNldENvbm5lY3RTdGFydFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2Fk
VGltaW5nOjpzZXRSZXF1ZXN0VGltZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGlt
aW5nOjpzZXRIZWFkZXJzQXZhaWxhYmxlVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTExv
YWRUaW1pbmc6OldlYlVSTExvYWRUaW1pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2Fk
VGltaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5nOjpv
cGVyYXRvciBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4pOgorICAgICAgICAqIHNyYy9X
ZWJVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVxdWVzdDo6cmVwb3J0
TG9hZFRpbWluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlcXVlc3Q6OnNldFJlcG9ydExv
YWRUaW1pbmcpOgorICAgICAgICAqIHNyYy9XZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjpzZXRDb25uZWN0aW9uSUQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxSZXNwb25zZTo6c2V0TG9hZFRpbWluZyk6CisKIDIwMTAtMDctMDcgIFBhdmVsIFBv
ZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZTJkYTFiNC4uYmNjNzYyNCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKQEAgLTIxMSw2ICsyMTEsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViVVJMLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMRXJyb3IuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXIuaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJVUkxMb2FkVGltaW5nLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJM
TG9hZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMUmVxdWVzdC5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlVSTFJlc3BvbnNlLmgnLApAQCAtNDIyLDYg
KzQyMyw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlTmFtZXNwYWNlSW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0cmluZy5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViVVJMLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxMb2FkVGltaW5n
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXF1ZXN0LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJVUkxSZXF1ZXN0UHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVSTFJlc3BvbnNlLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRldlRvb2xzQWdlbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9v
bHNBZ2VudC5oCmluZGV4IDNiZGVlM2MuLjBlMjZjYzkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNBZ2VudC5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBXRUJL
SVRfQVBJIHN0YXRpYyB2b2lkIHNldE1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKE1lc3NhZ2VM
b29wRGlzcGF0Y2hIYW5kbGVyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBXZWJGcmFtZSosIGNvbnN0IFdl
YlVSTFJlcXVlc3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNp
Z25lZCBsb25nIHJlc291cmNlSWQsIGNvbnN0IFdlYlVSTFJlcXVlc3QmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIFdlYlVS
TFJlcXVlc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgcmVzb3VyY2VJZCwgaW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBjb25zdCBXZWJVUkxSZXNw
b25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIHJlc291cmNlSWQpID0gMDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVVJMTG9hZFRpbWluZy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkVGlt
aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBiODJkMwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVSTExvYWRUaW1pbmdfaAorI2RlZmluZSBXZWJVUkxM
b2FkVGltaW5nX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZh
dGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7
IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlVS
TExvYWRUaW1pbmcgeworcHVibGljOgorICAgIH5XZWJVUkxMb2FkVGltaW5nKCkgeyByZXNldCgp
OyB9CisKKyAgICBXZWJVUkxMb2FkVGltaW5nKCkgeyB9CisgICAgV2ViVVJMTG9hZFRpbWluZyhj
b25zdCBXZWJVUkxMb2FkVGltaW5nJiBkKSB7IGFzc2lnbihkKTsgfQorICAgIFdlYlVSTExvYWRU
aW1pbmcmIG9wZXJhdG9yPShjb25zdCBXZWJVUkxMb2FkVGltaW5nJiBkKQorICAgIHsKKyAgICAg
ICAgYXNzaWduKGQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lU
X0FQSSB2b2lkIGluaXRpYWxpemUoKTsNCisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7Cisg
ICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJVUkxMb2FkVGltaW5nJik7CisKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisg
ICAgV0VCS0lUX0FQSSB2b2lkIHNldERvbWFpbkxvb2t1cFRpbWVzKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldENvbm5lY3RTdGFydFRpbWUoZG91Ymxl
IHN0YXJ0KTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmVxdWVzdFRpbWVzKGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldEhlYWRlcnNBdmFpbGFibGVU
aW1lKGRvdWJsZSB0aW1lKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlVS
TExvYWRUaW1pbmcoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZFRp
bWluZz4mKTsKKyAgICBXZWJVUkxMb2FkVGltaW5nJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZz4mKTsKKyAgICBvcGVyYXRvciBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPigpIGNvbnN0OworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1p
bmc+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKaW5kZXggNDA4YWFkNy4uNmViODZkYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKQEAgLTEyOSw2ICsxMjksMTAg
QEAgcHVibGljOgogICAgIFdFQktJVF9BUEkgYm9vbCByZXBvcnRVcGxvYWRQcm9ncmVzcygpIGNv
bnN0OwogICAgIFdFQktJVF9BUEkgdm9pZCBzZXRSZXBvcnRVcGxvYWRQcm9ncmVzcyhib29sKTsK
IAorICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgbG9hZCB0aW1pbmcgaW5mbyBpcyBjb2xsZWN0ZWQg
Zm9yIHRoZSByZXF1ZXN0LgorICAgIFdFQktJVF9BUEkgYm9vbCByZXBvcnRMb2FkVGltaW5nKCkg
Y29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFJlcG9ydExvYWRUaW1pbmcoYm9vbCk7CisK
ICAgICBXRUJLSVRfQVBJIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0OwogICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRUYXJnZXRUeXBlKFRhcmdldFR5cGUpOwogCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlVSTFJlc3BvbnNlLmgKaW5kZXggMjkzZDk1NS4uZjhiNjlhMSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7IH0KIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJDU3RyaW5nOworY2xhc3MgV2ViVVJMTG9hZFRpbWluZzsKIGNsYXNzIFdlYkhU
VFBIZWFkZXJWaXNpdG9yOwogY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVVJMOwpAQCAtNzIs
NiArNzMsMTAgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkgV2ViVVJMIHVybCgpIGNvbnN0Owog
ICAgIFdFQktJVF9BUEkgdm9pZCBzZXRVUkwoY29uc3QgV2ViVVJMJik7CiAKKyAgICBXRUJLSVRf
QVBJIHZvaWQgc2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkKTsKKworICAgIFdFQktJVF9BUEkgdm9p
ZCBzZXRMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcmKTsKKwogICAgIFdFQktJVF9B
UEkgZG91YmxlIHJlc3BvbnNlVGltZSgpIGNvbnN0OwogICAgIFdFQktJVF9BUEkgdm9pZCBzZXRS
ZXNwb25zZVRpbWUoZG91YmxlKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmNwcAppbmRleCA1MmVhOWI3Li40MjA1YzYyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNTIwLDEwICs1MjAsMTAgQEAgdm9p
ZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KAogICAg
IH0KIH0KIAotdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgcmVzb3VyY2VJZCwgY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQg
V2ViRGV2VG9vbHNBZ2VudEltcGw6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIHJlc291
cmNlSWQsIFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpYy0+d2lsbFNlbmRS
ZXF1ZXN0KHJlc291cmNlSWQsIHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKSwgUmVzb3VyY2VS
ZXNwb25zZSgpKTsKKyAgICAgICAgaWMtPndpbGxTZW5kUmVxdWVzdChyZXNvdXJjZUlkLCByZXF1
ZXN0LnRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogfQog
CiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25n
IHJlc291cmNlSWQsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmgKaW5kZXggYzk3YjIxZi4uMTJmNTFmOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcsIFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgV2ViVVJMUmVxdWVzdCYpOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZywgV2ViVVJMUmVxdWVz
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nLCBpbnQg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcodW5zaWduZWQgbG9uZyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlVSTExvYWRUaW1pbmcuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxMb2FkVGltaW5n
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWM0NmU2Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxMb2FkVGltaW5nLmNwcApAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
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
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRUaW1p
bmcuaCIKKworI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5oIgorI2luY2x1ZGUgIldlYlN0
cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3ZvaWQgV2ViVVJMTG9hZFRpbWluZzo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9wcml2YXRl
ID0gUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKTsKK30KKwordm9pZCBXZWJVUkxMb2FkVGlt
aW5nOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViVVJM
TG9hZFRpbWluZzo6YXNzaWduKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcmIG90aGVyKQoreworICAg
IG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJVUkxMb2FkVGltaW5n
OjpzZXREb21haW5Mb29rdXBUaW1lcyhkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCit7CisgICAg
bV9wcml2YXRlLT5kb21haW5Mb29rdXBTdGFydCA9IHN0YXJ0OworICAgIG1fcHJpdmF0ZS0+ZG9t
YWluTG9va3VwRW5kID0gZW5kOworfQorCit2b2lkIFdlYlVSTExvYWRUaW1pbmc6OnNldENvbm5l
Y3RTdGFydFRpbWUoZG91YmxlIHN0YXJ0KQoreworICAgIG1fcHJpdmF0ZS0+Y29ubmVjdFN0YXJ0
ID0gc3RhcnQ7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZFRpbWluZzo6c2V0UmVxdWVzdFRpbWVzKGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCkKK3sKKyAgICBtX3ByaXZhdGUtPnJlcXVlc3RTdGFydCA9
IHN0YXJ0OworICAgIG1fcHJpdmF0ZS0+cmVxdWVzdEVuZCA9IGVuZDsKK30KKwordm9pZCBXZWJV
UkxMb2FkVGltaW5nOjpzZXRIZWFkZXJzQXZhaWxhYmxlVGltZShkb3VibGUgdGltZSkKK3sKKyAg
ICBtX3ByaXZhdGUtPmhlYWRlcnNBdmFpbGFibGUgPSB0aW1lOworfQorCisKK1dlYlVSTExvYWRU
aW1pbmc6OldlYlVSTExvYWRUaW1pbmcoY29uc3QgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1p
bmc+JiB2YWx1ZSkKKyAgICA6IG1fcHJpdmF0ZSh2YWx1ZSkKK3sKK30KKworV2ViVVJMTG9hZFRp
bWluZyYgV2ViVVJMTG9hZFRpbWluZzo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8UmVzb3Vy
Y2VMb2FkVGltaW5nPiYgdmFsdWUpCit7CisgICAgbV9wcml2YXRlID0gdmFsdWU7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitXZWJVUkxMb2FkVGltaW5nOjpvcGVyYXRvciBQYXNzUmVmUHRyPFJl
c291cmNlTG9hZFRpbWluZz4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJVUkxSZXF1ZXN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVxdWVz
dC5jcHAKaW5kZXggNDZmYTg0Mi4uM2IyZDI1MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJVUkxSZXF1ZXN0LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJl
cXVlc3QuY3BwCkBAIC0xOTQsNiArMTk0LDE2IEBAIHZvaWQgV2ViVVJMUmVxdWVzdDo6c2V0UmVw
b3J0VXBsb2FkUHJvZ3Jlc3MoYm9vbCByZXBvcnRVcGxvYWRQcm9ncmVzcykKICAgICBtX3ByaXZh
dGUtPm1fcmVzb3VyY2VSZXF1ZXN0LT5zZXRSZXBvcnRVcGxvYWRQcm9ncmVzcyhyZXBvcnRVcGxv
YWRQcm9ncmVzcyk7CiB9CiAKK2Jvb2wgV2ViVVJMUmVxdWVzdDo6cmVwb3J0TG9hZFRpbWluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlcXVlc3QtPnJlcG9y
dExvYWRUaW1pbmcoKTsKK30KKwordm9pZCBXZWJVUkxSZXF1ZXN0OjpzZXRSZXBvcnRMb2FkVGlt
aW5nKGJvb2wgcmVwb3J0TG9hZFRpbWluZykKK3sKKyAgICBtX3ByaXZhdGUtPm1fcmVzb3VyY2VS
ZXF1ZXN0LT5zZXRSZXBvcnRMb2FkVGltaW5nKHJlcG9ydExvYWRUaW1pbmcpOworfQorCiBXZWJV
UkxSZXF1ZXN0OjpUYXJnZXRUeXBlIFdlYlVSTFJlcXVlc3Q6OnRhcmdldFR5cGUoKSBjb25zdAog
ewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJnZXRUeXBlPihtX3ByaXZhdGUtPm1fcmVzb3Vy
Y2VSZXF1ZXN0LT50YXJnZXRUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJVUkxSZXNwb25zZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNl
LmNwcAppbmRleCAzZjNkZGJhLi44M2I3MGQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJl
c3BvbnNlLmNwcApAQCAtMzIsMTIgKzMyLDE2IEBACiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2Uu
aCIKIAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRUaW1pbmcuaCIKIAogI2luY2x1ZGUgIldlYkhUVFBIZWFkZXJWaXNpdG9yLmgiCiAjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVVJMTG9h
ZFRpbWluZy5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oIgogCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC05Myw2ICs5NywxOSBAQCB2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRVUkwo
Y29uc3QgV2ViVVJMJiB1cmwpCiAgICAgbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnNl
dFVSTCh1cmwpOwogfQogCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRDb25uZWN0aW9uSUQodW5z
aWduZWQgY29ubmVjdGlvbklEKQoreworICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNl
LT5zZXRDb25uZWN0aW9uSUQoY29ubmVjdGlvbklEKTsKKyAgICBtX3ByaXZhdGUtPm1fcmVzb3Vy
Y2VSZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKFJlc291cmNlTG9hZFRpbWluZzo6Y3Jl
YXRlKCkpOworfQorCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRMb2FkVGltaW5nKGNvbnN0IFdl
YlVSTExvYWRUaW1pbmcmIHRpbWluZykKK3sKKyAgICBSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5n
PiBsb2FkVGltaW5nID0gUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+KHRpbWluZyk7Cisg
ICAgQVNTRVJUKGxvYWRUaW1pbmcuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJl
c3BvbnNlLT5zZXRSZXNvdXJjZUxvYWRUaW1pbmcobG9hZFRpbWluZy5yZWxlYXNlKCkpOworfQor
CiBkb3VibGUgV2ViVVJMUmVzcG9uc2U6OnJlc3BvbnNlVGltZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5yZXNwb25zZVRpbWUoKTsK
</data>
<flag name="review"
          id="48777"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61010</attachid>
            <date>2010-07-09 00:56:31 -0700</date>
            <delta_ts>2010-07-09 01:14:52 -0700</delta_ts>
            <desc>[PATCH] Addressed review comments (added getters, removed asserts).</desc>
            <filename>network_info</filename>
            <type>text/plain</type>
            <size>38388</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTlmNTkyMi4uMzIwYTQ0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNy0wOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdv
cmsgaW5mbyBpbiB0aGUgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0b3JSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZS5lbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zvcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9nZXRQb3BvdmVyQW5jaG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3Nob3dQb3BvdmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuaGlkZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lQ2FsY3VsYXRvci5wcm90b3R5cGUu
Y29tcHV0ZUJhckdyYXBoTGFiZWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUdy
YXBoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZFRpbWluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZzo6
ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZzo6UmVzb3VyY2VMb2Fk
VGltaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlcG9ydExvYWRUaW1p
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0UmVwb3J0TG9h
ZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25u
ZWN0aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENv
bm5lY3Rpb25JRCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oOgorCiAyMDEwLTA3LTA3ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDVjYWViOTIuLmM0YWYyZGYg
MTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzIGFuZCBiL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBmMjBh
M2U5Li4wZGE3YWFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtOTQ3LDcgKzk0Nyw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNNYWluUmVz
b3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSCiAgICAgcmV0dXJu
IGxvYWRlci0+ZnJhbWUoKSA9PSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpICYmIHJlcXVl
c3RVcmwgPT0gbG9hZGVyLT5yZXF1ZXN0VVJMKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTk2MCwxMSArOTYwLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVxdWVzdC5z
ZXRSZXBvcnRMb2FkVGltaW5nKHRydWUpOworCiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7CiAgICAgICAgIC8vIFJlZGlyZWN0IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2Un
ZCBsaWtlIHRvIG5vdCBjcmFzaCB3aXRoIGludmFsaWQgSGFzaE1hcCBlbnRyeS4KICAgICAgICAg
Ly8gU2VlIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24t
cmVkaXJlY3QuaHRtbAogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAgICAgICAg
ICAgICByZXNvdXJjZS0+ZW5kVGltaW5nKCk7CiAgICAgICAgICAgICByZXNvdXJjZS0+dXBkYXRl
UmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTk5NSw3ICs5OTYsNiBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlcwogCiAgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZT4gcmVz
b3VyY2UgPSBnZXRUcmFja2VkUmVzb3VyY2UoaWRlbnRpZmllcikpIHsKICAgICAgICAgcmVzb3Vy
Y2UtPnVwZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgcmVzb3VyY2UtPm1hcmtSZXNw
b25zZVJlY2VpdmVkVGltZSgpOwogCiAgICAgICAgIGlmIChyZXNvdXJjZSAhPSBtX21haW5SZXNv
dXJjZSAmJiBtX2Zyb250ZW5kKQogICAgICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9i
amVjdChtX2Zyb250ZW5kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAppbmRleCAwZTVlMmNmLi4yOTUwYTkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgQ2FjaGVkUmVz
b3VyY2UqKTsKIAogICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ29udGVu
dExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggZjBlMzkxZC4uYWRjNmJhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFRpbWluZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTYyLDYgKzYzLDcgQEAgSW5zcGVj
dG9yUmVzb3VyY2U6Okluc3BlY3RvclJlc291cmNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqIGwKICAgICAsIG1fZW5kVGltZSgtMS4wKQogICAgICwgbV9sb2FkRXZl
bnRUaW1lKC0xLjApCiAgICAgLCBtX2RvbUNvbnRlbnRFdmVudFRpbWUoLTEuMCkKKyAgICAsIG1f
Y29ubmVjdGlvbklEKDApCiAgICAgLCBtX2lzTWFpblJlc291cmNlKGZhbHNlKQogewogfQpAQCAt
MTI4LDYgKzEzMCwyMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX3Jlc3BvbnNlU3RhdHVzVGV4
dCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7CiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9
IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAKKyAgICBtX2Nvbm5lY3Rpb25JRCA9IHJl
c3BvbnNlLmNvbm5lY3Rpb25JRCgpOworICAgIG1fbG9hZFRpbWluZyA9IHJlc3BvbnNlLnJlc291
cmNlTG9hZFRpbWluZygpOworICAgIGlmIChtX2xvYWRUaW1pbmcgJiYgbV9sb2FkVGltaW5nLT5y
ZXF1ZXN0VGltZSkgeworICAgICAgIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUgPSBtX2xvYWRUaW1p
bmctPnJlcXVlc3RUaW1lOworICAgICAgIGlmIChtX2xvYWRUaW1pbmctPnByb3h5RHVyYXRpb24g
IT0gLTEpCisgICAgICAgICBtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lICs9IG1fbG9hZFRpbWluZy0+
cHJveHlEdXJhdGlvbjsKKyAgICAgICBpZiAobV9sb2FkVGltaW5nLT5kbnNEdXJhdGlvbiAhPSAt
MSkKKyAgICAgICAgIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUgKz0gbV9sb2FkVGltaW5nLT5kbnNE
dXJhdGlvbjsKKyAgICAgICBpZiAobV9sb2FkVGltaW5nLT5jb25uZWN0RHVyYXRpb24gIT0gLTEp
CisgICAgICAgICBtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lICs9IG1fbG9hZFRpbWluZy0+Y29ubmVj
dER1cmF0aW9uOworICAgICAgIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUgKz0gbV9sb2FkVGltaW5n
LT5zZW5kRHVyYXRpb247CisgICAgICAgbV9yZXNwb25zZVJlY2VpdmVkVGltZSArPSBtX2xvYWRU
aW1pbmctPnJlY2VpdmVIZWFkZXJzRHVyYXRpb247CisgICAgfSBlbHNlCisgICAgICAgIG1fcmVz
cG9uc2VSZWNlaXZlZFRpbWUgPSBjdXJyZW50VGltZSgpOworCisgICAgbV9jaGFuZ2VzLnNldChU
aW1pbmdDaGFuZ2UpOwogICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFuZ2UpOwogICAgIG1f
Y2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CkBAIC0xNDAsNyArMTU4LDYgQEAgc3RhdGljIHZv
aWQgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KFNjcmlwdE9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZWEKICAgICB9CiB9CiAKLQogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBk
YXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAgICBpZiAo
bV9jaGFuZ2VzLmhhc0NoYW5nZShOb0NoYW5nZSkpCkBAIC0xNzIsNiArMTg5LDkgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCkKICAgICAgICAgU2NyaXB0T2JqZWN0IHJlc3BvbnNlSGVhZGVycyA9IGZyb250ZW5k
LT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNw
b25zZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0
LnNldCgicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKKyAgICAgICAganNvbk9i
amVjdC5zZXQoImNvbm5lY3Rpb25JRCIsIG1fY29ubmVjdGlvbklEKTsKKyAgICAgICAgaWYgKG1f
bG9hZFRpbWluZykKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJ0aW1pbmciLCBidWlsZE9i
amVjdEZvclRpbWluZyhmcm9udGVuZCwgbV9sb2FkVGltaW5nLmdldCgpKSk7CiAgICAgICAgIGpz
b25PYmplY3Quc2V0KCJkaWRSZXNwb25zZUNoYW5nZSIsIHRydWUpOwogICAgIH0KIApAQCAtMzM1
LDEyICszNTUsNiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjpzdGFydFRpbWluZygpCiAgICAg
bV9jaGFuZ2VzLnNldChUaW1pbmdDaGFuZ2UpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNl
OjptYXJrUmVzcG9uc2VSZWNlaXZlZFRpbWUoKQotewotICAgIG1fcmVzcG9uc2VSZWNlaXZlZFRp
bWUgPSBjdXJyZW50VGltZSgpOwotICAgIG1fY2hhbmdlcy5zZXQoVGltaW5nQ2hhbmdlKTsKLX0K
LQogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6ZW5kVGltaW5nKCkKIHsKICAgICBtX2VuZFRpbWUg
PSBjdXJyZW50VGltZSgpOwpAQCAtMzc5LDYgKzM5MywxOSBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlOjphZGRMZW5ndGgoaW50IGxlbmd0aFJlY2VpdmVkKQogICAgIG1fY2hhbmdlcy5zZXQoVGlt
aW5nQ2hhbmdlKTsKIH0KIAorU2NyaXB0T2JqZWN0IEluc3BlY3RvclJlc291cmNlOjpidWlsZE9i
amVjdEZvclRpbWluZyhJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIFJlc291cmNlTG9hZFRp
bWluZyogdGltaW5nKQoreworICAgIFNjcmlwdE9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQt
Pm5ld1NjcmlwdE9iamVjdCgpOworICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0VGltZSIsIHRp
bWluZy0+cmVxdWVzdFRpbWUpOworICAgIGpzb25PYmplY3Quc2V0KCJwcm94eUR1cmF0aW9uIiwg
dGltaW5nLT5wcm94eUR1cmF0aW9uKTsKKyAgICBqc29uT2JqZWN0LnNldCgiZG5zRHVyYXRpb24i
LCB0aW1pbmctPmRuc0R1cmF0aW9uKTsKKyAgICBqc29uT2JqZWN0LnNldCgiY29ubmVjdER1cmF0
aW9uIiwgdGltaW5nLT5jb25uZWN0RHVyYXRpb24pOworICAgIGpzb25PYmplY3Quc2V0KCJzZW5k
RHVyYXRpb24iLCB0aW1pbmctPnNlbmREdXJhdGlvbik7CisgICAganNvbk9iamVjdC5zZXQoInJl
Y2VpdmVIZWFkZXJzRHVyYXRpb24iLCB0aW1pbmctPnJlY2VpdmVIZWFkZXJzRHVyYXRpb24pOwor
ICAgIGpzb25PYmplY3Quc2V0KCJzc2xEdXJhdGlvbiIsIHRpbWluZy0+c3NsRHVyYXRpb24pOwor
ICAgIHJldHVybiBqc29uT2JqZWN0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmgKaW5kZXggOWI5MTg4OS4uZWQ5ZWMzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZS5oCkBAIC00OSw5ICs0OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBE
b2N1bWVudExvYWRlcjsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKICAgICBjbGFzcyBG
cmFtZTsKLSAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotCisgICAgY2xhc3MgUmVzb3VyY2VM
b2FkVGltaW5nOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKKyAgICBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogCiAgICAgY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbnNwZWN0b3JSZXNvdXJjZT4gewogICAgIHB1YmxpYzoKQEAgLTEwMiw3ICsxMDIsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyByZXF1ZXN0Rm9ybURhdGEoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RGb3JtRGF0YTsgfQogCiAgICAgICAgIHZvaWQgc3RhcnRU
aW1pbmcoKTsKLSAgICAgICAgdm9pZCBtYXJrUmVzcG9uc2VSZWNlaXZlZFRpbWUoKTsKICAgICAg
ICAgdm9pZCBtYXJrTG9hZEV2ZW50VGltZSgpOwogICAgICAgICB2b2lkIG1hcmtET01Db250ZW50
RXZlbnRUaW1lKCk7CiAgICAgICAgIHZvaWQgZW5kVGltaW5nKCk7CkBAIC0xNTIsNiArMTUxLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUeXBlIGNhY2hlZFJlc291cmNlVHlwZSgp
IGNvbnN0OwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoKSBjb25zdDsK
IAorICAgICAgICBTY3JpcHRPYmplY3QgYnVpbGRPYmplY3RGb3JUaW1pbmcoSW5zcGVjdG9yRnJv
bnRlbmQqLCBSZXNvdXJjZUxvYWRUaW1pbmcqKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIG1f
aWRlbnRpZmllcjsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2xvYWRlcjsKICAg
ICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwpAQCAtMTcyLDYgKzE3Myw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgZG91YmxlIG1fZW5kVGltZTsKICAgICAgICAgZG91YmxlIG1f
bG9hZEV2ZW50VGltZTsKICAgICAgICAgZG91YmxlIG1fZG9tQ29udGVudEV2ZW50VGltZTsKKyAg
ICAgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uSUQ7CisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRUaW1pbmc+IG1fbG9hZFRpbWluZzsKICAgICAgICAgU2NyaXB0U3RyaW5nIG1fb3ZlcnJpZGVD
b250ZW50OwogICAgICAgICBUeXBlIG1fb3ZlcnJpZGVDb250ZW50VHlwZTsKICAgICAgICAgQ2hh
bmdlcyBtX2NoYW5nZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKaW5kZXggZWY2YWEyNi4uZjFkZDQwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtNDgsNiArNDgsOCBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5maWx0ZXIodGhpcy5maWx0
ZXJBbGxFbGVtZW50LCBmYWxzZSk7CiAgICAgdGhpcy5ncmFwaHNUcmVlRWxlbWVudC5jaGlsZHJl
blswXS5zZWxlY3QoKTsKICAgICB0aGlzLl9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IGZhbHNl
OworCisgICAgdGhpcy5fcG9wb3ZlckhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlckhl
bHBlcih0aGlzLmVsZW1lbnQsIHRoaXMuX2dldFBvcG92ZXJBbmNob3IuYmluZCh0aGlzKSwgdGhp
cy5fc2hvd1BvcG92ZXIuYmluZCh0aGlzKSwgdHJ1ZSk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CkBAIC03MzUsNiArNzM3LDUxIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgZWxlbWVudHNUb1Jlc3RvcmVTY3Jv
bGxQb3NpdGlvbnNGb3I6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbIHRoaXMu
Y29udGFpbmVyRWxlbWVudCBdOworICAgIH0sCisKKyAgICBfZ2V0UG9wb3ZlckFuY2hvcjogZnVu
Y3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHZhciBhbmNob3IgPSBlbGVtZW50LmVuY2xv
c2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoInJlc291cmNlcy1ncmFwaC1iYXItYXJlYSIpOworICAg
ICAgICBpZiAoIWFuY2hvcikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB2YXIg
cmVzb3VyY2UgPSBhbmNob3IucmVzb3VyY2U7CisgICAgICAgIHJldHVybiByZXNvdXJjZS50aW1p
bmcgPyBhbmNob3IgOiBudWxsOworICAgIH0sCisKKyAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9u
KGFuY2hvcikKKyAgICB7CisgICAgICAgIHZhciB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ0YWJsZSIpOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBhbmNob3IucmVzb3Vy
Y2U7CisgICAgICAgIHZhciBkYXRhID0gW1dlYkluc3BlY3Rvci5VSVN0cmluZygiQmxvY2tpbmci
KSwgcmVzb3VyY2UudGltaW5nLnJlcXVlc3RUaW1lID09PSAwID8gIj8iIDogTnVtYmVyLnNlY29u
ZHNUb1N0cmluZyhNYXRoLm1heChyZXNvdXJjZS50aW1pbmcucmVxdWVzdFRpbWUgLSByZXNvdXJj
ZS5zdGFydFRpbWUsIDApKSwKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJQcm94eSIpLCByZXNvdXJjZS50aW1pbmcucHJveHlEdXJhdGlvbiA9PSAtMSA/ICJub25l
IiA6IE51bWJlci5zZWNvbmRzVG9TdHJpbmcocmVzb3VyY2UudGltaW5nLnByb3h5RHVyYXRpb24p
LAorICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkROUyBMb29rdXAi
KSwgcmVzb3VyY2UudGltaW5nLmRuc0R1cmF0aW9uID09IC0xID8gInJldXNlZCIgOiBOdW1iZXIu
c2Vjb25kc1RvU3RyaW5nKHJlc291cmNlLnRpbWluZy5kbnNEdXJhdGlvbiksCisgICAgICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29ubmVjdGluZyIpLCByZXNvdXJjZS50
aW1pbmcuY29ubmVjdER1cmF0aW9uID09IC0xID8gInJldXNlZCIgOiBOdW1iZXIuc2Vjb25kc1Rv
U3RyaW5nKHJlc291cmNlLnRpbWluZy5jb25uZWN0RHVyYXRpb24pLAorICAgICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmRpbmciKSwgTnVtYmVyLnNlY29uZHNUb1N0
cmluZyhyZXNvdXJjZS50aW1pbmcuc2VuZER1cmF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXYWl0aW5nIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmco
cmVzb3VyY2UudGltaW5nLnJlY2VpdmVIZWFkZXJzRHVyYXRpb24pLAorICAgICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmluZyIpLCBOdW1iZXIuc2Vjb25kc1Rv
U3RyaW5nKHJlc291cmNlLmVuZFRpbWUgLSByZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGltZSld
OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gMikgewor
ICAgICAgICAgICAgdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAg
ICAgICAgIHRhYmxlRWxlbWVudC5hcHBlbmRDaGlsZCh0cik7CisKKyAgICAgICAgICAgIHZhciB0
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgICAgICB0ZC50ZXh0Q29u
dGVudCA9IGRhdGFbaV07CisgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CisKKyAgICAg
ICAgICAgIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgICAgIHRk
LnRleHRDb250ZW50ID0gZGF0YVtpICsgMV07CisgICAgICAgICAgICB0ci5hcHBlbmRDaGlsZCh0
ZCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
UG9wb3Zlcih0YWJsZUVsZW1lbnQpOworICAgICAgICBwb3BvdmVyLnNob3coYW5jaG9yLmZpcnN0
Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAgICByZXR1cm4gcG9wb3ZlcjsKKyAgICB9LAorCisg
ICAgaGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnBy
b3RvdHlwZS5oaWRlLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlk
ZVBvcHVwKCk7CiAgICAgfQogfQogCkBAIC04NTgsNiArOTA1LDkgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlVGltZUNhbGN1bGF0b3IucHJvdG90eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB2YXIgbGVmdExhYmVsID0gcmlnaHRMYWJlbDsKIAorICAgICAgICBpZiAocmVzb3VyY2Uu
Y29ubmVjdGlvbklEKQorICAgICAgICAgICAgcmV0dXJuIHtsZWZ0OiBsZWZ0TGFiZWwsIHJpZ2h0
OiByaWdodExhYmVsfTsKKwogICAgICAgICBpZiAoaGFzTGF0ZW5jeSAmJiByaWdodExhYmVsKSB7
CiAgICAgICAgICAgICB2YXIgdG90YWwgPSB0aGlzLmZvcm1hdFZhbHVlKHJlc291cmNlLmR1cmF0
aW9uKTsKICAgICAgICAgICAgIHZhciB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIl
cyBsYXRlbmN5LCAlcyBkb3dubG9hZCAoJXMgdG90YWwpIiwgbGVmdExhYmVsLCByaWdodExhYmVs
LCB0b3RhbCk7CkBAIC04NjgsNyArOTE4LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZUNh
bGN1bGF0b3IucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChyZXNvdXJjZS5jYWNoZWQpCiAg
ICAgICAgICAgICB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAoZnJvbSBjYWNo
ZSkiLCB0b29sdGlwKTsKLQogICAgICAgICByZXR1cm4ge2xlZnQ6IGxlZnRMYWJlbCwgcmlnaHQ6
IHJpZ2h0TGFiZWwsIHRvb2x0aXA6IHRvb2x0aXB9OwogICAgIH0sCiAKQEAgLTEyMDgsNiArMTI1
Nyw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUdyYXBoID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAK
ICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZXMtZ3JhcGgt
YmFyLWFyZWEgaGlkZGVuIjsKKyAgICB0aGlzLl9iYXJBcmVhRWxlbWVudC5yZXNvdXJjZSA9IHJl
c291cmNlOwogICAgIHRoaXMuX2dyYXBoRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iYXJBcmVh
RWxlbWVudCk7CiAKICAgICB0aGlzLl9iYXJMZWZ0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5k
ZXggYzUyNzQ1Zi4uMjRiNWZhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCkBAIC0xMTgxLDYgKzExODEsOCBAQCBXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3VyY2Ug
PSBmdW5jdGlvbihpZGVudGlmaWVyLCBwYXlsb2FkKQogICAgICAgICByZXNvdXJjZS5zdGF0dXNU
ZXh0ID0gcGF5bG9hZC5zdGF0dXNUZXh0OwogICAgICAgICByZXNvdXJjZS5zdWdnZXN0ZWRGaWxl
bmFtZSA9IHBheWxvYWQuc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgICAgIHJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyA9IHBheWxvYWQucmVzcG9uc2VIZWFkZXJzOworICAgICAgICByZXNvdXJjZS5j
b25uZWN0aW9uSUQgPSBwYXlsb2FkLmNvbm5lY3Rpb25JRDsKKyAgICAgICAgcmVzb3VyY2UudGlt
aW5nID0gcGF5bG9hZC50aW1pbmc7CiAgICAgfQogCiAgICAgaWYgKHBheWxvYWQuZGlkVHlwZUNo
YW5nZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9h
ZFRpbWluZy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5o
CmluZGV4IDU1ZmYxODEuLjYzYjQ1ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VMb2FkVGltaW5nLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJj
ZUxvYWRUaW1pbmc+IHsKIHB1YmxpYzoKLSAgICBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWlu
Zz4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNy
ZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFRp
bWluZyk7CiAgICAgfQpAQCAtNDIsMzMgKzQyLDI1IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PFJlc291cmNlTG9hZFRpbWluZz4gZGVlcENvcHkoKQogICAgIHsKICAgICAgICAgUmVmUHRyPFJl
c291cmNlTG9hZFRpbWluZz4gdGltaW5nID0gY3JlYXRlKCk7Ci0gICAgICAgIHRpbWluZy0+cmVk
aXJlY3RTdGFydCA9IHJlZGlyZWN0U3RhcnQ7Ci0gICAgICAgIHRpbWluZy0+cmVkaXJlY3RFbmQg
PSByZWRpcmVjdEVuZDsKLSAgICAgICAgdGltaW5nLT5yZWRpcmVjdENvdW50ID0gcmVkaXJlY3RD
b3VudDsKLSAgICAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9IGRvbWFpbkxvb2t1cFN0
YXJ0OwotICAgICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1cEVuZDsK
LSAgICAgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQ7Ci0gICAgICAgIHRp
bWluZy0+Y29ubmVjdEVuZCA9IGNvbm5lY3RFbmQ7Ci0gICAgICAgIHRpbWluZy0+cmVxdWVzdFN0
YXJ0ID0gcmVxdWVzdFN0YXJ0OwotICAgICAgICB0aW1pbmctPnJlcXVlc3RFbmQgPSByZXF1ZXN0
RW5kOwotICAgICAgICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSByZXNwb25zZVN0YXJ0OwotICAg
ICAgICB0aW1pbmctPnJlc3BvbnNlRW5kID0gcmVzcG9uc2VFbmQ7CisgICAgICAgIHRpbWluZy0+
cmVxdWVzdFRpbWUgPSByZXF1ZXN0VGltZTsKKyAgICAgICAgdGltaW5nLT5wcm94eUR1cmF0aW9u
ID0gcHJveHlEdXJhdGlvbjsKKyAgICAgICAgdGltaW5nLT5kbnNEdXJhdGlvbiA9IGRuc0R1cmF0
aW9uOworICAgICAgICB0aW1pbmctPmNvbm5lY3REdXJhdGlvbiA9IGNvbm5lY3REdXJhdGlvbjsK
KyAgICAgICAgdGltaW5nLT5zZW5kRHVyYXRpb24gPSBzZW5kRHVyYXRpb247CisgICAgICAgIHRp
bWluZy0+cmVjZWl2ZUhlYWRlcnNEdXJhdGlvbiA9IHJlY2VpdmVIZWFkZXJzRHVyYXRpb247Cisg
ICAgICAgIHRpbWluZy0+c3NsRHVyYXRpb24gPSBzc2xEdXJhdGlvbjsKICAgICAgICAgcmV0dXJu
IHRpbWluZy5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
c291cmNlTG9hZFRpbWluZyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcmVk
aXJlY3RTdGFydCA9PSBvdGhlci5yZWRpcmVjdFN0YXJ0Ci0gICAgICAgICAgICAmJiByZWRpcmVj
dEVuZCA9PSBvdGhlci5yZWRpcmVjdEVuZAotICAgICAgICAgICAgJiYgcmVkaXJlY3RDb3VudCA9
PSBvdGhlci5yZWRpcmVjdENvdW50Ci0gICAgICAgICAgICAmJiBkb21haW5Mb29rdXBTdGFydCA9
PSBvdGhlci5kb21haW5Mb29rdXBTdGFydAotICAgICAgICAgICAgJiYgZG9tYWluTG9va3VwRW5k
ID09IG90aGVyLmRvbWFpbkxvb2t1cEVuZAotICAgICAgICAgICAgJiYgY29ubmVjdFN0YXJ0ID09
IG90aGVyLmNvbm5lY3RTdGFydAotICAgICAgICAgICAgJiYgY29ubmVjdEVuZCA9PSBvdGhlci5j
b25uZWN0RW5kCi0gICAgICAgICAgICAmJiByZXF1ZXN0U3RhcnQgPT0gb3RoZXIucmVxdWVzdFN0
YXJ0Ci0gICAgICAgICAgICAmJiByZXF1ZXN0RW5kID09IG90aGVyLnJlcXVlc3RFbmQKLSAgICAg
ICAgICAgICYmIHJlc3BvbnNlU3RhcnQgPT0gb3RoZXIucmVzcG9uc2VTdGFydAotICAgICAgICAg
ICAgJiYgcmVzcG9uc2VFbmQgPT0gb3RoZXIucmVzcG9uc2VFbmQ7CisgICAgICAgIHJldHVybiBy
ZXF1ZXN0VGltZSA9PSBvdGhlci5yZXF1ZXN0VGltZQorICAgICAgICAgICAgJiYgcHJveHlEdXJh
dGlvbiA9PSBvdGhlci5wcm94eUR1cmF0aW9uCisgICAgICAgICAgICAmJiBkbnNEdXJhdGlvbiA9
PSBvdGhlci5kbnNEdXJhdGlvbgorICAgICAgICAgICAgJiYgY29ubmVjdER1cmF0aW9uID09IG90
aGVyLmNvbm5lY3REdXJhdGlvbgorICAgICAgICAgICAgJiYgc2VuZER1cmF0aW9uID09IG90aGVy
LnNlbmREdXJhdGlvbgorICAgICAgICAgICAgJiYgcmVjZWl2ZUhlYWRlcnNEdXJhdGlvbiA9PSBv
dGhlci5yZWNlaXZlSGVhZGVyc0R1cmF0aW9uCisgICAgICAgICAgICAmJiBzc2xEdXJhdGlvbiA9
PSBvdGhlci5zc2xEdXJhdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UmVzb3VyY2VMb2FkVGltaW5nJiBvdGhlcikgY29uc3QKQEAgLTc2LDMxICs2OCwyMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgcmVkaXJlY3RTdGFydDsKLSAgICBkb3VibGUgcmVkaXJlY3RFbmQ7Ci0gICAgdW5zaWduZWQg
c2hvcnQgcmVkaXJlY3RDb3VudDsKLSAgICBkb3VibGUgZG9tYWluTG9va3VwU3RhcnQ7Ci0gICAg
ZG91YmxlIGRvbWFpbkxvb2t1cEVuZDsKLSAgICBkb3VibGUgY29ubmVjdFN0YXJ0OwotICAgIGRv
dWJsZSBjb25uZWN0RW5kOwotICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQ7Ci0gICAgZG91YmxlIHJl
cXVlc3RFbmQ7Ci0gICAgZG91YmxlIHJlc3BvbnNlU3RhcnQ7Ci0gICAgZG91YmxlIHJlc3BvbnNl
RW5kOworICAgIGRvdWJsZSByZXF1ZXN0VGltZTsKKyAgICBkb3VibGUgcHJveHlEdXJhdGlvbjsK
KyAgICBkb3VibGUgZG5zRHVyYXRpb247CisgICAgZG91YmxlIGNvbm5lY3REdXJhdGlvbjsKKyAg
ICBkb3VibGUgc2VuZER1cmF0aW9uOworICAgIGRvdWJsZSByZWNlaXZlSGVhZGVyc0R1cmF0aW9u
OworICAgIGRvdWJsZSBzc2xEdXJhdGlvbjsKIAogcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRU
aW1pbmcoKQotICAgICAgICA6IHJlZGlyZWN0U3RhcnQoMC4wKQotICAgICAgICAsIHJlZGlyZWN0
RW5kKDAuMCkKLSAgICAgICAgLCByZWRpcmVjdENvdW50KDApCi0gICAgICAgICwgZG9tYWluTG9v
a3VwU3RhcnQoMC4wKQotICAgICAgICAsIGRvbWFpbkxvb2t1cEVuZCgwLjApCi0gICAgICAgICwg
Y29ubmVjdFN0YXJ0KDAuMCkKLSAgICAgICAgLCBjb25uZWN0RW5kKDAuMCkKLSAgICAgICAgLCBy
ZXF1ZXN0U3RhcnQoMC4wKQotICAgICAgICAsIHJlcXVlc3RFbmQoMC4wKQotICAgICAgICAsIHJl
c3BvbnNlU3RhcnQoMC4wKQotICAgICAgICAsIHJlc3BvbnNlRW5kKDAuMCkKKyAgICAgICAgOiBy
ZXF1ZXN0VGltZSgwLjApCisgICAgICAgICwgcHJveHlEdXJhdGlvbigtMS4wKQorICAgICAgICAs
IGRuc0R1cmF0aW9uKC0xLjApCisgICAgICAgICwgY29ubmVjdER1cmF0aW9uKC0xLjApCisgICAg
ICAgICwgc2VuZER1cmF0aW9uKDAuMCkKKyAgICAgICAgLCByZWNlaXZlSGVhZGVyc0R1cmF0aW9u
KDAuMCkKKyAgICAgICAgLCBzc2xEdXJhdGlvbigtMS4wKQogICAgIHsKICAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMGI2
MzRjYi4uMTRhMDhjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5oCkBAIC0xMzEsNiArMTMxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCByZXBvcnRVcGxvYWRQcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0
VXBsb2FkUHJvZ3Jlc3M7IH0KICAgICAgICAgdm9pZCBzZXRSZXBvcnRVcGxvYWRQcm9ncmVzcyhi
b29sIHJlcG9ydFVwbG9hZFByb2dyZXNzKSB7IG1fcmVwb3J0VXBsb2FkUHJvZ3Jlc3MgPSByZXBv
cnRVcGxvYWRQcm9ncmVzczsgfQogCisgICAgICAgIC8vIFdoZXRoZXIgdGhlIHRpbWluZyBpbmZv
cm1hdGlvbiBzaG91bGQgYmUgY29sbGVjdGVkIGZvciB0aGUgcmVxdWVzdC4KKyAgICAgICAgYm9v
bCByZXBvcnRMb2FkVGltaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRMb2FkVGltaW5nOyB9
CisgICAgICAgIHZvaWQgc2V0UmVwb3J0TG9hZFRpbWluZyhib29sIHJlcG9ydExvYWRUaW1pbmcp
IHsgbV9yZXBvcnRMb2FkVGltaW5nID0gcmVwb3J0TG9hZFRpbWluZzsgfQorCiAgICAgICAgIC8v
IFdoYXQgdGhpcyByZXF1ZXN0IGlzIGZvci4KICAgICAgICAgVGFyZ2V0VHlwZSB0YXJnZXRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRUeXBlOyB9CiAgICAgICAgIHZvaWQgc2V0VGFyZ2V0
VHlwZShUYXJnZXRUeXBlIHR5cGUpIHsgbV90YXJnZXRUeXBlID0gdHlwZTsgfQpAQCAtMTQxLDYg
KzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogbV9yZXNvdXJjZVJl
cXVlc3RVcGRhdGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0
ZWQodHJ1ZSkKICAgICAgICAgICAgICwgbV9yZXBvcnRVcGxvYWRQcm9ncmVzcyhmYWxzZSkKKyAg
ICAgICAgICAgICwgbV9yZXBvcnRMb2FkVGltaW5nKGZhbHNlKQogICAgICAgICAgICAgLCBtX3Rh
cmdldFR5cGUoVGFyZ2V0SXNTdWJyZXNvdXJjZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0x
NTQsNiArMTU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3Jlc291
cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKICAgICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RV
cGRhdGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzKGZhbHNl
KQorICAgICAgICAgICAgLCBtX3JlcG9ydExvYWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAgICAs
IG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YnJlc291cmNlKQogICAgICAgICB7CiAgICAgICAgIH0K
QEAgLTE3NCw2ICsxODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUg
Ym9vbCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQ7CiAgICAgICAgIG11dGFibGUgYm9vbCBtX3Bs
YXRmb3JtUmVxdWVzdFVwZGF0ZWQ7CiAgICAgICAgIGJvb2wgbV9yZXBvcnRVcGxvYWRQcm9ncmVz
czsKKyAgICAgICAgYm9vbCBtX3JlcG9ydExvYWRUaW1pbmc7CiAgICAgICAgIFRhcmdldFR5cGUg
bV90YXJnZXRUeXBlOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDYwN2NkN2YuLmEzYjFiZTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cApAQCAtNDU1LDYgKzQ1NSwyMCBAQCB0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RN
b2RpZmllZERhdGUoKSBjb25zdAogICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7CiB9CiAK
K3Vuc2lnbmVkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW9uSUQoKSBjb25zdAorewor
ICAgIGxhenlJbml0KCk7CisKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uSUQ7Cit9CisKK3ZvaWQg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3Rpb25JRCh1bnNpZ25lZCBjb25uZWN0aW9u
SUQpCit7CisgICAgbGF6eUluaXQoKTsKKworICAgIG1fY29ubmVjdGlvbklEID0gY29ubmVjdGlv
bklEOworfQorCiBSZXNvdXJjZUxvYWRUaW1pbmcqIFJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXNv
dXJjZUxvYWRUaW1pbmcoKSBjb25zdAogewogICAgIGxhenlJbml0KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDY5N2E4NGMuLjFi
MTc4ZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oCkBAIC05Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZXhwaXJlcygpIGNv
bnN0OwogICAgIGRvdWJsZSBsYXN0TW9kaWZpZWQoKSBjb25zdDsKIAorICAgIHVuc2lnbmVkIGNv
bm5lY3Rpb25JRCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkKTsK
KwogICAgIFJlc291cmNlTG9hZFRpbWluZyogcmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRUaW1pbmcoUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1p
bmc+KTsKIApAQCAtMTMwLDYgKzEzMyw3IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV9odHRw
U3RhdHVzVGV4dDsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICB0
aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbklEOwog
ICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCiAg
ICAgYm9vbCBtX2lzTnVsbCA6IDE7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzNzNmNmY4Li4yZmYxMGViIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0wNy0wOCAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIGRldGFpbGVkIG5ldHdvcmsg
aW5mbyBpbiB0aGUgcmVzb3VyY2VzIHBhbmVsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDIyNworCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJV
UkxMb2FkVGltaW5nLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5n
Ojp+V2ViVVJMTG9hZFRpbWluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTExvYWRUaW1pbmc6
OldlYlVSTExvYWRUaW1pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5nOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5nOjppc051bGwpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJVUkxSZXF1ZXN0Lmg6CisgICAgICAgICogcHVibGljL1dlYlVS
TFJlc3BvbnNlLmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OndpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlVS
TExvYWRUaW1pbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMTG9hZFRpbWlu
Zzo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTExvYWRUaW1pbmc6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6YXNzaWduKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6c2V0RG9tYWluTG9va3VwVGltZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5nOjpzZXRDb25uZWN0U3RhcnRUaW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6c2V0UmVxdWVzdFRpbWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6c2V0SGVhZGVyc0F2YWlsYWJsZVRpbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkVGltaW5nOjpXZWJVUkxMb2FkVGltaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMTG9hZFRpbWluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMTG9hZFRpbWluZzo6b3BlcmF0b3IgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1p
bmc+KToKKyAgICAgICAgKiBzcmMvV2ViVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFJlcXVlc3Q6OnJlcG9ydExvYWRUaW1pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxSZXF1ZXN0OjpzZXRSZXBvcnRMb2FkVGltaW5nKToKKyAgICAgICAgKiBzcmMvV2ViVVJMUmVz
cG9uc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6c2V0Q29ubmVjdGlv
bklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OnNldExvYWRUaW1pbmcpOgor
CiAyMDEwLTA3LTA3ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IGUyZGExYjQuLmJjYzc2MjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yMTEsNiArMjExLDcgQEAKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlVSTC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlVSTEVycm9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZGVyLmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlVSTFJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxS
ZXNwb25zZS5oJywKQEAgLTQyMiw2ICs0MjMsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U3RvcmFnZU5hbWVzcGFjZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdHJpbmcu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTC5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViVVJMTG9hZFRpbWluZy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJM
UmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVxdWVzdFByaXZhdGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJVUkxSZXNwb25zZS5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAppbmRleCAzYmRlZTNjLi4wZTI2Y2M5IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaApAQCAtODEsNyArODEs
NyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRNZXNzYWdlTG9vcERp
c3BhdGNoSGFuZGxlcihNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJ
ZCwgV2ViRnJhbWUqLCBjb25zdCBXZWJVUkxSZXF1ZXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBjb25zdCBXZWJVUkxS
ZXF1ZXN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQg
bG9uZyByZXNvdXJjZUlkLCBXZWJVUkxSZXF1ZXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGludCBsZW5ndGgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVzb3Vy
Y2VJZCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkKSA9IDA7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRUaW1pbmcuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjdlYjU2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVSTExvYWRUaW1pbmcuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVUkxMb2FkVGlt
aW5nX2gKKyNkZWZpbmUgV2ViVVJMTG9hZFRpbWluZ19oCisKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xh
c3MgUmVzb3VyY2VMb2FkVGltaW5nOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
U3RyaW5nOworCitjbGFzcyBXZWJVUkxMb2FkVGltaW5nIHsKK3B1YmxpYzoKKyAgICB+V2ViVVJM
TG9hZFRpbWluZygpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViVVJMTG9hZFRpbWluZygpIHsgfQor
ICAgIFdlYlVSTExvYWRUaW1pbmcoY29uc3QgV2ViVVJMTG9hZFRpbWluZyYgZCkgeyBhc3NpZ24o
ZCk7IH0KKyAgICBXZWJVUkxMb2FkVGltaW5nJiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMTG9hZFRp
bWluZyYgZCkKKyAgICB7CisgICAgICAgIGFzc2lnbihkKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCBpbml0aWFsaXplKCk7CisgICAgV0VCS0lU
X0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJV
UkxMb2FkVGltaW5nJik7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0FQSSBkb3VibGUgcmVxdWVzdFRpbWUoKSBj
b25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmVxdWVzdFRpbWUoZG91YmxlIHRpbWUpOwor
CisgICAgV0VCS0lUX0FQSSBkb3VibGUgcHJveHlEdXJhdGlvbigpIGNvbnN0OworICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRQcm94eUR1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbik7CisKKyAgICBXRUJL
SVRfQVBJIGRvdWJsZSBkbnNEdXJhdGlvbigpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBz
ZXRETlNEdXJhdGlvbihkb3VibGUgZHVyYXRpb24pOworCisgICAgV0VCS0lUX0FQSSBkb3VibGUg
Y29ubmVjdER1cmF0aW9uKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldENvbm5lY3RE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pOworCisgICAgV0VCS0lUX0FQSSBkb3VibGUgc2VuZER1
cmF0aW9uKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFNlbmREdXJhdGlvbihkb3Vi
bGUgZHVyYXRpb24pOworCisgICAgV0VCS0lUX0FQSSBkb3VibGUgcmVjZWl2ZUhlYWRlcnNEdXJh
dGlvbigpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRSZWNlaXZlSGVhZGVyc0R1cmF0
aW9uKGRvdWJsZSBkdXJhdGlvbik7CisKKyAgICBXRUJLSVRfQVBJIGRvdWJsZSBzc2xEdXJhdGlv
bigpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRTU0xEdXJhdGlvbihkb3VibGUgZHVy
YXRpb24pOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViVVJMTG9hZFRpbWlu
Zyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiYpOwor
ICAgIFdlYlVSTExvYWRUaW1pbmcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZz4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlVSTFJlcXVlc3QuaAppbmRleCA0MDhhYWQ3Li42ZWI4NmRhIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaApAQCAtMTI5LDYgKzEyOSwxMCBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0FQSSBib29sIHJlcG9ydFVwbG9hZFByb2dyZXNzKCkgY29uc3Q7CiAgICAg
V0VCS0lUX0FQSSB2b2lkIHNldFJlcG9ydFVwbG9hZFByb2dyZXNzKGJvb2wpOwogCisgICAgLy8g
Q29udHJvbHMgd2hldGhlciBsb2FkIHRpbWluZyBpbmZvIGlzIGNvbGxlY3RlZCBmb3IgdGhlIHJl
cXVlc3QuCisgICAgV0VCS0lUX0FQSSBib29sIHJlcG9ydExvYWRUaW1pbmcoKSBjb25zdDsKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgc2V0UmVwb3J0TG9hZFRpbWluZyhib29sKTsKKwogICAgIFdFQktJ
VF9BUEkgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSB2b2lk
IHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
UmVzcG9uc2UuaAppbmRleCAyOTNkOTU1Li43Njc2MDE4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVUkxSZXNwb25zZS5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsgfQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkNTdHJpbmc7CitjbGFzcyBXZWJVUkxMb2FkVGltaW5nOwogY2xhc3MgV2ViSFRUUEhlYWRlclZp
c2l0b3I7CiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJVUkw7CkBAIC03Miw2ICs3MywxMiBA
QCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBXZWJVUkwgdXJsKCkgY29uc3Q7CiAgICAgV0VCS0lU
X0FQSSB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwmKTsKIAorICAgIFdFQktJVF9BUEkgdW5zaWdu
ZWQgY29ubmVjdGlvbklEKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldENvbm5lY3Rp
b25JRCh1bnNpZ25lZCk7CisKKyAgICBXRUJLSVRfQVBJIFdlYlVSTExvYWRUaW1pbmcgbG9hZFRp
bWluZygpOworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExv
YWRUaW1pbmcmKTsKKwogICAgIFdFQktJVF9BUEkgZG91YmxlIHJlc3BvbnNlVGltZSgpIGNvbnN0
OwogICAgIFdFQktJVF9BUEkgdm9pZCBzZXRSZXNwb25zZVRpbWUoZG91YmxlKTsKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA1MmVhOWI3Li40
MjA1YzYyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNw
cApAQCAtNTIwLDEwICs1MjAsMTAgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aWRlbnRp
ZmllckZvckluaXRpYWxSZXF1ZXN0KAogICAgIH0KIH0KIAotdm9pZCBXZWJEZXZUb29sc0FnZW50
SW1wbDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwgY29uc3QgV2Vi
VVJMUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OndpbGxTZW5k
UmVxdWVzdCh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIFdlYlVSTFJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxl
cigpKQotICAgICAgICBpYy0+d2lsbFNlbmRSZXF1ZXN0KHJlc291cmNlSWQsIHJlcXVlc3QudG9S
ZXNvdXJjZVJlcXVlc3QoKSwgUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICAgICAgaWMtPndpbGxT
ZW5kUmVxdWVzdChyZXNvdXJjZUlkLCByZXF1ZXN0LnRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGludCBsZW5ndGgpCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggYzk3YjIxZi4uMTJm
NTFmOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFRpbWVsaW5lUHJvZmls
aW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMUmVx
dWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZywg
Y29uc3QgV2ViVVJMUmVxdWVzdCYpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
dW5zaWduZWQgbG9uZywgV2ViVVJMUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YSh1bnNpZ25lZCBsb25nLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyk7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTExvYWRUaW1pbmcuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJVUkxMb2FkVGltaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45YjVkM2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJVUkxMb2FkVGltaW5nLmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkVGltaW5nLmgiCisKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRUaW1pbmcuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlVSTExvYWRUaW1pbmc6Omlu
aXRpYWxpemUoKQoreworICAgIG1fcHJpdmF0ZSA9IFJlc291cmNlTG9hZFRpbWluZzo6Y3JlYXRl
KCk7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZFRpbWluZzo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0
ZS5yZXNldCgpOworfQorCit2b2lkIFdlYlVSTExvYWRUaW1pbmc6OmFzc2lnbihjb25zdCBXZWJV
UkxMb2FkVGltaW5nJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7
Cit9CisKK2RvdWJsZSBXZWJVUkxMb2FkVGltaW5nOjpyZXF1ZXN0VGltZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVxdWVzdFRpbWU7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZFRp
bWluZzo6c2V0UmVxdWVzdFRpbWUoZG91YmxlIHRpbWUpCit7CisgICAgbV9wcml2YXRlLT5yZXF1
ZXN0VGltZSA9IHRpbWU7Cit9CisKK2RvdWJsZSBXZWJVUkxMb2FkVGltaW5nOjpwcm94eUR1cmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5wcm94eUR1cmF0aW9uOworfQor
Cit2b2lkIFdlYlVSTExvYWRUaW1pbmc6OnNldFByb3h5RHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KQoreworICAgIG1fcHJpdmF0ZS0+cHJveHlEdXJhdGlvbiA9IGR1cmF0aW9uOworfQorZG91Ymxl
IFdlYlVSTExvYWRUaW1pbmc6OmRuc0R1cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5kbnNEdXJhdGlvbjsKK30KKwordm9pZCBXZWJVUkxMb2FkVGltaW5nOjpzZXRETlNE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgbV9wcml2YXRlLT5kbnNEdXJhdGlvbiA9
IGR1cmF0aW9uOworfQorCitkb3VibGUgV2ViVVJMTG9hZFRpbWluZzo6Y29ubmVjdER1cmF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jb25uZWN0RHVyYXRpb247Cit9CisK
K3ZvaWQgV2ViVVJMTG9hZFRpbWluZzo6c2V0Q29ubmVjdER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKK3sKKyAgICBtX3ByaXZhdGUtPmNvbm5lY3REdXJhdGlvbiA9IGR1cmF0aW9uOworfQorCitk
b3VibGUgV2ViVVJMTG9hZFRpbWluZzo6c2VuZER1cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5zZW5kRHVyYXRpb247Cit9CisKK3ZvaWQgV2ViVVJMTG9hZFRpbWluZzo6
c2V0U2VuZER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnNlbmRE
dXJhdGlvbiA9IGR1cmF0aW9uOworfQorCitkb3VibGUgV2ViVVJMTG9hZFRpbWluZzo6cmVjZWl2
ZUhlYWRlcnNEdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVjZWl2
ZUhlYWRlcnNEdXJhdGlvbjsKK30KKwordm9pZCBXZWJVUkxMb2FkVGltaW5nOjpzZXRSZWNlaXZl
SGVhZGVyc0R1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnJlY2Vp
dmVIZWFkZXJzRHVyYXRpb24gPSBkdXJhdGlvbjsKK30KKworCitkb3VibGUgV2ViVVJMTG9hZFRp
bWluZzo6c3NsRHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnNzbER1
cmF0aW9uOworfQorCit2b2lkIFdlYlVSTExvYWRUaW1pbmc6OnNldFNTTER1cmF0aW9uKGRvdWJs
ZSBkdXJhdGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnNzbER1cmF0aW9uID0gZHVyYXRpb247Cit9
CisKK1dlYlVSTExvYWRUaW1pbmc6OldlYlVSTExvYWRUaW1pbmcoY29uc3QgUGFzc1JlZlB0cjxS
ZXNvdXJjZUxvYWRUaW1pbmc+JiB2YWx1ZSkKKyAgICA6IG1fcHJpdmF0ZSh2YWx1ZSkKK3sKK30K
KworV2ViVVJMTG9hZFRpbWluZyYgV2ViVVJMTG9hZFRpbWluZzo6b3BlcmF0b3I9KGNvbnN0IFBh
c3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiYgdmFsdWUpCit7CisgICAgbV9wcml2YXRlID0g
dmFsdWU7CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJVUkxMb2FkVGltaW5nOjpvcGVyYXRv
ciBQYXNzUmVmUHRyPFJlc291cmNlTG9hZFRpbWluZz4oKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXF1ZXN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVVJMUmVxdWVzdC5jcHAKaW5kZXggNDZmYTg0Mi4uM2IyZDI1MSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXF1ZXN0LmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlVSTFJlcXVlc3QuY3BwCkBAIC0xOTQsNiArMTk0LDE2IEBAIHZvaWQgV2ViVVJM
UmVxdWVzdDo6c2V0UmVwb3J0VXBsb2FkUHJvZ3Jlc3MoYm9vbCByZXBvcnRVcGxvYWRQcm9ncmVz
cykKICAgICBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXF1ZXN0LT5zZXRSZXBvcnRVcGxvYWRQcm9n
cmVzcyhyZXBvcnRVcGxvYWRQcm9ncmVzcyk7CiB9CiAKK2Jvb2wgV2ViVVJMUmVxdWVzdDo6cmVw
b3J0TG9hZFRpbWluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJj
ZVJlcXVlc3QtPnJlcG9ydExvYWRUaW1pbmcoKTsKK30KKwordm9pZCBXZWJVUkxSZXF1ZXN0Ojpz
ZXRSZXBvcnRMb2FkVGltaW5nKGJvb2wgcmVwb3J0TG9hZFRpbWluZykKK3sKKyAgICBtX3ByaXZh
dGUtPm1fcmVzb3VyY2VSZXF1ZXN0LT5zZXRSZXBvcnRMb2FkVGltaW5nKHJlcG9ydExvYWRUaW1p
bmcpOworfQorCiBXZWJVUkxSZXF1ZXN0OjpUYXJnZXRUeXBlIFdlYlVSTFJlcXVlc3Q6OnRhcmdl
dFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJnZXRUeXBlPihtX3By
aXZhdGUtPm1fcmVzb3VyY2VSZXF1ZXN0LT50YXJnZXRUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCAzZjNkZGJhLi42MmFiZDM3IDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMzIsMTIgKzMyLDE2IEBACiAjaW5jbHVkZSAi
V2ViVVJMUmVzcG9uc2UuaCIKIAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKIAogI2luY2x1ZGUgIldlYkhUVFBIZWFkZXJWaXNp
dG9yLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5j
bHVkZSAiV2ViVVJMTG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlUHJpdmF0
ZS5oIgogCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Myw2ICs5NywyNyBAQCB2b2lkIFdlYlVSTFJl
c3BvbnNlOjpzZXRVUkwoY29uc3QgV2ViVVJMJiB1cmwpCiAgICAgbV9wcml2YXRlLT5tX3Jlc291
cmNlUmVzcG9uc2UtPnNldFVSTCh1cmwpOwogfQogCit1bnNpZ25lZCBXZWJVUkxSZXNwb25zZTo6
Y29ubmVjdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tX3Jlc291cmNl
UmVzcG9uc2UtPmNvbm5lY3Rpb25JRCgpOworfQorCit2b2lkIFdlYlVSTFJlc3BvbnNlOjpzZXRD
b25uZWN0aW9uSUQodW5zaWduZWQgY29ubmVjdGlvbklEKQoreworICAgIG1fcHJpdmF0ZS0+bV9y
ZXNvdXJjZVJlc3BvbnNlLT5zZXRDb25uZWN0aW9uSUQoY29ubmVjdGlvbklEKTsKK30KKworV2Vi
VVJMTG9hZFRpbWluZyBXZWJVUkxSZXNwb25zZTo6bG9hZFRpbWluZygpCit7CisgICAgcmV0dXJu
IFdlYlVSTExvYWRUaW1pbmcobV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPnJlc291cmNl
TG9hZFRpbWluZygpKTsKK30KKwordm9pZCBXZWJVUkxSZXNwb25zZTo6c2V0TG9hZFRpbWluZyhj
b25zdCBXZWJVUkxMb2FkVGltaW5nJiB0aW1pbmcpCit7CisgICAgUmVmUHRyPFJlc291cmNlTG9h
ZFRpbWluZz4gbG9hZFRpbWluZyA9IFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPih0aW1p
bmcpOworICAgIG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5zZXRSZXNvdXJjZUxvYWRU
aW1pbmcobG9hZFRpbWluZy5yZWxlYXNlKCkpOworfQorCiBkb3VibGUgV2ViVVJMUmVzcG9uc2U6
OnJlc3BvbnNlVGltZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bV9yZXNvdXJj
ZVJlc3BvbnNlLT5yZXNwb25zZVRpbWUoKTsK
</data>
<flag name="review"
          id="48930"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>