<?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>97347</bug_id>
          
          <creation_ts>2012-09-21 10:26:57 -0700</creation_ts>
          <short_desc>[chromium] Expose image decode and image scale time to WebViewImpl renderingStats</short_desc>
          <delta_ts>2013-04-05 13:01:21 -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>WONTFIX</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>
          
          <blocked>99784</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Nick Carter">nick</reporter>
          <assigned_to name="Nick Carter">nick</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dtu</cc>
    
    <cc>fishd</cc>
    
    <cc>hclam</cc>
    
    <cc>jamesr</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>nduca</cc>
    
    <cc>nick</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725621</commentid>
    <comment_count>0</comment_count>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-09-21 10:26:57 -0700</bug_when>
    <thetext>WebRenderingStats should be extended with fields tracking time spent in the activities of image scaling and image decoding. WebViewImpl::renderingStats should fill in these new fields.

Tactically, it makes sense to build on top of the instrumentation already in place in PlatformInstrumentation.h (e.g. PlatformInstrumentation::willDecodeImage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729933</commentid>
    <comment_count>1</comment_count>
      <attachid>166078</attachid>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-09-27 15:36:49 -0700</bug_when>
    <thetext>Created attachment 166078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729936</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 15:40:17 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729937</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 15:40:38 -0700</bug_when>
    <thetext>Attachment 166078 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/Platform/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
Source/Platform/ChangeLog:16:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 9 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729954</commentid>
    <comment_count>4</comment_count>
      <attachid>166078</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 15:55:57 -0700</bug_when>
    <thetext>Comment on attachment 166078
Patch

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

&gt; Source/WebKit/chromium/public/WebView.h:-117
&gt; -

Please don&apos;t remove these blank lines.  They&apos;re here for a reason.

&gt; Source/WebKit/chromium/public/WebView.h:472
&gt; +    virtual void enableRenderingStatsCollection(bool enable) { }
&gt; +    virtual bool isRenderingStatsCollectionEnabled() { return false; }

Should this be a WebSettings instead?

&gt; Source/WebKit/chromium/public/WebView.h:473
&gt;  

You removed the extra blank line we have between sections here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729982</commentid>
    <comment_count>5</comment_count>
      <attachid>166090</attachid>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-09-27 16:25:32 -0700</bug_when>
    <thetext>Created attachment 166090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730000</commentid>
    <comment_count>6</comment_count>
      <attachid>166090</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 16:44:57 -0700</bug_when>
    <thetext>Comment on attachment 166090
Patch

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

&gt; Source/WebKit/chromium/public/WebView.h:-117
&gt; -

You didn&apos;t address my whitespace comments on the previous patch.  :)

&gt; Source/WebKit/chromium/public/WebView.h:472
&gt; +    virtual void enableRenderingStatsCollection(bool enable) { }
&gt; +    virtual bool isRenderingStatsCollectionEnabled() { return false; }

You also didn&apos;t address my comments regarding these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730417</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-28 02:48:34 -0700</bug_when>
    <thetext>Why do you want this information to be exposed into WebKit? It sounds like TRACE_EVENT is already doing that. Why do we want yet another instrumentation signal for the embedder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731093</commentid>
    <comment_count>8</comment_count>
      <attachid>166338</attachid>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-09-28 17:42:10 -0700</bug_when>
    <thetext>Created attachment 166338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731106</commentid>
    <comment_count>9</comment_count>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-09-28 18:05:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Why do you want this information to be exposed into WebKit? It sounds like TRACE_EVENT is already doing that. Why do we want yet another instrumentation signal for the embedder?

The goal is to get these stats so that they are visible to the gpu benchmarking extension, which is set up for regular, automated benchmarking.

It is true, there is a lot of overlap between the three tracing systems: WebRenderingStats/CCRenderingStats, TRACE_EVENT, and the inspector tracing. I think that criticism is valid, but is it applicable to this patch?

If you see an better way to use existing collectors, or to route the collected data to GpuBenchmarkingWrapper::GetRenderingStats, please let me know. TRACE_EVENT seems to work globally, and doesn&apos;t credit things back to a particular page. The Inspector framework is strongly tied to the idea of the inspector UI; while I&apos;ve reused a low level part of that (PlatformInstrumentation), I did consider hooking into the InspectorController somehow -- that would have required redefining things so that you could have an active InstrumentingAgent with no inspector front-ends running. That means changing an assumption that seemed pretty baked-in to the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731138</commentid>
    <comment_count>10</comment_count>
      <attachid>166350</attachid>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-09-28 19:18:40 -0700</bug_when>
    <thetext>Created attachment 166350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731199</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-29 07:54:11 -0700</bug_when>
    <thetext>Automated benchmarking should be done using remote debugging protocol. It works for all platforms via web sockets, it is exposed via the chrome.debugger api in chrome. You can already get that information there. Inspector uses client-server approach and there are numerous headless clients. Are you in sync with Nat?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731203</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-29 08:00:39 -0700</bug_when>
    <thetext>Before filing subsequent patches, could you explain intended mode of operation in greater detail? I think that existing model with TRACE_EVENT and inspector instrumentation introduces a lot of confusion already. I&apos;d much rather invest into fixing it than introduce yet another reporting channel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731774</commentid>
    <comment_count>13</comment_count>
    <who name="Nick Carter">nick</who>
    <bug_when>2012-10-01 10:14:43 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Before filing subsequent patches, could you explain intended mode of operation in greater detail? I think that existing model with TRACE_EVENT and inspector instrumentation introduces a lot of confusion already. I&apos;d much rather invest into fixing it than introduce yet another reporting channel.

I don&apos;t see that I&apos;m adding a new &quot;mode of operation&quot; at all, so it&apos;s tough for me to answer your question. I see this patch as extending the existing renderingStats(WebRenderingStats&amp;) mode of operation. Are you saying that renderingStats() should not exist?

(In reply to comment #11)
&gt; Automated benchmarking should be done using remote debugging protocol. It works for all platforms via web sockets, it is exposed via the chrome.debugger api in chrome. You can already get that information there. Inspector uses client-server approach and there are numerous headless clients. Are you in sync with Nat?

Yes, Nat requested this patch. I&apos;ve asked him to chime in here. Meanwhile, I&apos;ll have a look at your suggestion of using chrome.debugger from the gpu benchmarking extension to get these and other stats. If it does work, and the instrumentation overhead is acceptable, it sounds great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732023</commentid>
    <comment_count>14</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-10-01 14:55:32 -0700</bug_when>
    <thetext>The correct architectural way to get performance information up to a benchmark is through the devtools api, I agree.

The thing that bugs me is enabling the entire tracing system just to get the time spent in image decoding from the test start to test finish. I know timeline is low-ish overhead, but in this case, it feels like the most efficient thing to do for a benchmark is to have an agent that tracks this time and just let the test retrieve the totals after the fact.

Have you guys ever thought about a Counters agent? E.g. &quot;Counters.enable&quot;, &quot;Counters.get&quot;? Would be useful for exposing a lot of stuff that we currently expose with a backdoor, e.g. heap size, gpu memory space, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746215</commentid>
    <comment_count>15</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-10-19 04:42:09 -0700</bug_when>
    <thetext>&gt; Have you guys ever thought about a Counters agent? E.g. &quot;Counters.enable&quot;, &quot;Counters.get&quot;? Would be useful for exposing a lot of stuff that we currently expose with a backdoor, e.g. heap size, gpu memory space, etc.

Sorry, thread got lost in the email. Yes, we were. We&apos;d like to have generic counters / histograms infrastructure. I think Jochen wanted it for his page cyclers as well. It is just that we don&apos;t have it scheduled for implementation yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870010</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-04-05 13:01:21 -0700</bug_when>
    <thetext>Chromium and V8 have left the building. Won&apos;t fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166078</attachid>
            <date>2012-09-27 15:36:49 -0700</date>
            <delta_ts>2012-09-27 16:25:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97347-20120927153606.patch</filename>
            <type>text/plain</type>
            <size>24787</size>
            <attacher name="Nick Carter">nick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzMzg1M2Q2MGRmZmNl
NDVlYjljNmE2NGQxZWZlYjRmMDI5YTk5ODY2Li5hNGY3ZDZlYmJhMTY0NmM4NjZmZTQ3ZjNlOTIx
NzhlNDQyZGJiYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOS0yNyAg
TmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVu
ZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlUaGUg
Z29hbCBpcyB0byBtYWtlIHRpbWUgc3BlbnQgaW4gaW1hZ2UgZGVjb2RlCisJYW5kIHNjYWxpbmcg
dmlzaWJsZSB0byB0aGUgSlMgYmVuY2htYXJraW5nCisJZnJhbWV3b3JrLiBUaGlzIGNoYW5nZSBw
aWdneWJhY2tzIG9uIHRoZSBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbgorCWNvZGUgYnkgYWRkaW5n
IHN1cHBvcnQgZm9yIGEgc2Vjb25kIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50LAorCXdo
aWNoIGlzIGluc3RhbGxlZCBhdCBXZWJWaWV3SW1wbDo6cGFpbnQgdGltZS4KKwkKKwlUaGVyZSBk
b24ndCBzZWVtIHRvIGJlIGFueSB0ZXN0cyB0aGF0IGV4ZXJjaXNlIHRoZQorCWdwdSBiZW5jaG1h
cmtpbmcgZnVuY3Rpb25hbGl0eSBhcyBmYXIgYXMgSSBjYW4gdGVsbCwKKwlleGNlcHQgZm9yIHRo
ZSBwZXJmb3JtYW5jZSB0ZXN0cyB0aGVtc2VsdmVzLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlcmluZ1N0YXRzLmg6IEFkZCBuZXcgZmllbGRzLgorCiAyMDEyLTA5LTI2ICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTI5NjU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYyOWIyZTJjYTE5NDg4
ZGJjMTc4MTc3MzM2NDhlYTUwYTQ2MmUyMTYuLjllZDJjZjRlZDcxZGQ0YTAxY2I0M2Y2MjNiYTA3
NmQ4NTFjMTAzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wOS0yNyAgTmlj
ayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9z
ZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVuZGVy
aW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEN1cnJlbnRSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y2xlYXJSZWNvcmRTdGFjayk6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6YWRk
Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpyZW1v
dmVDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChQbGF0Zm9ybUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVjb2RlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbnN0cnVtZW50YXRpb246OmRpZERlY29k
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVzaXplSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbnN0cnVtZW50YXRpb246
OmRpZFJlc2l6ZUltYWdlKToKKwogMjAxMi0wOS0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgUGFnZTo6ZnJhbWVDb3VudCgpIHRvIHN1
YmZyYW1lQ291bnQoKSwgYW5kIHJlbGF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
N2ZhMDRhMmUwYjI2ZDM1NmYxMmViM2EzYjE3YWNhYzQ3NTg2NWI3MC4uMzY4NGZlOTU2Mjc1YmI5
ZDhjM2Y5MmQ3ZGM3Zjg1ODRhNDc3Njg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxMi0wOS0yNyAgTmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNj
YWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVuZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6ZW5hYmxlUmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb25FbmFibGVk
KToKKyAgICAgICAgKiBzcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5jcHAuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW5kZXJpbmdTdGF0c0NvbGxlY3Rv
cjo6UmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW5kZXJpbmdT
dGF0c0NvbGxlY3Rvcjo6d2lsbERlY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVuZGVy
aW5nU3RhdHNDb2xsZWN0b3I6OmRpZERlY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVu
ZGVyaW5nU3RhdHNDb2xsZWN0b3I6OndpbGxSZXNpemVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjpkaWRSZXNpemVJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjpyZW5kZXJpbmdTdGF0cyk6CisgICAgICAgICog
c3JjL1JlbmRlcmluZ1N0YXRzQ29sbGVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmNwcC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcik6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmFibGVSZW5kZXJpbmdT
dGF0c0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aXNSZW5kZXJp
bmdTdGF0c0NvbGxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnBhaW50KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzR3B1QmVuY2htYXJraW5nRW5h
YmxlZCk6CisKIDIwMTItMDktMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk2NzMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRz
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgK
aW5kZXggYWJkMTBhMGE5OGUxYWM5M2E1NGQ2OTgwNzA1ZDI2M2M3NmYzMGE4My4uOWZhYjM3MDU2
MDBhYTk0MjY1NmViNDkyZWFkYjY0NjVkNTRmZTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMzYsNiArMzYsOCBA
QCBzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHMgewogICAgIGRvdWJsZSB0b3RhbFJhc3Rlcml6ZVRp
bWVJblNlY29uZHM7CiAgICAgZG91YmxlIHRvdGFsQ29tbWl0VGltZUluU2Vjb25kczsKICAgICBz
aXplX3QgdG90YWxDb21taXRDb3VudDsKKyAgICBkb3VibGUgdG90YWxJbWFnZURlY29kZVRpbWVJ
blNlY29uZHM7CisgICAgZG91YmxlIHRvdGFsSW1hZ2VSZXNpemVUaW1lSW5TZWNvbmRzOwogCiAg
ICAgV2ViUmVuZGVyaW5nU3RhdHMoKQogICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1lcygwKQpA
QCAtNDUsNiArNDcsOCBAQCBzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHMgewogICAgICAgICAsIHRv
dGFsUmFzdGVyaXplVGltZUluU2Vjb25kcygwKQogICAgICAgICAsIHRvdGFsQ29tbWl0VGltZUlu
U2Vjb25kcygwKQogICAgICAgICAsIHRvdGFsQ29tbWl0Q291bnQoMCkKKyAgICAgICAgLCB0b3Rh
bEltYWdlRGVjb2RlVGltZUluU2Vjb25kcygwKQorICAgICAgICAsIHRvdGFsSW1hZ2VSZXNpemVU
aW1lSW5TZWNvbmRzKDApCiAgICAgewogICAgIH0KIApAQCAtNzAsNiArNzQsOCBAQCBzdHJ1Y3Qg
V2ViUmVuZGVyaW5nU3RhdHMgewogICAgICAgICBlbnVtZXJhdG9yLT5hZGREb3VibGUoInRvdGFs
UmFzdGVyaXplVGltZUluU2Vjb25kcyIsIHRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kcyk7CiAg
ICAgICAgIGVudW1lcmF0b3ItPmFkZERvdWJsZSgidG90YWxDb21taXRUaW1lSW5TZWNvbmRzIiwg
dG90YWxDb21taXRUaW1lSW5TZWNvbmRzKTsKICAgICAgICAgZW51bWVyYXRvci0+YWRkSW50KCJ0
b3RhbENvbW1pdENvdW50IiwgdG90YWxDb21taXRDb3VudCk7CisgICAgICAgIGVudW1lcmF0b3It
PmFkZERvdWJsZSgidG90YWxJbWFnZURlY29kZVRpbWVJblNlY29uZHMiLCB0b3RhbEltYWdlRGVj
b2RlVGltZUluU2Vjb25kcyk7CisgICAgICAgIGVudW1lcmF0b3ItPmFkZERvdWJsZSgidG90YWxJ
bWFnZVJlc2l6ZVRpbWVJblNlY29uZHMiLCB0b3RhbEltYWdlUmVzaXplVGltZUluU2Vjb25kcyk7
CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDFhMjI4MTUyOTdlMTkxNDZhMDE0ZTRhYzVmOTVlYzA5
MTMxY2QwOGEuLmQ1MTUyMGJkNTgyY2IxYTBhYTZhMzVjOGM5OGE2YzEzN2Q4OThhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENv
bXBsZXRlQ3VycmVudFJlY29yZChjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgaWYgKCFtX3JlY29y
ZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9wbGF0Zm9ybUluc3RydW1lbnRhdGlv
bkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCA9PSBtX3JlY29yZFN0YWNrLnNpemUoKSkgewog
ICAgICAgICAgICAgbV9wbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudEluc3RhbGxlZEF0U3Rh
Y2tEZXB0aCA9IDA7Ci0gICAgICAgICAgICBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c2V0Q2xp
ZW50KDApOworICAgICAgICAgICAgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnJlbW92ZUNsaWVu
dCh0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwpAQCAt
NTg2LDkgKzU4Niw5IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEN1cnJlbnRS
ZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEsCiAgICAgaWYgKGZyYW1lICYm
IG1fcGFnZUFnZW50KQogICAgICAgICBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJh
bWUpOwogICAgIG1fcmVjb3JkU3RhY2suYXBwZW5kKFRpbWVsaW5lUmVjb3JkRW50cnkocmVjb3Jk
LnJlbGVhc2UoKSwgZGF0YSwgSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpLCB0eXBlLCBmcmFtZUlk
LCBnZXRVc2VkSGVhcFNpemUoKSkpOwotICAgIGlmIChoYXNMb3dMZXZlbERldGFpbHMgJiYgIW1f
cGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnRJbnN0YWxsZWRBdFN0YWNrRGVwdGggJiYgIVBs
YXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpoYXNDbGllbnQoKSkgeworICAgIGlmIChoYXNMb3dMZXZl
bERldGFpbHMgJiYgIW1fcGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnRJbnN0YWxsZWRBdFN0
YWNrRGVwdGgpIHsKICAgICAgICAgbV9wbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudEluc3Rh
bGxlZEF0U3RhY2tEZXB0aCA9IG1fcmVjb3JkU3RhY2suc2l6ZSgpOwotICAgICAgICBQbGF0Zm9y
bUluc3RydW1lbnRhdGlvbjo6c2V0Q2xpZW50KHRoaXMpOworICAgICAgICBQbGF0Zm9ybUluc3Ry
dW1lbnRhdGlvbjo6YWRkQ2xpZW50KHRoaXMpOwogICAgIH0KIH0KIApAQCAtNjA1LDcgKzYwNSw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y2xlYXJSZWNvcmRTdGFjaygpCiB7CiAg
ICAgaWYgKG1fcGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnRJbnN0YWxsZWRBdFN0YWNrRGVw
dGgpIHsKICAgICAgICAgbV9wbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudEluc3RhbGxlZEF0
U3RhY2tEZXB0aCA9IDA7Ci0gICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpzZXRDbGll
bnQoMCk7CisgICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpyZW1vdmVDbGllbnQodGhp
cyk7CiAgICAgfQogICAgIG1fcGVuZGluZ0ZyYW1lUmVjb3JkLmNsZWFyKCk7CiAgICAgbV9yZWNv
cmRTdGFjay5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1JbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1JbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDY3MDRlZGEzZDQ5MTM2NDk3NzE3YmM0Y2E0ODg0
ZDUzMDg1MWQzNWIuLmM4NDgyNDM4MmU2OTBjN2QwZDE3YWEzMmI4ZTQzOGQ3YzhlMTYxOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTM0LDE1ICszNCwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsYXRm
b3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6bV9jbGll
bnQ7CitQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCogUGxhdGZvcm1JbnN0cnVtZW50YXRp
b246OnNfY2xpZW50c1ttYXhOdW1iZXJPZkNsaWVudHNdID0geyAwIH07CitpbnQgUGxhdGZvcm1J
bnN0cnVtZW50YXRpb246OnNfbnVtYmVyT2ZDbGllbnRzID0gMDsKIAogUGxhdGZvcm1JbnN0cnVt
ZW50YXRpb25DbGllbnQ6On5QbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCgpCiB7CiB9CiAK
LXZvaWQgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnNldENsaWVudChQbGF0Zm9ybUluc3RydW1l
bnRhdGlvbkNsaWVudCogY2xpZW50KQordm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6YWRk
Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgbV9j
bGllbnQgPSBjbGllbnQ7CisgICAgaWYgKHNfbnVtYmVyT2ZDbGllbnRzID09IG1heE51bWJlck9m
Q2xpZW50cykKKyAgICAgICAgcmV0dXJuOworICAgIHNfY2xpZW50c1tzX251bWJlck9mQ2xpZW50
cysrXSA9IGNsaWVudDsKIH0KIAordm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6cmVtb3Zl
Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzX251bWJlck9mQ2xpZW50czsgKytpKSB7CisgICAgICAgIGlmIChz
X2NsaWVudHNbaV0gPT0gY2xpZW50KSB7CisgICAgICAgICAgICBzX2NsaWVudHNbaV0gPSBzX2Ns
aWVudHNbLS1zX251bWJlck9mQ2xpZW50c107CisgICAgICAgICAgICBzX2NsaWVudHNbc19udW1i
ZXJPZkNsaWVudHNdID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
IH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMWY5NTU3N2U2ZWMxMDQ2ZjM5ZDlk
NzFmMGVhMWRlNGE2ZmY4YzUwYi4uZGQyNWU4Y2U4Yjc4ZDcwODBhNTRjNjZjZmRiMGY3ZmVhYzBj
NWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1l
bnRhdGlvbi5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKIAogY2xhc3MgUGxhdGZvcm1JbnN0
cnVtZW50YXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHNldENsaWVudChQbGF0Zm9y
bUluc3RydW1lbnRhdGlvbkNsaWVudCopOwotICAgIHN0YXRpYyBib29sIGhhc0NsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CisgICAgc3RhdGljIHZvaWQgYWRkQ2xpZW50KFBsYXRmb3JtSW5z
dHJ1bWVudGF0aW9uQ2xpZW50Kik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlQ2xpZW50KFBsYXRm
b3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50Kik7CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsRGVjb2Rl
SW1hZ2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIGRpZERlY29k
ZUltYWdlKCk7CkBAIC02MCwxMCArNjAsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlc2l6ZUltYWdlKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFBsYXRmb3JtSW5zdHJ1bWVu
dGF0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICAvLyBUaGVyZSBhcmUgcHJlc2VudGx5IHR3byBj
bGllbnRzLCBhbmQgdGhleSBkb24ndCBpbnN0YWxsIHRoZW1zZWx2ZXMgbXVsdGlwbGUgdGltZXMu
CisgICAgc3RhdGljIGNvbnN0IGludCBtYXhOdW1iZXJPZkNsaWVudHMgPSAyOworICAgIHN0YXRp
YyBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCogc19jbGllbnRzW21heE51bWJlck9mQ2xp
ZW50c107CisgICAgc3RhdGljIGludCBzX251bWJlck9mQ2xpZW50czsKIH07CiAKLSNkZWZpbmUg
RkFTVF9SRVRVUk5fSUZfTk9fQ0xJRU5UKCkgaWYgKCFtX2NsaWVudCkgcmV0dXJuOworI2RlZmlu
ZSBGQVNUX1JFVFVSTl9JRl9OT19DTElFTlQoKSBpZiAoIXNfbnVtYmVyT2ZDbGllbnRzKSByZXR1
cm47CiAKIGlubGluZSB2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVjb2RlSW1h
Z2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpCiB7CkBAIC03MSw3ICs3NCw4IEBAIGlubGluZSB2
b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVjb2RlSW1hZ2UoY29uc3QgU3RyaW5n
JiBpbWFnZVR5cGUpCiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4xKCJ3ZWJraXQiLCAiSW1hZ2UgRGVj
b2RlIiwgImltYWdlVHlwZSIsIFRSQUNFX1NUUl9DT1BZKGltYWdlVHlwZS5hc2NpaSgpLmRhdGEo
KSkpOwogI2VuZGlmCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fQ0xJRU5UKCk7Ci0gICAgbV9jbGll
bnQtPndpbGxEZWNvZGVJbWFnZShpbWFnZVR5cGUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c19udW1iZXJPZkNsaWVudHM7ICsraSkKKyAgICAgICAgc19jbGllbnRzW2ldLT53aWxsRGVjb2Rl
SW1hZ2UoaW1hZ2VUeXBlKTsKIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVtZW50YXRp
b246OmRpZERlY29kZUltYWdlKCkKQEAgLTgwLDcgKzg0LDggQEAgaW5saW5lIHZvaWQgUGxhdGZv
cm1JbnN0cnVtZW50YXRpb246OmRpZERlY29kZUltYWdlKCkKICAgICBUUkFDRV9FVkVOVF9FTkQw
KCJ3ZWJraXQiLCAiSW1hZ2UgRGVjb2RlIik7CiAjZW5kaWYKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19DTElFTlQoKTsKLSAgICBtX2NsaWVudC0+ZGlkRGVjb2RlSW1hZ2UoKTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNfbnVtYmVyT2ZDbGllbnRzOyArK2kpCisgICAgICAgIHNfY2xpZW50c1tp
XS0+ZGlkRGVjb2RlSW1hZ2UoKTsKIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVtZW50
YXRpb246OndpbGxSZXNpemVJbWFnZShib29sIHNob3VsZENhY2hlKQpAQCAtODksNyArOTQsOCBA
QCBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6d2lsbFJlc2l6ZUltYWdlKGJv
b2wgc2hvdWxkQ2FjaGUpCiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4xKCJ3ZWJraXQiLCAiSW1hZ2Ug
UmVzaXplIiwgImNhY2hlZCIsIHNob3VsZENhY2hlKTsKICNlbmRpZgogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0NMSUVOVCgpOwotICAgIG1fY2xpZW50LT53aWxsUmVzaXplSW1hZ2Uoc2hvdWxkQ2Fj
aGUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc19udW1iZXJPZkNsaWVudHM7ICsraSkKKyAg
ICAgICAgc19jbGllbnRzW2ldLT53aWxsUmVzaXplSW1hZ2Uoc2hvdWxkQ2FjaGUpOwogfQogCiBp
bmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6ZGlkUmVzaXplSW1hZ2UoKQpAQCAt
OTgsNyArMTA0LDggQEAgaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OmRpZFJl
c2l6ZUltYWdlKCkKICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ3ZWJraXQiLCAiSW1hZ2UgUmVzaXpl
Iik7CiAjZW5kaWYKICAgICBGQVNUX1JFVFVSTl9JRl9OT19DTElFTlQoKTsKLSAgICBtX2NsaWVu
dC0+ZGlkUmVzaXplSW1hZ2UoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNfbnVtYmVyT2ZD
bGllbnRzOyArK2kpCisgICAgICAgIHNfY2xpZW50c1tpXS0+ZGlkUmVzaXplSW1hZ2UoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IGY0ZjRjOWVjZTMyYjYzZGY5ZWRhMDQzYmZmNTZlOTc5MjczZDg1ODIuLmRkMjM0MDU4NjY1NWUy
YTVkNTY1MWQyYWU2ZDNjMDE4YjNlODk2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
QEAgLTQ0OSw2ICs0NDksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1BsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvU2Ny
b2xsYmFyR3JvdXAuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0
b3J5LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYjc3
OGYyOTZhNGUzMmIxY2NjY2IzMzcxNzY0MTY0ZjkyMGUzZDJmOS4uMzRmNWQ0ZmI2MDVlMWM0MzVl
YTQ5NGUwZjVlYjkwZjlkZTFmODg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXcuaApAQCAtMTE0LDcgKzExNCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U3BlbGxDaGVja0NsaWVudChXZWJTcGVsbENoZWNrQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRUZXh0RmllbGREZWNvcmF0b3JDbGllbnQoV2ViVGV4dEZpZWxkRGVjb3JhdG9yQ2xp
ZW50KikgPSAwOwogCi0KICAgICAvLyBPcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFRoZSByZXR1cm5l
ZCBwb2ludGVyIGlzIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIFdlYlZpZXcuCkBAIC0y
ODgsNyArMjg3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU2l6ZSBmaXhlZExheW91dFNp
emUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShjb25z
dCBXZWJTaXplJikgPSAwOwogCi0KICAgICAvLyBBdXRvLVJlc2l6ZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gSW4g
YXV0by1yZXNpemUgbW9kZSwgdGhlIHZpZXcgaXMgYXV0b21hdGljYWxseSBhZGp1c3RlZCB0byBm
aXQgdGhlIGh0bWwKQEAgLTQ3MCw2ICs0NjgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQmVuY2htYXJr
aW5nIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJrU3Vw
cG9ydCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlUmVuZGVyaW5nU3Rh
dHNDb2xsZWN0aW9uKGJvb2wgZW5hYmxlKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJp
bmdTdGF0c0NvbGxlY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFZp
c2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVu
ZGVyaW5nU3RhdHNDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVu
ZGVyaW5nU3RhdHNDb2xsZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ODM1MTFkZWNlMDg1OTc0ZDNl
OGI2NjhhNjQyZDA4YzlkMTNmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5jcHAKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5oIgor
CisjaW5jbHVkZSA8cHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmg+CisjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBSZW5kZXJpbmdTdGF0c0Nv
bGxlY3RvcgorUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9y
KCkKKyAgICA6IG1fc3RhcnRUaW1lKDApCisgICAgLCBtX3RvdGFsRGVjb2RlVGltZUluU2Vjb25k
cygwKQorICAgICwgbV90b3RhbFJlc2l6ZVRpbWVJblNlY29uZHMoMCkKK3sKK30KKwordm9pZCBS
ZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6d2lsbERlY29kZUltYWdlKGNvbnN0IFN0cmluZyYgaW1h
Z2VUeXBlKQoreworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CisgICAgbV90b3RhbERlY29kZVRpbWVJblNlY29uZHMgKz0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKK30KKwordm9pZCBSZW5kZXJpbmdTdGF0c0NvbGxl
Y3Rvcjo6ZGlkRGVjb2RlSW1hZ2UoKQoreworICAgIG1fdG90YWxEZWNvZGVUaW1lSW5TZWNvbmRz
ICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7Cit9CisKK3Zv
aWQgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OndpbGxSZXNpemVJbWFnZShib29sIHNob3VsZENh
Y2hlKQoreworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
Cit9CisKK3ZvaWQgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OmRpZFJlc2l6ZUltYWdlKCkKK3sK
KyAgICBtX3RvdGFsUmVzaXplVGltZUluU2Vjb25kcyArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSAtIG1fc3RhcnRUaW1lOworfQorCit2b2lkIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9y
OjpyZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAg
c3RhdHMudG90YWxJbWFnZURlY29kZVRpbWVJblNlY29uZHMgPSBtX3RvdGFsRGVjb2RlVGltZUlu
U2Vjb25kczsKKyAgICBzdGF0cy50b3RhbEltYWdlUmVzaXplVGltZUluU2Vjb25kcyA9IG1fdG90
YWxSZXNpemVUaW1lSW5TZWNvbmRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1JlbmRlcmluZ1N0YXRzQ29sbGVjdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI2MzdmZDU5ZWQzNGM2MTkxMDAxY2M4YmI1MmRkMmU3NDg2Nzg3ZTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0
c0NvbGxlY3Rvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlcmluZ1N0YXRzQ29sbGVj
dG9yX2gKKyNkZWZpbmUgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3JfaAorCisjaW5jbHVkZSAiUGxh
dGZvcm1JbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CitzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7CisKK2NsYXNz
IFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW5zdHJ1
bWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcigp
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5
cGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZWNvZGVJbWFnZSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVzaXplSW1hZ2UoYm9vbCBzaG91bGRDYWNoZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZUltYWdlKCkgT1ZFUlJJREU7CisKKyAg
ICB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Q7Citwcml2YXRl
OgorICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICBkb3VibGUgbV90b3RhbERlY29kZVRpbWVJ
blNlY29uZHM7CisgICAgZG91YmxlIG1fdG90YWxSZXNpemVUaW1lSW5TZWNvbmRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDI2MWY3YzM1N2U5YTc4YjkxZjJhN2QzYWJmZDk0ZGIy
ZTI4YTk4YTUuLmY5M2ViYTYxZjM2ZDM0OTJhNzc0NDY3NDI1Mjk0MjIyNmNiMTI5ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE1OCw2ICsxNTgs
NyBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgpAQCAtNDA4LDYgKzQwOSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2RyYWdTY3JvbGxUaW1lcihhZG9wdFB0cihuZXcgRHJh
Z1Njcm9sbFRpbWVyKSkKICAgICAsIG1faXNDYW5jZWxpbmdGdWxsU2NyZWVuKGZhbHNlKQogICAg
ICwgbV9iZW5jaG1hcmtTdXBwb3J0KHRoaXMpCisgICAgLCBtX2lzUmVuZGVyaW5nU3RhdHNDb2xs
ZWN0aW9uRW5hYmxlZChmYWxzZSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgLCBtX3Jvb3RMYXllcigwKQogICAgICwgbV9yb290R3JhcGhpY3NMYXllcigwKQpAQCAtODEx
LDYgKzgxMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJiBzdGF0cykgY29uc3QKIHsKICAgICBpZiAobV9sYXllclRyZWVWaWV3KQogICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKKyAgICBtX3BsYXRmb3Jt
U3RhdHMucmVuZGVyaW5nU3RhdHMoc3RhdHMpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFy
dFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wg
dXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzKQpAQCAt
ODM2LDYgKzgzOSwxNyBAQCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogV2ViVmlld0ltcGw6OmJl
bmNobWFya1N1cHBvcnQoKQogICAgIHJldHVybiAmbV9iZW5jaG1hcmtTdXBwb3J0OwogfQogCisK
K3ZvaWQgV2ViVmlld0ltcGw6OmVuYWJsZVJlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbihib29sIGVu
YWJsZSkKK3sKKyAgICBtX2lzUmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJs
ZTsKK30KKworYm9vbCBXZWJWaWV3SW1wbDo6aXNSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb25FbmFi
bGVkKCkKK3sKKyAgICByZXR1cm4gbV9pc1JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQ7
Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVCgoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50
OjpSYXdLZXlEb3duKQpAQCAtMTc3MSw2ICsxNzg1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6cGFp
bnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFBhaW50T3B0aW9ucyBv
cHQKICAgICAvLyBJZGVhbGx5LCBBbmRyb2lkIHdvdWxkIGFsd2F5cyB1c2UgUmVhZGJhY2tGcm9t
Q29tcG9zaXRvcklmQXZhaWxhYmxlIGFzIHdlbGwuCiAgICAgQVNTRVJUKG9wdGlvbiA9PSBSZWFk
YmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUpOwogI2VuZGlmCisgICAgaWYgKGlzUmVuZGVy
aW5nU3RhdHNDb2xsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBQbGF0Zm9ybUluc3RydW1lbnRh
dGlvbjo6YWRkQ2xpZW50KCZtX3BsYXRmb3JtU3RhdHMpOwogCiAgICAgaWYgKG9wdGlvbiA9PSBS
ZWFkYmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkpIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0xNzg3
LDcgKzE4MDMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywg
Y29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgICAgIFBhaW50QmVoYXZp
b3Igb2xkUGFpbnRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICAgICAgaWYg
KGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
b3B0aW9uID09IEZvcmNlU29mdHdhcmVSZW5kZXJpbmdBbmRJZ25vcmVHUFVSZXNpZGVudENvbnRl
bnQpOyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG9wdGlvbiA9PSBGb3JjZVNvZnR3
YXJlUmVuZGVyaW5nQW5kSWdub3JlR1BVUmVzaWRlbnRDb250ZW50KTsKICAgICAgICAgICAgIHZp
ZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogICAgICAgICB9CiAKQEAgLTE3OTksMTAgKzE4MTUsMTMg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJl
Y3QmIHJlY3QsIFBhaW50T3B0aW9ucyBvcHQKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5oaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5Tb2Z0d2FyZVBhaW50TWVn
YXBpeFBlclNlY29uZCIsIHBpeGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKIAog
ICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChvcHRpb24gPT0gRm9yY2VTb2Z0d2FyZVJlbmRlcmluZ0FuZElnbm9yZUdQVVJl
c2lkZW50Q29udGVudCk7ICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQob3B0aW9uID09
IEZvcmNlU29mdHdhcmVSZW5kZXJpbmdBbmRJZ25vcmVHUFVSZXNpZGVudENvbnRlbnQpOwogICAg
ICAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKICAgICAg
ICAgfQogICAgIH0KKworICAgIGlmIChpc1JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnJlbW92ZUNsaWVudCgmbV9wbGF0
Zm9ybVN0YXRzKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDRjMWE5NzRhMDVkZjQyNjYw
ZjlkNzM5OTM3NDgyNDJmMGE2NGIzZDYuLmU5MzdjMmQ5MjBmYjNmNTY1MmM1OTZjYmY3Yjg2NTg1
NTQ3ZGY0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlBhZ2VQb3B1cERyaXZlci5oIgogI2luY2x1ZGUgIlBh
Z2VXaWRnZXREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
LmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUg
IldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKQEAgLTMwNiw2ICszMDcsOCBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCBXZWJWaWV3
QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJrU3VwcG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBl
bmFibGVSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb24oYm9vbCBlbmFibGUpOworICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoKTsKIAogICAgIC8vIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKTsKQEAg
LTY0OCw2ICs2NTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhbGxvY2F0ZVJlbmRlcmVyKCk7
CiAgICAgdm9pZCB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwogI2VuZGlmCisgICAgYm9vbCBp
c0dwdUJlbmNobWFya2luZ0VuYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBFTkFCTEUo
R0VTVFVSRV9FVkVOVFMpCiAgICAgLy8gUmV0dXJucyB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBi
bG9jayB0eXBlIG5vZGUgdG91Y2hlZCBieSB0aGUgV2ViUmVjdC4KQEAgLTgxOCw2ICs4MjIsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0NhbmNlbGluZ0Z1bGxTY3JlZW47CiAKICAgICBXZWJW
aWV3QmVuY2htYXJrU3VwcG9ydEltcGwgbV9iZW5jaG1hcmtTdXBwb3J0OworICAgIGJvb2wgbV9p
c1JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQ7CisgICAgUmVuZGVyaW5nU3RhdHNDb2xs
ZWN0b3IgbV9wbGF0Zm9ybVN0YXRzOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIFdlYkNvcmU6OkludFJlY3QgbV9yb290TGF5ZXJTY3JvbGxEYW1hZ2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166090</attachid>
            <date>2012-09-27 16:25:32 -0700</date>
            <delta_ts>2012-09-28 17:42:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97347-20120927162450.patch</filename>
            <type>text/plain</type>
            <size>23271</size>
            <attacher name="Nick Carter">nick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzMzg1M2Q2MGRmZmNl
NDVlYjljNmE2NGQxZWZlYjRmMDI5YTk5ODY2Li4zNTg0MmU1NGJkNmM4MTI1ODVjYTFhMjgwNTMx
NjVjYjkyZDljOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNyAg
TmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVu
ZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBzdGF0aXN0aWNzIHRvIFdlYlJlbmRlcmluZ1N0YXRzLgorCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmg6IEFkZCBuZXcgZmllbGRzLgorCiAy
MDEyLTA5LTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5NjU0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYy
OWIyZTJjYTE5NDg4ZGJjMTc4MTc3MzM2NDhlYTUwYTQ2MmUyMTYuLjAxNGRkOWVlYjM3NmRiZTNk
ZDFlM2FmNTY2YTBjOGYyZGVlMTViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0wOS0yNyAgTmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEV4cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmll
d0ltcGwgcmVuZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgUGxhdGZvcm1JbnN0cnVtZW50YXRpb24gdG8gaGF2ZSB0d28gc2lt
dWx0YW5lb3VzIGNsaWVudHMuCisgICAgICAgIFVzZSBhbiBhcnJheSBoZXJlIHJhdGhlciB0aGFu
IGEgVmVjdG9yIHRvIGF2b2lkIHN0YXRpYyBpbml0aWFsaXphdGlvbgorICAgICAgICBjb3N0LiBC
ZWNhdXNlIHRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGNsaWVudHMgaXMgbGltaXRlZCB0byAy
LAorICAgICAgICBhIHN0YXRpY2FsbHkgc2l6ZWQgYXJyYXkgc3VmZmljZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBBcyBmYXIgYXMgSSBjYW4gdGVsbCB0aGlzIGNvZGUgaGFzIG5vIHRlc3Rz
PworCiAyMDEyLTA5LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbmFtZSBQYWdlOjpmcmFtZUNvdW50KCkgdG8gc3ViZnJhbWVDb3VudCgpLCBh
bmQgcmVsYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3ZmEwNGEyZTBiMjZkMzU2
ZjEyZWIzYTNiMTdhY2FjNDc1ODY1YjcwLi42Njg4Mjk5MmU3NjJmOTU5YjY5OTAzYzllYjY1NzIz
M2NhZjMwYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisy
MDEyLTA5LTI3ICBOaWNrIENhcnRlciAgPG5pY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gRXhwb3NlIGltYWdlIGRlY29kZSBhbmQgaW1hZ2Ugc2NhbGUgdGltZSB0byBXZWJW
aWV3SW1wbCByZW5kZXJpbmdTdGF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTczNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDb2xsZWN0IFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uIHN0YXRzIGR1cmlu
ZyBwYWludCwgYW5kCisgICAgICAgIGV4cG9ydCB0aGVtIGludG8gdGhlIFdlYlJlbmRlcmluZ1N0
YXRzLgorCisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDogQWRkIHN1cHBvcnQgZm9yIGVuYWJs
aW5nIGNvbGxlY3Rpb24gb2Ygc3RhdHMuCisgICAgICAgICogc3JjL1JlbmRlcmluZ1N0YXRzQ29s
bGVjdG9yLmNwcDogQ29sbGVjdHMgUGxhdGZvcm1JbnN0cnVtZW50YXRpb24KKyAgICAgICAgICBz
dGF0cyBvbiBiZWhhbGYgb2YgYSBXZWJWaWV3LCBhbmQgZXhwb3J0cyB0aGVtIHRvIGEgCisgICAg
ICAgICAgV2ViUmVuZGVyaW5nU3RhdHMgb2JqZWN0LgorICAgICAgICAqIHNyYy9SZW5kZXJpbmdT
dGF0c0NvbGxlY3Rvci5oOiAKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOiBJbml0aWFsaXplIG5ldyBtZW1i
ZXJzLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMpOiBIb29r
IGludG8gUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnBhaW50KTogSW5zdGFsbCB0aGUgV2ViVmlldydzIAorICAgICAgICAgIFBsYXRmb3JtSW5z
dHJ1bWVudGF0aW9uQ2xpZW50IGR1cmluZyBwYWludC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKTogTmV3IG1lbWJlcnMgdG8gc3VwcG9ydCBlbmFi
bGUvZGlzYWJsZSBvZiBzdGF0cworICAgICAgICBjb2xsZWN0aW9uLCBhbmQgdG8gaG9sZCBzdGF0
cyB3aGVuIGNvbGxlY3Rpb24gaXMgZW5hYmxlZC4KKwogMjAxMi0wOS0yNiAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEyOTY3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViUmVuZGVyaW5nU3RhdHMuaAppbmRleCBhYmQxMGEwYTk4ZTFhYzkzYTU0ZDY5ODA3MDVk
MjYzYzc2ZjMwYTgzLi45ZmFiMzcwNTYwMGFhOTQyNjU2ZWI0OTJlYWRiNjQ2NWQ1NGZlNDg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0
YXRzLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdT
dGF0cy5oCkBAIC0zNiw2ICszNiw4IEBAIHN0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7CiAgICAg
ZG91YmxlIHRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kczsKICAgICBkb3VibGUgdG90YWxDb21t
aXRUaW1lSW5TZWNvbmRzOwogICAgIHNpemVfdCB0b3RhbENvbW1pdENvdW50OworICAgIGRvdWJs
ZSB0b3RhbEltYWdlRGVjb2RlVGltZUluU2Vjb25kczsKKyAgICBkb3VibGUgdG90YWxJbWFnZVJl
c2l6ZVRpbWVJblNlY29uZHM7CiAKICAgICBXZWJSZW5kZXJpbmdTdGF0cygpCiAgICAgICAgIDog
bnVtQW5pbWF0aW9uRnJhbWVzKDApCkBAIC00NSw2ICs0Nyw4IEBAIHN0cnVjdCBXZWJSZW5kZXJp
bmdTdGF0cyB7CiAgICAgICAgICwgdG90YWxSYXN0ZXJpemVUaW1lSW5TZWNvbmRzKDApCiAgICAg
ICAgICwgdG90YWxDb21taXRUaW1lSW5TZWNvbmRzKDApCiAgICAgICAgICwgdG90YWxDb21taXRD
b3VudCgwKQorICAgICAgICAsIHRvdGFsSW1hZ2VEZWNvZGVUaW1lSW5TZWNvbmRzKDApCisgICAg
ICAgICwgdG90YWxJbWFnZVJlc2l6ZVRpbWVJblNlY29uZHMoMCkKICAgICB7CiAgICAgfQogCkBA
IC03MCw2ICs3NCw4IEBAIHN0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7CiAgICAgICAgIGVudW1l
cmF0b3ItPmFkZERvdWJsZSgidG90YWxSYXN0ZXJpemVUaW1lSW5TZWNvbmRzIiwgdG90YWxSYXN0
ZXJpemVUaW1lSW5TZWNvbmRzKTsKICAgICAgICAgZW51bWVyYXRvci0+YWRkRG91YmxlKCJ0b3Rh
bENvbW1pdFRpbWVJblNlY29uZHMiLCB0b3RhbENvbW1pdFRpbWVJblNlY29uZHMpOwogICAgICAg
ICBlbnVtZXJhdG9yLT5hZGRJbnQoInRvdGFsQ29tbWl0Q291bnQiLCB0b3RhbENvbW1pdENvdW50
KTsKKyAgICAgICAgZW51bWVyYXRvci0+YWRkRG91YmxlKCJ0b3RhbEltYWdlRGVjb2RlVGltZUlu
U2Vjb25kcyIsIHRvdGFsSW1hZ2VEZWNvZGVUaW1lSW5TZWNvbmRzKTsKKyAgICAgICAgZW51bWVy
YXRvci0+YWRkRG91YmxlKCJ0b3RhbEltYWdlUmVzaXplVGltZUluU2Vjb25kcyIsIHRvdGFsSW1h
Z2VSZXNpemVUaW1lSW5TZWNvbmRzKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMWEyMjgxNTI5
N2UxOTE0NmEwMTRlNGFjNWY5NWVjMDkxMzFjZDA4YS4uZDUxNTIwYmQ1ODJjYjFhMGFhNmEzNWM4
Yzk4YTZjMTM3ZDg5OGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICBpZiAoIW1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICht
X3BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID09IG1f
cmVjb3JkU3RhY2suc2l6ZSgpKSB7CiAgICAgICAgICAgICBtX3BsYXRmb3JtSW5zdHJ1bWVudGF0
aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID0gMDsKLSAgICAgICAgICAgIFBsYXRmb3Jt
SW5zdHJ1bWVudGF0aW9uOjpzZXRDbGllbnQoMCk7CisgICAgICAgICAgICBQbGF0Zm9ybUluc3Ry
dW1lbnRhdGlvbjo6cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgcHVz
aEdDRXZlbnRSZWNvcmRzKCk7CkBAIC01ODYsOSArNTg2LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGF0YSwKICAgICBpZiAoZnJhbWUgJiYgbV9wYWdlQWdlbnQpCiAgICAgICAgIGZyYW1lSWQgPSBt
X3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CiAgICAgbV9yZWNvcmRTdGFjay5hcHBlbmQoVGlt
ZWxpbmVSZWNvcmRFbnRyeShyZWNvcmQucmVsZWFzZSgpLCBkYXRhLCBJbnNwZWN0b3JBcnJheTo6
Y3JlYXRlKCksIHR5cGUsIGZyYW1lSWQsIGdldFVzZWRIZWFwU2l6ZSgpKSk7Ci0gICAgaWYgKGhh
c0xvd0xldmVsRGV0YWlscyAmJiAhbV9wbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudEluc3Rh
bGxlZEF0U3RhY2tEZXB0aCAmJiAhUGxhdGZvcm1JbnN0cnVtZW50YXRpb246Omhhc0NsaWVudCgp
KSB7CisgICAgaWYgKGhhc0xvd0xldmVsRGV0YWlscyAmJiAhbV9wbGF0Zm9ybUluc3RydW1lbnRh
dGlvbkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCkgewogICAgICAgICBtX3BsYXRmb3JtSW5z
dHJ1bWVudGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID0gbV9yZWNvcmRTdGFjay5z
aXplKCk7Ci0gICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpzZXRDbGllbnQodGhpcyk7
CisgICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjphZGRDbGllbnQodGhpcyk7CiAgICAg
fQogfQogCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpj
bGVhclJlY29yZFN0YWNrKCkKIHsKICAgICBpZiAobV9wbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNs
aWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCkgewogICAgICAgICBtX3BsYXRmb3JtSW5zdHJ1bWVu
dGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID0gMDsKLSAgICAgICAgUGxhdGZvcm1J
bnN0cnVtZW50YXRpb246OnNldENsaWVudCgwKTsKKyAgICAgICAgUGxhdGZvcm1JbnN0cnVtZW50
YXRpb246OnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAgICAgbV9wZW5kaW5nRnJhbWVSZWNv
cmQuY2xlYXIoKTsKICAgICBtX3JlY29yZFN0YWNrLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNjcwNGVk
YTNkNDkxMzY0OTc3MTdiYzRjYTQ4ODRkNTMwODUxZDM1Yi4uYzg0ODI0MzgyZTY5MGM3ZDBkMTdh
YTMyYjhlNDM4ZDdjOGUxNjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1JbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzQsMTUgKzM0LDI5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQqIFBsYXRmb3Jt
SW5zdHJ1bWVudGF0aW9uOjptX2NsaWVudDsKK1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50
KiBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c19jbGllbnRzW21heE51bWJlck9mQ2xpZW50c10g
PSB7IDAgfTsKK2ludCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c19udW1iZXJPZkNsaWVudHMg
PSAwOwogCiBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudDo6flBsYXRmb3JtSW5zdHJ1bWVu
dGF0aW9uQ2xpZW50KCkKIHsKIH0KIAotdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c2V0
Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCit2b2lkIFBsYXRm
b3JtSW5zdHJ1bWVudGF0aW9uOjphZGRDbGllbnQoUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGll
bnQqIGNsaWVudCkKIHsKLSAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBpZiAoc19udW1iZXJP
ZkNsaWVudHMgPT0gbWF4TnVtYmVyT2ZDbGllbnRzKQorICAgICAgICByZXR1cm47CisgICAgc19j
bGllbnRzW3NfbnVtYmVyT2ZDbGllbnRzKytdID0gY2xpZW50OwogfQogCit2b2lkIFBsYXRmb3Jt
SW5zdHJ1bWVudGF0aW9uOjpyZW1vdmVDbGllbnQoUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGll
bnQqIGNsaWVudCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNfbnVtYmVyT2ZDbGllbnRz
OyArK2kpIHsKKyAgICAgICAgaWYgKHNfY2xpZW50c1tpXSA9PSBjbGllbnQpIHsKKyAgICAgICAg
ICAgIHNfY2xpZW50c1tpXSA9IHNfY2xpZW50c1stLXNfbnVtYmVyT2ZDbGllbnRzXTsKKyAgICAg
ICAgICAgIHNfY2xpZW50c1tzX251bWJlck9mQ2xpZW50c10gPSAwOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uaAppbmRl
eCAxZjk1NTc3ZTZlYzEwNDZmMzlkOWQ3MWYwZWExZGU0YTZmZjhjNTBiLi5kZDI1ZThjZThiNzhk
NzA4MGE1NGM2NmNmZGIwZjdmZWFjMGM1ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGlj
OgogCiBjbGFzcyBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50Kik7Ci0gICAgc3Rh
dGljIGJvb2wgaGFzQ2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICBzdGF0aWMgdm9p
ZCBhZGRDbGllbnQoUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQqKTsKKyAgICBzdGF0aWMg
dm9pZCByZW1vdmVDbGllbnQoUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQqKTsKIAogICAg
IHN0YXRpYyB2b2lkIHdpbGxEZWNvZGVJbWFnZShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRGVjb2RlSW1hZ2UoKTsKQEAgLTYwLDEwICs2MCwxMyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVzaXplSW1hZ2UoKTsKIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQqIG1fY2xpZW50OworICAgIC8vIFRo
ZXJlIGFyZSBwcmVzZW50bHkgdHdvIGNsaWVudHMsIGFuZCB0aGV5IGRvbid0IGluc3RhbGwgdGhl
bXNlbHZlcyBtdWx0aXBsZSB0aW1lcy4KKyAgICBzdGF0aWMgY29uc3QgaW50IG1heE51bWJlck9m
Q2xpZW50cyA9IDI7CisgICAgc3RhdGljIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBz
X2NsaWVudHNbbWF4TnVtYmVyT2ZDbGllbnRzXTsKKyAgICBzdGF0aWMgaW50IHNfbnVtYmVyT2ZD
bGllbnRzOwogfTsKIAotI2RlZmluZSBGQVNUX1JFVFVSTl9JRl9OT19DTElFTlQoKSBpZiAoIW1f
Y2xpZW50KSByZXR1cm47CisjZGVmaW5lIEZBU1RfUkVUVVJOX0lGX05PX0NMSUVOVCgpIGlmICgh
c19udW1iZXJPZkNsaWVudHMpIHJldHVybjsKIAogaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVt
ZW50YXRpb246OndpbGxEZWNvZGVJbWFnZShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSkKIHsKQEAg
LTcxLDcgKzc0LDggQEAgaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OndpbGxE
ZWNvZGVJbWFnZShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSkKICAgICBUUkFDRV9FVkVOVF9CRUdJ
TjEoIndlYmtpdCIsICJJbWFnZSBEZWNvZGUiLCAiaW1hZ2VUeXBlIiwgVFJBQ0VfU1RSX0NPUFko
aW1hZ2VUeXBlLmFzY2lpKCkuZGF0YSgpKSk7CiAjZW5kaWYKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19DTElFTlQoKTsKLSAgICBtX2NsaWVudC0+d2lsbERlY29kZUltYWdlKGltYWdlVHlwZSk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzX251bWJlck9mQ2xpZW50czsgKytpKQorICAgICAgICBz
X2NsaWVudHNbaV0tPndpbGxEZWNvZGVJbWFnZShpbWFnZVR5cGUpOwogfQogCiBpbmxpbmUgdm9p
ZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6ZGlkRGVjb2RlSW1hZ2UoKQpAQCAtODAsNyArODQs
OCBAQCBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6ZGlkRGVjb2RlSW1hZ2Uo
KQogICAgIFRSQUNFX0VWRU5UX0VORDAoIndlYmtpdCIsICJJbWFnZSBEZWNvZGUiKTsKICNlbmRp
ZgogICAgIEZBU1RfUkVUVVJOX0lGX05PX0NMSUVOVCgpOwotICAgIG1fY2xpZW50LT5kaWREZWNv
ZGVJbWFnZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc19udW1iZXJPZkNsaWVudHM7ICsr
aSkKKyAgICAgICAgc19jbGllbnRzW2ldLT5kaWREZWNvZGVJbWFnZSgpOwogfQogCiBpbmxpbmUg
dm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6d2lsbFJlc2l6ZUltYWdlKGJvb2wgc2hvdWxk
Q2FjaGUpCkBAIC04OSw3ICs5NCw4IEBAIGlubGluZSB2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0
aW9uOjp3aWxsUmVzaXplSW1hZ2UoYm9vbCBzaG91bGRDYWNoZSkKICAgICBUUkFDRV9FVkVOVF9C
RUdJTjEoIndlYmtpdCIsICJJbWFnZSBSZXNpemUiLCAiY2FjaGVkIiwgc2hvdWxkQ2FjaGUpOwog
I2VuZGlmCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fQ0xJRU5UKCk7Ci0gICAgbV9jbGllbnQtPndp
bGxSZXNpemVJbWFnZShzaG91bGRDYWNoZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzX251
bWJlck9mQ2xpZW50czsgKytpKQorICAgICAgICBzX2NsaWVudHNbaV0tPndpbGxSZXNpemVJbWFn
ZShzaG91bGRDYWNoZSk7CiB9CiAKIGlubGluZSB2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9u
OjpkaWRSZXNpemVJbWFnZSgpCkBAIC05OCw3ICsxMDQsOCBAQCBpbmxpbmUgdm9pZCBQbGF0Zm9y
bUluc3RydW1lbnRhdGlvbjo6ZGlkUmVzaXplSW1hZ2UoKQogICAgIFRSQUNFX0VWRU5UX0VORDAo
IndlYmtpdCIsICJJbWFnZSBSZXNpemUiKTsKICNlbmRpZgogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0NMSUVOVCgpOwotICAgIG1fY2xpZW50LT5kaWRSZXNpemVJbWFnZSgpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc19udW1iZXJPZkNsaWVudHM7ICsraSkKKyAgICAgICAgc19jbGllbnRzW2ld
LT5kaWRSZXNpemVJbWFnZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKaW5kZXggZjRmNGM5ZWNlMzJiNjNkZjllZGEwNDNiZmY1NmU5Nzky
NzNkODU4Mi4uZGQyMzQwNTg2NjU1ZTJhNWQ1NjUxZDJhZTZkM2MwMThiM2U4OTYwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNDQ5LDYgKzQ0OSw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1JlbmRlcmluZ1N0
YXRzQ29sbGVjdG9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9SZW5kZXJpbmdTdGF0c0Nv
bGxlY3Rvci5oJywKICAgICAgICAgICAgICAgICAnc3JjL1Njcm9sbGJhckdyb3VwLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaAppbmRleCBiNzc4ZjI5NmE0ZTMyYjFjY2NjYjMzNzE3NjQxNjRmOTIwZTNk
MmY5Li4zNGY1ZDRmYjYwNWUxYzQzNWVhNDk0ZTBmNWViOTBmOWRlMWY4ODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC0xMTQsNyArMTE0LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRTcGVsbENoZWNrQ2xpZW50KFdlYlNwZWxsQ2hlY2tDbGll
bnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZFRleHRGaWVsZERlY29yYXRvckNsaWVudChX
ZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQqKSA9IDA7CiAKLQogICAgIC8vIE9wdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAgICAgLy8gVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHRoZSBsaWZldGlt
ZSBvZiB0aGUgV2ViVmlldy4KQEAgLTI4OCw3ICsyODcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXZWJTaXplIGZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYlNpemUmKSA9IDA7CiAKLQogICAgIC8vIEF1dG8t
UmVzaXplIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKICAgICAvLyBJbiBhdXRvLXJlc2l6ZSBtb2RlLCB0aGUgdmlldyBpcyBhdXRv
bWF0aWNhbGx5IGFkanVzdGVkIHRvIGZpdCB0aGUgaHRtbApAQCAtNDcwLDYgKzQ2OCw4IEBAIHB1
YmxpYzoKICAgICAvLyBCZW5jaG1hcmtpbmcgc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYlZpZXdCZW5jaG1h
cmtTdXBwb3J0KiBiZW5jaG1hcmtTdXBwb3J0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
dm9pZCBlbmFibGVSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb24oYm9vbCBlbmFibGUpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoKSB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgLy8gVmlzaWJpbGl0eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTg4MzUxMWRlY2UwODU5NzRkM2U4YjY2OGE2NDJkMDhjOWQxM2Y2YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1JlbmRlcmluZ1N0YXRzQ29sbGVjdG9y
LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRl
cmluZ1N0YXRzQ29sbGVjdG9yLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVuZGVyaW5nU3Rh
dHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKy8vIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yCitSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6
UmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IoKQorICAgIDogbV9zdGFydFRpbWUoMCkKKyAgICAsIG1f
dG90YWxEZWNvZGVUaW1lSW5TZWNvbmRzKDApCisgICAgLCBtX3RvdGFsUmVzaXplVGltZUluU2Vj
b25kcygwKQoreworfQorCit2b2lkIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjp3aWxsRGVjb2Rl
SW1hZ2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpCit7CisgICAgbV9zdGFydFRpbWUgPSBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX3RvdGFsRGVjb2RlVGltZUluU2Vjb25k
cyArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOworfQorCit2
b2lkIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjpkaWREZWNvZGVJbWFnZSgpCit7CisgICAgbV90
b3RhbERlY29kZVRpbWVJblNlY29uZHMgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
LSBtX3N0YXJ0VGltZTsKK30KKwordm9pZCBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6d2lsbFJl
c2l6ZUltYWdlKGJvb2wgc2hvdWxkQ2FjaGUpCit7CisgICAgbV9zdGFydFRpbWUgPSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK30KKwordm9pZCBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rv
cjo6ZGlkUmVzaXplSW1hZ2UoKQoreworICAgIG1fdG90YWxSZXNpemVUaW1lSW5TZWNvbmRzICs9
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7Cit9CisKK3ZvaWQg
UmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRz
JiBzdGF0cykgY29uc3QKK3sKKyAgICBzdGF0cy50b3RhbEltYWdlRGVjb2RlVGltZUluU2Vjb25k
cyA9IG1fdG90YWxEZWNvZGVUaW1lSW5TZWNvbmRzOworICAgIHN0YXRzLnRvdGFsSW1hZ2VSZXNp
emVUaW1lSW5TZWNvbmRzID0gbV90b3RhbFJlc2l6ZVRpbWVJblNlY29uZHM7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
UmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jl
bmRlcmluZ1N0YXRzQ29sbGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzN2ZkNTllZDM0YzYxOTEwMDFj
YzhiYjUyZGQyZTc0ODY3ODdlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1JlbmRlcmluZ1N0YXRzQ29sbGVjdG9yLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3JfaAorI2RlZmluZSBSZW5kZXJpbmdTdGF0c0NvbGxl
Y3Rvcl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBXZWJS
ZW5kZXJpbmdTdGF0czsKKworY2xhc3MgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIFJl
bmRlcmluZ1N0YXRzQ29sbGVjdG9yKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWNvZGVJbWFn
ZShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZERlY29kZUltYWdlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZXNpemVJbWFn
ZShib29sIHNob3VsZENhY2hlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXpl
SW1hZ2UoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5n
U3RhdHMmKSBjb25zdDsKK3ByaXZhdGU6CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRv
dWJsZSBtX3RvdGFsRGVjb2RlVGltZUluU2Vjb25kczsKKyAgICBkb3VibGUgbV90b3RhbFJlc2l6
ZVRpbWVJblNlY29uZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMjYxZjdjMzU3
ZTlhNzhiOTFmMmE3ZDNhYmZkOTRkYjJlMjhhOThhNS4uZjkzZWJhNjFmMzZkMzQ5MmE3NzQ0Njc0
MjUyOTQyMjI2Y2IxMjk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMTU4LDYgKzE1OCw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC00MDgsNiArNDA5LDcgQEAgV2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fZHJhZ1Njcm9s
bFRpbWVyKGFkb3B0UHRyKG5ldyBEcmFnU2Nyb2xsVGltZXIpKQogICAgICwgbV9pc0NhbmNlbGlu
Z0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQodGhpcykKKyAgICAs
IG1faXNSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb25FbmFibGVkKGZhbHNlKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIG1fcm9vdExheWVyKDApCiAgICAgLCBtX3Jvb3RH
cmFwaGljc0xheWVyKDApCkBAIC04MTEsNiArODEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVu
ZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAogewogICAgIGlmICht
X2xheWVyVHJlZVZpZXcpCiAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+cmVuZGVyaW5nU3RhdHMo
c3RhdHMpOworICAgIG1fcGxhdGZvcm1TdGF0cy5yZW5kZXJpbmdTdGF0cyhzdGF0cyk7CiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUg
ZHVyYXRpb25JblNlY29uZHMpCkBAIC04MzYsNiArODM5LDE3IEBAIFdlYlZpZXdCZW5jaG1hcmtT
dXBwb3J0KiBXZWJWaWV3SW1wbDo6YmVuY2htYXJrU3VwcG9ydCgpCiAgICAgcmV0dXJuICZtX2Jl
bmNobWFya1N1cHBvcnQ7CiB9CiAKKwordm9pZCBXZWJWaWV3SW1wbDo6ZW5hYmxlUmVuZGVyaW5n
U3RhdHNDb2xsZWN0aW9uKGJvb2wgZW5hYmxlKQoreworICAgIG1faXNSZW5kZXJpbmdTdGF0c0Nv
bGxlY3Rpb25FbmFibGVkID0gZW5hYmxlOworfQorCitib29sIFdlYlZpZXdJbXBsOjppc1JlbmRl
cmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBtX2lzUmVuZGVyaW5n
U3RhdHNDb2xsZWN0aW9uRW5hYmxlZDsKK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlS2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKChldmVu
dC50eXBlID09IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd24pCkBAIC0xNzcxLDYgKzE3ODUsOCBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVj
dCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAogICAgIC8vIElkZWFsbHksIEFuZHJvaWQgd291bGQg
YWx3YXlzIHVzZSBSZWFkYmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUgYXMgd2VsbC4KICAg
ICBBU1NFUlQob3B0aW9uID09IFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJsZSk7CiAj
ZW5kaWYKKyAgICBpZiAoaXNSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb25FbmFibGVkKCkpCisgICAg
ICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjphZGRDbGllbnQoJm1fcGxhdGZvcm1TdGF0cyk7
CiAKICAgICBpZiAob3B0aW9uID09IFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJsZSAm
JiBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKQEAgLTE3ODcsNyArMTgwMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBh
aW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9wdGlvbnMg
b3B0CiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXco
KTsKICAgICAgICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2aW9yID0gdmlldy0+cGFpbnRC
ZWhhdmlvcigpOwogICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChvcHRpb24gPT0gRm9yY2VTb2Z0d2FyZVJlbmRlcmluZ0Fu
ZElnbm9yZUdQVVJlc2lkZW50Q29udGVudCk7ICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NF
UlQob3B0aW9uID09IEZvcmNlU29mdHdhcmVSZW5kZXJpbmdBbmRJZ25vcmVHUFVSZXNpZGVudENv
bnRlbnQpOwogICAgICAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAgICAgICAgIH0K
IApAQCAtMTc5OSwxMCArMTgxNSwxMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52
YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAogICAgICAg
ICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVu
ZGVyZXI0LlNvZnR3YXJlUGFpbnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAw
MDAwMCwgMTAsIDIxMCwgMzApOwogCiAgICAgICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUoKSkgewotICAgICAgICAgICAgQVNTRVJUKG9wdGlvbiA9PSBGb3JjZVNvZnR3YXJl
UmVuZGVyaW5nQW5kSWdub3JlR1BVUmVzaWRlbnRDb250ZW50KTsgICAgICAgICAgICAKKyAgICAg
ICAgICAgIEFTU0VSVChvcHRpb24gPT0gRm9yY2VTb2Z0d2FyZVJlbmRlcmluZ0FuZElnbm9yZUdQ
VVJlc2lkZW50Q29udGVudCk7CiAgICAgICAgICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKG9s
ZFBhaW50QmVoYXZpb3IpOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKGlzUmVuZGVyaW5n
U3RhdHNDb2xsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBQbGF0Zm9ybUluc3RydW1lbnRhdGlv
bjo6cmVtb3ZlQ2xpZW50KCZtX3BsYXRmb3JtU3RhdHMpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBs
Ojp0aGVtZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
aW5kZXggNGMxYTk3NGEwNWRmNDI2NjBmOWQ3Mzk5Mzc0ODI0MmYwYTY0YjNkNi4uZTkzN2MyZDky
MGZiM2Y1NjUyYzU5NmNiZjdiODY1ODU1NDdkZjQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUGFnZVBvcHVw
RHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdTdGF0c0NvbGxl
Y3Rvci5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJJ
bnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgpAQCAtMzA2LDYg
KzMwNyw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2
ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMm
KTsKICAgICB2aXJ0dWFsIFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0KiBiZW5jaG1hcmtTdXBwb3J0
KCk7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZVJlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbihib29s
IGVuYWJsZSk7CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5h
YmxlZCgpOwogCiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQmVnaW5GcmFtZSgpOwpAQCAtNjQ4LDYgKzY1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWFsbG9jYXRlUmVuZGVyZXIoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0
KCk7CiAjZW5kaWYKKyAgICBib29sIGlzR3B1QmVuY2htYXJraW5nRW5hYmxlZCgpIHsgcmV0dXJu
IHRydWU7IH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICAvLyBSZXR1cm5zIHRo
ZSBib3VuZGluZyBib3ggb2YgdGhlIGJsb2NrIHR5cGUgbm9kZSB0b3VjaGVkIGJ5IHRoZSBXZWJS
ZWN0LgpAQCAtODE4LDYgKzgyMiw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQ2FuY2VsaW5n
RnVsbFNjcmVlbjsKIAogICAgIFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbCBtX2JlbmNobWFy
a1N1cHBvcnQ7CisgICAgYm9vbCBtX2lzUmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5hYmxlZDsK
KyAgICBSZW5kZXJpbmdTdGF0c0NvbGxlY3RvciBtX3BsYXRmb3JtU3RhdHM7CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Jvb3RMYXll
clNjcm9sbERhbWFnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166338</attachid>
            <date>2012-09-28 17:42:10 -0700</date>
            <delta_ts>2012-09-28 19:12:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97347-20120928174127.patch</filename>
            <type>text/plain</type>
            <size>23060</size>
            <attacher name="Nick Carter">nick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzMzg1M2Q2MGRmZmNl
NDVlYjljNmE2NGQxZWZlYjRmMDI5YTk5ODY2Li4zNTg0MmU1NGJkNmM4MTI1ODVjYTFhMjgwNTMx
NjVjYjkyZDljOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNyAg
TmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVu
ZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBzdGF0aXN0aWNzIHRvIFdlYlJlbmRlcmluZ1N0YXRzLgorCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmg6IEFkZCBuZXcgZmllbGRzLgorCiAy
MDEyLTA5LTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5NjU0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYy
OWIyZTJjYTE5NDg4ZGJjMTc4MTc3MzM2NDhlYTUwYTQ2MmUyMTYuLjAxNGRkOWVlYjM3NmRiZTNk
ZDFlM2FmNTY2YTBjOGYyZGVlMTViNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0wOS0yNyAgTmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEV4cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmll
d0ltcGwgcmVuZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgUGxhdGZvcm1JbnN0cnVtZW50YXRpb24gdG8gaGF2ZSB0d28gc2lt
dWx0YW5lb3VzIGNsaWVudHMuCisgICAgICAgIFVzZSBhbiBhcnJheSBoZXJlIHJhdGhlciB0aGFu
IGEgVmVjdG9yIHRvIGF2b2lkIHN0YXRpYyBpbml0aWFsaXphdGlvbgorICAgICAgICBjb3N0LiBC
ZWNhdXNlIHRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGNsaWVudHMgaXMgbGltaXRlZCB0byAy
LAorICAgICAgICBhIHN0YXRpY2FsbHkgc2l6ZWQgYXJyYXkgc3VmZmljZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBBcyBmYXIgYXMgSSBjYW4gdGVsbCB0aGlzIGNvZGUgaGFzIG5vIHRlc3Rz
PworCiAyMDEyLTA5LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbmFtZSBQYWdlOjpmcmFtZUNvdW50KCkgdG8gc3ViZnJhbWVDb3VudCgpLCBh
bmQgcmVsYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3ZmEwNGEyZTBiMjZkMzU2
ZjEyZWIzYTNiMTdhY2FjNDc1ODY1YjcwLi4wOWE1YmQ4MzIxZDBmODZiMzU5MGYzZWIzZTNiNTBk
Y2RlMjI5YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDEyLTA5LTI3ICBOaWNrIENhcnRlciAgPG5pY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gRXhwb3NlIGltYWdlIGRlY29kZSBhbmQgaW1hZ2Ugc2NhbGUgdGltZSB0byBXZWJW
aWV3SW1wbCByZW5kZXJpbmdTdGF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTczNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDb2xsZWN0IFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uIHN0YXRzIGR1cmlu
ZyBwYWludCwgYW5kCisgICAgICAgIGV4cG9ydCB0aGVtIGludG8gdGhlIFdlYlJlbmRlcmluZ1N0
YXRzLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6IEFkZCBzdXBwb3J0IGZvciBl
bmFibGluZyBjb2xsZWN0aW9uIG9mIHN0YXRzLgorICAgICAgICAqIHNyYy9SZW5kZXJpbmdTdGF0
c0NvbGxlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICBDb2xsZWN0cyBQbGF0Zm9ybUluc3RydW1l
bnRhdGlvbiBzdGF0cyBvbiBiZWhhbGYgb2YgYSBXZWJWaWV3LCBhbmQgZXhwb3J0cyB0aGVtIHRv
IGEgCisgICAgICAgIFdlYlJlbmRlcmluZ1N0YXRzIG9iamVjdC4KKyAgICAgICAgKiBzcmMvUmVu
ZGVyaW5nU3RhdHNDb2xsZWN0b3IuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKTogSG9v
ayBpbnRvIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpwYWludCk6IEluc3RhbGwgdGhlIFdlYlZpZXcncyAKKyAgICAgICAgUGxhdGZvcm1JbnN0
cnVtZW50YXRpb25DbGllbnQgZHVyaW5nIHBhaW50LgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOiBOZXcgbWVtYmVyIHRvIGhvbGQgc3RhdHMgd2hl
biBjb2xsZWN0aW9uIGlzIGVuYWJsZWQuCisKIDIwMTItMDktMjYgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMjk2NzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlJlbmRlcmluZ1N0YXRzLmgKaW5kZXggYWJkMTBhMGE5OGUxYWM5M2E1NGQ2OTgwNzA1ZDI2M2M3
NmYzMGE4My4uOWZhYjM3MDU2MDBhYTk0MjY1NmViNDkyZWFkYjY0NjVkNTRmZTQ4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5o
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMu
aApAQCAtMzYsNiArMzYsOCBAQCBzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHMgewogICAgIGRvdWJs
ZSB0b3RhbFJhc3Rlcml6ZVRpbWVJblNlY29uZHM7CiAgICAgZG91YmxlIHRvdGFsQ29tbWl0VGlt
ZUluU2Vjb25kczsKICAgICBzaXplX3QgdG90YWxDb21taXRDb3VudDsKKyAgICBkb3VibGUgdG90
YWxJbWFnZURlY29kZVRpbWVJblNlY29uZHM7CisgICAgZG91YmxlIHRvdGFsSW1hZ2VSZXNpemVU
aW1lSW5TZWNvbmRzOwogCiAgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQogICAgICAgICA6IG51bUFu
aW1hdGlvbkZyYW1lcygwKQpAQCAtNDUsNiArNDcsOCBAQCBzdHJ1Y3QgV2ViUmVuZGVyaW5nU3Rh
dHMgewogICAgICAgICAsIHRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kcygwKQogICAgICAgICAs
IHRvdGFsQ29tbWl0VGltZUluU2Vjb25kcygwKQogICAgICAgICAsIHRvdGFsQ29tbWl0Q291bnQo
MCkKKyAgICAgICAgLCB0b3RhbEltYWdlRGVjb2RlVGltZUluU2Vjb25kcygwKQorICAgICAgICAs
IHRvdGFsSW1hZ2VSZXNpemVUaW1lSW5TZWNvbmRzKDApCiAgICAgewogICAgIH0KIApAQCAtNzAs
NiArNzQsOCBAQCBzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHMgewogICAgICAgICBlbnVtZXJhdG9y
LT5hZGREb3VibGUoInRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kcyIsIHRvdGFsUmFzdGVyaXpl
VGltZUluU2Vjb25kcyk7CiAgICAgICAgIGVudW1lcmF0b3ItPmFkZERvdWJsZSgidG90YWxDb21t
aXRUaW1lSW5TZWNvbmRzIiwgdG90YWxDb21taXRUaW1lSW5TZWNvbmRzKTsKICAgICAgICAgZW51
bWVyYXRvci0+YWRkSW50KCJ0b3RhbENvbW1pdENvdW50IiwgdG90YWxDb21taXRDb3VudCk7Cisg
ICAgICAgIGVudW1lcmF0b3ItPmFkZERvdWJsZSgidG90YWxJbWFnZURlY29kZVRpbWVJblNlY29u
ZHMiLCB0b3RhbEltYWdlRGVjb2RlVGltZUluU2Vjb25kcyk7CisgICAgICAgIGVudW1lcmF0b3It
PmFkZERvdWJsZSgidG90YWxJbWFnZVJlc2l6ZVRpbWVJblNlY29uZHMiLCB0b3RhbEltYWdlUmVz
aXplVGltZUluU2Vjb25kcyk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDFhMjI4MTUyOTdlMTkx
NDZhMDE0ZTRhYzVmOTVlYzA5MTMxY2QwOGEuLmQ1MTUyMGJkNTgyY2IxYTBhYTZhMzVjOGM5OGE2
YzEzN2Q4OThhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgaWYgKCFtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9wbGF0
Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCA9PSBtX3JlY29y
ZFN0YWNrLnNpemUoKSkgewogICAgICAgICAgICAgbV9wbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNs
aWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCA9IDA7Ci0gICAgICAgICAgICBQbGF0Zm9ybUluc3Ry
dW1lbnRhdGlvbjo6c2V0Q2xpZW50KDApOworICAgICAgICAgICAgUGxhdGZvcm1JbnN0cnVtZW50
YXRpb246OnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2hHQ0V2
ZW50UmVjb3JkcygpOwpAQCAtNTg2LDkgKzU4Niw5IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6cHVzaEN1cnJlbnRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEs
CiAgICAgaWYgKGZyYW1lICYmIG1fcGFnZUFnZW50KQogICAgICAgICBmcmFtZUlkID0gbV9wYWdl
QWdlbnQtPmZyYW1lSWQoZnJhbWUpOwogICAgIG1fcmVjb3JkU3RhY2suYXBwZW5kKFRpbWVsaW5l
UmVjb3JkRW50cnkocmVjb3JkLnJlbGVhc2UoKSwgZGF0YSwgSW5zcGVjdG9yQXJyYXk6OmNyZWF0
ZSgpLCB0eXBlLCBmcmFtZUlkLCBnZXRVc2VkSGVhcFNpemUoKSkpOwotICAgIGlmIChoYXNMb3dM
ZXZlbERldGFpbHMgJiYgIW1fcGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnRJbnN0YWxsZWRB
dFN0YWNrRGVwdGggJiYgIVBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpoYXNDbGllbnQoKSkgewor
ICAgIGlmIChoYXNMb3dMZXZlbERldGFpbHMgJiYgIW1fcGxhdGZvcm1JbnN0cnVtZW50YXRpb25D
bGllbnRJbnN0YWxsZWRBdFN0YWNrRGVwdGgpIHsKICAgICAgICAgbV9wbGF0Zm9ybUluc3RydW1l
bnRhdGlvbkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCA9IG1fcmVjb3JkU3RhY2suc2l6ZSgp
OwotICAgICAgICBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c2V0Q2xpZW50KHRoaXMpOworICAg
ICAgICBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6YWRkQ2xpZW50KHRoaXMpOwogICAgIH0KIH0K
IApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y2xlYXJS
ZWNvcmRTdGFjaygpCiB7CiAgICAgaWYgKG1fcGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnRJ
bnN0YWxsZWRBdFN0YWNrRGVwdGgpIHsKICAgICAgICAgbV9wbGF0Zm9ybUluc3RydW1lbnRhdGlv
bkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCA9IDA7Ci0gICAgICAgIFBsYXRmb3JtSW5zdHJ1
bWVudGF0aW9uOjpzZXRDbGllbnQoMCk7CisgICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9u
OjpyZW1vdmVDbGllbnQodGhpcyk7CiAgICAgfQogICAgIG1fcGVuZGluZ0ZyYW1lUmVjb3JkLmNs
ZWFyKCk7CiAgICAgbV9yZWNvcmRTdGFjay5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDY3MDRlZGEzZDQ5
MTM2NDk3NzE3YmM0Y2E0ODg0ZDUzMDg1MWQzNWIuLmM4NDgyNDM4MmU2OTBjN2QwZDE3YWEzMmI4
ZTQzOGQ3YzhlMTYxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtSW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM0LDE1ICszNCwyOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBQbGF0Zm9ybUluc3Ry
dW1lbnRhdGlvbjo6bV9jbGllbnQ7CitQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCogUGxh
dGZvcm1JbnN0cnVtZW50YXRpb246OnNfY2xpZW50c1ttYXhOdW1iZXJPZkNsaWVudHNdID0geyAw
IH07CitpbnQgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnNfbnVtYmVyT2ZDbGllbnRzID0gMDsK
IAogUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQ6On5QbGF0Zm9ybUluc3RydW1lbnRhdGlv
bkNsaWVudCgpCiB7CiB9CiAKLXZvaWQgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnNldENsaWVu
dChQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCogY2xpZW50KQordm9pZCBQbGF0Zm9ybUlu
c3RydW1lbnRhdGlvbjo6YWRkQ2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgaWYgKHNfbnVtYmVyT2ZDbGll
bnRzID09IG1heE51bWJlck9mQ2xpZW50cykKKyAgICAgICAgcmV0dXJuOworICAgIHNfY2xpZW50
c1tzX251bWJlck9mQ2xpZW50cysrXSA9IGNsaWVudDsKIH0KIAordm9pZCBQbGF0Zm9ybUluc3Ry
dW1lbnRhdGlvbjo6cmVtb3ZlQ2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBj
bGllbnQpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzX251bWJlck9mQ2xpZW50czsgKytp
KSB7CisgICAgICAgIGlmIChzX2NsaWVudHNbaV0gPT0gY2xpZW50KSB7CisgICAgICAgICAgICBz
X2NsaWVudHNbaV0gPSBzX2NsaWVudHNbLS1zX251bWJlck9mQ2xpZW50c107CisgICAgICAgICAg
ICBzX2NsaWVudHNbc19udW1iZXJPZkNsaWVudHNdID0gMDsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMWY5
NTU3N2U2ZWMxMDQ2ZjM5ZDlkNzFmMGVhMWRlNGE2ZmY4YzUwYi4uZGQyNWU4Y2U4Yjc4ZDcwODBh
NTRjNjZjZmRiMGY3ZmVhYzBjNWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKIAog
Y2xhc3MgUGxhdGZvcm1JbnN0cnVtZW50YXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IHNldENsaWVudChQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCopOwotICAgIHN0YXRpYyBi
b29sIGhhc0NsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgc3RhdGljIHZvaWQgYWRk
Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50Kik7CisgICAgc3RhdGljIHZvaWQg
cmVtb3ZlQ2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50Kik7CiAKICAgICBzdGF0
aWMgdm9pZCB3aWxsRGVjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpOwogICAgIHN0
YXRpYyB2b2lkIGRpZERlY29kZUltYWdlKCk7CkBAIC02MCwxMCArNjAsMTMgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlc2l6ZUltYWdlKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICAvLyBUaGVyZSBh
cmUgcHJlc2VudGx5IHR3byBjbGllbnRzLCBhbmQgdGhleSBkb24ndCBpbnN0YWxsIHRoZW1zZWx2
ZXMgbXVsdGlwbGUgdGltZXMuCisgICAgc3RhdGljIGNvbnN0IGludCBtYXhOdW1iZXJPZkNsaWVu
dHMgPSAyOworICAgIHN0YXRpYyBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCogc19jbGll
bnRzW21heE51bWJlck9mQ2xpZW50c107CisgICAgc3RhdGljIGludCBzX251bWJlck9mQ2xpZW50
czsKIH07CiAKLSNkZWZpbmUgRkFTVF9SRVRVUk5fSUZfTk9fQ0xJRU5UKCkgaWYgKCFtX2NsaWVu
dCkgcmV0dXJuOworI2RlZmluZSBGQVNUX1JFVFVSTl9JRl9OT19DTElFTlQoKSBpZiAoIXNfbnVt
YmVyT2ZDbGllbnRzKSByZXR1cm47CiAKIGlubGluZSB2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGVjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpCiB7CkBAIC03MSw3
ICs3NCw4IEBAIGlubGluZSB2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVjb2Rl
SW1hZ2UoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpCiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4xKCJ3
ZWJraXQiLCAiSW1hZ2UgRGVjb2RlIiwgImltYWdlVHlwZSIsIFRSQUNFX1NUUl9DT1BZKGltYWdl
VHlwZS5hc2NpaSgpLmRhdGEoKSkpOwogI2VuZGlmCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fQ0xJ
RU5UKCk7Ci0gICAgbV9jbGllbnQtPndpbGxEZWNvZGVJbWFnZShpbWFnZVR5cGUpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgc19udW1iZXJPZkNsaWVudHM7ICsraSkKKyAgICAgICAgc19jbGll
bnRzW2ldLT53aWxsRGVjb2RlSW1hZ2UoaW1hZ2VUeXBlKTsKIH0KIAogaW5saW5lIHZvaWQgUGxh
dGZvcm1JbnN0cnVtZW50YXRpb246OmRpZERlY29kZUltYWdlKCkKQEAgLTgwLDcgKzg0LDggQEAg
aW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OmRpZERlY29kZUltYWdlKCkKICAg
ICBUUkFDRV9FVkVOVF9FTkQwKCJ3ZWJraXQiLCAiSW1hZ2UgRGVjb2RlIik7CiAjZW5kaWYKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19DTElFTlQoKTsKLSAgICBtX2NsaWVudC0+ZGlkRGVjb2RlSW1h
Z2UoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNfbnVtYmVyT2ZDbGllbnRzOyArK2kpCisg
ICAgICAgIHNfY2xpZW50c1tpXS0+ZGlkRGVjb2RlSW1hZ2UoKTsKIH0KIAogaW5saW5lIHZvaWQg
UGxhdGZvcm1JbnN0cnVtZW50YXRpb246OndpbGxSZXNpemVJbWFnZShib29sIHNob3VsZENhY2hl
KQpAQCAtODksNyArOTQsOCBAQCBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6
d2lsbFJlc2l6ZUltYWdlKGJvb2wgc2hvdWxkQ2FjaGUpCiAgICAgVFJBQ0VfRVZFTlRfQkVHSU4x
KCJ3ZWJraXQiLCAiSW1hZ2UgUmVzaXplIiwgImNhY2hlZCIsIHNob3VsZENhY2hlKTsKICNlbmRp
ZgogICAgIEZBU1RfUkVUVVJOX0lGX05PX0NMSUVOVCgpOwotICAgIG1fY2xpZW50LT53aWxsUmVz
aXplSW1hZ2Uoc2hvdWxkQ2FjaGUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc19udW1iZXJP
ZkNsaWVudHM7ICsraSkKKyAgICAgICAgc19jbGllbnRzW2ldLT53aWxsUmVzaXplSW1hZ2Uoc2hv
dWxkQ2FjaGUpOwogfQogCiBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6ZGlk
UmVzaXplSW1hZ2UoKQpAQCAtOTgsNyArMTA0LDggQEAgaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0
cnVtZW50YXRpb246OmRpZFJlc2l6ZUltYWdlKCkKICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ3ZWJr
aXQiLCAiSW1hZ2UgUmVzaXplIik7CiAjZW5kaWYKICAgICBGQVNUX1JFVFVSTl9JRl9OT19DTElF
TlQoKTsKLSAgICBtX2NsaWVudC0+ZGlkUmVzaXplSW1hZ2UoKTsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNfbnVtYmVyT2ZDbGllbnRzOyArK2kpCisgICAgICAgIHNfY2xpZW50c1tpXS0+ZGlk
UmVzaXplSW1hZ2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCmluZGV4IGY0ZjRjOWVjZTMyYjYzZGY5ZWRhMDQzYmZmNTZlOTc5MjczZDg1
ODIuLmRkMjM0MDU4NjY1NWUyYTVkNTY1MWQyYWU2ZDNjMDE4YjNlODk2MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKQEAgLTQ0OSw2ICs0NDksOCBAQAogICAgICAgICAgICAgICAgICdz
cmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9SZW5kZXJpbmdTdGF0c0Nv
bGxlY3Rvci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0
b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvU2Nyb2xsYmFyR3JvdXAuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9T
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaAppbmRleCA1ZmYyMDZiMGE1N2U0MGUyN2VkMjUxNWQwYzEyMDg0NTky
YWU5OTcyLi5jMGFkNzExN2Q2YmJiODE5YzM0MWRmODFjYjM2ZDc2NjFkYTk2ZDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTE1OSw2ICsxNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5h
YmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYlNlY3VyaXR5RW5hYmxlZChi
b29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5hYmxlZChi
b29sKSA9IDA7CiAKICAgICAvLyBERVBSRUNBVEVECiAgICAgdmlydHVhbCB2b2lkIHNldERlZmF1
bHREZXZpY2VTY2FsZUZhY3RvcihpbnQpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ODUz
MWI4NDVjNDNmYzNmMWVhYTJlNjA3OTg5N2RjOTU0ZmIxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5jcHAKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdTdGF0
c0NvbGxlY3Rvci5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmg+Cisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisKKy8v
IFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yCitSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6UmVuZGVy
aW5nU3RhdHNDb2xsZWN0b3IoKQorICAgIDogbV9zdGFydFRpbWUoMCkKKyAgICAsIG1fdG90YWxE
ZWNvZGVUaW1lSW5TZWNvbmRzKDApCisgICAgLCBtX3RvdGFsUmVzaXplVGltZUluU2Vjb25kcygw
KQoreworfQorCit2b2lkIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjp3aWxsRGVjb2RlSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpCit7CisgICAgbV9zdGFydFRpbWUgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX3RvdGFsRGVjb2RlVGltZUluU2Vjb25kcyArPSBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOworfQorCit2b2lkIFJl
bmRlcmluZ1N0YXRzQ29sbGVjdG9yOjpkaWREZWNvZGVJbWFnZSgpCit7CisgICAgbV90b3RhbERl
Y29kZVRpbWVJblNlY29uZHMgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0
YXJ0VGltZTsKK30KKwordm9pZCBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6d2lsbFJlc2l6ZUlt
YWdlKGJvb2wgc2hvdWxkQ2FjaGUpCit7CisgICAgbV9zdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKK30KKwordm9pZCBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6ZGlk
UmVzaXplSW1hZ2UoKQoreworICAgIG1fdG90YWxSZXNpemVUaW1lSW5TZWNvbmRzICs9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7Cit9CisKK3ZvaWQgUmVuZGVy
aW5nU3RhdHNDb2xsZWN0b3I6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0
cykgY29uc3QKK3sKKyAgICBzdGF0cy50b3RhbEltYWdlRGVjb2RlVGltZUluU2Vjb25kcyA9IG1f
dG90YWxEZWNvZGVUaW1lSW5TZWNvbmRzOworICAgIHN0YXRzLnRvdGFsSW1hZ2VSZXNpemVUaW1l
SW5TZWNvbmRzID0gbV90b3RhbFJlc2l6ZVRpbWVJblNlY29uZHM7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVuZGVy
aW5nU3RhdHNDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1JlbmRlcmlu
Z1N0YXRzQ29sbGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzN2ZkNTllZDM0YzYxOTEwMDFjYzhiYjUy
ZGQyZTc0ODY3ODdlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1JlbmRlcmluZ1N0YXRzQ29sbGVjdG9yLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVu
ZGVyaW5nU3RhdHNDb2xsZWN0b3JfaAorI2RlZmluZSBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcl9o
CisKKyNpbmNsdWRlICJQbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBXZWJSZW5kZXJp
bmdTdGF0czsKKworY2xhc3MgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIFJlbmRlcmlu
Z1N0YXRzQ29sbGVjdG9yKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWNvZGVJbWFnZShjb25z
dCBTdHJpbmcmIGltYWdlVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERlY29k
ZUltYWdlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZXNpemVJbWFnZShib29s
IHNob3VsZENhY2hlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplSW1hZ2Uo
KSBPVkVSUklERTsKKworICAgIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMm
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBt
X3RvdGFsRGVjb2RlVGltZUluU2Vjb25kczsKKyAgICBkb3VibGUgbV90b3RhbFJlc2l6ZVRpbWVJ
blNlY29uZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA0Y2MzZWY3
MjdhYTU4ZDA3NDQ4MGIxMzY5NDE4Y2ZlNWZiMGJhOTNlLi41MzRkZmFmY2ZmMjJmODRhNTI0OWU2
NTdhZDRkZGM1ZWJiMDJkMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJT
ZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV92aWV3cG9ydEVuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX2FwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
KGZhbHNlKQogICAgICwgbV9nZXN0dXJlVGFwSGlnaGxpZ2h0RW5hYmxlZCh0cnVlKQorICAgICwg
bV9yZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb25FbmFibGVkKGZhbHNlKQogICAgICwgbV9kZWZhdWx0
VGlsZVNpemUoV2ViU2l6ZSgyNTYsIDI1NikpCiAgICAgLCBtX21heFVudGlsZWRMYXllclNpemUo
V2ViU2l6ZSg1MTIsIDUxMikpCiB7CkBAIC02NTMsNCArNjU0LDkgQEAgdm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldEdlc3R1cmVUYXBIaWdobGlnaHRFbmFibGVkKGJvb2wgZW5hYmxlSGlnaGxpZ2h0
KQogICAgIG1fZ2VzdHVyZVRhcEhpZ2hsaWdodEVuYWJsZWQgPSBlbmFibGVIaWdobGlnaHQ7CiB9
CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRSZW5kZXJpbmdTdGF0c0NvbGxlY3Rpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJs
ZWQgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggZTllMDFiZmNkNzQ2ZTE1MDYx
YTczMjdmYWViNTI1MjhmOTc1MzZiYi4uNWRiMWM1Njk0OTJkMjA1NzgzMjVmNWQ5ZDdhMTU1MWJm
MzRiMzdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmgKQEAgLTE1NCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYkdM
RXJyb3JzVG9Db25zb2xlRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0V2ViU2Vj
dXJpdHlFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxl
ZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5h
YmxlZChib29sKTsKIAogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Nob3dGUFNDb3VudGVyOyB9CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoKSBjb25z
dCB7IHJldHVybiBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsgfQpAQCAtMTYzLDYgKzE2NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGdlc3R1cmVUYXBIaWdobGlnaHRFbmFibGVkKCkgeyByZXR1cm4g
bV9nZXN0dXJlVGFwSGlnaGxpZ2h0RW5hYmxlZDsgfQogICAgIFdlYlNpemUgZGVmYXVsdFRpbGVT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VGlsZVNpemU7IH0KICAgICBXZWJTaXplIG1h
eFVudGlsZWRMYXllclNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFVudGlsZWRMYXllclNpemU7
IH0KKyAgICBib29sIHJlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQ7IH0KIAogcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKQEAgLTE3Myw2ICsxNzUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV92aWV3cG9ydEVuYWJsZWQ7CiAgICAgYm9vbCBtX2FwcGx5RGVmYXVs
dERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yOwogICAgIGJvb2wgbV9nZXN0dXJlVGFwSGln
aGxpZ2h0RW5hYmxlZDsKKyAgICBib29sIG1fcmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5hYmxl
ZDsKICAgICBXZWJTaXplIG1fZGVmYXVsdFRpbGVTaXplOwogICAgIFdlYlNpemUgbV9tYXhVbnRp
bGVkTGF5ZXJTaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCAyNjFmN2MzNTdlOWE3OGI5MWYyYTdkM2FiZmQ5NGRiMmUyOGE5OGE1Li5kMzlh
YmU3M2Q3MDJhZmVhOGI4NmQwZDcxYWFjM2IzZWIzMjc0NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC04MTEsNiArODExLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAog
ewogICAgIGlmIChtX2xheWVyVHJlZVZpZXcpCiAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+cmVu
ZGVyaW5nU3RhdHMoc3RhdHMpOworICAgIG1fcGxhdGZvcm1TdGF0cy5yZW5kZXJpbmdTdGF0cyhz
dGF0cyk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNv
bnN0IEludFBvaW50JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1Nj
YWxlLCBkb3VibGUgZHVyYXRpb25JblNlY29uZHMpCkBAIC0xNzcxLDYgKzE3NzIsOCBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVj
dCwgUGFpbnRPcHRpb25zIG9wdAogICAgIC8vIElkZWFsbHksIEFuZHJvaWQgd291bGQgYWx3YXlz
IHVzZSBSZWFkYmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUgYXMgd2VsbC4KICAgICBBU1NF
UlQob3B0aW9uID09IFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJsZSk7CiAjZW5kaWYK
KyAgICBpZiAoc2V0dGluZ3NJbXBsKCktPnJlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OmFkZENsaWVudCgmbV9wbGF0Zm9y
bVN0YXRzKTsKIAogICAgIGlmIChvcHRpb24gPT0gUmVhZGJhY2tGcm9tQ29tcG9zaXRvcklmQXZh
aWxhYmxlICYmIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTc4Nyw3ICsxNzkwLDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFBhaW50
T3B0aW9ucyBvcHQKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZSgpLT5tYWluRnJhbWUo
KS0+dmlldygpOwogICAgICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSB2aWV3
LT5wYWludEJlaGF2aW9yKCk7CiAgICAgICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoKSkgewotICAgICAgICAgICAgQVNTRVJUKG9wdGlvbiA9PSBGb3JjZVNvZnR3YXJlUmVu
ZGVyaW5nQW5kSWdub3JlR1BVUmVzaWRlbnRDb250ZW50KTsgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVChvcHRpb24gPT0gRm9yY2VTb2Z0d2FyZVJlbmRlcmluZ0FuZElnbm9yZUdQVVJl
c2lkZW50Q29udGVudCk7CiAgICAgICAgICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBh
aW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKICAg
ICAgICAgfQogCkBAIC0xNzk5LDEwICsxODAyLDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50
KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9wdGlvbnMgb3B0
CiAgICAgICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291
bnRzKCJSZW5kZXJlcjQuU29mdHdhcmVQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJT
ZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAKICAgICAgICAgaWYgKGlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQob3B0aW9uID09IEZvcmNl
U29mdHdhcmVSZW5kZXJpbmdBbmRJZ25vcmVHUFVSZXNpZGVudENvbnRlbnQpOyAgICAgICAgICAg
IAorICAgICAgICAgICAgQVNTRVJUKG9wdGlvbiA9PSBGb3JjZVNvZnR3YXJlUmVuZGVyaW5nQW5k
SWdub3JlR1BVUmVzaWRlbnRDb250ZW50KTsKICAgICAgICAgICAgIHZpZXctPnNldFBhaW50QmVo
YXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoc2V0
dGluZ3NJbXBsKCktPnJlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAg
UGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnJlbW92ZUNsaWVudCgmbV9wbGF0Zm9ybVN0YXRzKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDRjMWE5NzRhMDVkZjQyNjYwZjlkNzM5OTM3NDgy
NDJmMGE2NGIzZDYuLjlhZjNhNTE3MDhhY2JjZWI2MGYxNjNhMWNhMDY5Y2FhOTYzYzJiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIlBhZ2VQb3B1cERyaXZlci5oIgogI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxl
Z2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRp
b25Qb2xpY3kuaCIKQEAgLTgxOCw2ICs4MTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Nh
bmNlbGluZ0Z1bGxTY3JlZW47CiAKICAgICBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydEltcGwgbV9i
ZW5jaG1hcmtTdXBwb3J0OworICAgIFJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yIG1fcGxhdGZvcm1T
dGF0czsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJ
bnRSZWN0IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166350</attachid>
            <date>2012-09-28 19:18:40 -0700</date>
            <delta_ts>2012-09-29 07:54:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97347-20120928191757.patch</filename>
            <type>text/plain</type>
            <size>24847</size>
            <attacher name="Nick Carter">nick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzMzg1M2Q2MGRmZmNl
NDVlYjljNmE2NGQxZWZlYjRmMDI5YTk5ODY2Li5iNTI3NjBkODBjM2NhMjViNDc1Y2Q0YmIwYzNi
NjFkMDUwZWZiM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOS0yOCAg
TmljayBDYXJ0ZXIgIDxuaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
cG9zZSBpbWFnZSBkZWNvZGUgYW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVu
ZGVyaW5nU3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBzdGF0aXN0aWNzIHRvIFdlYlJlbmRlcmluZ1N0YXRzLgorCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmg6IEFkZCBuZXcgZmllbGRzLgorICAg
ICAgICAoV2ViUmVuZGVyaW5nU3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJpbmdT
dGF0czo6V2ViUmVuZGVyaW5nU3RhdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJpbmdT
dGF0czo6ZW51bWVyYXRlRmllbGRzKToKKwogMjAxMi0wOS0yNiAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEyOTY1NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MjliMmUyY2ExOTQ4OGRiYzE3ODE3NzMzNjQ4ZWE1
MGE0NjJlMjE2Li40NWU5ZjMzMmU2M2FmNTliODY3MWUzOTFhODlmMGE2MWI1Y2FlZTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDktMjggIE5pY2sgQ2FydGVyICA8bmlja0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgaW1hZ2UgZGVjb2RlIGFu
ZCBpbWFnZSBzY2FsZSB0aW1lIHRvIFdlYlZpZXdJbXBsIHJlbmRlcmluZ1N0YXRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFBsYXRmb3JtSW5z
dHJ1bWVudGF0aW9uIHRvIGhhdmUgdHdvIHNpbXVsdGFuZW91cyBjbGllbnRzLgorICAgICAgICBV
c2UgYW4gYXJyYXkgaGVyZSByYXRoZXIgdGhhbiBhIFZlY3RvciB0byBhdm9pZCBzdGF0aWMgaW5p
dGlhbGl6YXRpb24KKyAgICAgICAgY29zdC4gQmVjYXVzZSB0aGUgbnVtYmVyIG9mIHNpbXVsdGFu
ZW91cyBjbGllbnRzIGlzIGxpbWl0ZWQgdG8gMiwKKyAgICAgICAgYSBzdGF0aWNhbGx5IHNpemVk
IGFycmF5IHN1ZmZpY2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQXMgZmFyIGFzIEkgY2Fu
IHRlbGwgdGhpcyBjb2RlIGhhcyBubyB0ZXN0cz8KKyAgICAgICAgCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnB1c2hDdXJyZW50UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmNsZWFyUmVjb3JkU3RhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbnN0cnVtZW50YXRpb246OmFk
ZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6cmVt
b3ZlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoUGxhdGZvcm1JbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6d2lsbERlY29kZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpkaWREZWNv
ZGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6d2ls
bFJlc2l6ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9u
OjpkaWRSZXNpemVJbWFnZSk6CisKKzIwMTItMDktMjcgIE5pY2sgQ2FydGVyICA8bmlja0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgaW1hZ2UgZGVjb2RlIGFuZCBp
bWFnZSBzY2FsZSB0aW1lIHRvIFdlYlZpZXdJbXBsIHJlbmRlcmluZ1N0YXRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKwogMjAxMi0wOS0yNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgUGFnZTo6ZnJhbWVD
b3VudCgpIHRvIHN1YmZyYW1lQ291bnQoKSwgYW5kIHJlbGF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggN2ZhMDRhMmUwYjI2ZDM1NmYxMmViM2EzYjE3YWNhYzQ3NTg2NWI3MC4uODE0
NjgwZTg3N2MyMDg5YjU5YWNmODQ3NThjYTk2ZDNmYjExZGUyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wOS0yOCAgTmljayBDYXJ0ZXIgIDxuaWNr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBpbWFnZSBkZWNvZGUg
YW5kIGltYWdlIHNjYWxlIHRpbWUgdG8gV2ViVmlld0ltcGwgcmVuZGVyaW5nU3RhdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MzQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29sbGVjdCBQbGF0Zm9y
bUluc3RydW1lbnRhdGlvbiBzdGF0cyBkdXJpbmcgcGFpbnQsIGFuZCBleHBvcnQKKyAgICAgICAg
dGhlbSB0byBhIFdlYlJlbmRlcmluZ1N0YXRzIG9iamVjdC4KKworICAgICAgICAqIFdlYktpdC5n
eXA6CisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6IEFkZCBzdXBwb3J0IGZvciBlbmFi
bGluZyBjb2xsZWN0aW9uIG9mIHN0YXRzLgorICAgICAgICAqIHNyYy9SZW5kZXJpbmdTdGF0c0Nv
bGxlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
UmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6UmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OndpbGxEZWNvZGVJbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjpkaWREZWNvZGVJbWFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yOjp3aWxsUmVzaXplSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6ZGlkUmVzaXpl
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6cmVuZGVy
aW5nU3RhdHMpOgorICAgICAgICAqIHNyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcik6
CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6IEFsbG93IHN0YXRzIGNvbGxlY3Rp
b24gdG8gYmUgZW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJT
ZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldFJlbmRl
cmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnJlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVu
YWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyk6IEhvb2sgaW50byBSZW5kZXJpbmdTdGF0c0Nv
bGxlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBhaW50KTogSW5zdGFsbCB0
aGUgUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIHBh
aW50IG9wZXJhdGlvbi4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMi0wOS0y
NiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTY3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaAppbmRleCBhYmQxMGEwYTk4ZTFh
YzkzYTU0ZDY5ODA3MDVkMjYzYzc2ZjMwYTgzLi45ZmFiMzcwNTYwMGFhOTQyNjU2ZWI0OTJlYWRi
NjQ2NWQ1NGZlNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlJlbmRlcmluZ1N0YXRzLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oCkBAIC0zNiw2ICszNiw4IEBAIHN0cnVjdCBXZWJSZW5kZXJp
bmdTdGF0cyB7CiAgICAgZG91YmxlIHRvdGFsUmFzdGVyaXplVGltZUluU2Vjb25kczsKICAgICBk
b3VibGUgdG90YWxDb21taXRUaW1lSW5TZWNvbmRzOwogICAgIHNpemVfdCB0b3RhbENvbW1pdENv
dW50OworICAgIGRvdWJsZSB0b3RhbEltYWdlRGVjb2RlVGltZUluU2Vjb25kczsKKyAgICBkb3Vi
bGUgdG90YWxJbWFnZVJlc2l6ZVRpbWVJblNlY29uZHM7CiAKICAgICBXZWJSZW5kZXJpbmdTdGF0
cygpCiAgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCkBAIC00NSw2ICs0Nyw4IEBAIHN0
cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7CiAgICAgICAgICwgdG90YWxSYXN0ZXJpemVUaW1lSW5T
ZWNvbmRzKDApCiAgICAgICAgICwgdG90YWxDb21taXRUaW1lSW5TZWNvbmRzKDApCiAgICAgICAg
ICwgdG90YWxDb21taXRDb3VudCgwKQorICAgICAgICAsIHRvdGFsSW1hZ2VEZWNvZGVUaW1lSW5T
ZWNvbmRzKDApCisgICAgICAgICwgdG90YWxJbWFnZVJlc2l6ZVRpbWVJblNlY29uZHMoMCkKICAg
ICB7CiAgICAgfQogCkBAIC03MCw2ICs3NCw4IEBAIHN0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7
CiAgICAgICAgIGVudW1lcmF0b3ItPmFkZERvdWJsZSgidG90YWxSYXN0ZXJpemVUaW1lSW5TZWNv
bmRzIiwgdG90YWxSYXN0ZXJpemVUaW1lSW5TZWNvbmRzKTsKICAgICAgICAgZW51bWVyYXRvci0+
YWRkRG91YmxlKCJ0b3RhbENvbW1pdFRpbWVJblNlY29uZHMiLCB0b3RhbENvbW1pdFRpbWVJblNl
Y29uZHMpOwogICAgICAgICBlbnVtZXJhdG9yLT5hZGRJbnQoInRvdGFsQ29tbWl0Q291bnQiLCB0
b3RhbENvbW1pdENvdW50KTsKKyAgICAgICAgZW51bWVyYXRvci0+YWRkRG91YmxlKCJ0b3RhbElt
YWdlRGVjb2RlVGltZUluU2Vjb25kcyIsIHRvdGFsSW1hZ2VEZWNvZGVUaW1lSW5TZWNvbmRzKTsK
KyAgICAgICAgZW51bWVyYXRvci0+YWRkRG91YmxlKCJ0b3RhbEltYWdlUmVzaXplVGltZUluU2Vj
b25kcyIsIHRvdGFsSW1hZ2VSZXNpemVUaW1lSW5TZWNvbmRzKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
aW5kZXggMWEyMjgxNTI5N2UxOTE0NmEwMTRlNGFjNWY5NWVjMDkxMzFjZDA4YS4uZDUxNTIwYmQ1
ODJjYjFhMGFhNmEzNWM4Yzk4YTZjMTM3ZDg5OGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNTM1LDcgKzUzNSw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3Jk
KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAoIW1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKSB7
CiAgICAgICAgIGlmIChtX3BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRT
dGFja0RlcHRoID09IG1fcmVjb3JkU3RhY2suc2l6ZSgpKSB7CiAgICAgICAgICAgICBtX3BsYXRm
b3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID0gMDsKLSAgICAg
ICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpzZXRDbGllbnQoMCk7CisgICAgICAgICAg
ICBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICB9
CiAKICAgICAgICAgcHVzaEdDRXZlbnRSZWNvcmRzKCk7CkBAIC01ODYsOSArNTg2LDkgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZGF0YSwKICAgICBpZiAoZnJhbWUgJiYgbV9wYWdlQWdlbnQpCiAgICAg
ICAgIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CiAgICAgbV9yZWNvcmRT
dGFjay5hcHBlbmQoVGltZWxpbmVSZWNvcmRFbnRyeShyZWNvcmQucmVsZWFzZSgpLCBkYXRhLCBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCksIHR5cGUsIGZyYW1lSWQsIGdldFVzZWRIZWFwU2l6ZSgp
KSk7Ci0gICAgaWYgKGhhc0xvd0xldmVsRGV0YWlscyAmJiAhbV9wbGF0Zm9ybUluc3RydW1lbnRh
dGlvbkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCAmJiAhUGxhdGZvcm1JbnN0cnVtZW50YXRp
b246Omhhc0NsaWVudCgpKSB7CisgICAgaWYgKGhhc0xvd0xldmVsRGV0YWlscyAmJiAhbV9wbGF0
Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCkgewogICAgICAg
ICBtX3BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID0g
bV9yZWNvcmRTdGFjay5zaXplKCk7Ci0gICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpz
ZXRDbGllbnQodGhpcyk7CisgICAgICAgIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjphZGRDbGll
bnQodGhpcyk7CiAgICAgfQogfQogCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpjbGVhclJlY29yZFN0YWNrKCkKIHsKICAgICBpZiAobV9wbGF0Zm9ybUlu
c3RydW1lbnRhdGlvbkNsaWVudEluc3RhbGxlZEF0U3RhY2tEZXB0aCkgewogICAgICAgICBtX3Bs
YXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50SW5zdGFsbGVkQXRTdGFja0RlcHRoID0gMDsKLSAg
ICAgICAgUGxhdGZvcm1JbnN0cnVtZW50YXRpb246OnNldENsaWVudCgwKTsKKyAgICAgICAgUGxh
dGZvcm1JbnN0cnVtZW50YXRpb246OnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiAgICAgbV9w
ZW5kaW5nRnJhbWVSZWNvcmQuY2xlYXIoKTsKICAgICBtX3JlY29yZFN0YWNrLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggNjcwNGVkYTNkNDkxMzY0OTc3MTdiYzRjYTQ4ODRkNTMwODUxZDM1Yi4uYzg0ODI0
MzgyZTY5MGM3ZDBkMTdhYTMyYjhlNDM4ZDdjOGUxNjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzQsMTUgKzM0
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGxhdGZvcm1JbnN0cnVtZW50YXRpb25D
bGllbnQqIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjptX2NsaWVudDsKK1BsYXRmb3JtSW5zdHJ1
bWVudGF0aW9uQ2xpZW50KiBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c19jbGllbnRzW21heE51
bWJlck9mQ2xpZW50c10gPSB7IDAgfTsKK2ludCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6c19u
dW1iZXJPZkNsaWVudHMgPSAwOwogCiBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudDo6flBs
YXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KCkKIHsKIH0KIAotdm9pZCBQbGF0Zm9ybUluc3Ry
dW1lbnRhdGlvbjo6c2V0Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xpZW50KiBjbGll
bnQpCit2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjphZGRDbGllbnQoUGxhdGZvcm1JbnN0
cnVtZW50YXRpb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAg
ICBpZiAoc19udW1iZXJPZkNsaWVudHMgPT0gbWF4TnVtYmVyT2ZDbGllbnRzKQorICAgICAgICBy
ZXR1cm47CisgICAgc19jbGllbnRzW3NfbnVtYmVyT2ZDbGllbnRzKytdID0gY2xpZW50OwogfQog
Cit2b2lkIFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uOjpyZW1vdmVDbGllbnQoUGxhdGZvcm1JbnN0
cnVtZW50YXRpb25DbGllbnQqIGNsaWVudCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNf
bnVtYmVyT2ZDbGllbnRzOyArK2kpIHsKKyAgICAgICAgaWYgKHNfY2xpZW50c1tpXSA9PSBjbGll
bnQpIHsKKyAgICAgICAgICAgIHNfY2xpZW50c1tpXSA9IHNfY2xpZW50c1stLXNfbnVtYmVyT2ZD
bGllbnRzXTsKKyAgICAgICAgICAgIHNfY2xpZW50c1tzX251bWJlck9mQ2xpZW50c10gPSAwOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUlu
c3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1JbnN0cnVt
ZW50YXRpb24uaAppbmRleCAxZjk1NTc3ZTZlYzEwNDZmMzlkOWQ3MWYwZWExZGU0YTZmZjhjNTBi
Li5kZDI1ZThjZThiNzhkNzA4MGE1NGM2NmNmZGIwZjdmZWFjMGM1ZjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTUxLDgg
KzUxLDggQEAgcHVibGljOgogCiBjbGFzcyBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtSW5zdHJ1bWVudGF0aW9uQ2xp
ZW50Kik7Ci0gICAgc3RhdGljIGJvb2wgaGFzQ2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0K
KyAgICBzdGF0aWMgdm9pZCBhZGRDbGllbnQoUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQq
KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVDbGllbnQoUGxhdGZvcm1JbnN0cnVtZW50YXRpb25D
bGllbnQqKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxEZWNvZGVJbWFnZShjb25zdCBTdHJpbmcm
IGltYWdlVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGVjb2RlSW1hZ2UoKTsKQEAgLTYwLDEw
ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVzaXplSW1hZ2UoKTsKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgUGxhdGZvcm1JbnN0cnVtZW50YXRpb25DbGllbnQqIG1fY2xp
ZW50OworICAgIC8vIFRoZXJlIGFyZSBwcmVzZW50bHkgdHdvIGNsaWVudHMsIGFuZCB0aGV5IGRv
bid0IGluc3RhbGwgdGhlbXNlbHZlcyBtdWx0aXBsZSB0aW1lcy4KKyAgICBzdGF0aWMgY29uc3Qg
aW50IG1heE51bWJlck9mQ2xpZW50cyA9IDI7CisgICAgc3RhdGljIFBsYXRmb3JtSW5zdHJ1bWVu
dGF0aW9uQ2xpZW50KiBzX2NsaWVudHNbbWF4TnVtYmVyT2ZDbGllbnRzXTsKKyAgICBzdGF0aWMg
aW50IHNfbnVtYmVyT2ZDbGllbnRzOwogfTsKIAotI2RlZmluZSBGQVNUX1JFVFVSTl9JRl9OT19D
TElFTlQoKSBpZiAoIW1fY2xpZW50KSByZXR1cm47CisjZGVmaW5lIEZBU1RfUkVUVVJOX0lGX05P
X0NMSUVOVCgpIGlmICghc19udW1iZXJPZkNsaWVudHMpIHJldHVybjsKIAogaW5saW5lIHZvaWQg
UGxhdGZvcm1JbnN0cnVtZW50YXRpb246OndpbGxEZWNvZGVJbWFnZShjb25zdCBTdHJpbmcmIGlt
YWdlVHlwZSkKIHsKQEAgLTcxLDcgKzc0LDggQEAgaW5saW5lIHZvaWQgUGxhdGZvcm1JbnN0cnVt
ZW50YXRpb246OndpbGxEZWNvZGVJbWFnZShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSkKICAgICBU
UkFDRV9FVkVOVF9CRUdJTjEoIndlYmtpdCIsICJJbWFnZSBEZWNvZGUiLCAiaW1hZ2VUeXBlIiwg
VFJBQ0VfU1RSX0NPUFkoaW1hZ2VUeXBlLmFzY2lpKCkuZGF0YSgpKSk7CiAjZW5kaWYKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19DTElFTlQoKTsKLSAgICBtX2NsaWVudC0+d2lsbERlY29kZUltYWdl
KGltYWdlVHlwZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzX251bWJlck9mQ2xpZW50czsg
KytpKQorICAgICAgICBzX2NsaWVudHNbaV0tPndpbGxEZWNvZGVJbWFnZShpbWFnZVR5cGUpOwog
fQogCiBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6ZGlkRGVjb2RlSW1hZ2Uo
KQpAQCAtODAsNyArODQsOCBAQCBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6
ZGlkRGVjb2RlSW1hZ2UoKQogICAgIFRSQUNFX0VWRU5UX0VORDAoIndlYmtpdCIsICJJbWFnZSBE
ZWNvZGUiKTsKICNlbmRpZgogICAgIEZBU1RfUkVUVVJOX0lGX05PX0NMSUVOVCgpOwotICAgIG1f
Y2xpZW50LT5kaWREZWNvZGVJbWFnZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc19udW1i
ZXJPZkNsaWVudHM7ICsraSkKKyAgICAgICAgc19jbGllbnRzW2ldLT5kaWREZWNvZGVJbWFnZSgp
OwogfQogCiBpbmxpbmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6d2lsbFJlc2l6ZUlt
YWdlKGJvb2wgc2hvdWxkQ2FjaGUpCkBAIC04OSw3ICs5NCw4IEBAIGlubGluZSB2b2lkIFBsYXRm
b3JtSW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVzaXplSW1hZ2UoYm9vbCBzaG91bGRDYWNoZSkKICAg
ICBUUkFDRV9FVkVOVF9CRUdJTjEoIndlYmtpdCIsICJJbWFnZSBSZXNpemUiLCAiY2FjaGVkIiwg
c2hvdWxkQ2FjaGUpOwogI2VuZGlmCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fQ0xJRU5UKCk7Ci0g
ICAgbV9jbGllbnQtPndpbGxSZXNpemVJbWFnZShzaG91bGRDYWNoZSk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzX251bWJlck9mQ2xpZW50czsgKytpKQorICAgICAgICBzX2NsaWVudHNbaV0t
PndpbGxSZXNpemVJbWFnZShzaG91bGRDYWNoZSk7CiB9CiAKIGlubGluZSB2b2lkIFBsYXRmb3Jt
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZXNpemVJbWFnZSgpCkBAIC05OCw3ICsxMDQsOCBAQCBpbmxp
bmUgdm9pZCBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6ZGlkUmVzaXplSW1hZ2UoKQogICAgIFRS
QUNFX0VWRU5UX0VORDAoIndlYmtpdCIsICJJbWFnZSBSZXNpemUiKTsKICNlbmRpZgogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0NMSUVOVCgpOwotICAgIG1fY2xpZW50LT5kaWRSZXNpemVJbWFnZSgp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc19udW1iZXJPZkNsaWVudHM7ICsraSkKKyAgICAg
ICAgc19jbGllbnRzW2ldLT5kaWRSZXNpemVJbWFnZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZjRmNGM5ZWNlMzJiNjNkZjll
ZGEwNDNiZmY1NmU5NzkyNzNkODU4Mi4uZGQyMzQwNTg2NjU1ZTJhNWQ1NjUxZDJhZTZkM2MwMThi
M2U4OTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNDQ5LDYgKzQ0OSw4IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1JlbmRlcmluZ1N0YXRzQ29sbGVjdG9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9S
ZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5oJywKICAgICAgICAgICAgICAgICAnc3JjL1Njcm9sbGJh
ckdyb3VwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDVmZjIwNmIwYTU3ZTQw
ZTI3ZWQyNTE1ZDBjMTIwODQ1OTJhZTk5NzIuLmMwYWQ3MTE3ZDZiYmI4MTljMzQxZGY4MWNiMzZk
NzY2MWRhOTZkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0V2Vi
R0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0WFNTQXVk
aXRvckVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJpbmdTdGF0
c0NvbGxlY3Rpb25FbmFibGVkKGJvb2wpID0gMDsKIAogICAgIC8vIERFUFJFQ0FURUQKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdERldmljZVNjYWxlRmFjdG9yKGludCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODU4NTMxYjg0NWM0M2ZjM2YxZWFhMmU2MDc5ODk3ZGM5NTRmYjE5OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1JlbmRlcmluZ1N0
YXRzQ29sbGVjdG9yLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbmRlcmluZ1N0YXRzQ29sbGVjdG9yLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVuZGVyaW5nU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKKworLy8gUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IKK1JlbmRlcmluZ1N0
YXRzQ29sbGVjdG9yOjpSZW5kZXJpbmdTdGF0c0NvbGxlY3RvcigpCisgICAgOiBtX3N0YXJ0VGlt
ZSgwKQorICAgICwgbV90b3RhbERlY29kZVRpbWVJblNlY29uZHMoMCkKKyAgICAsIG1fdG90YWxS
ZXNpemVUaW1lSW5TZWNvbmRzKDApCit7Cit9CisKK3ZvaWQgUmVuZGVyaW5nU3RhdHNDb2xsZWN0
b3I6OndpbGxEZWNvZGVJbWFnZShjb25zdCBTdHJpbmcmIGltYWdlVHlwZSkKK3sKKyAgICBtX3N0
YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIG1fdG90YWxEZWNv
ZGVUaW1lSW5TZWNvbmRzICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFy
dFRpbWU7Cit9CisKK3ZvaWQgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3I6OmRpZERlY29kZUltYWdl
KCkKK3sKKyAgICBtX3RvdGFsRGVjb2RlVGltZUluU2Vjb25kcyArPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOworfQorCit2b2lkIFJlbmRlcmluZ1N0YXRzQ29s
bGVjdG9yOjp3aWxsUmVzaXplSW1hZ2UoYm9vbCBzaG91bGRDYWNoZSkKK3sKKyAgICBtX3N0YXJ0
VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworfQorCit2b2lkIFJlbmRlcmlu
Z1N0YXRzQ29sbGVjdG9yOjpkaWRSZXNpemVJbWFnZSgpCit7CisgICAgbV90b3RhbFJlc2l6ZVRp
bWVJblNlY29uZHMgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGlt
ZTsKK30KKwordm9pZCBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcjo6cmVuZGVyaW5nU3RhdHMoV2Vi
UmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIHN0YXRzLnRvdGFsSW1hZ2VEZWNv
ZGVUaW1lSW5TZWNvbmRzID0gbV90b3RhbERlY29kZVRpbWVJblNlY29uZHM7CisgICAgc3RhdHMu
dG90YWxJbWFnZVJlc2l6ZVRpbWVJblNlY29uZHMgPSBtX3RvdGFsUmVzaXplVGltZUluU2Vjb25k
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9SZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjM3ZmQ1
OWVkMzRjNjE5MTAwMWNjOGJiNTJkZDJlNzQ4Njc4N2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IuaApAQCAtMCww
ICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvcl9oCisjZGVmaW5lIFJlbmRl
cmluZ1N0YXRzQ29sbGVjdG9yX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtSW5zdHJ1bWVudGF0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOworCitjbGFzcyBSZW5kZXJpbmdTdGF0c0NvbGxl
Y3RvciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUluc3RydW1lbnRhdGlvbkNsaWVudCB7Citw
dWJsaWM6CisgICAgUmVuZGVyaW5nU3RhdHNDb2xsZWN0b3IoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlY29kZUltYWdlKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBlKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRGVjb2RlSW1hZ2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFJlc2l6ZUltYWdlKGJvb2wgc2hvdWxkQ2FjaGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXNpemVJbWFnZSgpIE9WRVJSSURFOworCisgICAgdm9pZCByZW5kZXJpbmdTdGF0
cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9zdGFy
dFRpbWU7CisgICAgZG91YmxlIG1fdG90YWxEZWNvZGVUaW1lSW5TZWNvbmRzOworICAgIGRvdWJs
ZSBtX3RvdGFsUmVzaXplVGltZUluU2Vjb25kczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwCmluZGV4IDRjYzNlZjcyN2FhNThkMDc0NDgwYjEzNjk0MThjZmU1ZmIwYmE5M2UuLjUz
NGRmYWZjZmYyMmY4NGE1MjQ5ZTY1N2FkNGRkYzVlYmIwMmQxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTQsNiArNTQsNyBAQCBX
ZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAg
LCBtX3ZpZXdwb3J0RW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXBwbHlEZWZhdWx0RGV2aWNlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3IoZmFsc2UpCiAgICAgLCBtX2dlc3R1cmVUYXBIaWdobGlnaHRF
bmFibGVkKHRydWUpCisgICAgLCBtX3JlbmRlcmluZ1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX2RlZmF1bHRUaWxlU2l6ZShXZWJTaXplKDI1NiwgMjU2KSkKICAgICAsIG1f
bWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKDUxMiwgNTEyKSkKIHsKQEAgLTY1Myw0ICs2NTQs
OSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0R2VzdHVyZVRhcEhpZ2hsaWdodEVuYWJsZWQo
Ym9vbCBlbmFibGVIaWdobGlnaHQpCiAgICAgbV9nZXN0dXJlVGFwSGlnaGxpZ2h0RW5hYmxlZCA9
IGVuYWJsZUhpZ2hsaWdodDsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFJlbmRlcmlu
Z1N0YXRzQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fcmVuZGVyaW5n
U3RhdHNDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRl
eCBlOWUwMWJmY2Q3NDZlMTUwNjFhNzMyN2ZhZWI1MjUyOGY5NzUzNmJiLi41ZGIxYzU2OTQ5MmQy
MDU3ODMyNWY1ZDlkN2ExNTUxYmYzNGIzN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTU0LDYgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0V2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRXZWJTZWN1cml0eUVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJp
bmdTdGF0c0NvbGxlY3Rpb25FbmFibGVkKGJvb2wpOwogCiAgICAgYm9vbCBzaG93RlBTQ291bnRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd0ZQU0NvdW50ZXI7IH0KICAgICBib29sIHNob3dQbGF0
Zm9ybUxheWVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOyB9
CkBAIC0xNjMsNiArMTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2VzdHVyZVRhcEhpZ2hsaWdo
dEVuYWJsZWQoKSB7IHJldHVybiBtX2dlc3R1cmVUYXBIaWdobGlnaHRFbmFibGVkOyB9CiAgICAg
V2ViU2l6ZSBkZWZhdWx0VGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUaWxlU2l6
ZTsgfQogICAgIFdlYlNpemUgbWF4VW50aWxlZExheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4VW50aWxlZExheWVyU2l6ZTsgfQorICAgIGJvb2wgcmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9u
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9uRW5hYmxl
ZDsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpAQCAt
MTczLDYgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3ZpZXdwb3J0RW5hYmxlZDsKICAg
ICBib29sIG1fYXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3I7CiAgICAg
Ym9vbCBtX2dlc3R1cmVUYXBIaWdobGlnaHRFbmFibGVkOworICAgIGJvb2wgbV9yZW5kZXJpbmdT
dGF0c0NvbGxlY3Rpb25FbmFibGVkOwogICAgIFdlYlNpemUgbV9kZWZhdWx0VGlsZVNpemU7CiAg
ICAgV2ViU2l6ZSBtX21heFVudGlsZWRMYXllclNpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDI2MWY3YzM1N2U5YTc4YjkxZjJhN2QzYWJm
ZDk0ZGIyZTI4YTk4YTUuLmQzOWFiZTczZDcwMmFmZWE4Yjg2ZDBkNzFhYWMzYjNlYjMyNzQ0MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTgxMSw2
ICs4MTEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdT
dGF0cyYgc3RhdHMpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlVmlldykKICAgICAgICAg
bV9sYXllclRyZWVWaWV3LT5yZW5kZXJpbmdTdGF0cyhzdGF0cyk7CisgICAgbV9wbGF0Zm9ybVN0
YXRzLnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcykKQEAgLTE3
NzEsNiArMTc3Miw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFz
LCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9wdGlvbnMgb3B0CiAgICAgLy8gSWRlYWxseSwg
QW5kcm9pZCB3b3VsZCBhbHdheXMgdXNlIFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJs
ZSBhcyB3ZWxsLgogICAgIEFTU0VSVChvcHRpb24gPT0gUmVhZGJhY2tGcm9tQ29tcG9zaXRvcklm
QXZhaWxhYmxlKTsKICNlbmRpZgorICAgIGlmIChzZXR0aW5nc0ltcGwoKS0+cmVuZGVyaW5nU3Rh
dHNDb2xsZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6
YWRkQ2xpZW50KCZtX3BsYXRmb3JtU3RhdHMpOwogCiAgICAgaWYgKG9wdGlvbiA9PSBSZWFkYmFj
a0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKCkpIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0xNzg3LDcgKzE3
OTAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3Qg
V2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAogICAgICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgICAgIFBhaW50QmVoYXZpb3Igb2xk
UGFpbnRCZWhhdmlvciA9IHZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICAgICAgaWYgKGlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQob3B0aW9u
ID09IEZvcmNlU29mdHdhcmVSZW5kZXJpbmdBbmRJZ25vcmVHUFVSZXNpZGVudENvbnRlbnQpOyAg
ICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG9wdGlvbiA9PSBGb3JjZVNvZnR3YXJlUmVu
ZGVyaW5nQW5kSWdub3JlR1BVUmVzaWRlbnRDb250ZW50KTsKICAgICAgICAgICAgIHZpZXctPnNl
dFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMpOwogICAgICAgICB9CiAKQEAgLTE3OTksMTAgKzE4MDIsMTMgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJl
Y3QsIFBhaW50T3B0aW9ucyBvcHQKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT5oaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5Tb2Z0d2FyZVBhaW50TWVnYXBpeFBl
clNlY29uZCIsIHBpeGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKIAogICAgICAg
ICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChvcHRpb24gPT0gRm9yY2VTb2Z0d2FyZVJlbmRlcmluZ0FuZElnbm9yZUdQVVJlc2lkZW50
Q29udGVudCk7ICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQob3B0aW9uID09IEZvcmNl
U29mdHdhcmVSZW5kZXJpbmdBbmRJZ25vcmVHUFVSZXNpZGVudENvbnRlbnQpOwogICAgICAgICAg
ICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKICAgICAgICAgfQog
ICAgIH0KKworICAgIGlmIChzZXR0aW5nc0ltcGwoKS0+cmVuZGVyaW5nU3RhdHNDb2xsZWN0aW9u
RW5hYmxlZCgpKQorICAgICAgICBQbGF0Zm9ybUluc3RydW1lbnRhdGlvbjo6cmVtb3ZlQ2xpZW50
KCZtX3BsYXRmb3JtU3RhdHMpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp0aGVtZUNoYW5nZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNGMxYTk3NGEw
NWRmNDI2NjBmOWQ3Mzk5Mzc0ODI0MmYwYTY0YjNkNi4uOWFmM2E1MTcwOGFjYmNlYjYwZjE2M2Ex
Y2EwNjljYWE5NjNjMmIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUGFnZVBvcHVwRHJpdmVyLmgiCiAjaW5j
bHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdTdGF0c0NvbGxlY3Rvci5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgpAQCAtODE4LDYgKzgxOSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbjsKIAogICAgIFdlYlZpZXdCZW5j
aG1hcmtTdXBwb3J0SW1wbCBtX2JlbmNobWFya1N1cHBvcnQ7CisgICAgUmVuZGVyaW5nU3RhdHND
b2xsZWN0b3IgbV9wbGF0Zm9ybVN0YXRzOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIFdlYkNvcmU6OkludFJlY3QgbV9yb290TGF5ZXJTY3JvbGxEYW1hZ2U7Cg==
</data>
<flag name="review"
          id="178662"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>