<?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>93898</bug_id>
          
          <creation_ts>2012-08-13 14:01:32 -0700</creation_ts>
          <short_desc>Add optional debug logging when we fall into/out of threaded scrolling</short_desc>
          <delta_ts>2012-09-13 16:05:16 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>mitz</cc>
    
    <cc>philn</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694053</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 14:01:32 -0700</bug_when>
    <thetext>It would be nice if we could know when we fall into/out of threaded scrolling.

I have a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694055</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-08-13 14:02:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/12089098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694064</commentid>
    <comment_count>2</comment_count>
      <attachid>158100</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 14:12:57 -0700</bug_when>
    <thetext>Created attachment 158100
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694069</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 14:14:55 -0700</bug_when>
    <thetext>I was calling it &quot;fast&quot; and &quot;slow&quot;, but wasn&apos;t sure that was appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694080</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 14:21:11 -0700</bug_when>
    <thetext>Meh, disregard this. I really want to know *why* also, so there&apos;s more plumbing involved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694194</commentid>
    <comment_count>5</comment_count>
      <attachid>158139</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 16:03:53 -0700</bug_when>
    <thetext>Created attachment 158139
patch that prints reasons too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694203</commentid>
    <comment_count>6</comment_count>
      <attachid>158139</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 16:24:45 -0700</bug_when>
    <thetext>Comment on attachment 158139
patch that prints reasons too

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeState.cpp:93
&gt; -    if (m_shouldUpdateScrollLayerPositionOnMainThread == shouldUpdateScrollLayerPositionOnMainThread)
&gt; +    if (m_reasonsForUpdatingScrollLayerPositionOnMainThread == reasonsForUpdatingScrollLayerPositionOnMainThread)

This is a possibly undesirable behavior change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694204</commentid>
    <comment_count>7</comment_count>
      <attachid>158139</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-13 16:25:08 -0700</bug_when>
    <thetext>Comment on attachment 158139
patch that prints reasons too

Attachment 158139 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13480942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694210</commentid>
    <comment_count>8</comment_count>
      <attachid>158139</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 16:38:15 -0700</bug_when>
    <thetext>Comment on attachment 158139
patch that prints reasons too

Attachment 158139 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13485662</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694221</commentid>
    <comment_count>9</comment_count>
      <attachid>158145</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 16:45:51 -0700</bug_when>
    <thetext>Created attachment 158145
we needn&apos;t care about swapping to the main thread when we don&apos;t support threaded scrolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694257</commentid>
    <comment_count>10</comment_count>
      <attachid>158145</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-13 17:26:27 -0700</bug_when>
    <thetext>Comment on attachment 158145
we needn&apos;t care about swapping to the main thread when we don&apos;t support threaded scrolling

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

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:154
&gt; -    void setShouldUpdateScrollLayerPositionOnMainThread(bool);
&gt; +    void setReasonsForUpdatingScrollLayerPositionOnMainThread(unsigned);

Setting &quot;reasons for&quot; doesn&apos;t necessarily imply that it will actually do anything, so I&apos;d prefer staying closer to the old name. Also, using unsigned for a bitmask of known enum values is pretty icky. Typedef please!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694396</commentid>
    <comment_count>11</comment_count>
      <attachid>158186</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-13 19:00:35 -0700</bug_when>
    <thetext>Created attachment 158186
simon&apos;s changes, hopefully</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694412</commentid>
    <comment_count>12</comment_count>
      <attachid>158186</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-13 19:12:58 -0700</bug_when>
    <thetext>Comment on attachment 158186
simon&apos;s changes, hopefully

Attachment 158186 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13492350</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694417</commentid>
    <comment_count>13</comment_count>
      <attachid>158186</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-13 19:17:08 -0700</bug_when>
    <thetext>Comment on attachment 158186
simon&apos;s changes, hopefully

Attachment 158186 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13489446</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694423</commentid>
    <comment_count>14</comment_count>
      <attachid>158186</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 19:26:52 -0700</bug_when>
    <thetext>Comment on attachment 158186
simon&apos;s changes, hopefully

Attachment 158186 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13491392</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694424</commentid>
    <comment_count>15</comment_count>
      <attachid>158186</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-13 19:33:15 -0700</bug_when>
    <thetext>Comment on attachment 158186
simon&apos;s changes, hopefully

Attachment 158186 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13489453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694467</commentid>
    <comment_count>16</comment_count>
      <attachid>158186</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-13 21:00:32 -0700</bug_when>
    <thetext>Comment on attachment 158186
simon&apos;s changes, hopefully

Attachment 158186 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13485720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694475</commentid>
    <comment_count>17</comment_count>
      <attachid>158186</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-13 21:22:41 -0700</bug_when>
    <thetext>Comment on attachment 158186
simon&apos;s changes, hopefully

Attachment 158186 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13503010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695161</commentid>
    <comment_count>18</comment_count>
      <attachid>158371</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-14 11:06:20 -0700</bug_when>
    <thetext>Created attachment 158371
build fix for non-threaded-scrolling platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695172</commentid>
    <comment_count>19</comment_count>
      <attachid>158371</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 11:16:51 -0700</bug_when>
    <thetext>Comment on attachment 158371
build fix for non-threaded-scrolling platforms

Attachment 158371 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13488721</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695176</commentid>
    <comment_count>20</comment_count>
      <attachid>158371</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 11:22:51 -0700</bug_when>
    <thetext>Comment on attachment 158371
build fix for non-threaded-scrolling platforms

Attachment 158371 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13501303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695180</commentid>
    <comment_count>21</comment_count>
      <attachid>158378</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-14 11:23:43 -0700</bug_when>
    <thetext>Created attachment 158378
ugh</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712160</commentid>
    <comment_count>22</comment_count>
      <attachid>162272</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 09:53:57 -0700</bug_when>
    <thetext>Created attachment 162272
update log state regardless of tile border pref (!), fix a typo

I&apos;m still not sure we want to take this approach, but the log channel approach seems like a dead end. Ideally, we&apos;d be able to hand structured data to clients, but I haven&apos;t had a chance to look into how to make that work yet, and it seems likely that that approach will involve equal or greater amounts of plumbing.

In either case, we will still need to keep the &quot;reason&quot; for dropping to main-thread scrolling around, which this patch does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712196</commentid>
    <comment_count>23</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-09-05 10:23:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=162272) [details]
&gt; I&apos;m still not sure we want to take this approach, but the log channel approach seems like a dead end.

Why? Even if you are not using a logging channel, you should use WTF logging, and definitely not write to stdout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712380</commentid>
    <comment_count>24</comment_count>
      <attachid>162272</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-05 11:46:13 -0700</bug_when>
    <thetext>Comment on attachment 162272
update log state regardless of tile border pref (!), fix a typo

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

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:392
&gt; +    if (!supportsFixedPositionLayers() &amp;&amp; frameView-&gt;hasFixedObjects())
&gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasFixedObjectsWithoutSupportingFixedLayers;
&gt; +    if (supportsFixedPositionLayers() &amp;&amp; hasNonLayerFixedObjects(frameView))
&gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasNonLayerFixedObjects;

The cool kids are calling these &quot;viewport constrained&quot; objects now.

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:353
&gt; +            reasonsDescription += &quot;fixed objects,&quot;;

and sticky?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712383</commentid>
    <comment_count>25</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 11:50:08 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; Created an attachment (id=162272) [details] [details]
&gt; &gt; I&apos;m still not sure we want to take this approach, but the log channel approach seems like a dead end.
&gt; 
&gt; Why?

People seemed opposed to release-mode-log-channels.

&gt; Even if you are not using a logging channel, you should use WTF logging, and definitely not write to stdout.

Ah! WTFLogAlways()? Ok. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712384</commentid>
    <comment_count>26</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 11:50:39 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 162272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162272&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:392
&gt; &gt; +    if (!supportsFixedPositionLayers() &amp;&amp; frameView-&gt;hasFixedObjects())
&gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasFixedObjectsWithoutSupportingFixedLayers;
&gt; &gt; +    if (supportsFixedPositionLayers() &amp;&amp; hasNonLayerFixedObjects(frameView))
&gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasNonLayerFixedObjects;
&gt; 
&gt; The cool kids are calling these &quot;viewport constrained&quot; objects now.
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:353
&gt; &gt; +            reasonsDescription += &quot;fixed objects,&quot;;
&gt; 
&gt; and sticky?

Ahh, lots of conflicts. My tree is a bit out of date. Thanks, Simon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712497</commentid>
    <comment_count>27</comment_count>
      <attachid>162272</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 13:49:58 -0700</bug_when>
    <thetext>Comment on attachment 162272
update log state regardless of tile border pref (!), fix a typo

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

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeNodeMac.mm:346
&gt; +        String reasonsDescription;

Dino points out that this should use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712920</commentid>
    <comment_count>28</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 23:20:10 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 162272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162272&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:392
&gt; &gt; +    if (!supportsFixedPositionLayers() &amp;&amp; frameView-&gt;hasFixedObjects())
&gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasFixedObjectsWithoutSupportingFixedLayers;
&gt; &gt; +    if (supportsFixedPositionLayers() &amp;&amp; hasNonLayerFixedObjects(frameView))
&gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasNonLayerFixedObjects;
&gt; 
&gt; The cool kids are calling these &quot;viewport constrained&quot; objects now.

I&apos;ll fix this in a followup, since it involves renaming stuff that I&apos;m not currently touching, and this patch is already big enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712921</commentid>
    <comment_count>29</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 23:21:50 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 162272 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162272&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:392
&gt; &gt; &gt; +    if (!supportsFixedPositionLayers() &amp;&amp; frameView-&gt;hasFixedObjects())
&gt; &gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasFixedObjectsWithoutSupportingFixedLayers;
&gt; &gt; &gt; +    if (supportsFixedPositionLayers() &amp;&amp; hasNonLayerFixedObjects(frameView))
&gt; &gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= ScrollingTreeState::HasNonLayerFixedObjects;
&gt; &gt; 
&gt; &gt; The cool kids are calling these &quot;viewport constrained&quot; objects now.
&gt; 
&gt; I&apos;ll fix this in a followup, since it involves renaming stuff that I&apos;m not currently touching, and this patch is already big enough.

Or... not, since I don&apos;t want to have to change the string that I print, and I don&apos;t want it to be inconsistent with the reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712922</commentid>
    <comment_count>30</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-05 23:22:12 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Or... not, since I don&apos;t want to have to change the string that I print, and I don&apos;t want it to be inconsistent with the reason.

(by that, I mean, I&apos;ll do it in this patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713757</commentid>
    <comment_count>31</comment_count>
      <attachid>162601</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-06 15:16:24 -0700</bug_when>
    <thetext>Created attachment 162601
patch

After talking to Simon, the rename hasn&apos;t propagated through to the rest of WebCore yet (a lot of things still use &quot;fixed&quot; instead of &quot;viewport constrained&quot;), so I&apos;m going to use &quot;viewport constrained&quot; in my output (so that I don&apos;t have to change other code which might depend on this output), but not change any of the other naming.

I&apos;ll change the other two logs (the ones not being introduced by this patch) to WTFLogAlways instead of printf in another patch in a few minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713770</commentid>
    <comment_count>32</comment_count>
      <attachid>162605</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-06 15:27:26 -0700</bug_when>
    <thetext>Created attachment 162605
smfr is changing things out from under me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714216</commentid>
    <comment_count>33</comment_count>
      <attachid>162605</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-07 00:33:07 -0700</bug_when>
    <thetext>Comment on attachment 162605
smfr is changing things out from under me :)

Simon made one additional comment (HasViewportConstrainedObjectsWithoutSupportingFixedLayers -&gt; HasNonCompositedViewportConstrainedObjects); I didn&apos;t mean to post this for review, just wanted the EWS to run through the revised patch. Will land shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714227</commentid>
    <comment_count>34</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-07 00:45:50 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/127837</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716693</commentid>
    <comment_count>35</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-10 16:56:33 -0700</bug_when>
    <thetext>I should have paid more attention to this patch, but you basically commented out the chromium implementation of ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread() which (obviously) completely breaks our implementation.  We don&apos;t set ENABLE(THREADED_SCROLLING): http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/features.gypi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716704</commentid>
    <comment_count>36</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-10 17:07:33 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; I should have paid more attention to this patch, but you basically commented out the chromium implementation of ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread() which (obviously) completely breaks our implementation.  We don&apos;t set ENABLE(THREADED_SCROLLING): http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/features.gypi.

Oh no! I assumed that ports that use another thread for scrolling would be the ports that used setShouldUpdateScrollLayerPositionOnMainThread would be the ports with THREADED_SCROLLING on, but apparently I was wrong :/

Feel free to roll out, as I&apos;m OoO this evening. Sorry for the breakage!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716708</commentid>
    <comment_count>37</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-10 17:10:13 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; &gt; I should have paid more attention to this patch, but you basically commented out the chromium implementation of ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread() which (obviously) completely breaks our implementation.  We don&apos;t set ENABLE(THREADED_SCROLLING): http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/features.gypi.
&gt; 
&gt; Oh no! I assumed that ports that use another thread for scrolling would be the ports that used setShouldUpdateScrollLayerPositionOnMainThread would be the ports with THREADED_SCROLLING on, but apparently I was wrong :/
&gt; 

Afraid so.  ENABLE(THREADED_SCROLLING) is mac-only.

&gt; Feel free to roll out, as I&apos;m OoO this evening. Sorry for the breakage!

I think I&apos;ll do that to restore previous behavior.  To fix this, I&apos;d suggest you move the ReasonsForHavingGiganticlyLongLines enum values into ScrollingCoordinator itself and make sure that the cross-platform ScrollingCoordinator code isn&apos;t guarded - stuff that is specific to ScrollingTree can stay guarded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716710</commentid>
    <comment_count>38</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-10 17:12:10 -0700</bug_when>
    <thetext>Reverted r127837 for reason:

Broke ScrollingCoordinator on chromium

Committed r128132: &lt;http://trac.webkit.org/changeset/128132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717736</commentid>
    <comment_count>39</comment_count>
      <attachid>163482</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-11 16:56:59 -0700</bug_when>
    <thetext>Created attachment 163482
move enum to ScrollingCoordinator instead of ScrollingTreeState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717795</commentid>
    <comment_count>40</comment_count>
      <attachid>163482</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 18:32:55 -0700</bug_when>
    <thetext>Comment on attachment 163482
move enum to ScrollingCoordinator instead of ScrollingTreeState

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

I believe this&apos;ll work fine for chromium.  I&apos;ll patch this in and test to be sure tomorrow.  I have some naming nits now that I&apos;m looking more closely, see below.

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:383
&gt; +void ScrollingCoordinator::updateShouldUpdateScrollLayerPositionOnMainThreadReason()

This is a confusing name to me.  This function is updating the property of whether we can scroll off the main thread.  From the name, I&apos;d expect that this is only updating some bookkeeping state, not something really important to the functioning of ScrollingCoordinator.  Do we have to put the bookkeeeping bit in the name?

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:447
&gt; +void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThreadReason(ReasonForUpdatingScrollLayerPositionOnMainThreadFlags reasons)

I have the same sort of problem here.  It sounds like from the function name we&apos;re just passing a bit of metadata around, but we&apos;re actually controlling behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717811</commentid>
    <comment_count>41</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-11 18:50:20 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (From update of attachment 163482 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163482&amp;action=review
&gt; 
&gt; I believe this&apos;ll work fine for chromium.  I&apos;ll patch this in and test to be sure tomorrow.  I have some naming nits now that I&apos;m looking more closely, see below.
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:383
&gt; &gt; +void ScrollingCoordinator::updateShouldUpdateScrollLayerPositionOnMainThreadReason()
&gt; 
&gt; This is a confusing name to me.  This function is updating the property of whether we can scroll off the main thread.  From the name, I&apos;d expect that this is only updating some bookkeeping state, not something really important to the functioning of ScrollingCoordinator.  Do we have to put the bookkeeeping bit in the name?
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:447
&gt; &gt; +void ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThreadReason(ReasonForUpdatingScrollLayerPositionOnMainThreadFlags reasons)
&gt; 
&gt; I have the same sort of problem here.  It sounds like from the function name we&apos;re just passing a bit of metadata around, but we&apos;re actually controlling behavior.

I would be OK with not having the &quot;Reason&quot; in the function name, sure. (is that what you&apos;re suggesting?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717821</commentid>
    <comment_count>42</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 19:14:56 -0700</bug_when>
    <thetext>Yeah, I think that would help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718609</commentid>
    <comment_count>43</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-12 12:32:23 -0700</bug_when>
    <thetext>This patch does appear to work correctly in chromium.

My comment was mostly about the naming.  I also think it&apos;s a bit dangerous to conflate a debugging concept - knowing the reason for main thread scrolling - with a very important behavior concept - forcing scrolls to happen on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718888</commentid>
    <comment_count>44</comment_count>
      <attachid>163738</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-12 16:59:11 -0700</bug_when>
    <thetext>Created attachment 163738
don&apos;t rename all of the functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719877</commentid>
    <comment_count>45</comment_count>
      <attachid>163738</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-13 13:46:40 -0700</bug_when>
    <thetext>Comment on attachment 163738
don&apos;t rename all of the functions

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

r=me but please consider suggested renames.

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:398
&gt; +    if (m_page-&gt;mainFrame()-&gt;document()-&gt;isImageDocument())
&gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= IsImageDocument;

What about media documents, PDFs etc? Do we care?

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:47
&gt; +typedef unsigned ReasonForUpdatingScrollLayerPositionOnMainThreadFlags;

It&apos;s odd that this typedef is outside class scope, but the flags are inside. Such a long name! How about MainThreadScrollingReasons?

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:132
&gt; +    enum ReasonForUpdatingScrollLayerPositionOnMainThread {

And MainThreadScrollingReasonFlags?

&gt; Source/WebCore/page/scrolling/ScrollingTreeState.cpp:94
&gt; +    if ((bool)m_shouldUpdateScrollLayerPositionOnMainThread == (bool)reasons)
&gt;          return;

I think C++ will do the type coercion for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719927</commentid>
    <comment_count>46</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-13 14:18:55 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; (From update of attachment 163738 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163738&amp;action=review
&gt; 
&gt; r=me but please consider suggested renames.
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:398
&gt; &gt; +    if (m_page-&gt;mainFrame()-&gt;document()-&gt;isImageDocument())
&gt; &gt; +        reasonsForUpdatingScrollLayerPositionOnMainThread |= IsImageDocument;
&gt; 
&gt; What about media documents, PDFs etc? Do we care?

This decision was made due to specific performance concerns about drawing a single image into a tiled drawing area (actually due to a complaint I made to Anders a few months ago).

&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:47
&gt; &gt; +typedef unsigned ReasonForUpdatingScrollLayerPositionOnMainThreadFlags;
&gt; 
&gt; It&apos;s odd that this typedef is outside class scope, but the flags are inside. Such a long name! How about MainThreadScrollingReasons?
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:132
&gt; &gt; +    enum ReasonForUpdatingScrollLayerPositionOnMainThread {
&gt; 
&gt; And MainThreadScrollingReasonFlags?

Sounds good!

&gt; &gt; Source/WebCore/page/scrolling/ScrollingTreeState.cpp:94
&gt; &gt; +    if ((bool)m_shouldUpdateScrollLayerPositionOnMainThread == (bool)reasons)
&gt; &gt;          return;
&gt; 
&gt; I think C++ will do the type coercion for you.

It will!

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720069</commentid>
    <comment_count>47</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-09-13 16:05:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/128521</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158100</attachid>
            <date>2012-08-13 14:12:57 -0700</date>
            <delta_ts>2012-08-13 16:03:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>threaded-logging.diff</filename>
            <type>text/plain</type>
            <size>3288</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDAyNjRjLi42NTM3Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDgtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGlu
dG8vb3V0IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5
MDk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBsb2dnaW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIGZhc3QgKHRocmVhZGVkKSBzY3Jv
bGxpbmcgbW9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoaXMgaXMganVzdCBkZWJ1
Z2dpbmcgbG9nZ2luZy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjp1
cGRhdGUpOgorCiAyMDEyLTA4LTEzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5v
a2lhLmNvbT4KIAogICAgICAgICBbUXRdIFBvcnQgbWV0YSBtZXRob2Qvc2lnbmFsL3Nsb3QgaGFu
ZGxpbmcgaW4gcnVuLXRpbWUgYnJpZGdlIHRvIHVzZSBKU0MgQyBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5t
bQppbmRleCAzOGRkOWU1Li42MTVhOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCkBAIC03MCwxNSAr
NzAsMjIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6dXBkYXRlKFNjcm9sbGluZ1RyZWVT
dGF0ZSogc3RhdGUpCiAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgKFNjcm9s
bGluZ1RyZWVTdGF0ZTo6U2Nyb2xsTGF5ZXIgfCBTY3JvbGxpbmdUcmVlU3RhdGU6OkNvbnRlbnRz
U2l6ZSB8IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Vmlld3BvcnRSZWN0KSkKICAgICAgICAgdXBkYXRl
TWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24oKSk7CiAKLSAgICBpZiAoKHN0YXRlLT5j
aGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSAmJiBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKCkpIHsKLSAgICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0
byB0aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBsYXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJl
YWQiIG1vZGUuCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHByb2JhYmxlIG1haW4gdGhyZWFk
IHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9sbCBsYXllciBwb3NpdGlvbi4K
LSAgICAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0
YXRlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikKLSAgICAgICAgICAgIG1fcHJvYmFibGVNYWlu
VGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS0+cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24g
PSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwotICAgICAgICAgICAgbV9wcm9iYWJsZU1h
aW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngs
IC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgIGlmICgoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0
aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpKSB7CisgICAgICAgIGJvb2wgdXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCA9IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoKTsKKworICAgICAgICBpZiAodXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCkgeworICAgICAgICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xvdyAidXBk
YXRlIHNjcm9sbCBsYXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUuCisgICAg
ICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9z
aXRpb24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCisgICAgICAgICAg
ICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlJl
cXVlc3RlZFNjcm9sbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhy
ZWFkU2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS0+cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3Np
dGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAgbV9w
cm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXllclBv
c2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBwcmludGYoIlNDUk9MTElORzogU3dpdGNoaW5n
IHRvICVzIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAlZlxuIiwgdXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCA/ICJtYWluLXRocmVhZCIgOiAidGhyZWFkZWQiLCBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158139</attachid>
            <date>2012-08-13 16:03:53 -0700</date>
            <delta_ts>2012-08-13 16:45:51 -0700</delta_ts>
            <desc>patch that prints reasons too</desc>
            <filename>threaded-logging.diff</filename>
            <type>text/plain</type>
            <size>23130</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDAyNjRjLi41MmU4ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTItMDgtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGlu
dG8vb3V0IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5
MDk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBsb2dnaW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBt
b2RlLCBhbmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJl
YWQgc2Nyb2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRo
aXM6CisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3Jv
bGxpbmcgbW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogZml4ZWQgb2JqZWN0cwor
ICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1v
ZGUuIFRpbWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcg
dG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIxNCBSZWFzb24o
cyk6IGZpeGVkIG9iamVjdHMKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRo
cmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ni41NTI2MTkKKyAgICAgICAgICAgIFND
Uk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAx
NTg0Ny41NTM1ODcgUmVhc29uKHMpOiBmaXhlZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJ
Tkc6IFN3aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0
MDg0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxv
Z2dpbmcuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFz
U2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWlu
VGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6U2Ny
b2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OnVw
ZGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjpyZWFzb25zRm9yVXBkYXRpbmdTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVOb2Rl
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRSZWFzb25zRm9yVXBkYXRp
bmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6cmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCk6CisgICAgICAgIFJlbmFtZSB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkIHRvIHVwZGF0ZVJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQgKGFuZCByZWxhdGVkKS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjp1cGRhdGVSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKToKKyAgICAgICAgQ29uc3RydWN0IGEgYml0ZmllbGQgZGVzY3JpYmluZyB0aGUg
cmVhc29ucyB3ZSBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuCisKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFNjcm9s
bGluZ1RyZWVTdGF0ZSk6CisgICAgICAgIEFkZCBSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkIGVudW0sIHdpdGggdGhlIGN1cnJlbnQgcmVhc29ucyB0aGF0
IHdlIG1pZ2h0IGZhbGxiYWNrIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZy4KKworICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZSk6
IExvZyBldmVyeSB0aW1lIHNjcm9sbGluZyBtb2RlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRF
ZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6
OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bG9nVGhyZWFkZWRT
Y3JvbGxpbmdNb2RlKTogUHJldHR5LXByaW50IHRoZSBzY3JvbGxpbmcgbW9kZSBhbmQgcmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZC4KKwogMjAxMi0wOC0x
MyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAg
W1F0XSBQb3J0IG1ldGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5nIGluIHJ1bi10aW1lIGJy
aWRnZSB0byB1c2UgSlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggNDBmZWVkNy4uYjEyYjkwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZy
CiAgICAgaWYgKCFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRlUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBA
IC0xOTgsNyArMTk4LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRp
bmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgp
OworICAgIHVwZGF0ZVJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoKTsKIH0KIAogc3RhdGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVW
aWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZy
YW1lVmlldykKIAogICAgIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsKICAgICBy
ZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKICAgICBzZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKIH0KIApAQCAtMzc1LDE1
ICszNzUsMjQgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzTm9uTGF5ZXJGaXhlZE9i
amVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCgpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVSZWFzb25zRm9yVXBkYXRp
bmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkKIHsKICAgICBGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKIAotICAgIHNldFNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQobV9mb3JjZU1haW5UaHJlYWRTY3Jv
bGxMYXllclBvc2l0aW9uVXBkYXRlcwotICAgICAgICB8fCBmcmFtZVZpZXctPmhhc1Nsb3dSZXBh
aW50T2JqZWN0cygpCi0gICAgICAgIHx8ICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkg
JiYgZnJhbWVWaWV3LT5oYXNGaXhlZE9iamVjdHMoKSkKLSAgICAgICAgfHwgKHN1cHBvcnRzRml4
ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc05vbkxheWVyRml4ZWRPYmplY3RzKGZyYW1lVmlldykp
Ci0gICAgICAgIHx8IG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmlzSW1hZ2VEb2N1
bWVudCgpKTsKKyAgICB1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkID0gMDsKKworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Rm9yY2VkT25NYWlu
VGhyZWFkOworICAgIGlmIChmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQorICAg
ICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9
IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzU2xvd1JlcGFpbnRPYmplY3RzOworICAgIGlmICghc3Vw
cG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNGaXhlZE9iamVjdHMo
KSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc0ZpeGVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnM7CisgICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYm
IGhhc05vbkxheWVyRml4ZWRPYmplY3RzKGZyYW1lVmlldykpCisgICAgICAgIHJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0
YXRlOjpIYXNOb25MYXllckZpeGVkT2JqZWN0czsKKyAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRl
OjpJc0ltYWdlRG9jdW1lbnQ7CisKKyAgICBzZXRSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3Jj
ZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyhib29sIGZvcmNlTWFpblRocmVh
ZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKQpAQCAtMzkyLDcgKzQwMSw3IEBAIHZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25V
cGRhdGVzKGJvb2wgZm9yCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZm9yY2VNYWluVGhyZWFk
U2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgPSBmb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBv
c2l0aW9uVXBkYXRlczsKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRlUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpOwogfQogCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElO
RykKQEAgLTQzMCwxNCArNDM5LDE0IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdo
ZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDCiAgICAgc2No
ZWR1bGVUcmVlU3RhdGVDb21taXQoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sIHNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCit2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQpCiB7CiAgICAgLy8gVGhlIEZyYW1lVmlldydzIEdyYXBoaWNzTGF5ZXIgaXMgbGlr
ZWx5IHRvIGJlIG91dC1vZi1zeW5jaCB3aXRoIHRoZSBQbGF0Zm9ybUxheWVyCiAgICAgLy8gYXQg
dGhpcyBwb2ludC4gU28gd2UnbGwgdXBkYXRlIGl0IGJlZm9yZSB3ZSBzd2l0Y2ggYmFjayB0byBt
YWluIHRocmVhZCBzY3JvbGxpbmcKICAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBsYXllciBwb3Np
dGlvbmluZyBidWdzLgotICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKQorICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKQogICAgICAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9u
KCk7Ci0gICAgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCk7CisgICAgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFJlYXNvbnNGb3JVcGRhdGlu
Z1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKaW5kZXggNWQ0NWViNi4uNjQ2NTA3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xMjgs
NyArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRs
ZXJDb3VudCgpOwogICAgIGJvb2wgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3Kik7
Ci0gICAgdm9pZCB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKCk7CisgICAgdm9pZCB1cGRhdGVSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKCk7CiAKICAgICB2b2lkIHNldFNjcm9sbExheWVyKEdyYXBoaWNzTGF5
ZXIqKTsKICAgICB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYp
OwpAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNjcm9sbFBhcmFt
ZXRlcnMoY29uc3QgU2Nyb2xsUGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0V2hlZWxFdmVudEhh
bmRsZXJDb3VudCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wpOworICAgIHZvaWQgc2V0UmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCh1bnNpZ25lZCk7CiAKICAgICB2b2lk
IHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVyUG9zaXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5j
cHAKaW5kZXggZjBhY2ZlMC4uOTU5Mzc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVy
Q291bnQodW5zaWduZWQpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCkKK3ZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQodW5zaWduZWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAppbmRleCAyODQwMmNlLi5lYzI2
ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZU5vZGUuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Ny
b2xsaW5nVHJlZU5vZGU6OlNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGlu
Z1RyZWUpCiAgICAgOiBtX3Njcm9sbGluZ1RyZWUoc2Nyb2xsaW5nVHJlZSkKLSAgICAsIG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1f
cmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkK
ICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUp
CiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkK
ICAgICAsIG1faGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC01Niw4ICs1
Niw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUq
IHN0YXRlKQogICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6Q29udGVudHNTaXplKQogICAgICAgICBtX2NvbnRlbnRzU2l6ZSA9IHN0YXRlLT5j
b250ZW50c1NpemUoKTsKIAotICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNj
cm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCkKLSAgICAgICAgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkID0gc3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
KTsKKyAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3Rh
dGU6OlJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCisg
ICAgICAgIG1fcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCA9IHN0YXRlLT5yZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKCk7CiAKICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdU
cmVlU3RhdGU6Okhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KQogICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5ID0gc3RhdGUtPmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUu
aAppbmRleCBmNjlhZTlmLi40MThjMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9p
bnQmKSA9IDA7CiAKLSAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQ7IH0KKyAgICB1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9yZWFzb25zRm9yVXBk
YXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9CiAKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdUcmVlKik7CkBAIC03NCw3ICs3
NCw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKICAgICBJbnRQb2lu
dCBtX3Njcm9sbE9yaWdpbjsKIAotICAgIGJvb2wgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkOworICAgIHVuc2lnbmVkIG1fcmVhc29uc0ZvclVwZGF0aW5nU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKIAogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV9o
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1fdmVydGlj
YWxTY3JvbGxFbGFzdGljaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAKaW5kZXggNWViNTNhYi4uYTgyNjQ0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUu
Y3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVN0YXRlPiBTY3Jv
bGxpbmdUcmVlU3RhdGU6OmNyZWF0ZSgpCiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNjcm9sbGluZ1Ry
ZWVTdGF0ZSgpCiAgICAgOiBtX2NoYW5nZWRQcm9wZXJ0aWVzKDApCiAgICAgLCBtX3doZWVsRXZl
bnRIYW5kbGVyQ291bnQoMCkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1fcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1faGFzRW5hYmxlZEhvcml6b250
YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC04OCwxMyArODgsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U3RhdGU6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhhbmRs
ZXJDb3UKICAgICBtX2NoYW5nZWRQcm9wZXJ0aWVzIHw9IFdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7
CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRSZWFzb25zRm9yVXBk
YXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKHVuc2lnbmVkIHJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCiB7Ci0gICAgaWYgKG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9PSBzaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQorICAgIGlmIChtX3JlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPT0gcmVhc29uc0ZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gc2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKLSAgICBtX2NoYW5nZWRQcm9wZXJ0
aWVzIHw9IFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAg
bV9yZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gcmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICBtX2No
YW5nZWRQcm9wZXJ0aWVzIHw9IFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQ7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRIb3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U3RhdGUuaAppbmRleCAzYjRhOGQ2Li5hMTFhMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIENvbnRlbnRzU2l6ZSA9IDEgPDwgMSwKICAgICAgICAgTm9uRmFzdFNj
cm9sbGFibGVSZWdpb24gPSAxIDw8IDIsCiAgICAgICAgIFdoZWVsRXZlbnRIYW5kbGVyQ291bnQg
PSAxIDw8IDMsCi0gICAgICAgIFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQgPSAxIDw8IDQsCisgICAgICAgIFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgPSAxIDw8IDQsCiAgICAgICAgIEhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID0gMSA8PCA1LAogICAgICAgICBWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPSAxIDw8
IDYsCiAgICAgICAgIEhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyID0gMSA8PCA3LApAQCAt
NjYsNiArNjYsMTQgQEAgcHVibGljOgogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiA9
IDEgPDwgMTMsCiAgICAgfTsKIAorICAgIGVudW0gUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB7CisgICAgICAgIEZvcmNlZE9uTWFpblRocmVhZCA9IDEg
PDwgMCwKKyAgICAgICAgSGFzU2xvd1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAorICAgICAgICBI
YXNGaXhlZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzID0gMSA8PCAyLAorICAg
ICAgICBIYXNOb25MYXllckZpeGVkT2JqZWN0cyA9IDEgPDwgMywKKyAgICAgICAgSXNJbWFnZURv
Y3VtZW50ID0gMSA8PCA0CisgICAgfTsKKwogICAgIGJvb2wgaGFzQ2hhbmdlZFByb3BlcnRpZXMo
KSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRQcm9wZXJ0aWVzOyB9CiAgICAgdW5zaWduZWQgY2hh
bmdlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRQcm9wZXJ0aWVzOyB9CiAK
QEAgLTgxLDggKzg5LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVy
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7IH0KICAgICB2
b2lkIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpOwogCi0gICAgYm9vbCBzaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9Ci0gICAgdm9p
ZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wpOwor
ICAgIHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3JlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQ7IH0KKyAgICB2b2lkIHNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQodW5zaWduZWQpOwogCiAgICAgU2Nyb2xsRWxhc3Rp
Y2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faG9yaXpv
bnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAgICB2b2lkIHNldEhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHkpOwpAQCAtMTI2LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAK
ICAgICB1bnNpZ25lZCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiAKLSAgICBib29sIG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICB1bnNpZ25lZCBt
X3JlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CiAKICAg
ICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgU2Ny
b2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KaW5kZXgg
NGE2NDAxYy4uOWY1ODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlOjp1cGRhdGVEZWJ1Z1Jvb3RMYXllcigpCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gYmFja2dyb3VuZENvbG9yOwogCi0gICAgaWYgKG1fcm9vdE5vZGUtPnNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkKKyAgICBpZiAobV9yb290Tm9kZS0+
cmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKQogICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEs
IDAsIDAsIC43KSk7CiAKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KaW5kZXggMzhkZDllNS4uYWU5
Mjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQpAQCAtMzcsOSArMzcsMTIgQEAKIAogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgdm9pZCBs
b2dUaHJlYWRlZFNjcm9sbGluZ01vZGUodW5zaWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CisKIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5v
ZGU+IFNjcm9sbGluZ1RyZWVOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSogc2Nyb2xsaW5nVHJl
ZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNjcm9sbGluZ1RyZWVOb2RlTWFjKHNjcm9s
bGluZ1RyZWUpKTsKQEAgLTcwLDE1ICs3MywyMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFj
Ojp1cGRhdGUoU2Nyb2xsaW5nVHJlZVN0YXRlKiBzdGF0ZSkKICAgICBpZiAoc3RhdGUtPmNoYW5n
ZWRQcm9wZXJ0aWVzKCkgJiAoU2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxMYXllciB8IFNjcm9s
bGluZ1RyZWVTdGF0ZTo6Q29udGVudHNTaXplIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpWaWV3cG9y
dFJlY3QpKQogICAgICAgICB1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShzY3JvbGxQb3NpdGlvbigp
KTsKIAotICAgIGlmICgoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVl
U3RhdGU6OlNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpICYmIHNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgewotICAgICAgICAv
LyBXZSdyZSB0cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBv
c2l0aW9uIG9uIHRoZSBtYWluIHRocmVhZCIgbW9kZS4KLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0
aGUgcHJvYmFibGUgbWFpbiB0aHJlYWQgc2Nyb2xsIHBvc2l0aW9uIHdpdGggdGhlIGN1cnJlbnQg
c2Nyb2xsIGxheWVyIHBvc2l0aW9uLgotICAgICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0
aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKQotICAg
ICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5yZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIENHUG9p
bnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0g
ICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gSW50UG9pbnQo
LXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7CisgICAgaWYg
KChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkpIHsKKyAgICAgICAg
dW5zaWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCA9IHRoaXMtPnJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoKTsKKworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCkgeworICAgICAgICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0
aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBsYXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQi
IG1vZGUuCisgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVh
ZCBzY3JvbGwgcG9zaXRpb24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24u
CisgICAgICAgICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdU
cmVlU3RhdGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fcHJv
YmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS0+cmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24oKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENHUG9pbnQgc2Ny
b2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAg
ICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1z
Y3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgICAgICAg
ICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5n
UGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBsb2dUaHJlYWRlZFNjcm9s
bGluZ01vZGUocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCk7CiAgICAgfQogfQogCkBAIC0yMjUsNyArMjM1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9k
ZU1hYzo6c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIoKQogCiBJbnRQb2ludCBTY3JvbGxpbmdUcmVl
Tm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewotICAgIGlmIChzaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpCisgICAgaWYgKHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIG1f
cHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247CiAKICAgICBDR1BvaW50IHNjcm9sbExh
eWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwpAQCAtMjQ4LDcgKzI1
OCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91
dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QKIHsKICAgICB1cGRhdGVNYWluRnJhbWVQaW5T
dGF0ZShzY3JvbGxQb3NpdGlvbik7CiAKLSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpKSB7CisgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgewogICAgICAgICBtX3Byb2JhYmxlTWFpblRo
cmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIHNjcm9sbGluZ1Ry
ZWUoKS0+dXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb25BbmRTY3JvbGxMYXllclBvc2l0aW9u
KHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjYwLDcgKzI3MCw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRF
ZGdlQ29uc3RyYWludHMoY29uc3QKIAogdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Ny
b2xsTGF5ZXJQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgQVNTRVJU
KCFzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVCghcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgp
KTsKICAgICBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uID0gQ0dQb2ludE1ha2UoLXBvc2l0
aW9uLngoKSArIHNjcm9sbE9yaWdpbigpLngoKSwgLXBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdp
bigpLnkoKSk7CiB9CiAKQEAgLTMzMCw2ICszNDAsMzAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9k
ZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCiAgICAgICAgIHByaW50ZigiU0NST0xMSU5H
OiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIs
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIHVuZmlsbGVkQXJlYSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25zRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQoreworICAgIGlmIChyZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAg
IFN0cmluZyByZWFzb25zRGVzY3JpcHRpb247CisKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6
OkZvcmNlZE9uTWFpblRocmVhZCkKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAi
Zm9yY2VkLCI7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNTbG93UmVwYWludE9iamVj
dHMpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24gKz0gInNsb3ctcmVwYWludCBvYmpl
Y3RzLCI7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNGaXhlZE9iamVjdHNXaXRob3V0
U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uICs9
ICJmaXhlZCBvYmplY3RzLCI7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNOb25MYXll
ckZpeGVkT2JqZWN0cykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAibm9uLWxh
eWVyIGZpeGVkIG9iamVjdHMsIjsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OklzSW1hZ2VE
b2N1bWVudCkKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAiaW1hZ2UgZG9jdW1l
bnQsIjsKKworICAgICAgICAvLyBTdHJpcCB0aGUgdHJhaWxpbmcgY29tbWEuCisgICAgICAgIHJl
YXNvbnNEZXNjcmlwdGlvbiA9IHJlYXNvbnNEZXNjcmlwdGlvbi5sZWZ0KHJlYXNvbnNEZXNjcmlw
dGlvbi5sZW5ndGgoKSAtIDEpOworCisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBTd2l0Y2hp
bmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmIFJlYXNvbihzKTogJXNc
biIsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIHJlYXNvbnNEZXNjcmlwdGlv
bi5hc2NpaSgpLmRhdGEoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHByaW50ZigiU0NST0xMSU5H
OiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmXG4iLCBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykK
</data>
<flag name="commit-queue"
          id="168195"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158145</attachid>
            <date>2012-08-13 16:45:51 -0700</date>
            <delta_ts>2012-08-13 19:00:35 -0700</delta_ts>
            <desc>we needn&apos;t care about swapping to the main thread when we don&apos;t support threaded scrolling</desc>
            <filename>threaded-logging.diff</filename>
            <type>text/plain</type>
            <size>24727</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDAyNjRjLi40NjdhYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTItMDgtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGlu
dG8vb3V0IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5
MDk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBsb2dnaW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBt
b2RlLCBhbmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJl
YWQgc2Nyb2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRo
aXM6CisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3Jv
bGxpbmcgbW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogZml4ZWQgb2JqZWN0cwor
ICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1v
ZGUuIFRpbWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcg
dG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIxNCBSZWFzb24o
cyk6IGZpeGVkIG9iamVjdHMKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRo
cmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ni41NTI2MTkKKyAgICAgICAgICAgIFND
Uk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAx
NTg0Ny41NTM1ODcgUmVhc29uKHMpOiBmaXhlZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJ
Tkc6IFN3aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0
MDg0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxv
Z2dpbmcuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFz
U2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWlu
VGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6U2Ny
b2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OnVw
ZGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjpyZWFzb25zRm9yVXBkYXRpbmdTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVOb2Rl
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRSZWFzb25zRm9yVXBkYXRp
bmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6cmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0UmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk6Cisg
ICAgICAgIFJlbmFtZSB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkIHRvIHVwZGF0ZVJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgKGFuZCByZWxhdGVkKS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjp1cGRhdGVSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKToKKyAgICAgICAgQ29uc3RydWN0IGEgYml0ZmllbGQgZGVzY3JpYmluZyB0aGUgcmVhc29u
cyB3ZSBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuCisKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFNjcm9sbGluZ1Ry
ZWVTdGF0ZSk6CisgICAgICAgIEFkZCBSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkIGVudW0sIHdpdGggdGhlIGN1cnJlbnQgcmVhc29ucyB0aGF0IHdlIG1p
Z2h0IGZhbGxiYWNrIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZy4KKworICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZSk6IExvZyBl
dmVyeSB0aW1lIHNjcm9sbGluZyBtb2RlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNj
cm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bG9nVGhyZWFkZWRTY3JvbGxp
bmdNb2RlKTogUHJldHR5LXByaW50IHRoZSBzY3JvbGxpbmcgbW9kZSBhbmQgcmVhc29uc0ZvclVw
ZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZC4KKwogMjAxMi0wOC0xMyAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBQ
b3J0IG1ldGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5nIGluIHJ1bi10aW1lIGJyaWRnZSB0
byB1c2UgSlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggNDBmZWVkNy4uM2UyZGQzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgotI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC00Niw2ICs0NSw3IEBACiAjaWYgRU5BQkxF
KFRIUkVBREVEX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKICNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2VuZGlmCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnIKICAgICBp
ZiAoIWNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQoKTsKKyAgICB1cGRhdGVSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1l
Vmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKQEAgLTE5OCw3
ICsxOTgsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVj
dHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgaWYgKCFjb29yZGluYXRlc1Nj
cm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAg
dXBkYXRlUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgp
OwogfQogCiBzdGF0aWMgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
KQogCiAgICAgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChmcmFtZVZpZXcpOwogICAgIHJlY29tcHV0
ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKTsKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRlUmVhc29uc0ZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwogICAgIHNldFNjcm9sbExheWVyKHNj
cm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogfQogCkBAIC0zNzUsMTUgKzM3NSwy
NiBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNOb25MYXllckZpeGVkT2JqZWN0cyhG
cmFtZVZpZXcqIGZyYW1lVmlldykKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkK
K3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKQogeworI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JP
TExJTkcpCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCk7CiAKLSAgICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKG1fZm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMKLSAgICAgICAg
fHwgZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVjdHMoKQotICAgICAgICB8fCAoIXN1cHBv
cnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGZyYW1lVmlldy0+aGFzRml4ZWRPYmplY3RzKCkp
Ci0gICAgICAgIHx8IChzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBoYXNOb25MYXll
ckZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQotICAgICAgICB8fCBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSk7CisgICAgdW5zaWduZWQgcmVhc29uc0Zv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IDA7CisKKyAgICBpZiAo
bV9mb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcykKKyAgICAgICAgcmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBTY3JvbGxp
bmdUcmVlU3RhdGU6OkZvcmNlZE9uTWFpblRocmVhZDsKKyAgICBpZiAoZnJhbWVWaWV3LT5oYXNT
bG93UmVwYWludE9iamVjdHMoKSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc1Nsb3dSZXBh
aW50T2JqZWN0czsKKyAgICBpZiAoIXN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGZy
YW1lVmlldy0+aGFzRml4ZWRPYmplY3RzKCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRhdGluZ1Nj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNG
aXhlZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzOworICAgIGlmIChzdXBwb3J0
c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhmcmFtZVZp
ZXcpKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHM7Cisg
ICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmlzSW1hZ2VEb2N1bWVudCgp
KQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SXNJbWFnZURvY3VtZW50OworCisgICAgc2V0UmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChyZWFzb25zRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKTsKKyNlbmRpZgogfQogCiB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBv
c2l0aW9uVXBkYXRlcyhib29sIGZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRh
dGVzKQpAQCAtMzkyLDcgKzQwMyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEZv
cmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fZm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0
ZXMgPSBmb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlczsKLSAgICB1cGRh
dGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBk
YXRlUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwog
fQogCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKQEAgLTQzMCwxNCArNDQxLDE0IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5z
aWduZWQgd2hlZWxFdmVudEhhbmRsZXJDCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsK
IH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRSZWFzb25zRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKHVuc2lnbmVkIHJlYXNvbnNG
b3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCiB7CiAgICAgLy8gVGhl
IEZyYW1lVmlldydzIEdyYXBoaWNzTGF5ZXIgaXMgbGlrZWx5IHRvIGJlIG91dC1vZi1zeW5jaCB3
aXRoIHRoZSBQbGF0Zm9ybUxheWVyCiAgICAgLy8gYXQgdGhpcyBwb2ludC4gU28gd2UnbGwgdXBk
YXRlIGl0IGJlZm9yZSB3ZSBzd2l0Y2ggYmFjayB0byBtYWluIHRocmVhZCBzY3JvbGxpbmcKICAg
ICAvLyBpbiBvcmRlciB0byBhdm9pZCBsYXllciBwb3NpdGlvbmluZyBidWdzLgotICAgIGlmIChz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQorICAgIGlmIChyZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQogICAgICAgICB1
cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCk7Ci0gICAgbV9zY3JvbGxpbmdUcmVl
U3RhdGUtPnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CisgICAgbV9zY3JvbGxp
bmdUcmVlU3RhdGUtPnNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCk7CiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNWQ0
NWViNi4uNjQ2NTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwogICAgIGJvb2wgaGFz
Tm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3Kik7Ci0gICAgdm9pZCB1cGRhdGVTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdm9pZCB1cGRhdGVS
ZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CiAKICAg
ICB2b2lkIHNldFNjcm9sbExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHNldE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldFNjcm9sbFBhcmFtZXRlcnMoY29uc3QgU2Nyb2xsUGFyYW1l
dGVycyYpOwogICAgIHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCk7Ci0g
ICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJv
b2wpOworICAgIHZvaWQgc2V0UmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCh1bnNpZ25lZCk7CiAKICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExh
eWVyUG9zaXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKaW5kZXggZjBhY2ZlMC4uOTU5Mzc2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvck5vbmUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpCiB7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQoYm9vbCkKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFJl
YXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQodW5zaWduZWQp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVOb2RlLmNwcAppbmRleCAyODQwMmNlLi5lYzI2ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGlu
Z1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1RyZWUpCiAgICAgOiBtX3Njcm9sbGlu
Z1RyZWUoc2Nyb2xsaW5nVHJlZSkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1fcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xs
RWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1faGFzRW5hYmxlZEhvcml6
b250YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZU5vZGU6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRlKQogICAgIGlmIChzdGF0ZS0+
Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6Q29udGVudHNTaXplKQog
ICAgICAgICBtX2NvbnRlbnRzU2l6ZSA9IHN0YXRlLT5jb250ZW50c1NpemUoKTsKIAotICAgIGlm
IChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKLSAgICAgICAgbV9zaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gc3RhdGUtPnNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICBpZiAoc3RhdGUtPmNoYW5n
ZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlJlYXNvbnNGb3JVcGRhdGluZ1Nj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCisgICAgICAgIG1fcmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IHN0YXRlLT5yZWFzb25zRm9yVXBk
YXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CiAKICAgICBpZiAoc3RhdGUt
PmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5KQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc3Rh
dGUtPmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaAppbmRleCBmNjlhZTlmLi40MThjMWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVO
b2RlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSA9IDA7CiAKLSAgICBib29sIHNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7IH0KKyAgICB1
bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVl
Tm9kZShTY3JvbGxpbmdUcmVlKik7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgSW50
U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKIAotICAg
IGJvb2wgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOworICAg
IHVuc2lnbmVkIG1fcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZDsKIAogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5j
cHAKaW5kZXggNWViNTNhYi4uM2IzNGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBh
c3NPd25QdHI8U2Nyb2xsaW5nVHJlZVN0YXRlPiBTY3JvbGxpbmdUcmVlU3RhdGU6OmNyZWF0ZSgp
CiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNjcm9sbGluZ1RyZWVTdGF0ZSgpCiAgICAgOiBtX2NoYW5n
ZWRQcm9wZXJ0aWVzKDApCiAgICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKLSAgICAs
IG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAg
ICAsIG1fcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChm
YWxzZSkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0
eU5vbmUpCiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5
Tm9uZSkKICAgICAsIG1faGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC04
OCwxMyArODgsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFdoZWVsRXZlbnRIYW5k
bGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3UKICAgICBtX2NoYW5nZWRQcm9w
ZXJ0aWVzIHw9IFdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJl
ZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJv
b2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3ZvaWQgU2Ny
b2xsaW5nVHJlZVN0YXRlOjpzZXRSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpCiB7Ci0gICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCA9PSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKQorICAgIGlmICgoYm9vbCltX3JlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgPT0gKGJvb2wpcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gc2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKLSAgICBtX2NoYW5nZWRQcm9wZXJ0aWVzIHw9IFNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgbV9yZWFzb25zRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gcmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICBtX2NoYW5nZWRQcm9wZXJ0
aWVzIHw9IFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7
CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eShTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaAppbmRl
eCAzYjRhOGQ2Li5hMTFhMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIENvbnRlbnRzU2l6ZSA9IDEgPDwgMSwKICAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdp
b24gPSAxIDw8IDIsCiAgICAgICAgIFdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPSAxIDw8IDMsCi0g
ICAgICAgIFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPSAxIDw8
IDQsCisgICAgICAgIFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQgPSAxIDw8IDQsCiAgICAgICAgIEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gMSA8
PCA1LAogICAgICAgICBWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPSAxIDw8IDYsCiAgICAgICAg
IEhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyID0gMSA8PCA3LApAQCAtNjYsNiArNjYsMTQg
QEAgcHVibGljOgogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiA9IDEgPDwgMTMsCiAg
ICAgfTsKIAorICAgIGVudW0gUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCB7CisgICAgICAgIEZvcmNlZE9uTWFpblRocmVhZCA9IDEgPDwgMCwKKyAgICAg
ICAgSGFzU2xvd1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAorICAgICAgICBIYXNGaXhlZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzID0gMSA8PCAyLAorICAgICAgICBIYXNOb25M
YXllckZpeGVkT2JqZWN0cyA9IDEgPDwgMywKKyAgICAgICAgSXNJbWFnZURvY3VtZW50ID0gMSA8
PCA0CisgICAgfTsKKwogICAgIGJvb2wgaGFzQ2hhbmdlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJl
dHVybiBtX2NoYW5nZWRQcm9wZXJ0aWVzOyB9CiAgICAgdW5zaWduZWQgY2hhbmdlZFByb3BlcnRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRQcm9wZXJ0aWVzOyB9CiAKQEAgLTgxLDggKzg5
LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7IH0KICAgICB2b2lkIHNldFdoZWVs
RXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpOwogCi0gICAgYm9vbCBzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9Ci0gICAgdm9pZCBzZXRTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wpOworICAgIHVuc2lnbmVk
IHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25z
dCB7IHJldHVybiBtX3JlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQ7IH0KKyAgICB2b2lkIHNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQodW5zaWduZWQpOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHk7IH0KICAgICB2b2lkIHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9s
bEVsYXN0aWNpdHkpOwpAQCAtMTI2LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25l
ZCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiAKLSAgICBib29sIG1fc2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICB1bnNpZ25lZCBtX3JlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CiAKICAgICBTY3JvbGxFbGFz
dGljaXR5IG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMWRiNzU5NC4uZThmNWU1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0v
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTIwMiwxMCArMjAyLDEwIEBAIHZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWdu
ZWQgd2hlZWxFdmVudEhhbmRsZXJDCiAgICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5z
ZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKIH0K
IAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZChib29sIHNob3VsZCkKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNldFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
dW5zaWduZWQgcmVhc29ucykKIHsKICAgICBpZiAobV9wcml2YXRlLT5oYXNTY3JvbGxMYXllcigp
KQotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0U2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKHNob3VsZCk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRTaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQocmVhc29ucyk7CiB9CiAKIGJvb2wgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4
IDRhNjQwMWMuLjlmNTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZTo6dXBkYXRlRGVidWdSb290TGF5ZXIoKQogCiAgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIGlmIChtX3Jvb3ROb2RlLT5zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpCisgICAgaWYgKG1fcm9vdE5vZGUt
PnJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkKICAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigx
LCAwLCAwLCAuNykpOwogCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCmluZGV4IDM4ZGQ5ZTUuLmFl
OTI5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTM3LDkgKzM3LDEyIEBACiAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIHZvaWQg
bG9nVGhyZWFkZWRTY3JvbGxpbmdNb2RlKHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpOworCiBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVO
b2RlPiBTY3JvbGxpbmdUcmVlTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1Ry
ZWUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdUcmVlTm9kZU1hYyhzY3Jv
bGxpbmdUcmVlKSk7CkBAIC03MCwxNSArNzMsMjIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1h
Yzo6dXBkYXRlKFNjcm9sbGluZ1RyZWVTdGF0ZSogc3RhdGUpCiAgICAgaWYgKHN0YXRlLT5jaGFu
Z2VkUHJvcGVydGllcygpICYgKFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsTGF5ZXIgfCBTY3Jv
bGxpbmdUcmVlU3RhdGU6OkNvbnRlbnRzU2l6ZSB8IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Vmlld3Bv
cnRSZWN0KSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24o
KSk7CiAKLSAgICBpZiAoKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJl
ZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSAmJiBz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpIHsKLSAgICAgICAg
Ly8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBsYXllciBw
b3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUuCi0gICAgICAgIC8vIEluaXRpYWxpemUg
dGhlIHByb2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50
IHNjcm9sbCBsYXllciBwb3NpdGlvbi4KLSAgICAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVy
dGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikKLSAg
ICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS0+cmVx
dWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBDR1Bv
aW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwot
ICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50
KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgIGlm
ICgoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlJlYXNv
bnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpKSB7CisgICAgICAg
IHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQgPSB0aGlzLT5yZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKCk7CisKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpIHsKKyAgICAgICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8g
dGhlIHNsb3cgInVwZGF0ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFk
IiBtb2RlLgorICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFpbiB0aHJl
YWQgc2Nyb2xsIHBvc2l0aW9uIHdpdGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBvc2l0aW9u
LgorICAgICAgICAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikKKyAgICAgICAgICAgICAgICBtX3By
b2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc3RhdGUtPnJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBDR1BvaW50IHNj
cm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOworICAgICAg
ICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBJbnRQb2ludCgt
c2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmIChzY3JvbGxpbmdUcmVlKCktPnNjcm9sbGlu
Z1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgbG9nVGhyZWFkZWRTY3Jv
bGxpbmdNb2RlKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQpOwogICAgIH0KIH0KIApAQCAtMjI1LDcgKzIzNSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5v
ZGVNYWM6OnN0b3BTbmFwUnViYmVyYmFuZFRpbWVyKCkKIAogSW50UG9pbnQgU2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKQorICAgIGlmIChyZWFzb25zRm9yVXBk
YXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBt
X3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uOwogCiAgICAgQ0dQb2ludCBzY3JvbGxM
YXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKQEAgLTI0OCw3ICsy
NTgsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0CiB7CiAgICAgdXBkYXRlTWFpbkZyYW1lUGlu
U3RhdGUoc2Nyb2xsUG9zaXRpb24pOwogCi0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgeworICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpIHsKICAgICAgICAgbV9wcm9iYWJsZU1haW5U
aHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY3JvbGxpbmdU
cmVlKCktPnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uQW5kU2Nyb2xsTGF5ZXJQb3NpdGlv
bihzY3JvbGxQb3NpdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTI2MCw3ICsyNzAsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50
RWRnZUNvbnN0cmFpbnRzKGNvbnN0CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNj
cm9sbExheWVyUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewotICAgIEFTU0VS
VCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoIXJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
KSk7CiAgICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbiA9IENHUG9pbnRNYWtlKC1wb3Np
dGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1wb3NpdGlvbi55KCkgKyBzY3JvbGxPcmln
aW4oKS55KCkpOwogfQogCkBAIC0zMzAsNiArMzQwLDMwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5v
ZGVNYWM6OmxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKQogICAgICAgICBwcmludGYoIlNDUk9MTElO
RzogRXhwb3NlZCB0aWxlbGVzcyBhcmVhLiBUaW1lOiAlZiBVbmZpbGxlZCBQaXhlbHM6ICV1XG4i
LCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCB1bmZpbGxlZEFyZWEpOwogfQog
CitzdGF0aWMgdm9pZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUodW5zaWduZWQgcmVhc29uc0Zv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3sKKyAgICBpZiAocmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgeworICAgICAg
ICBTdHJpbmcgcmVhc29uc0Rlc2NyaXB0aW9uOworCisgICAgICAgIGlmIChyZWFzb25zRm9yVXBk
YXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRl
OjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24gKz0g
ImZvcmNlZCwiOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzU2xvd1JlcGFpbnRPYmpl
Y3RzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uICs9ICJzbG93LXJlcGFpbnQgb2Jq
ZWN0cywiOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzRml4ZWRPYmplY3RzV2l0aG91
dFN1cHBvcnRpbmdGaXhlZExheWVycykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiAr
PSAiZml4ZWQgb2JqZWN0cywiOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzTm9uTGF5
ZXJGaXhlZE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24gKz0gIm5vbi1s
YXllciBmaXhlZCBvYmplY3RzLCI7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpJc0ltYWdl
RG9jdW1lbnQpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24gKz0gImltYWdlIGRvY3Vt
ZW50LCI7CisKKyAgICAgICAgLy8gU3RyaXAgdGhlIHRyYWlsaW5nIGNvbW1hLgorICAgICAgICBy
ZWFzb25zRGVzY3JpcHRpb24gPSByZWFzb25zRGVzY3JpcHRpb24ubGVmdChyZWFzb25zRGVzY3Jp
cHRpb24ubGVuZ3RoKCkgLSAxKTsKKworICAgICAgICBwcmludGYoIlNDUk9MTElORzogU3dpdGNo
aW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAlZiBSZWFzb24ocyk6ICVz
XG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCByZWFzb25zRGVzY3JpcHRp
b24uYXNjaWkoKS5kYXRhKCkpOworICAgIH0gZWxzZQorICAgICAgICBwcmludGYoIlNDUk9MTElO
RzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAlZlxuIiwgV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCg==
</data>
<flag name="review"
          id="168199"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158186</attachid>
            <date>2012-08-13 19:00:35 -0700</date>
            <delta_ts>2012-08-14 11:06:20 -0700</delta_ts>
            <desc>simon&apos;s changes, hopefully</desc>
            <filename>threaded-logging.diff</filename>
            <type>text/plain</type>
            <size>27333</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDAyNjRjLi5kYmM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTItMDgtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogZml4ZWQgb2JqZWN0cworICAgICAg
ICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1vZGUuIFRp
bWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFp
bi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIxNCBSZWFzb24ocyk6IGZp
eGVkIG9iamVjdHMKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElO
RzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41
NTM1ODcgUmVhc29uKHMpOiBmaXhlZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3
aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1Jl
cGFpbnRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFk
U2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRSZWFzb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Lmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6U2Nyb2xsaW5n
VHJlZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OnVwZGF0ZSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjpzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVOb2RlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGF0
ZTo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAg
IFJlbmFtZSB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
IHRvIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24gKGFuZCByZWxhdGVkKS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToK
KyAgICAgICAgQ29uc3RydWN0IGEgYml0ZmllbGQgZGVzY3JpYmluZyB0aGUgcmVhc29ucyB3ZSBm
YWxsIGludG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuCisKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVTdGF0
ZSk6CisgICAgICAgIEFkZCBSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkIGVudW0sIHdpdGggdGhlIGN1cnJlbnQgcmVhc29ucyB0aGF0IHdlIG1pZ2h0IGZh
bGxiYWNrIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZSk6IExvZyBldmVyeSB0
aW1lIHNjcm9sbGluZyBtb2RlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbExh
eWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bG9nVGhyZWFkZWRTY3JvbGxpbmdNb2Rl
KTogUHJldHR5LXByaW50IHRoZSBzY3JvbGxpbmcgbW9kZSBhbmQgc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbi4KKwogMjAxMi0wOC0xMyAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBQb3J0IG1l
dGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5nIGluIHJ1bi10aW1lIGJyaWRnZSB0byB1c2Ug
SlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmQwOGMzMS4uMTEzMjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEwLDcgKzUxMCw3IEBACiAJ
CTFBQUFEREEzMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREExMTREQjQwOUYwMEFG
NjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCAqLzsgfTsKIAkJMUFBQUREQTQxNERCNDA5RjAwQUY2
NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQUFEREEyMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQURE
QkUxNERDNjQwNzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERCQzE0REM2NDA2MDBBRjY0
QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCAqLzsgfTsKLQkJMUFBQUREQkYxNERDNjQwNzAw
QUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQkQxNERDNjQwNjAwQUY2NEIzIC8qIFNjcm9sbGlu
Z1RyZWVTdGF0ZS5oICovOyB9OworCQkxQUFBRERCRjE0REM2NDA3MDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUFBRERCRDE0REM2NDA2MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQUREREEx
NERDNzRFQzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREQ4MTREQzc0RUMwMEFGNjRC
MyAvKiBTY3JvbGxpbmdUcmVlU3RhdGVNYWMubW0gKi87IH07CiAJCTFBQUFEREUzMTREQzhDOEYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERFMTE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwICovOyB9OwogCQkxQUFBRERFNDE0REM4QzhGMDBBRjY0QjMgLyogU2Ny
b2xsaW5nVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQUFEREUyMTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oICov
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDQwZmVlZDcuLjdlZDc1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpAQCAtNDYsNiArNDUsNyBAQAogI2lmIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNlbmRpZgpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Ns
b3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyCiAgICAgaWYgKCFjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7
CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJl
YXNvbigpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xOTgsNyArMTk4LDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdl
KEZyYW1lVmlldyogZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIH0KIAogc3Rh
dGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZy
YW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKIAogICAgIGZy
YW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsKICAgICByZWNvbXB1dGVXaGVlbEV2ZW50
SGFuZGxlckNvdW50KCk7Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKTsKICAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKIH0KIApAQCAtMzc1LDE1ICszNzUsMjYgQEAgYm9vbCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBm
cmFtZVZpZXcpCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpCit2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKCkKIHsKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwogCi0g
ICAgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChtX2ZvcmNl
TWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzCi0gICAgICAgIHx8IGZyYW1lVmll
dy0+aGFzU2xvd1JlcGFpbnRPYmplY3RzKCkKLSAgICAgICAgfHwgKCFzdXBwb3J0c0ZpeGVkUG9z
aXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc0ZpeGVkT2JqZWN0cygpKQotICAgICAgICB8
fCAoc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVj
dHMoZnJhbWVWaWV3KSkKLSAgICAgICAgfHwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KS0+aXNJbWFnZURvY3VtZW50KCkpOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgPSAoUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkRmxhZ3MpMDsKKworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Rm9yY2VkT25NYWlu
VGhyZWFkOworICAgIGlmIChmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQorICAg
ICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9
IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzU2xvd1JlcGFpbnRPYmplY3RzOworICAgIGlmICghc3Vw
cG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNGaXhlZE9iamVjdHMo
KSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc0ZpeGVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnM7CisgICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYm
IGhhc05vbkxheWVyRml4ZWRPYmplY3RzKGZyYW1lVmlldykpCisgICAgICAgIHJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0
YXRlOjpIYXNOb25MYXllckZpeGVkT2JqZWN0czsKKyAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRl
OjpJc0ltYWdlRG9jdW1lbnQ7CisKKyAgICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpOworI2VuZGlmCiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yY2VN
YWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpCkBAIC0zOTIsNyArNDAzLDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQ
b3NpdGlvblVwZGF0ZXMoYm9vbCBmb3IKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mb3JjZU1h
aW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyA9IGZvcmNlTWFpblRocmVhZFNjcm9s
bExheWVyUG9zaXRpb25VcGRhdGVzOwotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiB9CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQpAQCAtNDMwLDE0ICs0NDEsMTQgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckMK
ICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJv
b2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3ZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkRmxhZ3MgcmVhc29ucykKIHsKICAgICAvLyBUaGUgRnJhbWVWaWV3J3MgR3JhcGhpY3NM
YXllciBpcyBsaWtlbHkgdG8gYmUgb3V0LW9mLXN5bmNoIHdpdGggdGhlIFBsYXRmb3JtTGF5ZXIK
ICAgICAvLyBhdCB0aGlzIHBvaW50LiBTbyB3ZSdsbCB1cGRhdGUgaXQgYmVmb3JlIHdlIHN3aXRj
aCBiYWNrIHRvIG1haW4gdGhyZWFkIHNjcm9sbGluZwogICAgIC8vIGluIG9yZGVyIHRvIGF2b2lk
IGxheWVyIHBvc2l0aW9uaW5nIGJ1Z3MuCi0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQpCisgICAgaWYgKHJlYXNvbnMpCiAgICAgICAgIHVwZGF0ZU1h
aW5GcmFtZVNjcm9sbExheWVyUG9zaXRpb24oKTsKLSAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+
c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChzaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKTsKKyAgICBtX3Njcm9sbGluZ1RyZWVT
dGF0ZS0+c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNv
bihyZWFzb25zKTsKICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApp
bmRleCA1ZDQ1ZWI2Li4wNzNiOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjZW5kaWYKQEAgLTEyOCw3
ICsxMjksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxl
ckNvdW50KCk7CiAgICAgYm9vbCBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqKTsK
LSAgICB2b2lkIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoKTsKKyAgICB2b2lkIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb24oKTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXll
ciopOwogICAgIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJik7
CkBAIC0xNTEsNyArMTUyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2Nyb2xsUGFyYW1l
dGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFu
ZGxlckNvdW50KHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCk7CisgICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZy
YW1lU2Nyb2xsTGF5ZXJQb3NpdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcAppbmRleCBmMGFj
ZmUwLi45YjczMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCkKIHsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sKQordm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNv
bihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncykK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZU5vZGUuY3BwCmluZGV4IDI4NDAyY2UuLjE1MGJhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JvbGxpbmdUcmVlTm9kZTo6U2Nyb2xsaW5n
VHJlZU5vZGUoU2Nyb2xsaW5nVHJlZSogc2Nyb2xsaW5nVHJlZSkKICAgICA6IG1fc2Nyb2xsaW5n
VHJlZShzY3JvbGxpbmdUcmVlKQotICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKGZhbHNlKQorICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkUmVhc29uKDApCiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKQogICAgICwgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX2hhc0VuYWJsZWRIb3Jpem9udGFs
U2Nyb2xsYmFyKGZhbHNlKQpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2Rl
Ojp1cGRhdGUoU2Nyb2xsaW5nVHJlZVN0YXRlKiBzdGF0ZSkKICAgICBpZiAoc3RhdGUtPmNoYW5n
ZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OkNvbnRlbnRzU2l6ZSkKICAgICAg
ICAgbV9jb250ZW50c1NpemUgPSBzdGF0ZS0+Y29udGVudHNTaXplKCk7CiAKLSAgICBpZiAoc3Rh
dGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCi0gICAgICAgIG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IHN0YXRlLT5zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJv
cGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkUmVhc29uKQorICAgICAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24gPSBzdGF0ZS0+c2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOwogCiAgICAgaWYgKHN0YXRlLT5jaGFu
Z2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIb3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSkKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9IHN0YXRlLT5o
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKaW5kZXggZjY5YWU5Zi4uM2NhZDUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5o
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEludFBvaW50JikgPSAwOwogCi0gICAgYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3Mgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZFJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xsaW5nVHJlZSopOwpAQCAtNzQsNyArNzUs
NyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9jb250ZW50c1NpemU7CiAgICAgSW50UG9pbnQg
bV9zY3JvbGxPcmlnaW47CiAKLSAgICBib29sIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZDsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRGbGFncyBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb247CiAKICAgICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHk7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU3RhdGUuY3BwCmluZGV4IDVlYjUzYWIuLjIzMzRiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVTdGF0ZT4gU2Nyb2xsaW5nVHJlZVN0YXRl
OjpjcmVhdGUoKQogU2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUoKQogICAg
IDogbV9jaGFuZ2VkUHJvcGVydGllcygwKQogICAgICwgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50
KDApCi0gICAgLCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
ZmFsc2UpCisgICAgLCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRSZWFzb24oMCkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxh
c3RpY2l0eU5vbmUpCiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFz
dGljaXR5Tm9uZSkKICAgICAsIG1faGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2Up
CkBAIC04OCwxMyArODgsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFdoZWVsRXZl
bnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3UKICAgICBtX2NoYW5n
ZWRQcm9wZXJ0aWVzIHw9IFdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiB9CiAKLXZvaWQgU2Nyb2xs
aW5nVHJlZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3Zv
aWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZEZsYWdzIHJlYXNvbnMpCiB7Ci0gICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9PSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKQorICAgIGlmICgoYm9vbCltX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24gPT0gKGJvb2wpcmVhc29ucykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
ID0gc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKLSAgICBtX2No
YW5nZWRQcm9wZXJ0aWVzIHw9IFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQ7CisgICAgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
UmVhc29uID0gcmVhc29uczsKKyAgICBtX2NoYW5nZWRQcm9wZXJ0aWVzIHw9IFNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb247CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nVHJlZVN0YXRlOjpzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGlj
aXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaAppbmRleCAzYjRhOGQ2Li5hOTI1ZjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U3RhdGUuaApAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVk
ZWYgdW5zaWduZWQgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkRmxhZ3M7CisKIC8vIFRoZSBTY3JvbGxpbmdUcmVlU3RhdGUgb2JqZWN0IGtlZXBzIHRyYWNr
IG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHNjcm9sbGluZyByZWxhdGVkIHByb3BlcnRpZXMuCiAv
LyBXaGVuZXZlciBhbnkgcHJvcGVydGllcyBjaGFuZ2UsIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0
b3Igd2lsbCBiZSBpbmZvcm1lZCBhbmQgd2lsbCB1cGRhdGUgdGhlIHN0YXRlCiAvLyBhbmQgc2No
ZWR1bGUgYSB0aW1lciB0aGF0IHdpbGwgY2xvbmUgdGhlIG5ldyBzdGF0ZSBhbmQgc2VuZCBpdCBv
dmVyIHRvIHRoZSBzY3JvbGxpbmcgdGhyZWFkLCBhdm9pZGluZyBsb2NraW5nLgpAQCAtNTQsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRlbnRzU2l6ZSA9IDEgPDwgMSwKICAgICAgICAg
Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24gPSAxIDw8IDIsCiAgICAgICAgIFdoZWVsRXZlbnRIYW5k
bGVyQ291bnQgPSAxIDw8IDMsCi0gICAgICAgIFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQgPSAxIDw8IDQsCisgICAgICAgIFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24gPSAxIDw8IDQsCiAgICAgICAgIEhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5ID0gMSA8PCA1LAogICAgICAgICBWZXJ0aWNhbFNjcm9sbEVsYXN0aWNp
dHkgPSAxIDw8IDYsCiAgICAgICAgIEhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyID0gMSA8
PCA3LApAQCAtNjYsNiArNjgsMTQgQEAgcHVibGljOgogICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbiA9IDEgPDwgMTMsCiAgICAgfTsKIAorICAgIGVudW0gUmVhc29uRm9yVXBkYXRpbmdT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHsKKyAgICAgICAgRm9yY2VkT25NYWluVGhy
ZWFkID0gMSA8PCAwLAorICAgICAgICBIYXNTbG93UmVwYWludE9iamVjdHMgPSAxIDw8IDEsCisg
ICAgICAgIEhhc0ZpeGVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMgPSAxIDw8
IDIsCisgICAgICAgIEhhc05vbkxheWVyRml4ZWRPYmplY3RzID0gMSA8PCAzLAorICAgICAgICBJ
c0ltYWdlRG9jdW1lbnQgPSAxIDw8IDQKKyAgICB9OworCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZFByb3BlcnRpZXM7IH0KICAgICB1bnNp
Z25lZCBjaGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZFByb3BlcnRp
ZXM7IH0KIApAQCAtODEsOCArOTEsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgd2hlZWxFdmVu
dEhhbmRsZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudEhhbmRsZXJDb3VudDsg
fQogICAgIHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCk7CiAKLSAgICBi
b29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7IH0K
LSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
Ym9vbCk7CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkRmxhZ3Mgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZFJlYXNvbjsgfQorICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRGbGFncyk7CiAKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxT
Y3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxh
c3RpY2l0eSk7CkBAIC0xMjYsNyArMTM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1f
d2hlZWxFdmVudEhhbmRsZXJDb3VudDsKIAotICAgIGJvb2wgbV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZFJlYXNvbjsKIAogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV9ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1fdmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNw
cAppbmRleCAxZGI3NTk0Li5lOGY1ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGlu
YXRvckNocm9taXVtLmNwcApAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFu
ZGxlckMKICAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLnNldEhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQogCi12b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKGJvb2wgc2hvdWxkKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0UmVhc29uc0Zv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCh1bnNpZ25lZCByZWFzb25z
KQogewogICAgIGlmIChtX3ByaXZhdGUtPmhhc1Njcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJp
dmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkKTsK
KyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLnNldFNob3VsZFNjcm9sbE9uTWFpblRo
cmVhZChyZWFzb25zKTsKIH0KIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNG
aXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KaW5kZXggNGE2NDAxYy4uMTAxYmJk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVNYWMubW0KQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjp1cGRh
dGVEZWJ1Z1Jvb3RMYXllcigpCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gYmFja2dyb3Vu
ZENvbG9yOwogCi0gICAgaWYgKG1fcm9vdE5vZGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQoKSkKKyAgICBpZiAobV9yb290Tm9kZS0+c2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKQogICAgICAgICBiYWNrZ3JvdW5k
Q29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIC43KSk7CiAK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU5vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KaW5kZXggMzhkZDllNS4uYzJkOTliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
Tm9kZU1hYy5tbQpAQCAtMzcsOSArMzcsMTIgQEAKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgdm9pZCBsb2dUaHJlYWRlZFNjcm9s
bGluZ01vZGUodW5zaWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCk7CisKIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1Ry
ZWVOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSogc2Nyb2xsaW5nVHJlZSkKIHsKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFNjcm9sbGluZ1RyZWVOb2RlTWFjKHNjcm9sbGluZ1RyZWUpKTsKQEAg
LTcwLDE1ICs3MywyMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjp1cGRhdGUoU2Nyb2xs
aW5nVHJlZVN0YXRlKiBzdGF0ZSkKICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkg
JiAoU2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxMYXllciB8IFNjcm9sbGluZ1RyZWVTdGF0ZTo6
Q29udGVudHNTaXplIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpWaWV3cG9ydFJlY3QpKQogICAgICAg
ICB1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShzY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGlmICgo
c3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpICYmIHNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgewotICAgICAgICAvLyBXZSdyZSB0cmFuc2l0
aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRoZSBt
YWluIHRocmVhZCIgbW9kZS4KLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFp
biB0aHJlYWQgc2Nyb2xsIHBvc2l0aW9uIHdpdGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBv
c2l0aW9uLgotICAgICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxp
bmdUcmVlU3RhdGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKQotICAgICAgICAgICAgbV9wcm9i
YWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQ
b3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0gICAgICAgICAgICBtX3By
b2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9z
aXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7CisgICAgaWYgKChzdGF0ZS0+Y2hhbmdl
ZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbikpIHsKKyAgICAgICAgdW5zaWduZWQgcmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IHRoaXMtPnNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKKworICAgICAg
ICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkg
eworICAgICAgICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xvdyAidXBkYXRl
IHNjcm9sbCBsYXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUuCisgICAgICAg
ICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRp
b24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCisgICAgICAgICAgICBp
ZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFk
U2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS0+cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlv
biA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAgbV9wcm9i
YWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0
aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgICAgICAgICAgfQogICAgICAgICB9
CisKKyAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKCkpCisgICAgICAgICAgICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUocmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CiAgICAgfQogfQog
CkBAIC0yMjUsNyArMjM1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c3RvcFNuYXBS
dWJiZXJiYW5kVGltZXIoKQogCiBJbnRQb2ludCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xs
UG9zaXRpb24oKSBjb25zdAogewotICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKCkpCisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKSkKICAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhy
ZWFkU2Nyb2xsUG9zaXRpb247CiAKICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBt
X3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwpAQCAtMjQ4LDcgKzI1OCw3IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMoY29uc3QKIHsKICAgICB1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShzY3JvbGxQb3Np
dGlvbik7CiAKLSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCgpKSB7CisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWRSZWFzb24oKSkgewogICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIHNjcm9sbGluZ1RyZWUoKS0+dXBkYXRlTWFp
bkZyYW1lU2Nyb2xsUG9zaXRpb25BbmRTY3JvbGxMYXllclBvc2l0aW9uKHNjcm9sbFBvc2l0aW9u
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjYwLDcgKzI3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QKIAogdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgQVNTRVJUKCFzaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghc2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKTsKICAgICBtX3Njcm9s
bExheWVyLmdldCgpLnBvc2l0aW9uID0gQ0dQb2ludE1ha2UoLXBvc2l0aW9uLngoKSArIHNjcm9s
bE9yaWdpbigpLngoKSwgLXBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSk7CiB9CiAK
QEAgLTMzMCw2ICszNDAsMzAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6bG9nRXhwb3Nl
ZFVuZmlsbGVkQXJlYSgpCiAgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVs
ZXNzIGFyZWEuIFRpbWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6bW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCksIHVuZmlsbGVkQXJlYSk7CiB9CiAKK3N0YXRpYyB2b2lkIGxv
Z1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkKQoreworICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAgIFN0cmluZyByZWFzb25z
RGVzY3JpcHRpb247CisKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OkZvcmNlZE9uTWFpblRo
cmVhZCkKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAiZm9yY2VkLCI7CisgICAg
ICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
ICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgICAg
ICByZWFzb25zRGVzY3JpcHRpb24gKz0gInNsb3ctcmVwYWludCBvYmplY3RzLCI7CisgICAgICAg
IGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYg
U2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNGaXhlZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVk
TGF5ZXJzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uICs9ICJmaXhlZCBvYmplY3Rz
LCI7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykK
KyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAibm9uLWxheWVyIGZpeGVkIG9iamVj
dHMsIjsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAg
ICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAiaW1hZ2UgZG9jdW1lbnQsIjsKKworICAgICAg
ICAvLyBTdHJpcCB0aGUgdHJhaWxpbmcgY29tbWEuCisgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlv
biA9IHJlYXNvbnNEZXNjcmlwdGlvbi5sZWZ0KHJlYXNvbnNEZXNjcmlwdGlvbi5sZW5ndGgoKSAt
IDEpOworCisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFpbi10aHJl
YWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmIFJlYXNvbihzKTogJXNcbiIsIFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCksIHJlYXNvbnNEZXNjcmlwdGlvbi5hc2NpaSgpLmRhdGEo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8g
dGhyZWFkZWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmXG4iLCBXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykK
</data>
<flag name="commit-queue"
          id="168239"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158371</attachid>
            <date>2012-08-14 11:06:20 -0700</date>
            <delta_ts>2012-08-14 11:23:43 -0700</delta_ts>
            <desc>build fix for non-threaded-scrolling platforms</desc>
            <filename>threaded-logging.diff</filename>
            <type>text/plain</type>
            <size>27470</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDAyNjRjLi5kYmM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTItMDgtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogZml4ZWQgb2JqZWN0cworICAgICAg
ICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1vZGUuIFRp
bWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFp
bi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIxNCBSZWFzb24ocyk6IGZp
eGVkIG9iamVjdHMKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElO
RzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41
NTM1ODcgUmVhc29uKHMpOiBmaXhlZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3
aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1Jl
cGFpbnRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFk
U2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRSZWFzb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Lmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6U2Nyb2xsaW5n
VHJlZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OnVwZGF0ZSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjpzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVOb2RlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGF0
ZTo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAg
IFJlbmFtZSB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
IHRvIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24gKGFuZCByZWxhdGVkKS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToK
KyAgICAgICAgQ29uc3RydWN0IGEgYml0ZmllbGQgZGVzY3JpYmluZyB0aGUgcmVhc29ucyB3ZSBm
YWxsIGludG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuCisKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVTdGF0
ZSk6CisgICAgICAgIEFkZCBSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkIGVudW0sIHdpdGggdGhlIGN1cnJlbnQgcmVhc29ucyB0aGF0IHdlIG1pZ2h0IGZh
bGxiYWNrIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZSk6IExvZyBldmVyeSB0
aW1lIHNjcm9sbGluZyBtb2RlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbExh
eWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bG9nVGhyZWFkZWRTY3JvbGxpbmdNb2Rl
KTogUHJldHR5LXByaW50IHRoZSBzY3JvbGxpbmcgbW9kZSBhbmQgc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbi4KKwogMjAxMi0wOC0xMyAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBQb3J0IG1l
dGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5nIGluIHJ1bi10aW1lIGJyaWRnZSB0byB1c2Ug
SlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmQwOGMzMS4uMTEzMjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEwLDcgKzUxMCw3IEBACiAJ
CTFBQUFEREEzMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREExMTREQjQwOUYwMEFG
NjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCAqLzsgfTsKIAkJMUFBQUREQTQxNERCNDA5RjAwQUY2
NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQUFEREEyMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQURE
QkUxNERDNjQwNzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERCQzE0REM2NDA2MDBBRjY0
QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCAqLzsgfTsKLQkJMUFBQUREQkYxNERDNjQwNzAw
QUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQkQxNERDNjQwNjAwQUY2NEIzIC8qIFNjcm9sbGlu
Z1RyZWVTdGF0ZS5oICovOyB9OworCQkxQUFBRERCRjE0REM2NDA3MDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUFBRERCRDE0REM2NDA2MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQUREREEx
NERDNzRFQzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREQ4MTREQzc0RUMwMEFGNjRC
MyAvKiBTY3JvbGxpbmdUcmVlU3RhdGVNYWMubW0gKi87IH07CiAJCTFBQUFEREUzMTREQzhDOEYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERFMTE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwICovOyB9OwogCQkxQUFBRERFNDE0REM4QzhGMDBBRjY0QjMgLyogU2Ny
b2xsaW5nVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQUFEREUyMTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oICov
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDQwZmVlZDcuLjJjMmZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpAQCAtNDYsNiArNDUsNyBAQAogI2lmIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNlbmRpZgpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Ns
b3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyCiAgICAgaWYgKCFjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7
CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJl
YXNvbigpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xOTgsNyArMTk4LDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdl
KEZyYW1lVmlldyogZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIH0KIAogc3Rh
dGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZy
YW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKIAogICAgIGZy
YW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsKICAgICByZWNvbXB1dGVXaGVlbEV2ZW50
SGFuZGxlckNvdW50KCk7Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKTsKICAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKIH0KIApAQCAtMzc1LDE1ICszNzUsMjYgQEAgYm9vbCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBm
cmFtZVZpZXcpCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpCit2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKCkKIHsKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwogCi0g
ICAgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChtX2ZvcmNl
TWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzCi0gICAgICAgIHx8IGZyYW1lVmll
dy0+aGFzU2xvd1JlcGFpbnRPYmplY3RzKCkKLSAgICAgICAgfHwgKCFzdXBwb3J0c0ZpeGVkUG9z
aXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc0ZpeGVkT2JqZWN0cygpKQotICAgICAgICB8
fCAoc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVj
dHMoZnJhbWVWaWV3KSkKLSAgICAgICAgfHwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KS0+aXNJbWFnZURvY3VtZW50KCkpOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgPSAoUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkRmxhZ3MpMDsKKworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Rm9yY2VkT25NYWlu
VGhyZWFkOworICAgIGlmIChmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQorICAg
ICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9
IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzU2xvd1JlcGFpbnRPYmplY3RzOworICAgIGlmICghc3Vw
cG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNGaXhlZE9iamVjdHMo
KSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc0ZpeGVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnM7CisgICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYm
IGhhc05vbkxheWVyRml4ZWRPYmplY3RzKGZyYW1lVmlldykpCisgICAgICAgIHJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0
YXRlOjpIYXNOb25MYXllckZpeGVkT2JqZWN0czsKKyAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRl
OjpJc0ltYWdlRG9jdW1lbnQ7CisKKyAgICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpOworI2VuZGlmCiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yY2VN
YWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpCkBAIC0zOTIsNyArNDAzLDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQ
b3NpdGlvblVwZGF0ZXMoYm9vbCBmb3IKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mb3JjZU1h
aW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyA9IGZvcmNlTWFpblRocmVhZFNjcm9s
bExheWVyUG9zaXRpb25VcGRhdGVzOwotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiB9CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQpAQCAtNDMwLDE2ICs0NDEsMTggQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckMK
ICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJv
b2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKKyNpZiBFTkFC
TEUoVEhSRUFERURfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyByZWFzb25zKQogewog
ICAgIC8vIFRoZSBGcmFtZVZpZXcncyBHcmFwaGljc0xheWVyIGlzIGxpa2VseSB0byBiZSBvdXQt
b2Ytc3luY2ggd2l0aCB0aGUgUGxhdGZvcm1MYXllcgogICAgIC8vIGF0IHRoaXMgcG9pbnQuIFNv
IHdlJ2xsIHVwZGF0ZSBpdCBiZWZvcmUgd2Ugc3dpdGNoIGJhY2sgdG8gbWFpbiB0aHJlYWQgc2Ny
b2xsaW5nCiAgICAgLy8gaW4gb3JkZXIgdG8gYXZvaWQgbGF5ZXIgcG9zaXRpb25pbmcgYnVncy4K
LSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKKyAg
ICBpZiAocmVhc29ucykKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlv
bigpOwotICAgIG1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5zZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQpOworICAgIG1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5zZXRTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKHJlYXNvbnMpOwogICAgIHNjaGVkdWxl
VHJlZVN0YXRlQ29tbWl0KCk7CiB9CisjZW5kaWYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNWQ0NWViNi4uN2Zl
ZGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2VuZGlmCkBAIC0xMjgsNyArMTI5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwogICAgIGJv
b2wgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3Kik7Ci0gICAgdm9pZCB1cGRhdGVT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdm9pZCB1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7
CiAKICAgICB2b2lkIHNldFNjcm9sbExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYpOwpAQCAtMTUxLDcgKzE1Miw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNjcm9sbFBhcmFtZXRlcnMoY29uc3QgU2Nyb2xs
UGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCk7Ci0gICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKGJvb2wpOworI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAgdm9pZCBzZXRT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKKyNlbmRpZgog
CiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Tm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvck5vbmUuY3BwCmluZGV4IGYwYWNmZTAuLjliNzMxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNw
cApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2
ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkKQogewogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wp
Cit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZEZsYWdzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggMjg0MDJjZS4uMTUwYmE3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9s
bGluZ1RyZWVOb2RlOjpTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdU
cmVlKQogICAgIDogbV9zY3JvbGxpbmdUcmVlKHNjcm9sbGluZ1RyZWUpCi0gICAgLCBtX3Nob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oMCkKICAgICAs
IG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAg
LCBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAs
IG1faGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC01Niw4ICs1Niw4IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRl
KQogICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0
ZTo6Q29udGVudHNTaXplKQogICAgICAgICBtX2NvbnRlbnRzU2l6ZSA9IHN0YXRlLT5jb250ZW50
c1NpemUoKTsKIAotICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkK
LSAgICAgICAgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0g
c3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAg
ICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pCisgICAgICAg
IG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9IHN0
YXRlLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7
CiAKICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3Rh
dGU6Okhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KQogICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5ID0gc3RhdGUtPmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaAppbmRl
eCBmNjlhZTlmLi4zY2FkNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSA9IDA7CiAKLSAgICBib29sIHNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7IH0KKyAgICBS
ZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBzaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29u
OyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxp
bmdUcmVlKik7CkBAIC03NCw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbnRl
bnRzU2l6ZTsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKIAotICAgIGJvb2wgbV9zaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOworICAgIFJlYXNvbkZvclVw
ZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsKIAogICAgIFNjcm9sbEVsYXN0
aWNpdHkgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAKaW5kZXggNWViNTNhYi4uMjMzNGI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU3RhdGUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVN0
YXRlPiBTY3JvbGxpbmdUcmVlU3RhdGU6OmNyZWF0ZSgpCiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNj
cm9sbGluZ1RyZWVTdGF0ZSgpCiAgICAgOiBtX2NoYW5nZWRQcm9wZXJ0aWVzKDApCiAgICAgLCBt
X3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigwKQogICAgICwgbV9ob3Jpem9udGFsU2Ny
b2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1fdmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKQogICAgICwgbV9oYXNFbmFibGVkSG9y
aXpvbnRhbFNjcm9sbGJhcihmYWxzZSkKQEAgLTg4LDEzICs4OCwxMyBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50
SGFuZGxlckNvdQogICAgIG1fY2hhbmdlZFByb3BlcnRpZXMgfD0gV2hlZWxFdmVudEhhbmRsZXJD
b3VudDsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKQordm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRp
bmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29ucykKIHsKLSAgICBp
ZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID09IHNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCisgICAgaWYgKChib29sKW1f
c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9PSAoYm9v
bClyZWFzb25zKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkOwotICAgIG1fY2hhbmdlZFByb3BlcnRpZXMgfD0gU2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24gPSByZWFzb25zOworICAgIG1fY2hhbmdlZFBy
b3BlcnRpZXMgfD0gU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJl
YXNvbjsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldEhvcml6b250YWxTY3JvbGxF
bGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5o
CmluZGV4IDNiNGE4ZDYuLmE5MjVmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCkBAIC00MCw2ICs0MCw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiB1bnNpZ25lZCBSZWFzb25Gb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFnczsKKwogLy8gVGhlIFNjcm9sbGluZ1RyZWVT
dGF0ZSBvYmplY3Qga2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2Nyb2xsaW5n
IHJlbGF0ZWQgcHJvcGVydGllcy4KIC8vIFdoZW5ldmVyIGFueSBwcm9wZXJ0aWVzIGNoYW5nZSwg
dGhlIHNjcm9sbGluZyBjb29yZGluYXRvciB3aWxsIGJlIGluZm9ybWVkIGFuZCB3aWxsIHVwZGF0
ZSB0aGUgc3RhdGUKIC8vIGFuZCBzY2hlZHVsZSBhIHRpbWVyIHRoYXQgd2lsbCBjbG9uZSB0aGUg
bmV3IHN0YXRlIGFuZCBzZW5kIGl0IG92ZXIgdG8gdGhlIHNjcm9sbGluZyB0aHJlYWQsIGF2b2lk
aW5nIGxvY2tpbmcuCkBAIC01NCw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudHNT
aXplID0gMSA8PCAxLAogICAgICAgICBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IDEgPDwgMiwK
ICAgICAgICAgV2hlZWxFdmVudEhhbmRsZXJDb3VudCA9IDEgPDwgMywKLSAgICAgICAgU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IDEgPDwgNCwKKyAgICAgICAg
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9IDEgPDwg
NCwKICAgICAgICAgSG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSAxIDw8IDUsCiAgICAgICAg
IFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IDEgPDwgNiwKICAgICAgICAgSGFzRW5hYmxlZEhv
cml6b250YWxTY3JvbGxiYXIgPSAxIDw8IDcsCkBAIC02Niw2ICs2OCwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uID0gMSA8PCAxMywKICAgICB9OwogCisgICAg
ZW51bSBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgewor
ICAgICAgICBGb3JjZWRPbk1haW5UaHJlYWQgPSAxIDw8IDAsCisgICAgICAgIEhhc1Nsb3dSZXBh
aW50T2JqZWN0cyA9IDEgPDwgMSwKKyAgICAgICAgSGFzRml4ZWRPYmplY3RzV2l0aG91dFN1cHBv
cnRpbmdGaXhlZExheWVycyA9IDEgPDwgMiwKKyAgICAgICAgSGFzTm9uTGF5ZXJGaXhlZE9iamVj
dHMgPSAxIDw8IDMsCisgICAgICAgIElzSW1hZ2VEb2N1bWVudCA9IDEgPDwgNAorICAgIH07CisK
ICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2Vk
UHJvcGVydGllczsgfQogICAgIHVuc2lnbmVkIGNoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGllczsgfQogCkBAIC04MSw4ICs5MSw4IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV93
aGVlbEV2ZW50SGFuZGxlckNvdW50OyB9CiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxlckNv
dW50KHVuc2lnbmVkKTsKIAotICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZDsgfQotICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sKTsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOyB9CisgICAgdm9pZCBzZXRTaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVw
ZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKIAogICAgIFNjcm9s
bEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBt
X2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsU2Ny
b2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5KTsKQEAgLTEyNiw3ICsxMzYsNyBAQCBwcml2
YXRlOgogCiAgICAgdW5zaWduZWQgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50OwogCi0gICAgYm9v
bCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVh
c29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOwogCiAgICAgU2Ny
b2xsRWxhc3RpY2l0eSBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVs
YXN0aWNpdHkgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCmluZGV4IDFkYjc1OTQuLmU4ZjVlNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2No
cm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0yMDIsMTAgKzIwMiwx
MCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50
KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQwogICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExh
eWVyKCkuc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh3aGVlbEV2ZW50SGFuZGxlckNvdW50ID4g
MCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCBzaG91bGQpCit2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKHVuc2lnbmVkIHJlYXNvbnMpCiB7CiAgICAgaWYgKG1fcHJpdmF0ZS0+aGFzU2Nyb2xs
TGF5ZXIoKSkKLSAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLnNldFNob3VsZFNjcm9s
bE9uTWFpblRocmVhZChzaG91bGQpOworICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCku
c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHJlYXNvbnMpOwogfQogCiBib29sIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5t
bQppbmRleCA0YTY0MDFjLi4xMDFiYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWU6OnVwZGF0ZURlYnVnUm9vdExheWVyKCkKIAogICAgIFJldGFpblB0
cjxDR0NvbG9yUmVmPiBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBpZiAobV9yb290Tm9kZS0+c2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKQorICAgIGlmIChtX3Jv
b3ROb2RlLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29u
KCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVy
aWNSR0IoMSwgMCwgMCwgLjcpKTsKIAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQppbmRleCAzOGRk
OWU1Li5jMmQ5OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCkBAIC0zNyw5ICszNywxMiBAQAogCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRp
bmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKTsKKwogUGFzc093blB0cjxTY3JvbGxp
bmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlKiBzY3Jv
bGxpbmdUcmVlKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nVHJlZU5vZGVN
YWMoc2Nyb2xsaW5nVHJlZSkpOwpAQCAtNzAsMTUgKzczLDIyIEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRlKQogICAgIGlmIChzdGF0
ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIChTY3JvbGxpbmdUcmVlU3RhdGU6OlNjcm9sbExheWVy
IHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpDb250ZW50c1NpemUgfCBTY3JvbGxpbmdUcmVlU3RhdGU6
OlZpZXdwb3J0UmVjdCkpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKHNjcm9sbFBv
c2l0aW9uKCkpOwogCi0gICAgaWYgKChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9s
bGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCkgJiYgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKSB7Ci0g
ICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cgInVwZGF0ZSBzY3JvbGwg
bGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgotICAgICAgICAvLyBJbml0
aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRpb24gd2l0aCB0aGUg
Y3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCi0gICAgICAgIGlmIChzdGF0ZS0+Y2hhbmdl
ZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRp
b24pCi0gICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc3Rh
dGUtPnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3Np
dGlvbjsKLSAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBJ
bnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsK
KyAgICBpZiAoKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRl
OjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKSkgewor
ICAgICAgICB1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkID0gdGhpcy0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZFJlYXNvbigpOworCisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAgICAgICAvLyBXZSdyZSB0cmFuc2l0aW9u
aW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRoZSBtYWlu
IHRocmVhZCIgbW9kZS4KKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHByb2JhYmxlIG1h
aW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9sbCBsYXllciBw
b3NpdGlvbi4KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNj
cm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5yZXF1ZXN0ZWRT
Y3JvbGxQb3NpdGlvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQ0dQ
b2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsK
KyAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gSW50
UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5z
Y3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGxvZ1RocmVh
ZGVkU2Nyb2xsaW5nTW9kZShyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKTsKICAgICB9CiB9CiAKQEAgLTIyNSw3ICsyMzUsNyBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVOb2RlTWFjOjpzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpCiAKIEludFBvaW50IFNjcm9s
bGluZ1RyZWVOb2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkKKyAgICBpZiAoc2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKQogICAgICAgICBy
ZXR1cm4gbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAogICAgIENHUG9pbnQg
c2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CkBAIC0y
NDgsNyArMjU4LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRp
b25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdAogewogICAgIHVwZGF0ZU1haW5G
cmFtZVBpblN0YXRlKHNjcm9sbFBvc2l0aW9uKTsKIAotICAgIGlmIChzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoc2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKSB7CiAgICAgICAgIG1fcHJvYmFi
bGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKICAgICAgICAgc2Ny
b2xsaW5nVHJlZSgpLT51cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbkFuZFNjcm9sbExheWVy
UG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogICAgICAgICByZXR1cm47CkBAIC0yNjAsNyArMjcw
LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0
Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdAogCiB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFj
OjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKLSAg
ICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKCFzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
UmVhc29uKCkpOwogICAgIG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBDR1BvaW50TWFr
ZSgtcG9zaXRpb24ueCgpICsgc2Nyb2xsT3JpZ2luKCkueCgpLCAtcG9zaXRpb24ueSgpICsgc2Ny
b2xsT3JpZ2luKCkueSgpKTsKIH0KIApAQCAtMzMwLDYgKzM0MCwzMCBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVOb2RlTWFjOjpsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCkKICAgICAgICAgcHJpbnRmKCJT
Q1JPTExJTkc6IEV4cG9zZWQgdGlsZWxlc3MgYXJlYS4gVGltZTogJWYgVW5maWxsZWQgUGl4ZWxz
OiAldVxuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgdW5maWxsZWRBcmVh
KTsKIH0KIAorc3RhdGljIHZvaWQgbG9nVGhyZWFkZWRTY3JvbGxpbmdNb2RlKHVuc2lnbmVkIHJl
YXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCit7CisgICAg
aWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpIHsK
KyAgICAgICAgU3RyaW5nIHJlYXNvbnNEZXNjcmlwdGlvbjsKKworICAgICAgICBpZiAocmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0
aW9uICs9ICJmb3JjZWQsIjsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc1Nsb3dSZXBh
aW50T2JqZWN0cykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAic2xvdy1yZXBh
aW50IG9iamVjdHMsIjsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc0ZpeGVkT2JqZWN0
c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAgICAgICByZWFzb25zRGVzY3Jp
cHRpb24gKz0gImZpeGVkIG9iamVjdHMsIjsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGlu
Z1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhh
c05vbkxheWVyRml4ZWRPYmplY3RzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uICs9
ICJub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywiOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6
SXNJbWFnZURvY3VtZW50KQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uICs9ICJpbWFn
ZSBkb2N1bWVudCwiOworCisgICAgICAgIC8vIFN0cmlwIHRoZSB0cmFpbGluZyBjb21tYS4KKyAg
ICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uID0gcmVhc29uc0Rlc2NyaXB0aW9uLmxlZnQocmVhc29u
c0Rlc2NyaXB0aW9uLmxlbmd0aCgpIC0gMSk7CisKKyAgICAgICAgcHJpbnRmKCJTQ1JPTExJTkc6
IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWYgUmVhc29u
KHMpOiAlc1xuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgcmVhc29uc0Rl
c2NyaXB0aW9uLmFzY2lpKCkuZGF0YSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJpbnRmKCJT
Q1JPTExJTkc6IFN3aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWZc
biIsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQo=
</data>
<flag name="commit-queue"
          id="168479"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158378</attachid>
            <date>2012-08-14 11:23:43 -0700</date>
            <delta_ts>2012-09-05 09:53:57 -0700</delta_ts>
            <desc>ugh</desc>
            <filename>threaded-logging.diff</filename>
            <type>text/plain</type>
            <size>27666</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDAyNjRjLi5kYmM4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTItMDgtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogZml4ZWQgb2JqZWN0cworICAgICAg
ICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1vZGUuIFRp
bWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFp
bi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIxNCBSZWFzb24ocyk6IGZp
eGVkIG9iamVjdHMKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElO
RzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41
NTM1ODcgUmVhc29uKHMpOiBmaXhlZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3
aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcu
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1Jl
cGFpbnRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFk
U2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRSZWFzb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Lmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6U2Nyb2xsaW5n
VHJlZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OnVwZGF0ZSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjpzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVOb2RlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGF0
ZTo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAg
IFJlbmFtZSB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
IHRvIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24gKGFuZCByZWxhdGVkKS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToK
KyAgICAgICAgQ29uc3RydWN0IGEgYml0ZmllbGQgZGVzY3JpYmluZyB0aGUgcmVhc29ucyB3ZSBm
YWxsIGludG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuCisKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaDoKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVTdGF0
ZSk6CisgICAgICAgIEFkZCBSZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkIGVudW0sIHdpdGggdGhlIGN1cnJlbnQgcmVhc29ucyB0aGF0IHdlIG1pZ2h0IGZh
bGxiYWNrIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZSk6IExvZyBldmVyeSB0
aW1lIHNjcm9sbGluZyBtb2RlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbExh
eWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bG9nVGhyZWFkZWRTY3JvbGxpbmdNb2Rl
KTogUHJldHR5LXByaW50IHRoZSBzY3JvbGxpbmcgbW9kZSBhbmQgc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbi4KKwogMjAxMi0wOC0xMyAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBQb3J0IG1l
dGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5nIGluIHJ1bi10aW1lIGJyaWRnZSB0byB1c2Ug
SlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmQwOGMzMS4uMTEzMjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEwLDcgKzUxMCw3IEBACiAJ
CTFBQUFEREEzMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREExMTREQjQwOUYwMEFG
NjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCAqLzsgfTsKIAkJMUFBQUREQTQxNERCNDA5RjAwQUY2
NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQUFEREEyMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQURE
QkUxNERDNjQwNzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERCQzE0REM2NDA2MDBBRjY0
QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCAqLzsgfTsKLQkJMUFBQUREQkYxNERDNjQwNzAw
QUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQkQxNERDNjQwNjAwQUY2NEIzIC8qIFNjcm9sbGlu
Z1RyZWVTdGF0ZS5oICovOyB9OworCQkxQUFBRERCRjE0REM2NDA3MDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUFBRERCRDE0REM2NDA2MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQUREREEx
NERDNzRFQzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREQ4MTREQzc0RUMwMEFGNjRC
MyAvKiBTY3JvbGxpbmdUcmVlU3RhdGVNYWMubW0gKi87IH07CiAJCTFBQUFEREUzMTREQzhDOEYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERFMTE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwICovOyB9OwogCQkxQUFBRERFNDE0REM4QzhGMDBBRjY0QjMgLyogU2Ny
b2xsaW5nVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQUFEREUyMTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oICov
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDQwZmVlZDcuLjJjMmZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpAQCAtNDYsNiArNDUsNyBAQAogI2lmIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNlbmRpZgpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Ns
b3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyCiAgICAgaWYgKCFjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7
CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJl
YXNvbigpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0xOTgsNyArMTk4LDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdl
KEZyYW1lVmlldyogZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIH0KIAogc3Rh
dGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZy
YW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKIAogICAgIGZy
YW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsKICAgICByZWNvbXB1dGVXaGVlbEV2ZW50
SGFuZGxlckNvdW50KCk7Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKTsKICAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKIH0KIApAQCAtMzc1LDE1ICszNzUsMjYgQEAgYm9vbCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBm
cmFtZVZpZXcpCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpCit2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKCkKIHsKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwogCi0g
ICAgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChtX2ZvcmNl
TWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzCi0gICAgICAgIHx8IGZyYW1lVmll
dy0+aGFzU2xvd1JlcGFpbnRPYmplY3RzKCkKLSAgICAgICAgfHwgKCFzdXBwb3J0c0ZpeGVkUG9z
aXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc0ZpeGVkT2JqZWN0cygpKQotICAgICAgICB8
fCAoc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVj
dHMoZnJhbWVWaWV3KSkKLSAgICAgICAgfHwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KS0+aXNJbWFnZURvY3VtZW50KCkpOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgPSAoUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkRmxhZ3MpMDsKKworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Rm9yY2VkT25NYWlu
VGhyZWFkOworICAgIGlmIChmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQorICAg
ICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9
IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzU2xvd1JlcGFpbnRPYmplY3RzOworICAgIGlmICghc3Vw
cG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNGaXhlZE9iamVjdHMo
KSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc0ZpeGVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnM7CisgICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYm
IGhhc05vbkxheWVyRml4ZWRPYmplY3RzKGZyYW1lVmlldykpCisgICAgICAgIHJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0
YXRlOjpIYXNOb25MYXllckZpeGVkT2JqZWN0czsKKyAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRl
OjpJc0ltYWdlRG9jdW1lbnQ7CisKKyAgICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpOworI2VuZGlmCiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yY2VN
YWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpCkBAIC0zOTIsNyArNDAzLDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQ
b3NpdGlvblVwZGF0ZXMoYm9vbCBmb3IKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mb3JjZU1h
aW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyA9IGZvcmNlTWFpblRocmVhZFNjcm9s
bExheWVyUG9zaXRpb25VcGRhdGVzOwotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiB9CiAKICNpZiBFTkFCTEUoVEhSRUFERURf
U0NST0xMSU5HKQpAQCAtNDMwLDE2ICs0NDEsMTggQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckMK
ICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJv
b2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKKyNpZiBFTkFC
TEUoVEhSRUFERURfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyByZWFzb25zKQogewog
ICAgIC8vIFRoZSBGcmFtZVZpZXcncyBHcmFwaGljc0xheWVyIGlzIGxpa2VseSB0byBiZSBvdXQt
b2Ytc3luY2ggd2l0aCB0aGUgUGxhdGZvcm1MYXllcgogICAgIC8vIGF0IHRoaXMgcG9pbnQuIFNv
IHdlJ2xsIHVwZGF0ZSBpdCBiZWZvcmUgd2Ugc3dpdGNoIGJhY2sgdG8gbWFpbiB0aHJlYWQgc2Ny
b2xsaW5nCiAgICAgLy8gaW4gb3JkZXIgdG8gYXZvaWQgbGF5ZXIgcG9zaXRpb25pbmcgYnVncy4K
LSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKKyAg
ICBpZiAocmVhc29ucykKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlv
bigpOwotICAgIG1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5zZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQpOworICAgIG1fc2Nyb2xsaW5nVHJlZVN0YXRlLT5zZXRTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKHJlYXNvbnMpOwogICAgIHNjaGVkdWxl
VHJlZVN0YXRlQ29tbWl0KCk7CiB9CisjZW5kaWYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggNWQ0NWViNi4uN2Zl
ZGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2VuZGlmCkBAIC0xMjgsNyArMTI5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwogICAgIGJv
b2wgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJhbWVWaWV3Kik7Ci0gICAgdm9pZCB1cGRhdGVT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdm9pZCB1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7
CiAKICAgICB2b2lkIHNldFNjcm9sbExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYpOwpAQCAtMTUxLDcgKzE1Miw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNjcm9sbFBhcmFtZXRlcnMoY29uc3QgU2Nyb2xs
UGFyYW1ldGVycyYpOwogICAgIHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCk7Ci0gICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKGJvb2wpOworI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAgdm9pZCBzZXRT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKKyNlbmRpZgog
CiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Tm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvck5vbmUuY3BwCmluZGV4IGYwYWNmZTAuLjA0NmUwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNw
cApAQCAtNjcsOSArNjcsMTEgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxF
dmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCkKIHsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29s
KQorI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29u
KFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKQog
ewogfQorI2VuZGlmCiAKIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQ
b3NpdGlvbkxheWVycygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggMjg0MDJjZS4uMTUwYmE3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGluZ1Ry
ZWVOb2RlOjpTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlKQog
ICAgIDogbV9zY3JvbGxpbmdUcmVlKHNjcm9sbGluZ1RyZWUpCi0gICAgLCBtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX3Nob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oMCkKICAgICAsIG1faG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX3Zl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1faGFz
RW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZU5vZGU6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRlKQogICAg
IGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6Q29u
dGVudHNTaXplKQogICAgICAgICBtX2NvbnRlbnRzU2l6ZSA9IHN0YXRlLT5jb250ZW50c1NpemUo
KTsKIAotICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVT
dGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKLSAgICAg
ICAgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gc3RhdGUt
PnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICBpZiAo
c3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pCisgICAgICAgIG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9IHN0YXRlLT5z
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiAKICAg
ICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5KQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5ID0gc3RhdGUtPmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaAppbmRleCBmNjlh
ZTlmLi4zY2FkNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ3LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKSA9IDA7CiAKLSAgICBib29sIHNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7IH0KKyAgICBSZWFzb25G
b3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBzaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOyB9CiAK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdUcmVl
Kik7CkBAIC03NCw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRzU2l6
ZTsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKIAotICAgIGJvb2wgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOworICAgIFJlYXNvbkZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsKIAogICAgIFNjcm9sbEVsYXN0aWNpdHkg
bV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1fdmVy
dGljYWxTY3JvbGxFbGFzdGljaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAKaW5kZXggNWViNTNhYi4uMjMzNGI1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3Rh
dGUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVN0YXRlPiBT
Y3JvbGxpbmdUcmVlU3RhdGU6OmNyZWF0ZSgpCiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNjcm9sbGlu
Z1RyZWVTdGF0ZSgpCiAgICAgOiBtX2NoYW5nZWRQcm9wZXJ0aWVzKDApCiAgICAgLCBtX3doZWVs
RXZlbnRIYW5kbGVyQ291bnQoMCkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigwKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1fdmVydGljYWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKQogICAgICwgbV9oYXNFbmFibGVkSG9yaXpvbnRh
bFNjcm9sbGJhcihmYWxzZSkKQEAgLTg4LDEzICs4OCwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVT
dGF0ZTo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxl
ckNvdQogICAgIG1fY2hhbmdlZFByb3BlcnRpZXMgfD0gV2hlZWxFdmVudEhhbmRsZXJDb3VudDsK
IH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKQordm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFNob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29ucykKIHsKLSAgICBpZiAobV9z
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID09IHNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCisgICAgaWYgKChib29sKW1fc2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9PSAoYm9vbClyZWFz
b25zKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQgPSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkOwotICAgIG1fY2hhbmdlZFByb3BlcnRpZXMgfD0gU2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24gPSByZWFzb25zOworICAgIG1fY2hhbmdlZFByb3BlcnRp
ZXMgfD0gU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsK
IH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldEhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5KFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCmluZGV4
IDNiNGE4ZDYuLmE5MjVmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCkBAIC00MCw2ICs0MCw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAordHlwZWRlZiB1bnNpZ25lZCBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRGbGFnczsKKwogLy8gVGhlIFNjcm9sbGluZ1RyZWVTdGF0ZSBv
YmplY3Qga2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2Nyb2xsaW5nIHJlbGF0
ZWQgcHJvcGVydGllcy4KIC8vIFdoZW5ldmVyIGFueSBwcm9wZXJ0aWVzIGNoYW5nZSwgdGhlIHNj
cm9sbGluZyBjb29yZGluYXRvciB3aWxsIGJlIGluZm9ybWVkIGFuZCB3aWxsIHVwZGF0ZSB0aGUg
c3RhdGUKIC8vIGFuZCBzY2hlZHVsZSBhIHRpbWVyIHRoYXQgd2lsbCBjbG9uZSB0aGUgbmV3IHN0
YXRlIGFuZCBzZW5kIGl0IG92ZXIgdG8gdGhlIHNjcm9sbGluZyB0aHJlYWQsIGF2b2lkaW5nIGxv
Y2tpbmcuCkBAIC01NCw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudHNTaXplID0g
MSA8PCAxLAogICAgICAgICBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IDEgPDwgMiwKICAgICAg
ICAgV2hlZWxFdmVudEhhbmRsZXJDb3VudCA9IDEgPDwgMywKLSAgICAgICAgU2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IDEgPDwgNCwKKyAgICAgICAgU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9IDEgPDwgNCwKICAg
ICAgICAgSG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSAxIDw8IDUsCiAgICAgICAgIFZlcnRp
Y2FsU2Nyb2xsRWxhc3RpY2l0eSA9IDEgPDwgNiwKICAgICAgICAgSGFzRW5hYmxlZEhvcml6b250
YWxTY3JvbGxiYXIgPSAxIDw8IDcsCkBAIC02Niw2ICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uID0gMSA8PCAxMywKICAgICB9OwogCisgICAgZW51bSBS
ZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgeworICAgICAg
ICBGb3JjZWRPbk1haW5UaHJlYWQgPSAxIDw8IDAsCisgICAgICAgIEhhc1Nsb3dSZXBhaW50T2Jq
ZWN0cyA9IDEgPDwgMSwKKyAgICAgICAgSGFzRml4ZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdG
aXhlZExheWVycyA9IDEgPDwgMiwKKyAgICAgICAgSGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMgPSAx
IDw8IDMsCisgICAgICAgIElzSW1hZ2VEb2N1bWVudCA9IDEgPDwgNAorICAgIH07CisKICAgICBi
b29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVy
dGllczsgfQogICAgIHVuc2lnbmVkIGNoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGFuZ2VkUHJvcGVydGllczsgfQogCkBAIC04MSw4ICs5MSw4IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2
ZW50SGFuZGxlckNvdW50OyB9CiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVu
c2lnbmVkKTsKIAotICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZDsgfQotICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZChib29sKTsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkUmVhc29uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOyB9CisgICAgdm9pZCBzZXRTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKIAogICAgIFNjcm9sbEVsYXN0
aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2hvcml6
b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5KTsKQEAgLTEyNiw3ICsxMzYsNyBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50OwogCi0gICAgYm9vbCBtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVhc29uRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOwogCiAgICAgU2Nyb2xsRWxh
c3RpY2l0eSBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNp
dHkgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0uY3BwCmluZGV4IDFkYjc1OTQuLmE3YzNiNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVt
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0yMDIsMTEgKzIwMiwxMyBAQCB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2ln
bmVkIHdoZWVsRXZlbnRIYW5kbGVyQwogICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCku
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh3aGVlbEV2ZW50SGFuZGxlckNvdW50ID4gMCk7CiB9
CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCBzaG91bGQpCisjaWYgRU5BQkxFKFRIUkVBREVEX1ND
Uk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29ucykKIHsKICAgICBpZiAobV9wcml2
YXRlLT5oYXNTY3JvbGxMYXllcigpKQotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCku
c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZCk7CisgICAgICAgIG1fcHJpdmF0ZS0+
c2Nyb2xsTGF5ZXIoKS5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQocmVhc29ucyk7CiB9Cisj
ZW5kaWYKIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBvc2l0aW9u
TGF5ZXJzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KaW5kZXggNGE2NDAxYy4uMTAxYmJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVN
YWMubW0KQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjp1cGRhdGVEZWJ1Z1Jv
b3RMYXllcigpCiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gYmFja2dyb3VuZENvbG9yOwog
Ci0gICAgaWYgKG1fcm9vdE5vZGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQoKSkKKyAgICBpZiAobV9yb290Tm9kZS0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBh
ZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIC43KSk7CiAKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZU5vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZU5vZGVNYWMubW0KaW5kZXggMzhkZDllNS4uYzJkOTliMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5t
bQpAQCAtMzcsOSArMzcsMTIgQEAKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgdm9pZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUo
dW5zaWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCk7CisKIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOb2RlOjpj
cmVhdGUoU2Nyb2xsaW5nVHJlZSogc2Nyb2xsaW5nVHJlZSkKIHsKICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFNjcm9sbGluZ1RyZWVOb2RlTWFjKHNjcm9sbGluZ1RyZWUpKTsKQEAgLTcwLDE1ICs3
MywyMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjp1cGRhdGUoU2Nyb2xsaW5nVHJlZVN0
YXRlKiBzdGF0ZSkKICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiAoU2Nyb2xs
aW5nVHJlZVN0YXRlOjpTY3JvbGxMYXllciB8IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Q29udGVudHNT
aXplIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpWaWV3cG9ydFJlY3QpKQogICAgICAgICB1cGRhdGVN
YWluRnJhbWVQaW5TdGF0ZShzY3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGlmICgoc3RhdGUtPmNo
YW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpICYmIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQoKSkgewotICAgICAgICAvLyBXZSdyZSB0cmFuc2l0aW9uaW5nIHRv
IHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRoZSBtYWluIHRocmVh
ZCIgbW9kZS4KLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFpbiB0aHJlYWQg
c2Nyb2xsIHBvc2l0aW9uIHdpdGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBvc2l0aW9uLgot
ICAgICAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3Rh
dGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKQotICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5U
aHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9
IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0gICAgICAgICAgICBtX3Byb2JhYmxlTWFp
blRocmVhZFNjcm9sbFBvc2l0aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwg
LXNjcm9sbExheWVyUG9zaXRpb24ueSk7CisgICAgaWYgKChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRp
ZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZFJlYXNvbikpIHsKKyAgICAgICAgdW5zaWduZWQgcmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IHRoaXMtPnNob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKKworICAgICAgICBpZiAocmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgeworICAgICAg
ICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBs
YXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUuCisgICAgICAgICAgICAvLyBJ
bml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRpb24gd2l0aCB0
aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCisgICAgICAgICAgICBpZiAoc3RhdGUt
PmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9z
aXRpb24gPSBzdGF0ZS0+cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Ny
b2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5U
aHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1z
Y3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCkpCisgICAgICAgICAgICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUocmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CiAgICAgfQogfQogCkBAIC0yMjUs
NyArMjM1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c3RvcFNuYXBSdWJiZXJiYW5k
VGltZXIoKQogCiBJbnRQb2ludCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24o
KSBjb25zdAogewotICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKCkpCisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWRSZWFzb24oKSkKICAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xs
UG9zaXRpb247CiAKICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExh
eWVyLmdldCgpLnBvc2l0aW9uOwpAQCAtMjQ4LDcgKzI1OCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QKIHsKICAgICB1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShzY3JvbGxQb3NpdGlvbik7CiAK
LSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKSB7
CisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24oKSkgewogICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Ny
b2xsUG9zaXRpb247CiAgICAgICAgIHNjcm9sbGluZ1RyZWUoKS0+dXBkYXRlTWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb25BbmRTY3JvbGxMYXllclBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjYwLDcgKzI3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6
OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QKIAog
dm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgQVNTRVJUKCFzaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKTsKICAgICBtX3Njcm9sbExheWVyLmdl
dCgpLnBvc2l0aW9uID0gQ0dQb2ludE1ha2UoLXBvc2l0aW9uLngoKSArIHNjcm9sbE9yaWdpbigp
LngoKSwgLXBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSk7CiB9CiAKQEAgLTMzMCw2
ICszNDAsMzAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVk
QXJlYSgpCiAgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEu
IFRpbWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIsIFdURjo6bW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCksIHVuZmlsbGVkQXJlYSk7CiB9CiAKK3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVk
U2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKQoreworICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAgIFN0cmluZyByZWFzb25zRGVzY3JpcHRp
b247CisKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OkZvcmNlZE9uTWFpblRocmVhZCkKKyAg
ICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAiZm9yY2VkLCI7CisgICAgICAgIGlmIChy
ZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xs
aW5nVHJlZVN0YXRlOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25z
RGVzY3JpcHRpb24gKz0gInNsb3ctcmVwYWludCBvYmplY3RzLCI7CisgICAgICAgIGlmIChyZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpIYXNGaXhlZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQor
ICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uICs9ICJmaXhlZCBvYmplY3RzLCI7CisgICAg
ICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
ICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKKyAgICAgICAg
ICAgIHJlYXNvbnNEZXNjcmlwdGlvbiArPSAibm9uLWxheWVyIGZpeGVkIG9iamVjdHMsIjsKKyAg
ICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAgICAgICAgIHJl
YXNvbnNEZXNjcmlwdGlvbiArPSAiaW1hZ2UgZG9jdW1lbnQsIjsKKworICAgICAgICAvLyBTdHJp
cCB0aGUgdHJhaWxpbmcgY29tbWEuCisgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbiA9IHJlYXNv
bnNEZXNjcmlwdGlvbi5sZWZ0KHJlYXNvbnNEZXNjcmlwdGlvbi5sZW5ndGgoKSAtIDEpOworCisg
ICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xs
aW5nIG1vZGUuIFRpbWU6ICVmIFJlYXNvbihzKTogJXNcbiIsIFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCksIHJlYXNvbnNEZXNjcmlwdGlvbi5hc2NpaSgpLmRhdGEoKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHByaW50ZigiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQg
c2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmXG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFRIUkVBREVEX1NDUk9MTElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162272</attachid>
            <date>2012-09-05 09:53:57 -0700</date>
            <delta_ts>2012-09-06 15:16:24 -0700</delta_ts>
            <desc>update log state regardless of tile border pref (!), fix a typo</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>31806</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZjhjNjI4Li5hNjBlNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTItMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogZml4ZWQgb2JqZWN0cworICAgICAg
ICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5nIG1vZGUuIFRp
bWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFp
bi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIxNCBSZWFzb24ocyk6IGZp
eGVkIG9iamVjdHMKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElO
RzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41
NTM1ODcgUmVhc29uKHMpOiBmaXhlZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3
aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IEV4cG9zZSBTY3JvbGxpbmdUcmVlU3RhdGUuaCBhcyBhIHByaXZhdGUgaGVhZGVyLgorCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2Jq
ZWN0c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29u
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAg
ICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGluZ1RyZWVOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjp1cGRhdGUpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlTm9kZTo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZFJlYXNvbik6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU6OnNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgorICAgICAgICBSZW5hbWUg
dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB0byB1cGRh
dGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uIChhbmQg
cmVsYXRlZCkuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAg
IENvbnN0cnVjdCBhIGJpdGZpZWxkIGRlc2NyaWJpbmcgdGhlIHJlYXNvbnMgd2UgZmFsbCBpbnRv
IG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVN0YXRlLmg6CisgICAgICAgIChTY3JvbGxpbmdUcmVlU3RhdGUpOgorICAg
ICAgICBBZGQgUmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCBlbnVtLCB3aXRoIHRoZSBjdXJyZW50IHJlYXNvbnMgdGhhdCB3ZSBtaWdodCBmYWxsYmFjayB0
byBtYWluLXRocmVhZCBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU5vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjp1cGRhdGUpOiBMb2cgZXZlcnkgdGltZSBzY3Jv
bGxpbmcgbW9kZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVN
YWM6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2Rl
TWFjOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSk6IFByZXR0
eS1wcmludCB0aGUgc2Nyb2xsaW5nIG1vZGUgYW5kIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24uCisKIDIwMTItMDgtMzAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIG1vcmUgaW5zdGFuY2VzIG9mICs9IHdp
dGggU3RyaW5nQnVpbGRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhhNDI0M2YuLjU2ZDhmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwNyw3ICs1MDcs
NyBAQAogCQkxQUFBRERBMzE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERBMTE0REI0
MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi87IH07CiAJCTFBQUFEREE0MTREQjQw
OUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERBMjE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5n
VHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFBQUFEREJFMTREQzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQkMxNERDNjQw
NjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5jcHAgKi87IH07Ci0JCTFBQUFEREJGMTRE
QzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREJEMTREQzY0MDYwMEFGNjRCMyAvKiBT
Y3JvbGxpbmdUcmVlU3RhdGUuaCAqLzsgfTsKKwkJMUFBQUREQkYxNERDNjQwNzAwQUY2NEIzIC8q
IFNjcm9sbGluZ1RyZWVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBQUREQkQxNERDNjQwNjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
QUFERERBMTREQzc0RUMwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGVNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBREREODE0REM3NEVD
MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlTWFjLm1tICovOyB9OwogCQkxQUFBRERFMzE0
REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQURERTExNERDOEM4RjAwQUY2NEIzIC8q
IFNjcm9sbGluZ1RyZWVOb2RlLmNwcCAqLzsgfTsKIAkJMUFBQURERTQxNERDOEM4RjAwQUY2NEIz
IC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUFBRERFMjE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5v
ZGUuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA0MGZlZWQ3Li4yYzJmZWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCi0jaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTQ2LDYgKzQ1LDcgQEAKICNpZiBFTkFCTEUoVEhS
RUFERURfU0NST0xMSU5HKQogI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RhdGUuaCIKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjZW5k
aWYKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcgogICAgIGlmICgh
Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWRSZWFzb24oKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQpAQCAtMTk4LDcgKzE5
OCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZpeGVkT2JqZWN0c0Rp
ZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICBpZiAoIWNvb3JkaW5hdGVzU2Nyb2xs
aW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0
ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB1cGRh
dGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiB9
CiAKIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZp
ZXcqIGZyYW1lVmlldykKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAK
ICAgICBmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKGZyYW1lVmlldyk7CiAgICAgcmVjb21wdXRlV2hl
ZWxFdmVudEhhbmRsZXJDb3VudCgpOwotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiAgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xs
TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiB9CiAKQEAgLTM3NSwxNSArMzc1LDI2IEBA
IGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc05vbkxheWVyRml4ZWRPYmplY3RzKEZyYW1l
VmlldyogZnJhbWVWaWV3KQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKQordm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZFJlYXNvbigpCiB7CisjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElO
RykKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KTsKIAotICAgIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
bV9mb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcwotICAgICAgICB8fCBm
cmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpCi0gICAgICAgIHx8ICghc3VwcG9ydHNG
aXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNGaXhlZE9iamVjdHMoKSkKLSAg
ICAgICAgfHwgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc05vbkxheWVyRml4
ZWRPYmplY3RzKGZyYW1lVmlldykpCi0gICAgICAgIHx8IG1fcGFnZS0+bWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPmlzSW1hZ2VEb2N1bWVudCgpKTsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTA7CisKKyAgICBpZiAobV9mb3JjZU1haW5UaHJlYWRT
Y3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcykKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6OkZvcmNl
ZE9uTWFpblRocmVhZDsKKyAgICBpZiAoZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVjdHMo
KSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCB8PSBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc1Nsb3dSZXBhaW50T2JqZWN0czsKKyAgICBp
ZiAoIXN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGZyYW1lVmlldy0+aGFzRml4ZWRP
YmplY3RzKCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNGaXhlZE9iamVjdHNXaXRob3V0
U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzOworICAgIGlmIChzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXll
cnMoKSAmJiBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQorICAgICAgICByZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHM7CisgICAgaWYgKG1fcGFnZS0+bWFp
bkZyYW1lKCktPmRvY3VtZW50KCktPmlzSW1hZ2VEb2N1bWVudCgpKQorICAgICAgICByZWFzb25z
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6SXNJbWFnZURvY3VtZW50OworCisgICAgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKTsKKyNlbmRpZgogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRGb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyhib29s
IGZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKQpAQCAtMzkyLDcgKzQw
Myw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9s
bExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
Zm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgPSBmb3JjZU1haW5UaHJl
YWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlczsKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOwogfQogCiAjaWYgRU5BQkxFKFRI
UkVBREVEX1NDUk9MTElORykKQEAgLTQzMCwxNiArNDQxLDE4IEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhh
bmRsZXJDCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCisj
aWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVh
c29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29u
cykKIHsKICAgICAvLyBUaGUgRnJhbWVWaWV3J3MgR3JhcGhpY3NMYXllciBpcyBsaWtlbHkgdG8g
YmUgb3V0LW9mLXN5bmNoIHdpdGggdGhlIFBsYXRmb3JtTGF5ZXIKICAgICAvLyBhdCB0aGlzIHBv
aW50LiBTbyB3ZSdsbCB1cGRhdGUgaXQgYmVmb3JlIHdlIHN3aXRjaCBiYWNrIHRvIG1haW4gdGhy
ZWFkIHNjcm9sbGluZwogICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGxheWVyIHBvc2l0aW9uaW5n
IGJ1Z3MuCi0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQpCisgICAgaWYgKHJlYXNvbnMpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVy
UG9zaXRpb24oKTsKLSAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+c2V0U2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKTsKKyAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+c2V0U2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihyZWFzb25zKTsKICAgICBz
Y2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQorI2VuZGlmCiAKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDVkNDVl
YjYuLjdmZWRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKICNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNlbmRpZgpAQCAtMTI4LDcgKzEyOSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKTsK
ICAgICBib29sIGhhc05vbkxheWVyRml4ZWRPYmplY3RzKEZyYW1lVmlldyopOwotICAgIHZvaWQg
dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAg
IHZvaWQgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJl
YXNvbigpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihHcmFwaGljc0xheWVyKik7CiAgICAg
dm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKQEAgLTE1MSw3
ICsxNTIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTY3JvbGxQYXJhbWV0ZXJzKGNvbnN0
IFNjcm9sbFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQo
dW5zaWduZWQpOwotICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZChib29sKTsKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQorICAgIHZv
aWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihS
ZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyk7Cisj
ZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlvbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JOb25lLmNwcAppbmRleCBmMGFjZmUwLi4wNDZlMGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Tm9uZS5jcHAKQEAgLTY3LDkgKzY3LDExIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoYm9vbCkKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRG
bGFncykKIHsKIH0KKyNlbmRpZgogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0
c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCBiYTZhNTJhLi42OTBlYzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAt
MjI0LDcgKzIyNCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCiAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkID0gZmxhZzsKIH0KIAotYm9vbCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQ
ZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKQorYm9vbCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkKIHsKICAgICByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDQxMjBlOWUuLjQwNzA1YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTk4LDcgKzk4LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQoYm9vbCBmbGFnKTsKLSAgICBib29sIHNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCgpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVOb2RlLmNwcAppbmRleCAyODQwMmNlLi4xNTBiYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGlu
Z1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1RyZWUpCiAgICAgOiBtX3Njcm9sbGlu
Z1RyZWUoc2Nyb2xsaW5nVHJlZSkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigwKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1fdmVydGljYWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKQogICAgICwgbV9oYXNFbmFibGVkSG9yaXpvbnRh
bFNjcm9sbGJhcihmYWxzZSkKQEAgLTU2LDggKzU2LDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9k
ZTo6dXBkYXRlKFNjcm9sbGluZ1RyZWVTdGF0ZSogc3RhdGUpCiAgICAgaWYgKHN0YXRlLT5jaGFu
Z2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpDb250ZW50c1NpemUpCiAgICAg
ICAgIG1fY29udGVudHNTaXplID0gc3RhdGUtPmNvbnRlbnRzU2l6ZSgpOwogCi0gICAgaWYgKHN0
YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQotICAgICAgICBtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPSBzdGF0ZS0+c2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFBy
b3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbikKKyAgICAgICAgbV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID0gc3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIAogICAgIGlmIChzdGF0ZS0+Y2hh
bmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6SG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkpCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzdGF0ZS0+
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCmluZGV4IGY2OWFlOWYuLjNjYWQ1MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUu
aApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlNj
cm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYpID0gMDsKIAotICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsgfQorICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb247IH0KIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqKTsKQEAgLTc0LDcgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fY29udGVudHNTaXplOwogICAgIEludFBvaW50
IG1fc2Nyb2xsT3JpZ2luOwogCi0gICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX2hvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVN0YXRlLmNwcAppbmRleCA1ZWI1M2FiLi4yMzM0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU3RhdGU+IFNjcm9sbGluZ1RyZWVTdGF0
ZTo6Y3JlYXRlKCkKIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0YXRlKCkKICAg
ICA6IG1fY2hhbmdlZFByb3BlcnRpZXMoMCkKICAgICAsIG1fd2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCgwKQotICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KGZhbHNlKQorICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uKDApCiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVs
YXN0aWNpdHlOb25lKQogICAgICwgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxh
c3RpY2l0eU5vbmUpCiAgICAgLCBtX2hhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNl
KQpAQCAtODgsMTMgKzg4LDEzIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRXaGVlbEV2
ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291CiAgICAgbV9jaGFu
Z2VkUHJvcGVydGllcyB8PSBXaGVlbEV2ZW50SGFuZGxlckNvdW50OwogfQogCi12b2lkIFNjcm9s
bGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCit2
b2lkIFNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWRGbGFncyByZWFzb25zKQogewotICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPT0gc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCkKKyAgICBpZiAoKGJvb2wpbV9zaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID09IChib29sKXJlYXNvbnMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCA9IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7Ci0gICAgbV9j
aGFuZ2VkUHJvcGVydGllcyB8PSBTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkOworICAgIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbiA9IHJlYXNvbnM7CisgICAgbV9jaGFuZ2VkUHJvcGVydGllcyB8PSBTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOwogfQogCiB2b2lkIFNjcm9s
bGluZ1RyZWVTdGF0ZTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3Rp
Y2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmgKaW5kZXggM2I0YThkNi4uYTkyNWY2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmgKQEAgLTQwLDYgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0eXBl
ZGVmIHVuc2lnbmVkIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZEZsYWdzOworCiAvLyBUaGUgU2Nyb2xsaW5nVHJlZVN0YXRlIG9iamVjdCBrZWVwcyB0cmFj
ayBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBzY3JvbGxpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzLgog
Ly8gV2hlbmV2ZXIgYW55IHByb3BlcnRpZXMgY2hhbmdlLCB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5h
dG9yIHdpbGwgYmUgaW5mb3JtZWQgYW5kIHdpbGwgdXBkYXRlIHRoZSBzdGF0ZQogLy8gYW5kIHNj
aGVkdWxlIGEgdGltZXIgdGhhdCB3aWxsIGNsb25lIHRoZSBuZXcgc3RhdGUgYW5kIHNlbmQgaXQg
b3ZlciB0byB0aGUgc2Nyb2xsaW5nIHRocmVhZCwgYXZvaWRpbmcgbG9ja2luZy4KQEAgLTU0LDcg
KzU2LDcgQEAgcHVibGljOgogICAgICAgICBDb250ZW50c1NpemUgPSAxIDw8IDEsCiAgICAgICAg
IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gMSA8PCAyLAogICAgICAgICBXaGVlbEV2ZW50SGFu
ZGxlckNvdW50ID0gMSA8PCAzLAotICAgICAgICBTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkID0gMSA8PCA0LAorICAgICAgICBTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID0gMSA8PCA0LAogICAgICAgICBIb3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSA9IDEgPDwgNSwKICAgICAgICAgVmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5ID0gMSA8PCA2LAogICAgICAgICBIYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhciA9IDEg
PDwgNywKQEAgLTY2LDYgKzY4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24gPSAxIDw8IDEzLAogICAgIH07CiAKKyAgICBlbnVtIFJlYXNvbkZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB7CisgICAgICAgIEZvcmNlZE9uTWFpblRo
cmVhZCA9IDEgPDwgMCwKKyAgICAgICAgSGFzU2xvd1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAor
ICAgICAgICBIYXNGaXhlZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzID0gMSA8
PCAyLAorICAgICAgICBIYXNOb25MYXllckZpeGVkT2JqZWN0cyA9IDEgPDwgMywKKyAgICAgICAg
SXNJbWFnZURvY3VtZW50ID0gMSA8PCA0CisgICAgfTsKKwogICAgIGJvb2wgaGFzQ2hhbmdlZFBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRQcm9wZXJ0aWVzOyB9CiAgICAgdW5z
aWduZWQgY2hhbmdlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRQcm9wZXJ0
aWVzOyB9CiAKQEAgLTgxLDggKzkxLDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdoZWVsRXZl
bnRIYW5kbGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7
IH0KICAgICB2b2lkIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpOwogCi0gICAg
Ym9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9
Ci0gICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KGJvb2wpOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZEZsYWdzIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb247IH0KKyAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkRmxhZ3MpOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHk7IH0KICAgICB2b2lkIHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVs
YXN0aWNpdHkpOwpAQCAtMTI2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBt
X3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiAKLSAgICBib29sIG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb247CiAKICAgICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpv
bnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5j
cHAKaW5kZXggZjMzMmY1MC4uODc0OWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bS5jcHAKQEAgLTIyMSwxMyArMjIxLDE1IEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhh
bmRsZXJDCiAgICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0SGF2ZVdoZWVsRXZl
bnRIYW5kbGVycyh3aGVlbEV2ZW50SGFuZGxlckNvdW50ID4gMCk7CiB9CiAKLXZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoYm9vbCBzaG91bGQpCisjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKK3ZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkRmxhZ3MgcmVhc29ucykKIHsKICAgICAvLyBXZSB3b24ndCBuZWNlc3NhcmlseSBn
ZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFiIHRoZSBy
b290IG91cnNlbHZlcy4KICAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmll
dyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBpZiAobV9wcml2YXRlLT5zY3Jv
bGxMYXllcigpKQotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldFNob3VsZFNj
cm9sbE9uTWFpblRocmVhZChzaG91bGQpOworICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVy
KCktPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChyZWFzb25zKTsKIH0KKyNlbmRpZgogCiBi
b29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU1hYy5tbQppbmRleCA0YTY0MDFjLi4xMDFiYmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnVwZGF0ZURlYnVnUm9vdExheWVyKCkK
IAogICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBpZiAo
bV9yb290Tm9kZS0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgp
KQorICAgIGlmIChtX3Jvb3ROb2RlLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgLjcpKTsKIAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1h
Yy5tbQppbmRleCAzOGRkOWU1Li5iMzhjZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCkBAIC0zNyw5
ICszNywxMiBAQAogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCBy
ZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKTsKKwogUGFz
c093blB0cjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU5vZGU6OmNyZWF0ZShTY3Jv
bGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Ny
b2xsaW5nVHJlZU5vZGVNYWMoc2Nyb2xsaW5nVHJlZSkpOwpAQCAtNzAsMTUgKzczLDIyIEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRl
KQogICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIChTY3JvbGxpbmdUcmVlU3Rh
dGU6OlNjcm9sbExheWVyIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpDb250ZW50c1NpemUgfCBTY3Jv
bGxpbmdUcmVlU3RhdGU6OlZpZXdwb3J0UmVjdCkpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVBp
blN0YXRlKHNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaWYgKChzdGF0ZS0+Y2hhbmdlZFByb3Bl
cnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCkgJiYgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCgpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cg
InVwZGF0ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgot
ICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9z
aXRpb24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCi0gICAgICAgIGlm
IChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24pCi0gICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9s
bFBvc2l0aW9uID0gc3RhdGUtPnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxM
YXllci5nZXQoKS5wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Ny
b2xsUG9zaXRpb24gPSBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5
ZXJQb3NpdGlvbi55KTsKKyAgICBpZiAoKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Ny
b2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uKSkgeworICAgICAgICB1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gdGhpcy0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOworCisgICAgICAgIGlmIChyZWFzb25zRm9yVXBk
YXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAgICAgICAvLyBX
ZSdyZSB0cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0
aW9uIG9uIHRoZSBtYWluIHRocmVhZCIgbW9kZS4KKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUg
dGhlIHByb2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50
IHNjcm9sbCBsYXllciBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFBy
b3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0
YXRlLT5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5n
ZXQoKS5wb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9s
bFBvc2l0aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVy
UG9zaXRpb24ueSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2Ny
b2xsaW5nVHJlZSgpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCisgICAg
ICAgICAgICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CiAgICAgfQogfQogCkBAIC0yMjUsNyArMjM1LDcg
QEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIoKQog
CiBJbnRQb2ludCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAog
ewotICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkp
CisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24oKSkKICAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247
CiAKICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgp
LnBvc2l0aW9uOwpAQCAtMjQwLDcgKzI1MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6
OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIAogICAg
IHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMobmV3U2Nyb2xs
UG9zaXRpb24pOwogCi0gICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQogICAgICAgICBsb2dFeHBvc2VkVW5maWxsZWRBcmVh
KCk7CiB9CiAKQEAgLTI0OCw3ICsyNTgsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjpz
ZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0CiB7CiAg
ICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24pOwogCi0gICAgaWYgKHNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgeworICAgIGlmIChz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCkpIHsKICAg
ICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9u
OwogICAgICAgICBzY3JvbGxpbmdUcmVlKCktPnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9u
QW5kU2Nyb2xsTGF5ZXJQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAgICAgICAgIHJldHVybjsK
QEAgLTI2MCw3ICsyNzAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQ
b3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0CiAKIHZvaWQgU2Nyb2xs
aW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBv
c2l0aW9uKQogewotICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKSk7CiAgICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlv
biA9IENHUG9pbnRNYWtlKC1wb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1wb3Np
dGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOwogfQogCkBAIC0zMzAsNiArMzQwLDMwIEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OmxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKQogICAg
ICAgICBwcmludGYoIlNDUk9MTElORzogRXhwb3NlZCB0aWxlbGVzcyBhcmVhLiBUaW1lOiAlZiBV
bmZpbGxlZCBQaXhlbHM6ICV1XG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
LCB1bmZpbGxlZEFyZWEpOwogfQogCitzdGF0aWMgdm9pZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01v
ZGUodW5zaWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCkKK3sKKyAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCkgeworICAgICAgICBTdHJpbmcgcmVhc29uc0Rlc2NyaXB0aW9uOworCisgICAg
ICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
ICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgICAgICBy
ZWFzb25zRGVzY3JpcHRpb24gKz0gImZvcmNlZCwiOworICAgICAgICBpZiAocmVhc29uc0ZvclVw
ZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0
ZTo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9u
ICs9ICJzbG93LXJlcGFpbnQgb2JqZWN0cywiOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6
SGFzRml4ZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKKyAgICAgICAgICAg
IHJlYXNvbnNEZXNjcmlwdGlvbiArPSAiZml4ZWQgb2JqZWN0cywiOworICAgICAgICBpZiAocmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25z
RGVzY3JpcHRpb24gKz0gIm5vbi1sYXllciBmaXhlZCBvYmplY3RzLCI7CisgICAgICAgIGlmIChy
ZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xs
aW5nVHJlZVN0YXRlOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgICAgICByZWFzb25zRGVzY3Jp
cHRpb24gKz0gImltYWdlIGRvY3VtZW50LCI7CisKKyAgICAgICAgLy8gU3RyaXAgdGhlIHRyYWls
aW5nIGNvbW1hLgorICAgICAgICByZWFzb25zRGVzY3JpcHRpb24gPSByZWFzb25zRGVzY3JpcHRp
b24ubGVmdChyZWFzb25zRGVzY3JpcHRpb24ubGVuZ3RoKCkgLSAxKTsKKworICAgICAgICBwcmlu
dGYoIlNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBU
aW1lOiAlZiBSZWFzb24ocyk6ICVzXG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpLCByZWFzb25zRGVzY3JpcHRpb24uYXNjaWkoKS5kYXRhKCkpOworICAgIH0gZWxzZQorICAg
ICAgICBwcmludGYoIlNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBt
b2RlLiBUaW1lOiAlZlxuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmUyMzY1NC4uNjEwZmNiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTA5LTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBvcHRpb25hbCBkZWJ1ZyBsb2dnaW5nIHdoZW4gd2UgZmFs
bCBpbnRvL291dCBvZiB0aHJlYWRlZCBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjA4OTA5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgdGhlIHNjcm9sbGluZyB0cmVlJ3Mgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCBwcmVmZXJlbmNlCisgICAgICAgIGJlZm9yZSB0aGUgZWFybHktcmV0dXJuIGlmIHdl
IGRvbid0IGhhdmUgbGF5ZXIgZGVidWdnaW5nIGJvcmRlcnMgb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVy
ZW5jZXMpOgorCiAyMDEyLTA4LTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgfkpTTlBPYmplY3Qgc2hvdWxkIGNhbGwgaW52YWxpZGF0ZSgpIGlm
IGl0IGhhc24ndCBiZWVuIGNhbGxlZCBhbHJlYWR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQppbmRleCA2NTY2MGIzLi42YzAwMzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTIwOCw2ICsyMDgsOSBAQCB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShj
b25zdCBJbnRSZWN0JiByZQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1
cGRhdGVQcmVmZXJlbmNlcygpCiB7CisgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkID0gbV93ZWJQYWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCk7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdl
KCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCkpOworCiAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzID0g
bV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCk7CiAK
ICAgICBpZiAoc2hvd0RlYnVnQm9yZGVycyA9PSAhIW1fZGVidWdJbmZvTGF5ZXIpCkBAIC0yMjEs
MTAgKzIyNCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVBy
ZWZlcmVuY2VzKCkKICAgICAgICAgbV9kZWJ1Z0luZm9MYXllciA9IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93ZWJQYWdl
LT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7Ci0KICAgICBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNldERlYnVnUm9vdExheWVyLCBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1Ry
ZWUoKSwgbV9kZWJ1Z0luZm9MYXllcikpOwotICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2go
YmluZCgmU2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZCwgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zY3JvbGxp
bmdUcmVlKCksIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpKTsKIH0KIAogdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBk
YXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvblJlZikK
</data>
<flag name="review"
          id="173331"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162601</attachid>
            <date>2012-09-06 15:16:24 -0700</date>
            <delta_ts>2012-09-06 15:27:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>31982</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZGU3MDQ2Li5kNjZjOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTItMDktMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogdmlld3BvcnQtY29uc3RyYWluZWQg
b2JqZWN0cworICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Ny
b2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBT
d2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIx
NCBSZWFzb24ocyk6IHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMKKyAgICAgICAgICAgIFND
Uk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0
Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41NTM1ODcgUmVhc29uKHMpOiB2aWV3cG9ydC1j
b25zdHJhaW5lZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byB0
aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEV4cG9zZSBTY3Jv
bGxpbmdUcmVlU3RhdGUuaCBhcyBhIHByaXZhdGUgaGVhZGVyLgorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25V
cGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjp1cGRhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZTo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNv
bik6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU6OnNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgorICAgICAgICBSZW5hbWUgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB0byB1cGRhdGVTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uIChhbmQgcmVsYXRlZCkuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAgIENvbnN0cnVjdCBh
IGJpdGZpZWxkIGRlc2NyaWJpbmcgdGhlIHJlYXNvbnMgd2UgZmFsbCBpbnRvIG1haW4tdGhyZWFk
IHNjcm9sbGluZyBtb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmg6CisgICAgICAgIChTY3JvbGxpbmdUcmVlU3RhdGUpOgorICAgICAgICBBZGQgUmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCBlbnVtLCB3aXRo
IHRoZSBjdXJyZW50IHJlYXNvbnMgdGhhdCB3ZSBtaWdodCBmYWxsYmFjayB0byBtYWluLXRocmVh
ZCBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZU5vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVOb2RlTWFjOjp1cGRhdGUpOiBMb2cgZXZlcnkgdGltZSBzY3JvbGxpbmcgbW9kZSBj
aGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNjcm9sbFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3Jv
bGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSk6IFByZXR0eS1wcmludCB0aGUg
c2Nyb2xsaW5nIG1vZGUgYW5kIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWRSZWFzb24uCisKIDIwMTItMDktMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCBzaG91bGRuJ3QgZGVw
ZW5kIG9uIENDUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA1M2VjMzQ4Li4wZThkZmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDksNyArNTA5LDcg
QEAKIAkJMUFBQUREQTMxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQTExNERCNDA5
RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuY3BwICovOyB9OwogCQkxQUFBRERBNDE0REI0MDlG
MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQTIxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1Ry
ZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QUFBRERCRTE0REM2NDA3MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREJDMTREQzY0MDYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuY3BwICovOyB9OwotCQkxQUFBRERCRjE0REM2
NDA3MDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERCRDE0REM2NDA2MDBBRjY0QjMgLyogU2Ny
b2xsaW5nVHJlZVN0YXRlLmggKi87IH07CisJCTFBQUFEREJGMTREQzY0MDcwMEFGNjRCMyAvKiBT
Y3JvbGxpbmdUcmVlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQUFEREJEMTREQzY0MDYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUFB
REREQTE0REM3NEVDMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQURERDgxNERDNzRFQzAw
QUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZU1hYy5tbSAqLzsgfTsKIAkJMUFBQURERTMxNERD
OEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREUxMTREQzhDOEYwMEFGNjRCMyAvKiBT
Y3JvbGxpbmdUcmVlTm9kZS5jcHAgKi87IH07CiAJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAv
KiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBQURERTIxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2Rl
LmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggYjI3MzlmMi4uYzRiOTQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgotI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC00Niw2ICs0NSw3IEBACiAjaWYgRU5BQkxFKFRIUkVB
REVEX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2VuZGlm
CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnIKICAgICBpZiAoIWNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoKTsKKyAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0Zp
eGVkT2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKQEAgLTIwMyw3ICsyMDMs
NyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRD
aGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgaWYgKCFjb29yZGluYXRlc1Njcm9sbGlu
Z0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRl
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOwogfQog
CiBzdGF0aWMgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQogCiAg
ICAgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChmcmFtZVZpZXcpOwogICAgIHJlY29tcHV0ZVdoZWVs
RXZlbnRIYW5kbGVyQ291bnQoKTsKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOwogICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogfQogCkBAIC0zODAsMTUgKzM4MCwyNiBAQCBi
b29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNOb25MYXllckZpeGVkT2JqZWN0cyhGcmFtZVZp
ZXcqIGZyYW1lVmlldykKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkKK3ZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKQogeworI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcp
CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7
CiAKLSAgICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKG1f
Zm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMKLSAgICAgICAgfHwgZnJh
bWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVjdHMoKQotICAgICAgICB8fCAoIXN1cHBvcnRzRml4
ZWRQb3NpdGlvbkxheWVycygpICYmIGZyYW1lVmlldy0+aGFzRml4ZWRPYmplY3RzKCkpCi0gICAg
ICAgIHx8IChzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBoYXNOb25MYXllckZpeGVk
T2JqZWN0cyhmcmFtZVZpZXcpKQotICAgICAgICB8fCBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSk7CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IChSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRGbGFncykwOworCisgICAgaWYgKG1fZm9yY2VNYWluVGhyZWFkU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpCisgICAgICAgIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRlOjpGb3JjZWRP
bk1haW5UaHJlYWQ7CisgICAgaWYgKGZyYW1lVmlldy0+aGFzU2xvd1JlcGFpbnRPYmplY3RzKCkp
CisgICAgICAgIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQgfD0gU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNTbG93UmVwYWludE9iamVjdHM7CisgICAgaWYg
KCFzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc0ZpeGVkT2Jq
ZWN0cygpKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzRml4ZWRPYmplY3RzV2l0aG91dFN1
cHBvcnRpbmdGaXhlZExheWVyczsKKyAgICBpZiAoc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJz
KCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoZnJhbWVWaWV3KSkKKyAgICAgICAgcmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBTY3JvbGxpbmdU
cmVlU3RhdGU6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzOworICAgIGlmIChtX3BhZ2UtPm1haW5G
cmFtZSgpLT5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAgcmVhc29uc0Zv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBTY3JvbGxpbmdUcmVl
U3RhdGU6OklzSW1hZ2VEb2N1bWVudDsKKworICAgIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24ocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCk7CisjZW5kaWYKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMoYm9vbCBm
b3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcykKQEAgLTM5Nyw3ICs0MDgs
NyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZU1haW5UaHJlYWRTY3JvbGxM
YXllclBvc2l0aW9uVXBkYXRlcyhib29sIGZvcgogICAgICAgICByZXR1cm47CiAKICAgICBtX2Zv
cmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzID0gZm9yY2VNYWluVGhyZWFk
U2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXM7Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIH0KIAogI2lmIEVOQUJMRShUSFJF
QURFRF9TQ1JPTExJTkcpCkBAIC00MzUsMTYgKzQ0NiwxOCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5k
bGVyQwogICAgIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQorI2lm
IEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNv
bkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnMp
CiB7CiAgICAgLy8gVGhlIEZyYW1lVmlldydzIEdyYXBoaWNzTGF5ZXIgaXMgbGlrZWx5IHRvIGJl
IG91dC1vZi1zeW5jaCB3aXRoIHRoZSBQbGF0Zm9ybUxheWVyCiAgICAgLy8gYXQgdGhpcyBwb2lu
dC4gU28gd2UnbGwgdXBkYXRlIGl0IGJlZm9yZSB3ZSBzd2l0Y2ggYmFjayB0byBtYWluIHRocmVh
ZCBzY3JvbGxpbmcKICAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBsYXllciBwb3NpdGlvbmluZyBi
dWdzLgotICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KQorICAgIGlmIChyZWFzb25zKQogICAgICAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBv
c2l0aW9uKCk7Ci0gICAgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCk7CisgICAgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24ocmVhc29ucyk7CiAgICAgc2No
ZWR1bGVUcmVlU3RhdGVDb21taXQoKTsKIH0KKyNlbmRpZgogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCAyYWIzNGIy
Li4wMjQ2M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjZW5kaWYKQEAgLTEzMiw3ICsxMzMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAg
ICAgYm9vbCBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqKTsKLSAgICB2b2lkIHVw
ZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB2
b2lkIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24oKTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciopOwogICAgIHZv
aWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJik7CkBAIC0xNTUsNyAr
MTU2LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2Nyb2xsUGFyYW1ldGVycyhjb25zdCBT
Y3JvbGxQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVu
c2lnbmVkKTsKLSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQoYm9vbCk7CisjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKKyAgICB2b2lk
IHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVh
c29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MpOworI2Vu
ZGlmCiAKICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVyUG9zaXRpb24oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yTm9uZS5jcHAKaW5kZXggYjA5NTUyZC4uMjZjNmU1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5v
bmUuY3BwCkBAIC02Nyw5ICs2NywxMSBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRX
aGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkKQogewogfQogCi12b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KGJvb2wpCisjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRS
ZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxh
Z3MpCiB7CiB9CisjZW5kaWYKIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNG
aXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggYmE2YTUyYS4uNjkwZWM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTIy
NCw3ICsyMjQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCA9IGZsYWc7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nUGVm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaAppbmRleCA0MTIwZTllLi40MDcwNWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGJvb2wgZmxhZyk7Ci0gICAgYm9vbCBzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoKTsKKyAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHAKaW5kZXggMjg0MDJjZS4uMTUwYmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGluZ1RyZWVOb2RlOjpTY3JvbGxpbmdU
cmVlTm9kZShTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlKQogICAgIDogbV9zY3JvbGxpbmdU
cmVlKHNjcm9sbGluZ1RyZWUpCi0gICAgLCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24oMCkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1faGFzRW5hYmxlZEhvcml6b250YWxT
Y3JvbGxiYXIoZmFsc2UpCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6
OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRlKQogICAgIGlmIChzdGF0ZS0+Y2hhbmdl
ZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6Q29udGVudHNTaXplKQogICAgICAg
ICBtX2NvbnRlbnRzU2l6ZSA9IHN0YXRlLT5jb250ZW50c1NpemUoKTsKIAotICAgIGlmIChzdGF0
ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKLSAgICAgICAgbV9zaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gc3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICBpZiAoc3RhdGUtPmNoYW5nZWRQcm9w
ZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24pCisgICAgICAgIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9IHN0YXRlLT5zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiAKICAgICBpZiAoc3RhdGUtPmNoYW5n
ZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gc3RhdGUtPmhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaAppbmRleCBmNjlhZTlmLi4zY2FkNTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJTY3Jv
bGxUeXBlcy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmKSA9IDA7CiAKLSAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7IH0KKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOyB9CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdUcmVlKik7CkBAIC03NCw3ICs3NSw3
IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKICAgICBJbnRQb2ludCBt
X3Njcm9sbE9yaWdpbjsKIAotICAgIGJvb2wgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZEZsYWdzIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZFJlYXNvbjsKIAogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV9ob3Jpem9udGFsU2Nyb2xs
RWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5IG1fdmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTdGF0ZS5jcHAKaW5kZXggNWViNTNhYi4uMjMzNGI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVN0YXRlPiBTY3JvbGxpbmdUcmVlU3RhdGU6
OmNyZWF0ZSgpCiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNjcm9sbGluZ1RyZWVTdGF0ZSgpCiAgICAg
OiBtX2NoYW5nZWRQcm9wZXJ0aWVzKDApCiAgICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQo
MCkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChm
YWxzZSkKKyAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbigwKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFz
dGljaXR5Tm9uZSkKICAgICAsIG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0
aWNpdHlOb25lKQogICAgICwgbV9oYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhcihmYWxzZSkK
QEAgLTg4LDEzICs4OCwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0V2hlZWxFdmVu
dEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdQogICAgIG1fY2hhbmdl
ZFByb3BlcnRpZXMgfD0gV2hlZWxFdmVudEhhbmRsZXJDb3VudDsKIH0KIAotdm9pZCBTY3JvbGxp
bmdUcmVlU3RhdGU6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQordm9p
ZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkRmxhZ3MgcmVhc29ucykKIHsKLSAgICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkID09IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpCisgICAgaWYgKChib29sKW1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9PSAoYm9vbClyZWFzb25zKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQg
PSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOwotICAgIG1fY2hh
bmdlZFByb3BlcnRpZXMgfD0gU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZDsKKyAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRS
ZWFzb24gPSByZWFzb25zOworICAgIG1fY2hhbmdlZFByb3BlcnRpZXMgfD0gU2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsKIH0KIAogdm9pZCBTY3JvbGxp
bmdUcmVlU3RhdGU6OnNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNp
dHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oCmluZGV4IDNiNGE4ZDYuLmE5MjVmNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
dGF0ZS5oCkBAIC00MCw2ICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRl
ZiB1bnNpZ25lZCBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRGbGFnczsKKwogLy8gVGhlIFNjcm9sbGluZ1RyZWVTdGF0ZSBvYmplY3Qga2VlcHMgdHJhY2sg
b2YgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2Nyb2xsaW5nIHJlbGF0ZWQgcHJvcGVydGllcy4KIC8v
IFdoZW5ldmVyIGFueSBwcm9wZXJ0aWVzIGNoYW5nZSwgdGhlIHNjcm9sbGluZyBjb29yZGluYXRv
ciB3aWxsIGJlIGluZm9ybWVkIGFuZCB3aWxsIHVwZGF0ZSB0aGUgc3RhdGUKIC8vIGFuZCBzY2hl
ZHVsZSBhIHRpbWVyIHRoYXQgd2lsbCBjbG9uZSB0aGUgbmV3IHN0YXRlIGFuZCBzZW5kIGl0IG92
ZXIgdG8gdGhlIHNjcm9sbGluZyB0aHJlYWQsIGF2b2lkaW5nIGxvY2tpbmcuCkBAIC01NCw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudHNTaXplID0gMSA8PCAxLAogICAgICAgICBO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IDEgPDwgMiwKICAgICAgICAgV2hlZWxFdmVudEhhbmRs
ZXJDb3VudCA9IDEgPDwgMywKLSAgICAgICAgU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCA9IDEgPDwgNCwKKyAgICAgICAgU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbiA9IDEgPDwgNCwKICAgICAgICAgSG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkgPSAxIDw8IDUsCiAgICAgICAgIFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0
eSA9IDEgPDwgNiwKICAgICAgICAgSGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIgPSAxIDw8
IDcsCkBAIC02Niw2ICs2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uID0gMSA8PCAxMywKICAgICB9OwogCisgICAgZW51bSBSZWFzb25Gb3JVcGRhdGluZ1Nj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgeworICAgICAgICBGb3JjZWRPbk1haW5UaHJl
YWQgPSAxIDw8IDAsCisgICAgICAgIEhhc1Nsb3dSZXBhaW50T2JqZWN0cyA9IDEgPDwgMSwKKyAg
ICAgICAgSGFzRml4ZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycyA9IDEgPDwg
MiwKKyAgICAgICAgSGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMgPSAxIDw8IDMsCisgICAgICAgIElz
SW1hZ2VEb2N1bWVudCA9IDEgPDwgNAorICAgIH07CisKICAgICBib29sIGhhc0NoYW5nZWRQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGllczsgfQogICAgIHVuc2ln
bmVkIGNoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGll
czsgfQogCkBAIC04MSw4ICs5MSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB3aGVlbEV2ZW50
SGFuZGxlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2ZW50SGFuZGxlckNvdW50OyB9
CiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkKTsKIAotICAgIGJv
b2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsgfQot
ICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChi
b29sKTsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRGbGFncyBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29u
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkUmVhc29uOyB9CisgICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZEZsYWdzKTsKIAogICAgIFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5OyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFz
dGljaXR5KTsKQEAgLTEyNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV93
aGVlbEV2ZW50SGFuZGxlckNvdW50OwogCi0gICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX2hvcml6b250
YWxTY3JvbGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV92ZXJ0aWNhbFNjcm9s
bEVsYXN0aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
aHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3Bw
CmluZGV4IDJmNTViZWYuLjVkZThmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ2hyb21pdW0uY3BwCkBAIC0yMjEsMTMgKzIyMSwxNSBAQCB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5k
bGVyQwogICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldEhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQogCi12b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKGJvb2wgc2hvdWxkKQorI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCit2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZEZsYWdzIHJlYXNvbnMpCiB7CiAgICAgLy8gV2Ugd29uJ3QgbmVjZXNzYXJpbHkgZ2V0
IGEgc2V0U2Nyb2xsTGF5ZXIoKSBjYWxsIGJlZm9yZSB0aGlzIG9uZSwgc28gZ3JhYiB0aGUgcm9v
dCBvdXJzZWx2ZXMuCiAgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXco
bV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKSk7CiAgICAgaWYgKG1fcHJpdmF0ZS0+c2Nyb2xs
TGF5ZXIoKSkKLSAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5zZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKKyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigp
LT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQocmVhc29ucyk7CiB9CisjZW5kaWYKIAogYm9v
bCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVNYWMubW0KaW5kZXggNGE2NDAxYy4uMTAxYmJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KQEAgLTYy
LDcgKzYyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjp1cGRhdGVEZWJ1Z1Jvb3RMYXllcigpCiAK
ICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gYmFja2dyb3VuZENvbG9yOwogCi0gICAgaWYgKG1f
cm9vdE5vZGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkK
KyAgICBpZiAobV9yb290Tm9kZS0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZFJlYXNvbigpKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdENGKENHQ29s
b3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIC43KSk7CiAKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMu
bW0KaW5kZXggMzhkZDllNS4uOGFhNmM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQpAQCAtMzcsOSAr
MzcsMTMgQEAKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIHZvaWQg
bG9nVGhyZWFkZWRTY3JvbGxpbmdNb2RlKHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpOworCiBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVO
b2RlPiBTY3JvbGxpbmdUcmVlTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1Ry
ZWUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdUcmVlTm9kZU1hYyhzY3Jv
bGxpbmdUcmVlKSk7CkBAIC03MCwxNSArNzQsMjIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1h
Yzo6dXBkYXRlKFNjcm9sbGluZ1RyZWVTdGF0ZSogc3RhdGUpCiAgICAgaWYgKHN0YXRlLT5jaGFu
Z2VkUHJvcGVydGllcygpICYgKFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsTGF5ZXIgfCBTY3Jv
bGxpbmdUcmVlU3RhdGU6OkNvbnRlbnRzU2l6ZSB8IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Vmlld3Bv
cnRSZWN0KSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24o
KSk7CiAKLSAgICBpZiAoKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJl
ZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSAmJiBz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpIHsKLSAgICAgICAg
Ly8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBsYXllciBw
b3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUuCi0gICAgICAgIC8vIEluaXRpYWxpemUg
dGhlIHByb2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50
IHNjcm9sbCBsYXllciBwb3NpdGlvbi4KLSAgICAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVy
dGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikKLSAg
ICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS0+cmVx
dWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBDR1Bv
aW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwot
ICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50
KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgIGlm
ICgoc3RhdGUtPmNoYW5nZWRQcm9wZXJ0aWVzKCkgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OlNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pKSB7CisgICAgICAg
IHVuc2lnbmVkIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQgPSB0aGlzLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVh
c29uKCk7CisKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpIHsKKyAgICAgICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8g
dGhlIHNsb3cgInVwZGF0ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFk
IiBtb2RlLgorICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFpbiB0aHJl
YWQgc2Nyb2xsIHBvc2l0aW9uIHdpdGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBvc2l0aW9u
LgorICAgICAgICAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikKKyAgICAgICAgICAgICAgICBtX3By
b2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc3RhdGUtPnJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBDR1BvaW50IHNj
cm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOworICAgICAg
ICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBJbnRQb2ludCgt
c2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmIChzY3JvbGxpbmdUcmVlKCktPnNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGxvZ1RocmVhZGVkU2Ny
b2xsaW5nTW9kZShyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKTsKICAgICB9CiB9CiAKQEAgLTIyNSw3ICsyMzYsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlTWFjOjpzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpCiAKIEludFBvaW50IFNjcm9sbGluZ1Ry
ZWVOb2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkKKyAgICBpZiAoc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpKQogICAgICAgICByZXR1cm4g
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKIAogICAgIENHUG9pbnQgc2Nyb2xs
TGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CkBAIC0yNDAsNyAr
MjUxLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogCiAgICAgc2V0U2Nyb2xsUG9zaXRpb25XaXRo
b3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhuZXdTY3JvbGxQb3NpdGlvbik7CiAKLSAgICBpZiAo
c2Nyb2xsaW5nVHJlZSgpLT5zY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAg
ICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCkpCiAgICAgICAgIGxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKTsKIH0KIApAQCAtMjQ4LDcgKzI1
OSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91
dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QKIHsKICAgICB1cGRhdGVNYWluRnJhbWVQaW5T
dGF0ZShzY3JvbGxQb3NpdGlvbik7CiAKLSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpKSB7CisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSkgewogICAgICAgICBtX3Byb2JhYmxlTWFpblRo
cmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIHNjcm9sbGluZ1Ry
ZWUoKS0+dXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb25BbmRTY3JvbGxMYXllclBvc2l0aW9u
KHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjYwLDcgKzI3MSw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRF
ZGdlQ29uc3RyYWludHMoY29uc3QKIAogdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Ny
b2xsTGF5ZXJQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgQVNTRVJU
KCFzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigp
KTsKICAgICBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uID0gQ0dQb2ludE1ha2UoLXBvc2l0
aW9uLngoKSArIHNjcm9sbE9yaWdpbigpLngoKSwgLXBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdp
bigpLnkoKSk7CiB9CiAKQEAgLTMzMCw2ICszNDEsMzAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9k
ZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCiAgICAgICAgIHByaW50ZigiU0NST0xMSU5H
OiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6ICVmIFVuZmlsbGVkIFBpeGVsczogJXVcbiIs
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIHVuZmlsbGVkQXJlYSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25zRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQoreworICAgIGlmIChyZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAg
IFN0cmluZ0J1aWxkZXIgcmVhc29uc0Rlc2NyaXB0aW9uOworCisgICAgICAgIGlmIChyZWFzb25z
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJl
ZVN0YXRlOjpGb3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRp
b24uYXBwZW5kKCJmb3JjZWQsIik7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpIYXNTbG93
UmVwYWludE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJz
bG93LXJlcGFpbnQgb2JqZWN0cywiKTsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Nj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6Okhhc0Zp
eGVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAgICAgICByZWFz
b25zRGVzY3JpcHRpb24uYXBwZW5kKCJ2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOwor
ICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAg
ICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJub24tbGF5ZXIgdmlld3BvcnQtY29u
c3RyYWluZWQgb2JqZWN0cywiKTsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdUcmVlU3RhdGU6OklzSW1hZ2VE
b2N1bWVudCkKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoImltYWdlIGRv
Y3VtZW50LCIpOworCisgICAgICAgIC8vIFN0cmlwIHRoZSB0cmFpbGluZyBjb21tYS4KKyAgICAg
ICAgU3RyaW5nIHJlYXNvbnNEZXNjcmlwdGlvblRyaW1tZWQgPSByZWFzb25zRGVzY3JpcHRpb24u
dG9TdHJpbmcoKS5sZWZ0KHJlYXNvbnNEZXNjcmlwdGlvbi5sZW5ndGgoKSAtIDEpOworCisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nIG1vZGUuIFRpbWU6ICVmIFJlYXNvbihzKTogJXNcbiIsIFdURjo6bW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCksIHJlYXNvbnNEZXNjcmlwdGlvblRyaW1tZWQuYXNjaWkoKS5kYXRh
KCkpOworICAgIH0gZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzogU3dpdGNo
aW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAlZlxuIiwgV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGI5ODc3
OC4uNzI1ZTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBvcHRpb25h
bCBkZWJ1ZyBsb2dnaW5nIHdoZW4gd2UgZmFsbCBpbnRvL291dCBvZiB0aHJlYWRlZCBzY3JvbGxp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODk4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjA4OTA5OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHNjcm9sbGluZyB0cmVlJ3Mg
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCBwcmVmZXJlbmNlCisgICAgICAgIGJl
Zm9yZSB0aGUgZWFybHktcmV0dXJuIGlmIHdlIGRvbid0IGhhdmUgbGF5ZXIgZGVidWdnaW5nIGJv
cmRlcnMgb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAyMDEyLTA5LTA1ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEFubm90YXRlIG11
bHRpLXByb2Nlc3MgRklYTUVzIHdpdGggYnVnIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDY1NjYwYjMuLjZjMDAzMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMjA4LDYgKzIwOCw5IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNw
bGF5KGNvbnN0IEludFJlY3QmIHJlCiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OnVwZGF0ZVByZWZlcmVuY2VzKCkKIHsKKyAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1Ry
ZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQsIG1fd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBzY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKSk7CisKICAgICBib29sIHNob3dEZWJ1Z0JvcmRl
cnMgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMo
KTsKIAogICAgIGlmIChzaG93RGVidWdCb3JkZXJzID09ICEhbV9kZWJ1Z0luZm9MYXllcikKQEAg
LTIyMSwxMCArMjI0LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBk
YXRlUHJlZmVyZW5jZXMoKQogICAgICAgICBtX2RlYnVnSW5mb0xheWVyID0gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBtX3dl
YlBhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKLQogICAgIFNjcm9s
bGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5nVHJlZTo6c2V0RGVidWdSb290TGF5
ZXIsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2Nyb2xs
aW5nVHJlZSgpLCBtX2RlYnVnSW5mb0xheWVyKSk7Ci0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNj
cm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCkpOwogfQog
CiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJp
bmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9u
UmVmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162605</attachid>
            <date>2012-09-06 15:27:26 -0700</date>
            <delta_ts>2012-09-11 16:56:59 -0700</delta_ts>
            <desc>smfr is changing things out from under me :)</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>32069</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NWQ4MWMyLi4yMGI2OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTItMDktMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogdmlld3BvcnQtY29uc3RyYWluZWQg
b2JqZWN0cworICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Ny
b2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBT
d2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIx
NCBSZWFzb24ocyk6IHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMKKyAgICAgICAgICAgIFND
Uk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0
Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41NTM1ODcgUmVhc29uKHMpOiB2aWV3cG9ydC1j
b25zdHJhaW5lZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byB0
aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEV4cG9zZSBTY3Jv
bGxpbmdUcmVlU3RhdGUuaCBhcyBhIHByaXZhdGUgaGVhZGVyLgorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25V
cGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjp1cGRhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZTo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNv
bik6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU6OnNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgorICAgICAgICBSZW5hbWUgdXBkYXRlU2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB0byB1cGRhdGVTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uIChhbmQgcmVsYXRlZCkuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAgIENvbnN0cnVjdCBh
IGJpdGZpZWxkIGRlc2NyaWJpbmcgdGhlIHJlYXNvbnMgd2UgZmFsbCBpbnRvIG1haW4tdGhyZWFk
IHNjcm9sbGluZyBtb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmg6CisgICAgICAgIChTY3JvbGxpbmdUcmVlU3RhdGUpOgorICAgICAgICBBZGQgUmVh
c29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCBlbnVtLCB3aXRo
IHRoZSBjdXJyZW50IHJlYXNvbnMgdGhhdCB3ZSBtaWdodCBmYWxsYmFjayB0byBtYWluLXRocmVh
ZCBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZU5vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVOb2RlTWFjOjp1cGRhdGUpOiBMb2cgZXZlcnkgdGltZSBzY3JvbGxpbmcgbW9kZSBj
aGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNjcm9sbFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3Jv
bGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSk6IFByZXR0eS1wcmludCB0aGUg
c2Nyb2xsaW5nIG1vZGUgYW5kIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWRSZWFzb24uCisKIDIwMTItMDktMDYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFNwbGl0IHBsYXRmb3JtIGdlb21ldHJ5IHR5
cGVzIGludG8gc2VwYXJhdGUgc3RhdGljIHRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUzZWMzNDguLjBlOGRmZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUwOSw3ICs1MDksNyBAQAogCQkxQUFBRERBMzE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xs
aW5nVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi87IH07CiAJ
CTFBQUFEREE0MTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERBMjE0REI0MDlGMDBBRjY0
QjMgLyogU2Nyb2xsaW5nVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFBQUFEREJFMTREQzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVl
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFBQUREQkMxNERDNjQwNjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5jcHAgKi87IH07
Ci0JCTFBQUFEREJGMTREQzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREJEMTREQzY0
MDYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuaCAqLzsgfTsKKwkJMUFBQUREQkYxNERD
NjQwNzAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQUREQkQxNERDNjQwNjAwQUY2NEIzIC8qIFNj
cm9sbGluZ1RyZWVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFBQUFERERBMTREQzc0RUMwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3Rh
dGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUFBREREODE0REM3NEVDMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZVN0YXRlTWFjLm1tICovOyB9
OwogCQkxQUFBRERFMzE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQURERTExNERD
OEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmNwcCAqLzsgfTsKIAkJMUFBQURERTQx
NERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFBRERFMjE0REM4QzhGMDBBRjY0QjMgLyog
U2Nyb2xsaW5nVHJlZU5vZGUuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA2ZDU4NGE4Li45NGU3
MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiUmVnaW9uLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCi0j
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTQ2LDYgKzQ1LDcgQEAK
ICNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQogI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVh
ZC5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjZW5kaWYKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3
KiBmcgogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
KQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0ZpeGVkT2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICBpZiAoIWNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoKTsKKyAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uKCk7CiB9CiAKIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZy
YW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCiAKICAgICBmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKGZyYW1lVmlldyk7CiAg
ICAgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudCgpOwotICAgIHVwZGF0ZVNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKKyAgICB1cGRhdGVTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCk7CiAgICAgc2V0U2Ny
b2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiB9CiAKQEAgLTM4
MCwxNSArMzgwLDI2IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc05vbkxheWVyRml4
ZWRPYmplY3RzKEZyYW1lVmlldyogZnJhbWVWaWV3KQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQoKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpCiB7CisjaWYgRU5BQkxFKFRI
UkVBREVEX1NDUk9MTElORykKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+bWFp
bkZyYW1lKCktPnZpZXcoKTsKIAotICAgIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQobV9mb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRl
cwotICAgICAgICB8fCBmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpCi0gICAgICAg
IHx8ICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQotICAgICAgICB8fCAoc3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoZnJhbWVWaWV3KSkKLSAgICAg
ICAgfHwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkp
OworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZs
YWdzIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPSAo
UmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MpMDsK
KworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKQor
ICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
IHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6Rm9yY2VkT25NYWluVGhyZWFkOworICAgIGlmIChmcmFt
ZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQorICAgICAgICByZWFzb25zRm9yVXBkYXRp
bmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1RyZWVTdGF0ZTo6
SGFzU2xvd1JlcGFpbnRPYmplY3RzOworICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5
ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQorICAg
ICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9
IFNjcm9sbGluZ1RyZWVTdGF0ZTo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0
U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzOworICAgIGlmIChzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXll
cnMoKSAmJiBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQorICAgICAgICByZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHM7CisgICAgaWYgKG1fcGFnZS0+bWFp
bkZyYW1lKCktPmRvY3VtZW50KCktPmlzSW1hZ2VEb2N1bWVudCgpKQorICAgICAgICByZWFzb25z
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9IFNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6SXNJbWFnZURvY3VtZW50OworCisgICAgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKTsKKyNlbmRpZgogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRGb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyhib29s
IGZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKQpAQCAtMzk3LDcgKzQw
OCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlTWFpblRocmVhZFNjcm9s
bExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
Zm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgPSBmb3JjZU1haW5UaHJl
YWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlczsKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOwogfQogCiAjaWYgRU5BQkxFKFRI
UkVBREVEX1NDUk9MTElORykKQEAgLTQzNSwxNiArNDQ2LDE4IEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhh
bmRsZXJDCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCisj
aWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oUmVh
c29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29u
cykKIHsKICAgICAvLyBUaGUgRnJhbWVWaWV3J3MgR3JhcGhpY3NMYXllciBpcyBsaWtlbHkgdG8g
YmUgb3V0LW9mLXN5bmNoIHdpdGggdGhlIFBsYXRmb3JtTGF5ZXIKICAgICAvLyBhdCB0aGlzIHBv
aW50LiBTbyB3ZSdsbCB1cGRhdGUgaXQgYmVmb3JlIHdlIHN3aXRjaCBiYWNrIHRvIG1haW4gdGhy
ZWFkIHNjcm9sbGluZwogICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGxheWVyIHBvc2l0aW9uaW5n
IGJ1Z3MuCi0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQpCisgICAgaWYgKHJlYXNvbnMpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVy
UG9zaXRpb24oKTsKLSAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+c2V0U2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKTsKKyAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+c2V0U2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihyZWFzb25zKTsKICAgICBz
Y2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQorI2VuZGlmCiAKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDJhYjM0
YjIuLjAyNDYzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKICNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNlbmRpZgpAQCAtMTMyLDcgKzEzMyw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKTsK
ICAgICBib29sIGhhc05vbkxheWVyRml4ZWRPYmplY3RzKEZyYW1lVmlldyopOwotICAgIHZvaWQg
dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAg
IHZvaWQgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJl
YXNvbigpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihHcmFwaGljc0xheWVyKik7CiAgICAg
dm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKQEAgLTE1NSw3
ICsxNTYsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTY3JvbGxQYXJhbWV0ZXJzKGNvbnN0
IFNjcm9sbFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQo
dW5zaWduZWQpOwotICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZChib29sKTsKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQorICAgIHZv
aWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihS
ZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyk7Cisj
ZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlvbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JOb25lLmNwcAppbmRleCBiMDk1NTJkLi4yNmM2ZTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Tm9uZS5jcHAKQEAgLTY3LDkgKzY3LDExIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoYm9vbCkKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRG
bGFncykKIHsKIH0KKyNlbmRpZgogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0
c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCBiYTZhNTJhLi42OTBlYzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAt
MjI0LDcgKzIyNCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcpCiAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkID0gZmxhZzsKIH0KIAotYm9vbCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQ
ZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKQorYm9vbCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkKIHsKICAgICByZXR1cm4gbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDQxMjBlOWUuLjQwNzA1YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTk4LDcgKzk4LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQoYm9vbCBmbGFnKTsKLSAgICBib29sIHNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCgpOworICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVOb2RlLmNwcAppbmRleCAyODQwMmNlLi4xNTBiYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGlu
Z1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1RyZWUpCiAgICAgOiBtX3Njcm9sbGlu
Z1RyZWUoc2Nyb2xsaW5nVHJlZSkKLSAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAgICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigwKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1fdmVydGljYWxTY3JvbGxFbGFz
dGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25lKQogICAgICwgbV9oYXNFbmFibGVkSG9yaXpvbnRh
bFNjcm9sbGJhcihmYWxzZSkKQEAgLTU2LDggKzU2LDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9k
ZTo6dXBkYXRlKFNjcm9sbGluZ1RyZWVTdGF0ZSogc3RhdGUpCiAgICAgaWYgKHN0YXRlLT5jaGFu
Z2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpDb250ZW50c1NpemUpCiAgICAg
ICAgIG1fY29udGVudHNTaXplID0gc3RhdGUtPmNvbnRlbnRzU2l6ZSgpOwogCi0gICAgaWYgKHN0
YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQotICAgICAgICBtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPSBzdGF0ZS0+c2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFBy
b3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbikKKyAgICAgICAgbV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID0gc3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKIAogICAgIGlmIChzdGF0ZS0+Y2hh
bmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6SG9yaXpvbnRhbFNjcm9sbEVs
YXN0aWNpdHkpCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzdGF0ZS0+
aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCmluZGV4IGY2OWFlOWYuLjNjYWQ1MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUu
aApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlNj
cm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYpID0gMDsKIAotICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsgfQorICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb247IH0KIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqKTsKQEAgLTc0LDcgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fY29udGVudHNTaXplOwogICAgIEludFBvaW50
IG1fc2Nyb2xsT3JpZ2luOwogCi0gICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkUmVhc29uOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX2hvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVN0YXRlLmNwcAppbmRleCA1ZWI1M2FiLi4yMzM0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU3RhdGU+IFNjcm9sbGluZ1RyZWVTdGF0
ZTo6Y3JlYXRlKCkKIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0YXRlKCkKICAg
ICA6IG1fY2hhbmdlZFByb3BlcnRpZXMoMCkKICAgICAsIG1fd2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCgwKQotICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
KGZhbHNlKQorICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uKDApCiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVs
YXN0aWNpdHlOb25lKQogICAgICwgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxh
c3RpY2l0eU5vbmUpCiAgICAgLCBtX2hhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNl
KQpAQCAtODgsMTMgKzg4LDEzIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRXaGVlbEV2
ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291CiAgICAgbV9jaGFu
Z2VkUHJvcGVydGllcyB8PSBXaGVlbEV2ZW50SGFuZGxlckNvdW50OwogfQogCi12b2lkIFNjcm9s
bGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCit2
b2lkIFNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWRGbGFncyByZWFzb25zKQogewotICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPT0gc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZCkKKyAgICBpZiAoKGJvb2wpbV9zaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID09IChib29sKXJlYXNvbnMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCA9IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7Ci0gICAgbV9j
aGFuZ2VkUHJvcGVydGllcyB8PSBTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkOworICAgIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZFJlYXNvbiA9IHJlYXNvbnM7CisgICAgbV9jaGFuZ2VkUHJvcGVydGllcyB8PSBTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uOwogfQogCiB2b2lkIFNjcm9s
bGluZ1RyZWVTdGF0ZTo6c2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3Rp
Y2l0eSBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmgKaW5kZXggM2I0YThkNi4uZDc5MmQw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0YXRlLmgKQEAgLTQwLDYgKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0eXBl
ZGVmIHVuc2lnbmVkIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZEZsYWdzOworCiAvLyBUaGUgU2Nyb2xsaW5nVHJlZVN0YXRlIG9iamVjdCBrZWVwcyB0cmFj
ayBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBzY3JvbGxpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzLgog
Ly8gV2hlbmV2ZXIgYW55IHByb3BlcnRpZXMgY2hhbmdlLCB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5h
dG9yIHdpbGwgYmUgaW5mb3JtZWQgYW5kIHdpbGwgdXBkYXRlIHRoZSBzdGF0ZQogLy8gYW5kIHNj
aGVkdWxlIGEgdGltZXIgdGhhdCB3aWxsIGNsb25lIHRoZSBuZXcgc3RhdGUgYW5kIHNlbmQgaXQg
b3ZlciB0byB0aGUgc2Nyb2xsaW5nIHRocmVhZCwgYXZvaWRpbmcgbG9ja2luZy4KQEAgLTU0LDcg
KzU2LDcgQEAgcHVibGljOgogICAgICAgICBDb250ZW50c1NpemUgPSAxIDw8IDEsCiAgICAgICAg
IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gMSA8PCAyLAogICAgICAgICBXaGVlbEV2ZW50SGFu
ZGxlckNvdW50ID0gMSA8PCAzLAotICAgICAgICBTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkID0gMSA8PCA0LAorICAgICAgICBTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID0gMSA8PCA0LAogICAgICAgICBIb3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSA9IDEgPDwgNSwKICAgICAgICAgVmVydGljYWxTY3JvbGxFbGFzdGlj
aXR5ID0gMSA8PCA2LAogICAgICAgICBIYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhciA9IDEg
PDwgNywKQEAgLTY2LDYgKzY4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24gPSAxIDw8IDEzLAogICAgIH07CiAKKyAgICBlbnVtIFJlYXNvbkZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB7CisgICAgICAgIEZvcmNlZE9uTWFpblRo
cmVhZCA9IDEgPDwgMCwKKyAgICAgICAgSGFzU2xvd1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAor
ICAgICAgICBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4
ZWRMYXllcnMgPSAxIDw8IDIsCisgICAgICAgIEhhc05vbkxheWVyRml4ZWRPYmplY3RzID0gMSA8
PCAzLAorICAgICAgICBJc0ltYWdlRG9jdW1lbnQgPSAxIDw8IDQKKyAgICB9OworCiAgICAgYm9v
bCBoYXNDaGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZFByb3BlcnRp
ZXM7IH0KICAgICB1bnNpZ25lZCBjaGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hhbmdlZFByb3BlcnRpZXM7IH0KIApAQCAtODEsOCArOTEsOCBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVu
dEhhbmRsZXJDb3VudDsgfQogICAgIHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNp
Z25lZCk7CiAKLSAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQ7IH0KLSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQoYm9vbCk7CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkRmxhZ3Mgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZFJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsgfQorICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Nj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyk7CiAKICAgICBTY3JvbGxFbGFzdGlj
aXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSk7CkBAIC0xMjYsNyArMTM2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHVuc2lnbmVkIG1fd2hlZWxFdmVudEhhbmRsZXJDb3VudDsKIAotICAgIGJvb2wgbV9zaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOworICAgIFJlYXNvbkZvclVw
ZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbjsKIAogICAgIFNjcm9sbEVsYXN0
aWNpdHkgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTsKICAgICBTY3JvbGxFbGFzdGljaXR5
IG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGlu
YXRvckNocm9taXVtLmNwcAppbmRleCAyZjU1YmVmLi41ZGU4ZjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9T
Y3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcApAQCAtMjIxLDEzICsyMjEsMTUgQEAgdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCB3aGVlbEV2ZW50SGFuZGxlckMKICAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5z
ZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKIH0K
IAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZChib29sIHNob3VsZCkKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NS
T0xMSU5HKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyByZWFzb25zKQogewogICAgIC8vIFdlIHdvbid0
IG5lY2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBiZWZvcmUgdGhpcyBvbmUs
IHNvIGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgogICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExh
eWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOwogICAgIGlmICht
X3ByaXZhdGUtPnNjcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIo
KS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZCk7CisgICAgICAgIG1fcHJpdmF0
ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHJlYXNvbnMpOwog
fQorI2VuZGlmCiAKIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQb3Np
dGlvbkxheWVycygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IDRhNjQwMWMuLjEwMWJiZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlTWFjLm1tCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6dXBkYXRlRGVi
dWdSb290TGF5ZXIoKQogCiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGJhY2tncm91bmRDb2xv
cjsKIAotICAgIGlmIChtX3Jvb3ROb2RlLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKCkpCisgICAgaWYgKG1fcm9vdE5vZGUtPnNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9y
ID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAuNykpOwogCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVOb2RlTWFjLm1tCmluZGV4IDM4ZGQ5ZTUuLjY0YWRiZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVN
YWMubW0KQEAgLTM3LDkgKzM3LDEzIEBACiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25z
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKTsKKwogUGFzc093blB0
cjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdU
cmVlKiBzY3JvbGxpbmdUcmVlKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5n
VHJlZU5vZGVNYWMoc2Nyb2xsaW5nVHJlZSkpOwpAQCAtNzAsMTUgKzc0LDIyIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRlKQogICAg
IGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIChTY3JvbGxpbmdUcmVlU3RhdGU6OlNj
cm9sbExheWVyIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpDb250ZW50c1NpemUgfCBTY3JvbGxpbmdU
cmVlU3RhdGU6OlZpZXdwb3J0UmVjdCkpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRl
KHNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaWYgKChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMo
KSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCkgJiYgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cgInVwZGF0
ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgotICAgICAg
ICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRpb24g
d2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCi0gICAgICAgIGlmIChzdGF0
ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb24pCi0gICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUtPnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5n
ZXQoKS5wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9z
aXRpb24gPSBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3Np
dGlvbi55KTsKKyAgICBpZiAoKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVh
c29uKSkgeworICAgICAgICB1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkID0gdGhpcy0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZFJlYXNvbigpOworCisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAgICAgICAvLyBXZSdyZSB0
cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9u
IHRoZSBtYWluIHRocmVhZCIgbW9kZS4KKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHBy
b2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9s
bCBsYXllciBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRp
ZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5y
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5w
b3NpdGlvbjsKKyAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRp
b24ueSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2Nyb2xsaW5n
VHJlZSgpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgICAgICAg
ICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCk7CiAgICAgfQogfQogCkBAIC0yMjUsNyArMjM2LDcgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIoKQogCiBJbnRQ
b2ludCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewotICAg
IGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkpCisgICAg
aWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSkK
ICAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247CiAKICAg
ICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0
aW9uOwpAQCAtMjQwLDcgKzI1MSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIAogICAgIHNldFNj
cm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMobmV3U2Nyb2xsUG9zaXRp
b24pOwogCi0gICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKCkpCisgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+c2Nyb2xsaW5nUGVyZm9ybWFu
Y2VMb2dnaW5nRW5hYmxlZCgpKQogICAgICAgICBsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCk7CiB9
CiAKQEAgLTI0OCw3ICsyNTksNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3Jv
bGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0CiB7CiAgICAgdXBk
YXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24pOwogCi0gICAgaWYgKHNob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSkgeworICAgIGlmIChzaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCkpIHsKICAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwogICAg
ICAgICBzY3JvbGxpbmdUcmVlKCktPnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uQW5kU2Ny
b2xsTGF5ZXJQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAgICAgICAgIHJldHVybjsKQEAgLTI2
MCw3ICsyNzEsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlv
bldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0CiAKIHZvaWQgU2Nyb2xsaW5nVHJl
ZU5vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9u
KQogewotICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb24oKSk7CiAgICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbiA9IENH
UG9pbnRNYWtlKC1wb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1wb3NpdGlvbi55
KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOwogfQogCkBAIC0zMzAsNiArMzQxLDMwIEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZU5vZGVNYWM6OmxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKQogICAgICAgICBw
cmludGYoIlNDUk9MTElORzogRXhwb3NlZCB0aWxlbGVzcyBhcmVhLiBUaW1lOiAlZiBVbmZpbGxl
ZCBQaXhlbHM6ICV1XG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCB1bmZp
bGxlZEFyZWEpOwogfQogCitzdGF0aWMgdm9pZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUodW5z
aWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkK
K3sKKyAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZCkgeworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlYXNvbnNEZXNjcmlwdGlvbjsKKworICAg
ICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICAgICAg
cmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiZm9yY2VkLCIpOworICAgICAgICBpZiAocmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1Ry
ZWVTdGF0ZTo6SGFzU2xvd1JlcGFpbnRPYmplY3RzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2Ny
aXB0aW9uLmFwcGVuZCgic2xvdy1yZXBhaW50IG9iamVjdHMsIik7CisgICAgICAgIGlmIChyZWFz
b25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5n
Rml4ZWRMYXllcnMpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJ2aWV3
cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6
SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24u
YXBwZW5kKCJub24tbGF5ZXIgdmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKKyAgICAg
ICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQg
JiBTY3JvbGxpbmdUcmVlU3RhdGU6OklzSW1hZ2VEb2N1bWVudCkKKyAgICAgICAgICAgIHJlYXNv
bnNEZXNjcmlwdGlvbi5hcHBlbmQoImltYWdlIGRvY3VtZW50LCIpOworCisgICAgICAgIC8vIFN0
cmlwIHRoZSB0cmFpbGluZyBjb21tYS4KKyAgICAgICAgU3RyaW5nIHJlYXNvbnNEZXNjcmlwdGlv
blRyaW1tZWQgPSByZWFzb25zRGVzY3JpcHRpb24udG9TdHJpbmcoKS5sZWZ0KHJlYXNvbnNEZXNj
cmlwdGlvbi5sZW5ndGgoKSAtIDEpOworCisgICAgICAgIFdURkxvZ0Fsd2F5cygiU0NST0xMSU5H
OiBTd2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmIFJlYXNv
bihzKTogJXNcbiIsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIHJlYXNvbnNE
ZXNjcmlwdGlvblRyaW1tZWQuYXNjaWkoKS5kYXRhKCkpOworICAgIH0gZWxzZQorICAgICAgICBX
VEZMb2dBbHdheXMoIlNDUk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBt
b2RlLiBUaW1lOiAlZlxuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9T
Q1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGI5ODc3OC4uNzI1ZTM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTA5LTA2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBvcHRpb25hbCBkZWJ1ZyBsb2dnaW5nIHdoZW4gd2UgZmFs
bCBpbnRvL291dCBvZiB0aHJlYWRlZCBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjA4OTA5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgdGhlIHNjcm9sbGluZyB0cmVlJ3Mgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCBwcmVmZXJlbmNlCisgICAgICAgIGJlZm9yZSB0aGUgZWFybHktcmV0dXJuIGlmIHdl
IGRvbid0IGhhdmUgbGF5ZXIgZGVidWdnaW5nIGJvcmRlcnMgb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVy
ZW5jZXMpOgorCiAyMDEyLTA5LTA1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXSzJdIEFubm90YXRlIG11bHRpLXByb2Nlc3MgRklYTUVzIHdpdGggYnVn
IG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4
IDY1NjYwYjMuLjZjMDAzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQpAQCAtMjA4LDYgKzIwOCw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlCiAKIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKCkKIHsK
KyAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2Ut
PnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKKyAgICBTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KSk7CisKICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKTsKIAogICAgIGlmIChzaG93RGVidWdCb3Jk
ZXJzID09ICEhbV9kZWJ1Z0luZm9MYXllcikKQEAgLTIyMSwxMCArMjI0LDcgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMoKQogICAgICAgICBt
X2RlYnVnSW5mb0xheWVyID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29sIHNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoKTsKLQogICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgm
U2Nyb2xsaW5nVHJlZTo6c2V0RGVidWdSb290TGF5ZXIsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBtX2RlYnVnSW5mb0xheWVy
KSk7Ci0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpz
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdl
KCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZCkpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oY29u
c3QgRnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uUmVmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163482</attachid>
            <date>2012-09-11 16:56:59 -0700</date>
            <delta_ts>2012-09-12 16:59:11 -0700</delta_ts>
            <desc>move enum to ScrollingCoordinator instead of ScrollingTreeState</desc>
            <filename>spl.diff</filename>
            <type>text/plain</type>
            <size>29397</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZmJhMzkzLi5kZmVlNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTItMDktMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogdmlld3BvcnQtY29uc3RyYWluZWQg
b2JqZWN0cworICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Ny
b2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBT
d2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIx
NCBSZWFzb24ocyk6IHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMKKyAgICAgICAgICAgIFND
Uk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0
Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41NTM1ODcgUmVhc29uKHMpOiB2aWV3cG9ydC1j
b25zdHJhaW5lZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byB0
aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3Rz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFt
ZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQ
b3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24pOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZU5vZGU6OlNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVOb2RlOjp1cGRhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6c2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAgIChTY3Jv
bGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsaW5n
VHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbik6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU3RhdGU6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWRSZWFzb24pOgorICAgICAgICBSZW5hbWUgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCB0byB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uIChhbmQgcmVsYXRlZCkuCisKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZFJlYXNvbik6CisgICAgICAgIENvbnN0cnVjdCBhIGJpdGZpZWxkIGRlc2NyaWJp
bmcgdGhlIHJlYXNvbnMgd2UgZmFsbCBpbnRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAg
ICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgQWRkIFJlYXNvbnNGb3JVcGRhdGlu
Z1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgZW51bSwgd2l0aCB0aGUgY3VycmVudCBy
ZWFzb25zIHRoYXQgd2UgbWlnaHQgZmFsbGJhY2sgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZU1h
Yzo6dXBkYXRlKTogTG9nIGV2ZXJ5IHRpbWUgc2Nyb2xsaW5nIG1vZGUgY2hhbmdlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlTWFjOjpzY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRo
b3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjps
b2dUaHJlYWRlZFNjcm9sbGluZ01vZGUpOiBQcmV0dHktcHJpbnQgdGhlIHNjcm9sbGluZyBtb2Rl
IGFuZCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uLgor
CiAyMDEyLTA5LTExICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIFN0eWxlUmVzb2x2ZXI6OnNldFN0eWxlLCBiZWNhdXNlIGl0J3Mgbm8g
bG9uZ2VyIHVzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggNmQ1ODRhOC4uOWYwN2IxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1l
Vmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyCiAgICAgaWYg
KCFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKCk7CisgICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZFJlYXNvbigpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCkBAIC0yMDMsNyAr
MjAzLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3Rz
RGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRpbmF0ZXNTY3Jv
bGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBk
YXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVw
ZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsK
IH0KIAogc3RhdGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyogZnJhbWVWaWV3KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykK
IAogICAgIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoZnJhbWVWaWV3KTsKICAgICByZWNvbXB1dGVX
aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7Ci0gICAgdXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOworICAgIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKTsKICAgICBzZXRTY3JvbGxMYXllcihzY3Jv
bGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKIH0KIApAQCAtMzgwLDE1ICszODAsMjQg
QEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpCit2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkUmVhc29uKCkKIHsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKIAotICAgIHNldFNob3VsZFVwZGF0ZVNjcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQobV9mb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBv
c2l0aW9uVXBkYXRlcwotICAgICAgICB8fCBmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0
cygpCi0gICAgICAgIHx8ICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVW
aWV3LT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQotICAgICAgICB8fCAoc3VwcG9y
dHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoZnJhbWVW
aWV3KSkKLSAgICAgICAgfHwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNJbWFn
ZURvY3VtZW50KCkpOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZEZsYWdzIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQgPSAoUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkRmxhZ3MpMDsKKworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRp
b25VcGRhdGVzKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkIHw9IEZvcmNlZE9uTWFpblRocmVhZDsKKyAgICBpZiAoZnJhbWVWaWV3LT5o
YXNTbG93UmVwYWludE9iamVjdHMoKSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBIYXNTbG93UmVwYWludE9iamVjdHM7CisgICAg
aWYgKCFzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc1ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzKCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzOworICAgIGlmIChzdXBwb3J0c0ZpeGVkUG9z
aXRpb25MYXllcnMoKSAmJiBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQorICAg
ICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9
IEhhc05vbkxheWVyRml4ZWRPYmplY3RzOworICAgIGlmIChtX3BhZ2UtPm1haW5GcmFtZSgpLT5k
b2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBJc0ltYWdlRG9jdW1lbnQ7CisKKyAg
ICBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKHJl
YXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpOwogfQogCiB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBv
c2l0aW9uVXBkYXRlcyhib29sIGZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRh
dGVzKQpAQCAtMzk3LDcgKzQwNiw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEZv
cmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wgZm9yCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fZm9yY2VNYWluVGhyZWFkU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0
ZXMgPSBmb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlczsKLSAgICB1cGRh
dGVTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCk7CisgICAgdXBk
YXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOwog
fQogCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKQEAgLTQzNSwxNCArNDQ0LDE0IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5z
aWduZWQgd2hlZWxFdmVudEhhbmRsZXJDCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsK
IH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnMpCiB7CiAgICAgLy8g
VGhlIEZyYW1lVmlldydzIEdyYXBoaWNzTGF5ZXIgaXMgbGlrZWx5IHRvIGJlIG91dC1vZi1zeW5j
aCB3aXRoIHRoZSBQbGF0Zm9ybUxheWVyCiAgICAgLy8gYXQgdGhpcyBwb2ludC4gU28gd2UnbGwg
dXBkYXRlIGl0IGJlZm9yZSB3ZSBzd2l0Y2ggYmFjayB0byBtYWluIHRocmVhZCBzY3JvbGxpbmcK
ICAgICAvLyBpbiBvcmRlciB0byBhdm9pZCBsYXllciBwb3NpdGlvbmluZyBidWdzLgotICAgIGlm
IChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQorICAgIGlmIChy
ZWFzb25zKQogICAgICAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCk7Ci0g
ICAgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWQoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCk7CisgICAgbV9zY3JvbGxpbmdUcmVlU3RhdGUtPnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24ocmVhc29ucyk7CiAgICAgc2NoZWR1bGVUcmVlU3Rh
dGVDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggMmFiMzRiMi4uMmZlN2I4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
CkBAIC00NCw2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiB1bnNp
Z25lZCBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFn
czsKKwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIFBhZ2U7
CkBAIC0xMjcsMTIgKzEyOSwyMCBAQCBwdWJsaWM6CiAgICAgLy8gQXR0YWNoL2RldGFjaCBsYXll
ciBwb3NpdGlvbiB0byBhbmNlc3RvciBmaXhlZCBwb3NpdGlvbiBjb250YWluZXIuCiAgICAgdm9p
ZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKTsK
IAorICAgIGVudW0gUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkIHsKKyAgICAgICAgRm9yY2VkT25NYWluVGhyZWFkID0gMSA8PCAwLAorICAgICAgICBIYXNT
bG93UmVwYWludE9iamVjdHMgPSAxIDw8IDEsCisgICAgICAgIEhhc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycyA9IDEgPDwgMiwKKyAgICAgICAg
SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMgPSAxIDw8IDMsCisgICAgICAgIElzSW1hZ2VEb2N1bWVu
dCA9IDEgPDwgNAorICAgIH07CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3IoUGFnZSopOwogCiAgICAgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNv
dW50KCk7CiAgICAgYm9vbCBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqKTsKLSAg
ICB2b2lkIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQo
KTsKKyAgICB2b2lkIHVwZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWRSZWFzb24oKTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciop
OwogICAgIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJik7CkBA
IC0xNTUsNyArMTY1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2Nyb2xsUGFyYW1ldGVy
cyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxl
ckNvdW50KHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQoYm9vbCk7CisgICAgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKIAogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1l
U2Nyb2xsTGF5ZXJQb3NpdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcAppbmRleCBiMDk1NTJk
Li5lOWVkNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCkK
IHsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbihS
ZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncykKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cAppbmRleCBiYTZhNTJhLi42OTBlYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGZsYWcp
CiAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gZmxhZzsKIH0KIAot
Ym9vbCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKQor
Ym9vbCBTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkK
IHsKICAgICByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDQx
MjBlOWUuLjQwNzA1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lk
IHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBmbGFnKTsKLSAgICBi
b29sIHNjcm9sbGluZ1BlZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpOworICAgIGJvb2wgc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAppbmRleCAyODQwMmNl
Li4xNTBiYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2Nyb2xsaW5nVHJlZU5vZGU6OlNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUqIHNj
cm9sbGluZ1RyZWUpCiAgICAgOiBtX3Njcm9sbGluZ1RyZWUoc2Nyb2xsaW5nVHJlZSkKLSAgICAs
IG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChmYWxzZSkKKyAg
ICAsIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigw
KQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9u
ZSkKICAgICAsIG1fdmVydGljYWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHlOb25l
KQogICAgICwgbV9oYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhcihmYWxzZSkKQEAgLTU2LDgg
KzU2LDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZTo6dXBkYXRlKFNjcm9sbGluZ1RyZWVTdGF0
ZSogc3RhdGUpCiAgICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpDb250ZW50c1NpemUpCiAgICAgICAgIG1fY29udGVudHNTaXplID0gc3RhdGUt
PmNvbnRlbnRzU2l6ZSgpOwogCi0gICAgaWYgKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYg
U2Nyb2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKQotICAgICAgICBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQgPSBzdGF0ZS0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCgpOworICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVT
dGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbikK
KyAgICAgICAgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVh
c29uID0gc3RhdGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRS
ZWFzb24oKTsKIAogICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkpCiAgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBzdGF0ZS0+aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9k
ZS5oCmluZGV4IGY2OWFlOWYuLjEwOGU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgPSAwOwogCi0g
ICAgYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
OyB9CisgICAgUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
RmxhZ3Mgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZFJlYXNvbjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZU5v
ZGUoU2Nyb2xsaW5nVHJlZSopOwpAQCAtNzQsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIEludFNp
emUgbV9jb250ZW50c1NpemU7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAKLSAgICBi
b29sIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKKyAgICBS
ZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb247CiAKICAgICBT
Y3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7CiAgICAgU2Nyb2xs
RWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCmluZGV4IDVlYjUz
YWIuLjIzMzRiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVN0YXRlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzT3duUHRyPFNjcm9s
bGluZ1RyZWVTdGF0ZT4gU2Nyb2xsaW5nVHJlZVN0YXRlOjpjcmVhdGUoKQogU2Nyb2xsaW5nVHJl
ZVN0YXRlOjpTY3JvbGxpbmdUcmVlU3RhdGUoKQogICAgIDogbV9jaGFuZ2VkUHJvcGVydGllcygw
KQogICAgICwgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50KDApCi0gICAgLCBtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoZmFsc2UpCisgICAgLCBtX3Nob3VsZFVw
ZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oMCkKICAgICAsIG1faG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX3Zl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5Tm9uZSkKICAgICAsIG1faGFz
RW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpCkBAIC04OCwxMyArODgsMTMgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlU3RhdGU6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQg
d2hlZWxFdmVudEhhbmRsZXJDb3UKICAgICBtX2NoYW5nZWRQcm9wZXJ0aWVzIHw9IFdoZWVsRXZl
bnRIYW5kbGVyQ291bnQ7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpz
ZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNv
bkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnMp
CiB7Ci0gICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCA9PSBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKQorICAgIGlm
ICgoYm9vbCltX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFz
b24gPT0gKGJvb2wpcmVhc29ucykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gc2hvdWxkVXBkYXRlU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsKLSAgICBtX2NoYW5nZWRQcm9wZXJ0aWVzIHw9IFNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uID0gcmVhc29uczsKKyAgICBt
X2NoYW5nZWRQcm9wZXJ0aWVzIHw9IFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb247CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRIb3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFz
dGljaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU3RhdGUuaAppbmRleCAzYjRhOGQ2Li4zM2MyYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJT
Y3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTU0LDcgKzU1LDcg
QEAgcHVibGljOgogICAgICAgICBDb250ZW50c1NpemUgPSAxIDw8IDEsCiAgICAgICAgIE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uID0gMSA8PCAyLAogICAgICAgICBXaGVlbEV2ZW50SGFuZGxlckNv
dW50ID0gMSA8PCAzLAotICAgICAgICBTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkID0gMSA8PCA0LAorICAgICAgICBTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkUmVhc29uID0gMSA8PCA0LAogICAgICAgICBIb3Jpem9udGFsU2Nyb2xs
RWxhc3RpY2l0eSA9IDEgPDwgNSwKICAgICAgICAgVmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0g
MSA8PCA2LAogICAgICAgICBIYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhciA9IDEgPDwgNywK
QEAgLTgxLDggKzgyLDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVy
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7IH0KICAgICB2
b2lkIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpOwogCi0gICAgYm9vbCBzaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9Ci0gICAgdm9p
ZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wpOwor
ICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdz
IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSBjb25z
dCB7IHJldHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRS
ZWFzb247IH0KKyAgICB2b2lkIHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb24oUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkRmxhZ3MpOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0K
ICAgICB2b2lkIHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkp
OwpAQCAtMTI2LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX3doZWVsRXZl
bnRIYW5kbGVyQ291bnQ7CiAKLSAgICBib29sIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZDsKKyAgICBSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRGbGFncyBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRSZWFzb247CiAKICAgICBTY3JvbGxFbGFzdGljaXR5IG1faG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHk7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3Rp
Y2l0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVt
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXgg
ZWYwM2I5OC4uMmQ1MzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHAKQEAgLTIyMywxMiArMjIzLDEyIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDCiAg
ICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cyh3aGVlbEV2ZW50SGFuZGxlckNvdW50ID4gMCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoYm9v
bCBzaG91bGQpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzIHJlYXNvbnMpCiB7CiAgICAgLy8gV2Ugd29u
J3QgbmVjZXNzYXJpbHkgZ2V0IGEgc2V0U2Nyb2xsTGF5ZXIoKSBjYWxsIGJlZm9yZSB0aGlzIG9u
ZSwgc28gZ3JhYiB0aGUgcm9vdCBvdXJzZWx2ZXMuCiAgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xs
TGF5ZXJGb3JGcmFtZVZpZXcobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKSk7CiAgICAgaWYg
KG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKSkKLSAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXll
cigpLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKKyAgICAgICAgbV9wcml2
YXRlLT5zY3JvbGxMYXllcigpLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQocmVhc29ucyk7
CiB9CiAKIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxh
eWVycygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IDRhNjQwMWMuLjEwMWJiZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1t
CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6dXBkYXRlRGVidWdSb290TGF5
ZXIoKQogCiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGJhY2tncm91bmRDb2xvcjsKIAotICAg
IGlmIChtX3Jvb3ROb2RlLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkKCkpCisgICAgaWYgKG1fcm9vdE5vZGUtPnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAuNykpOwogCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2Rl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVO
b2RlTWFjLm1tCmluZGV4IDJlMTcwY2MuLjgwYzJiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQogCiAjaW5jbHVk
ZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0
YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTM3LDkgKzM4LDEzIEBACiAKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xs
aW5nTW9kZSh1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKTsKKwogUGFzc093blB0cjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJl
ZU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlKQogewogICAgIHJldHVy
biBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nVHJlZU5vZGVNYWMoc2Nyb2xsaW5nVHJlZSkpOwpAQCAt
NzAsMTUgKzc1LDIyIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZShTY3JvbGxp
bmdUcmVlU3RhdGUqIHN0YXRlKQogICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAm
IChTY3JvbGxpbmdUcmVlU3RhdGU6OlNjcm9sbExheWVyIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpD
b250ZW50c1NpemUgfCBTY3JvbGxpbmdUcmVlU3RhdGU6OlZpZXdwb3J0UmVjdCkpCiAgICAgICAg
IHVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKHNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaWYgKChz
dGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgJiYgc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRp
b25pbmcgdG8gdGhlIHNsb3cgInVwZGF0ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1h
aW4gdGhyZWFkIiBtb2RlLgotICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWlu
IHRocmVhZCBzY3JvbGwgcG9zaXRpb24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9z
aXRpb24uCi0gICAgICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pCi0gICAgICAgICAgICBtX3Byb2Jh
YmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc3RhdGUtPnJlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBv
c2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fcHJv
YmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3Np
dGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsKKyAgICBpZiAoKHN0YXRlLT5jaGFuZ2Vk
UHJvcGVydGllcygpICYgU2Nyb2xsaW5nVHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkUmVhc29uKSkgeworICAgICAgICB1bnNpZ25lZCByZWFzb25z
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gdGhpcy0+c2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZFJlYXNvbigpOworCisgICAgICAg
IGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSB7
CisgICAgICAgICAgICAvLyBXZSdyZSB0cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUg
c2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRoZSBtYWluIHRocmVhZCIgbW9kZS4KKyAgICAgICAg
ICAgIC8vIEluaXRpYWxpemUgdGhlIHByb2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlv
biB3aXRoIHRoZSBjdXJyZW50IHNjcm9sbCBsYXllciBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlm
IChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24pCisgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRT
Y3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9u
ID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBtX3Byb2Jh
YmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRp
b24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
KworICAgICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKCkpCisgICAgICAgICAgICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUocmVhc29u
c0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk7CiAgICAgfQogfQog
CkBAIC0yMjUsNyArMjM3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c3RvcFNuYXBS
dWJiZXJiYW5kVGltZXIoKQogCiBJbnRQb2ludCBTY3JvbGxpbmdUcmVlTm9kZU1hYzo6c2Nyb2xs
UG9zaXRpb24oKSBjb25zdAogewotICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKCkpCisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25Pbk1haW5UaHJlYWRSZWFzb24oKSkKICAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhy
ZWFkU2Nyb2xsUG9zaXRpb247CiAKICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBt
X3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwpAQCAtMjQwLDcgKzI1Miw3IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb3NpdGlvbikKIAogICAgIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMobmV3U2Nyb2xsUG9zaXRpb24pOwogCi0gICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+
c2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgaWYgKHNjcm9sbGluZ1Ry
ZWUoKS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQogICAgICAgICBsb2dF
eHBvc2VkVW5maWxsZWRBcmVhKCk7CiB9CiAKQEAgLTI0OCw3ICsyNjAsNyBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0
cmFpbnRzKGNvbnN0CiB7CiAgICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRp
b24pOwogCi0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoKSkgeworICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uKCkpIHsKICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY3JvbGxpbmdUcmVlKCktPnVwZGF0ZU1haW5G
cmFtZVNjcm9sbFBvc2l0aW9uQW5kU2Nyb2xsTGF5ZXJQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7
CiAgICAgICAgIHJldHVybjsKQEAgLTI2MCw3ICsyNzIsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNv
bnN0CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewotICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIXNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRSZWFzb24oKSk7CiAgICAgbV9zY3JvbGxM
YXllci5nZXQoKS5wb3NpdGlvbiA9IENHUG9pbnRNYWtlKC1wb3NpdGlvbi54KCkgKyBzY3JvbGxP
cmlnaW4oKS54KCksIC1wb3NpdGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOwogfQogCkBA
IC0zMzAsNiArMzQyLDMwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGVNYWM6OmxvZ0V4cG9zZWRV
bmZpbGxlZEFyZWEoKQogICAgICAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzogRXhwb3NlZCB0
aWxlbGVzcyBhcmVhLiBUaW1lOiAlZiBVbmZpbGxlZCBQaXhlbHM6ICV1XG4iLCBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCB1bmZpbGxlZEFyZWEpOwogfQogCitzdGF0aWMgdm9p
ZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUodW5zaWduZWQgcmVhc29uc0ZvclVwZGF0aW5nU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3sKKyAgICBpZiAocmVhc29uc0ZvclVwZGF0
aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgeworICAgICAgICBTdHJpbmdCdWls
ZGVyIHJlYXNvbnNEZXNjcmlwdGlvbjsKKworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpG
b3JjZWRPbk1haW5UaHJlYWQpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5k
KCJmb3JjZWQsIik7CisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50
T2JqZWN0cykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoInNsb3ctcmVw
YWludCBvYmplY3RzLCIpOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAg
ICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJ2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmpl
Y3RzLCIpOworICAgICAgICBpZiAocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZpeGVkT2Jq
ZWN0cykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoIm5vbi1sYXllciB2
aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOworICAgICAgICBpZiAocmVhc29uc0ZvclVw
ZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBw
ZW5kKCJpbWFnZSBkb2N1bWVudCwiKTsKKworICAgICAgICAvLyBTdHJpcCB0aGUgdHJhaWxpbmcg
Y29tbWEuCisgICAgICAgIFN0cmluZyByZWFzb25zRGVzY3JpcHRpb25UcmltbWVkID0gcmVhc29u
c0Rlc2NyaXB0aW9uLnRvU3RyaW5nKCkubGVmdChyZWFzb25zRGVzY3JpcHRpb24ubGVuZ3RoKCkg
LSAxKTsKKworICAgICAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1h
aW4tdGhyZWFkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAlZiBSZWFzb24ocyk6ICVzXG4iLCBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCByZWFzb25zRGVzY3JpcHRpb25UcmltbWVk
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JP
TExJTkc6IFN3aXRjaGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWZcbiIs
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDJlNTY0YzEuLjk3Mzk2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0wOS0xMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgb3B0aW9uYWwgZGVidWcgbG9nZ2luZyB3aGVuIHdlIGZhbGwgaW50by9vdXQgb2YgdGhy
ZWFkZWQgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05Mzg5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIwODkwOTg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBzY3Jv
bGxpbmcgdHJlZSdzIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgcHJlZmVyZW5j
ZQorICAgICAgICBiZWZvcmUgdGhlIGVhcmx5LXJldHVybiBpZiB3ZSBkb24ndCBoYXZlIGxheWVy
IGRlYnVnZ2luZyBib3JkZXJzIG9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKToKKwogMjAxMi0w
OS0xMSAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5saXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmVzdG9yZSBvcmlnaW5hbCB2YWx1ZSBvZiBtb2NrIHNjcm9sbGJhcnMgZW5hYmxlZCBpbiBJ
bnRlcm5hbFNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQppbmRleCA2NTY2MGIzLi42YzAwMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KQEAgLTIwOCw2ICsyMDgsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiBy
ZQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNl
cygpCiB7CisgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93
ZWJQYWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CisgICAgU2Nyb2xs
aW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCkpOworCiAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzID0gbV93ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCk7CiAKICAgICBpZiAoc2hvd0Rl
YnVnQm9yZGVycyA9PSAhIW1fZGVidWdJbmZvTGF5ZXIpCkBAIC0yMjEsMTAgKzIyNCw3IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKCkKICAg
ICAgICAgbV9kZWJ1Z0luZm9MYXllciA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9vbCBzY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93ZWJQYWdlLT5zY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7Ci0KICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KGJpbmQoJlNjcm9sbGluZ1RyZWU6OnNldERlYnVnUm9vdExheWVyLCBtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgbV9kZWJ1Z0lu
Zm9MYXllcikpOwotICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgbV93ZWJQYWdlLT5j
b3JlUGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zY3JvbGxpbmdUcmVlKCksIHNjcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0
aW9uKGNvbnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvblJlZikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163738</attachid>
            <date>2012-09-12 16:59:11 -0700</date>
            <delta_ts>2012-09-13 13:46:40 -0700</delta_ts>
            <desc>don&apos;t rename all of the functions</desc>
            <filename>spl-rename.diff</filename>
            <type>text/plain</type>
            <size>23634</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMTQxYjExLi5lZmYzNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTItMDktMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3ZSBmYWxsIGludG8vb3V0
IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDg5MDk4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dn
aW5nIHdoZW4gd2UgZW50ZXIgYW5kIGV4aXQgdGhlIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLCBh
bmQgbG9ncyB0aGUgcmVhc29ucyB3ZQorICAgICAgICBmYWxsIGludG8gbWFpbi10aHJlYWQgc2Ny
b2xsaW5nLgorCisgICAgICAgIFRoZSBsb2dnaW5nIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6Cisg
ICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcg
bW9kZS4gVGltZTogMTU4NDMuNTU0NzE4IFJlYXNvbihzKTogdmlld3BvcnQtY29uc3RyYWluZWQg
b2JqZWN0cworICAgICAgICAgICAgU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Ny
b2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ0LjU1MDg2NgorICAgICAgICAgICAgU0NST0xMSU5HOiBT
d2l0Y2hpbmcgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6IDE1ODQ1LjU1MTIx
NCBSZWFzb24ocyk6IHZpZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMKKyAgICAgICAgICAgIFND
Uk9MTElORzogU3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0
Ni41NTI2MTkKKyAgICAgICAgICAgIFNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFk
IHNjcm9sbGluZyBtb2RlLiBUaW1lOiAxNTg0Ny41NTM1ODcgUmVhc29uKHMpOiB2aWV3cG9ydC1j
b25zdHJhaW5lZCBvYmplY3RzCisgICAgICAgICAgICBTQ1JPTExJTkc6IFN3aXRjaGluZyB0byB0
aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogMTU4NDguNTU0MDg0CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBhcyB0aGlzIGlzIGp1c3QgZGVidWdnaW5nIGxvZ2dpbmcuCisKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZCk6CisgICAgICAgIENvbnN0cnVjdCBhIGJpdGZpZWxkIGRlc2Ny
aWJpbmcgdGhlIHJlYXNvbnMgd2UgZmFsbCBpbnRvIG1haW4tdGhyZWFkIHNjcm9sbGluZyBtb2Rl
LgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlTm9kZTo6U2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6
c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RhdGU6OnNob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAg
ICAgVXNlIHRoZSByZWFzb25zIGJpdGZpZWxkIGluc3RlYWQgb2YgYSBib29sZWFuLgorCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgQWRkIFJlYXNvbnNGb3JVcGRhdGluZ1Njcm9s
bExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgZW51bSwgd2l0aCB0aGUgY3VycmVudCByZWFzb25z
IHRoYXQgd2UgbWlnaHQgZmFsbGJhY2sgdG8gbWFpbi10aHJlYWQgc2Nyb2xsaW5nLgorICAgICAg
ICAKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQpOgorICAgICAgICBGaXggYSB0eXBvIChzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQgLT4gc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCkuCisKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlTm9kZU1hYzo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUpOgorICAgICAgICBQcmV0dHktcHJpbnQgdGhlIHNj
cm9sbGluZyBtb2RlIGFuZCBzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkUmVhc29uLgorCiAyMDEyLTA5LTEyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgogCiAgICAgICAgIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZCBzaG91bGQgdXNl
IGNoYXJhY3RlcnM4LzE2IHRvIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCA2ZDU4NGE4Li5jNGY1OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0zODQsMTEgKzM4NCwyMCBA
QCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKCkKIHsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKIAotICAgIHNldFNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQobV9mb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0
aW9uVXBkYXRlcwotICAgICAgICB8fCBmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygp
Ci0gICAgICAgIHx8ICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3
LT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQotICAgICAgICB8fCAoc3VwcG9ydHNG
aXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMoZnJhbWVWaWV3
KSkKLSAgICAgICAgfHwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNJbWFnZURv
Y3VtZW50KCkpOworICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZEZsYWdzIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQgPSAoUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFk
RmxhZ3MpMDsKKworICAgIGlmIChtX2ZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25V
cGRhdGVzKQorICAgICAgICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkIHw9IEZvcmNlZE9uTWFpblRocmVhZDsKKyAgICBpZiAoZnJhbWVWaWV3LT5oYXNT
bG93UmVwYWludE9iamVjdHMoKSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5
ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBIYXNTbG93UmVwYWludE9iamVjdHM7CisgICAgaWYg
KCFzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc1ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKCkpCisgICAgICAgIHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgfD0gSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNX
aXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzOworICAgIGlmIChzdXBwb3J0c0ZpeGVkUG9zaXRp
b25MYXllcnMoKSAmJiBoYXNOb25MYXllckZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQorICAgICAg
ICByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkIHw9IEhh
c05vbkxheWVyRml4ZWRPYmplY3RzOworICAgIGlmIChtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAgcmVhc29uc0ZvclVwZGF0aW5nU2Ny
b2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCB8PSBJc0ltYWdlRG9jdW1lbnQ7CisKKyAgICBz
ZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKHJlYXNvbnNGb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpOwogfQogCiB2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZU1haW5UaHJlYWRTY3JvbGxMYXllclBvc2l0aW9uVXBk
YXRlcyhib29sIGZvcmNlTWFpblRocmVhZFNjcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKQpAQCAt
NDM1LDE0ICs0NDQsMTQgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVu
dEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckMKICAgICBzY2hlZHVsZVRy
ZWVTdGF0ZUNvbW1pdCgpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoUmVhc29u
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgcmVhc29ucykK
IHsKICAgICAvLyBUaGUgRnJhbWVWaWV3J3MgR3JhcGhpY3NMYXllciBpcyBsaWtlbHkgdG8gYmUg
b3V0LW9mLXN5bmNoIHdpdGggdGhlIFBsYXRmb3JtTGF5ZXIKICAgICAvLyBhdCB0aGlzIHBvaW50
LiBTbyB3ZSdsbCB1cGRhdGUgaXQgYmVmb3JlIHdlIHN3aXRjaCBiYWNrIHRvIG1haW4gdGhyZWFk
IHNjcm9sbGluZwogICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGxheWVyIHBvc2l0aW9uaW5nIGJ1
Z3MuCi0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQp
CisgICAgaWYgKHJlYXNvbnMpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVyUG9z
aXRpb24oKTsKLSAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+c2V0U2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKTsKKyAgICBtX3Njcm9sbGluZ1RyZWVTdGF0ZS0+c2V0U2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChyZWFzb25zKTsKICAgICBzY2hlZHVsZVRy
ZWVTdGF0ZUNvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCAyYWIzNGIyLi5hOTFkMWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmgKQEAgLTQ0LDYgKzQ0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0eXBlZGVm
IHVuc2lnbmVkIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZEZsYWdzOworCiBjbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3Mg
UGFnZTsKQEAgLTEyNyw2ICsxMjksMTQgQEAgcHVibGljOgogICAgIC8vIEF0dGFjaC9kZXRhY2gg
bGF5ZXIgcG9zaXRpb24gdG8gYW5jZXN0b3IgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyLgogICAg
IHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9v
bCk7CiAKKyAgICBlbnVtIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCB7CisgICAgICAgIEZvcmNlZE9uTWFpblRocmVhZCA9IDEgPDwgMCwKKyAgICAgICAg
SGFzU2xvd1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAorICAgICAgICBIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMgPSAxIDw8IDIsCisgICAg
ICAgIEhhc05vbkxheWVyRml4ZWRPYmplY3RzID0gMSA8PCAzLAorICAgICAgICBJc0ltYWdlRG9j
dW1lbnQgPSAxIDw8IDQKKyAgICB9OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApAQCAtMTU1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldFNjcm9sbFBhcmFtZXRlcnMoY29uc3QgU2Nyb2xsUGFyYW1ldGVycyYpOwogICAg
IHZvaWQgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRT
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wpOworICAgIHZv
aWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChSZWFzb25G
b3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyk7CiAKICAgICB2
b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVyUG9zaXRpb24oKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTm9u
ZS5jcHAKaW5kZXggYjA5NTUyZC4uYjdlYTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5k
bGVyQ291bnQodW5zaWduZWQpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCkKK3ZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQoUmVhc29uRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhy
ZWFkRmxhZ3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5jcHAKaW5kZXggYmE2YTUyYS4uNjkwZWM5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQoYm9vbCBmbGFnKQogICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9
IGZsYWc7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nUGVmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaAppbmRleCA0MTIwZTllLi40MDcwNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wg
ZmxhZyk7Ci0gICAgYm9vbCBzY3JvbGxpbmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKKyAg
ICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAK
aW5kZXggMjg0MDJjZS4uMjUyYzU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNjcm9sbGluZ1RyZWVOb2RlOjpTY3JvbGxpbmdUcmVlTm9kZShTY3Jv
bGxpbmdUcmVlKiBzY3JvbGxpbmdUcmVlKQogICAgIDogbV9zY3JvbGxpbmdUcmVlKHNjcm9sbGlu
Z1RyZWUpCi0gICAgLCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQoZmFsc2UpCisgICAgLCBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoMCkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3Rp
Y2l0eU5vbmUpCiAgICAgLCBtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGlj
aXR5Tm9uZSkKICAgICAsIG1faGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaApp
bmRleCBmNjlhZTlmLi5mM2MwOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgIlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpID0gMDsKIAotICAgIGJv
b2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsgfQor
ICAgIFJlYXNvbkZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdz
IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCB7IHJl
dHVybiBtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7IH0KIAog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ1RyZWUq
KTsKQEAgLTc0LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fY29udGVudHNTaXpl
OwogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogCi0gICAgYm9vbCBtX3Nob3VsZFVwZGF0
ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVhc29uRm9yVXBkYXRpbmdT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0eSBtX2hvcml6
b250YWxTY3JvbGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV92ZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVN0YXRlLmNwcAppbmRleCA1ZWI1M2FiLi40ZDE2YmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGF0ZS5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU3RhdGU+IFNjcm9sbGlu
Z1RyZWVTdGF0ZTo6Y3JlYXRlKCkKIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2Nyb2xsaW5nVHJlZVN0
YXRlKCkKICAgICA6IG1fY2hhbmdlZFByb3BlcnRpZXMoMCkKICAgICAsIG1fd2hlZWxFdmVudEhh
bmRsZXJDb3VudCgwKQotICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKGZhbHNlKQorICAgICwgbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKDApCiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9s
bEVsYXN0aWNpdHlOb25lKQogICAgICwgbV92ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xs
RWxhc3RpY2l0eU5vbmUpCiAgICAgLCBtX2hhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKGZh
bHNlKQpAQCAtODgsMTIgKzg4LDEyIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVN0YXRlOjpzZXRXaGVl
bEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291CiAgICAgbV9j
aGFuZ2VkUHJvcGVydGllcyB8PSBXaGVlbEV2ZW50SGFuZGxlckNvdW50OwogfQogCi12b2lkIFNj
cm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZChib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQp
Cit2b2lkIFNjcm9sbGluZ1RyZWVTdGF0ZTo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvbk9uTWFpblRocmVhZChSZWFzb25Gb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWRGbGFncyByZWFzb25zKQogewotICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgPT0gc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCkKKyAgICBpZiAoKGJvb2wpbV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkID09IChib29sKXJlYXNvbnMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCA9IHNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkID0gcmVhc29uczsKICAgICBtX2NoYW5n
ZWRQcm9wZXJ0aWVzIHw9IFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVN0YXRlLmgKaW5kZXggM2I0YThkNi4uODRiNjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0YXRlLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC04MSw4ICs4Miw4
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV93aGVlbEV2ZW50SGFuZGxlckNvdW50OyB9CiAgICAgdm9pZCBzZXRXaGVlbEV2
ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkKTsKIAotICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXBkYXRl
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZDsgfQotICAgIHZvaWQgc2V0U2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChib29sKTsKKyAgICBSZWFzb25Gb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyBzaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOyB9CisgICAgdm9pZCBzZXRTaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKFJlYXNvbkZvclVwZGF0aW5n
U2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZEZsYWdzKTsKIAogICAgIFNjcm9sbEVsYXN0
aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2hvcml6
b250YWxTY3JvbGxFbGFzdGljaXR5OyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eShTY3JvbGxFbGFzdGljaXR5KTsKQEAgLTEyNiw3ICsxMjcsNyBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50OwogCi0gICAgYm9vbCBtX3No
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQ7CisgICAgUmVhc29uRm9y
VXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkRmxhZ3MgbV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkOwogCiAgICAgU2Nyb2xsRWxhc3RpY2l0
eSBtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5OwogICAgIFNjcm9sbEVsYXN0aWNpdHkgbV92
ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q2hyb21pdW0uY3BwCmluZGV4IGVmMDNiOTguLjA0OTk0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0yMjMsMTIgKzIyMywxMiBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdo
ZWVsRXZlbnRIYW5kbGVyQwogICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldEhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQogCi12
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChSZWFzb25Gb3JV
cGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWRGbGFncyByZWFzb25zKQogewog
ICAgIC8vIFdlIHdvbid0IG5lY2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBi
ZWZvcmUgdGhpcyBvbmUsIHNvIGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgogICAgIHNldFNjcm9s
bExheWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KSkpOwogICAgIGlmIChtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0
ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZCk7Cisg
ICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkKHJlYXNvbnMpOwogfQogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0c0Zp
eGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVOb2RlTWFjLm1tCmluZGV4IDJlMTcwY2Mu
Ljk5ZTQ1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZU5vZGVNYWMubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoVEhSRUFERURfU0NST0xMSU5HKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50Lmgi
CisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKQEAgLTM3LDkgKzM4LDEzIEBACiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCByZWFzb25z
Rm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKTsKKwogUGFzc093blB0
cjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdU
cmVlKiBzY3JvbGxpbmdUcmVlKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5n
VHJlZU5vZGVNYWMoc2Nyb2xsaW5nVHJlZSkpOwpAQCAtNzAsMTUgKzc1LDIyIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZU5vZGVNYWM6OnVwZGF0ZShTY3JvbGxpbmdUcmVlU3RhdGUqIHN0YXRlKQogICAg
IGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIChTY3JvbGxpbmdUcmVlU3RhdGU6OlNj
cm9sbExheWVyIHwgU2Nyb2xsaW5nVHJlZVN0YXRlOjpDb250ZW50c1NpemUgfCBTY3JvbGxpbmdU
cmVlU3RhdGU6OlZpZXdwb3J0UmVjdCkpCiAgICAgICAgIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRl
KHNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaWYgKChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMo
KSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9u
TWFpblRocmVhZCkgJiYgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cgInVwZGF0
ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgotICAgICAg
ICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRpb24g
d2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCi0gICAgICAgIGlmIChzdGF0
ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9sbGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb24pCi0gICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUtPnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5n
ZXQoKS5wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9z
aXRpb24gPSBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3Np
dGlvbi55KTsKKyAgICBpZiAoKHN0YXRlLT5jaGFuZ2VkUHJvcGVydGllcygpICYgU2Nyb2xsaW5n
VHJlZVN0YXRlOjpTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKSkg
eworICAgICAgICB1bnNpZ25lZCByZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkID0gdGhpcy0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCgpOworCisgICAgICAgIGlmIChyZWFzb25zRm9yVXBkYXRpbmdTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKSB7CisgICAgICAgICAgICAvLyBXZSdyZSB0cmFuc2l0aW9uaW5n
IHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRoZSBtYWluIHRo
cmVhZCIgbW9kZS4KKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHByb2JhYmxlIG1haW4g
dGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9sbCBsYXllciBwb3Np
dGlvbi4KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+Y2hhbmdlZFByb3BlcnRpZXMoKSAmIFNjcm9s
bGluZ1RyZWVTdGF0ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHN0YXRlLT5yZXF1ZXN0ZWRTY3Jv
bGxQb3NpdGlvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQ0dQb2lu
dCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAg
ICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gSW50UG9p
bnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5zY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBsb2dUaHJlYWRl
ZFNjcm9sbGluZ01vZGUocmVhc29uc0ZvclVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCk7CiAgICAgfQogfQogCkBAIC0yNDAsNyArMjUyLDcgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQogCiAgICAgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyhuZXdTY3JvbGxQb3NpdGlvbik7CiAKLSAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5zY3JvbGxp
bmdQZWZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLT5z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCiAgICAgICAgIGxvZ0V4cG9zZWRV
bmZpbGxlZEFyZWEoKTsKIH0KIApAQCAtMzMwLDYgKzM0MiwzMCBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVOb2RlTWFjOjpsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCkKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJTQ1JPTExJTkc6IEV4cG9zZWQgdGlsZWxlc3MgYXJlYS4gVGltZTogJWYgVW5maWxsZWQgUGl4
ZWxzOiAldVxuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgdW5maWxsZWRB
cmVhKTsKIH0KIAorc3RhdGljIHZvaWQgbG9nVGhyZWFkZWRTY3JvbGxpbmdNb2RlKHVuc2lnbmVk
IHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQpCit7Cisg
ICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQp
IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciByZWFzb25zRGVzY3JpcHRpb247CisKKyAgICAgICAg
aWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICAgICAgcmVh
c29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiZm9yY2VkLCIpOworICAgICAgICBpZiAocmVhc29uc0Zv
clVwZGF0aW5nU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25zRGVzY3Jp
cHRpb24uYXBwZW5kKCJzbG93LXJlcGFpbnQgb2JqZWN0cywiKTsKKyAgICAgICAgaWYgKHJlYXNv
bnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGlu
Z0ZpeGVkTGF5ZXJzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgidmll
d3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKKyAgICAgICAgaWYgKHJlYXNvbnNGb3JVcGRh
dGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMpCisgICAgICAgICAgICByZWFzb25zRGVzY3JpcHRp
b24uYXBwZW5kKCJub24tbGF5ZXIgdmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKKyAg
ICAgICAgaWYgKHJlYXNvbnNGb3JVcGRhdGluZ1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJl
YWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQorICAgICAgICAgICAg
cmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiaW1hZ2UgZG9jdW1lbnQsIik7CisKKyAgICAgICAg
Ly8gU3RyaXAgdGhlIHRyYWlsaW5nIGNvbW1hLgorICAgICAgICBTdHJpbmcgcmVhc29uc0Rlc2Ny
aXB0aW9uVHJpbW1lZCA9IHJlYXNvbnNEZXNjcmlwdGlvbi50b1N0cmluZygpLmxlZnQocmVhc29u
c0Rlc2NyaXB0aW9uLmxlbmd0aCgpIC0gMSk7CisKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JP
TExJTkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWYg
UmVhc29uKHMpOiAlc1xuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgcmVh
c29uc0Rlc2NyaXB0aW9uVHJpbW1lZC5hc2NpaSgpLmRhdGEoKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xs
aW5nIG1vZGUuIFRpbWU6ICVmXG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVB
REVEX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZDEwMzI4Li5kNjYwNzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG9wdGlvbmFsIGRlYnVnIGxvZ2dpbmcgd2hlbiB3
ZSBmYWxsIGludG8vb3V0IG9mIHRocmVhZGVkIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEyMDg5MDk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSB0aGUgc2Nyb2xsaW5nIHRyZWUncyBzY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkIHByZWZlcmVuY2UKKyAgICAgICAgYmVmb3JlIHRoZSBlYXJseS1yZXR1cm4g
aWYgd2UgZG9uJ3QgaGF2ZSBsYXllciBkZWJ1Z2dpbmcgYm9yZGVycyBvbi4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06
CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVQ
cmVmZXJlbmNlcyk6CisKIDIwMTItMDktMTEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMjc1NTM3PiBSRUdSRVNTSU9OKHIx
MjczODQpOiBOb24tZXhpc3RlbnQgZGlyZWN0b3JpZXMgYXJlIG5vIGxvbmdlciBjcmVhdGVkIGZv
ciBzYW5kYm94IHBhdGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQppbmRleCAyODE1NTAzLi42YzcyM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KQEAgLTIwNSw2ICsyMDUsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiBy
ZQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNl
cyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKIHsKKyAgICBib29sIHNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9s
bGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQsIG1fd2ViUGFn
ZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2Nyb2xsaW5nVHJlZSgpLCBz
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKSk7CisKICAgICBib29sIHNob3dEZWJ1
Z0JvcmRlcnMgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0Jv
cmRlcnMoKTsKIAogICAgIGlmIChzaG93RGVidWdCb3JkZXJzID09ICEhbV9kZWJ1Z0luZm9MYXll
cikKQEAgLTIxOCwxMCArMjIxLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYKICAgICAgICAg
bV9kZWJ1Z0luZm9MYXllciA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9vbCBzY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93ZWJQYWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKCk7Ci0KICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQo
JlNjcm9sbGluZ1RyZWU6OnNldERlYnVnUm9vdExheWVyLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgbV9kZWJ1Z0luZm9MYXll
cikpOwotICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5nVHJlZTo6
c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCwgbV93ZWJQYWdlLT5jb3JlUGFn
ZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zY3JvbGxpbmdUcmVlKCksIHNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvblJlZikK
</data>
<flag name="review"
          id="175293"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>