<?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>104764</bug_id>
          
          <creation_ts>2012-12-11 21:55:36 -0800</creation_ts>
          <short_desc>Handling autoscroll in EventHandler should be re-factor</short_desc>
          <delta_ts>2012-12-14 00:33:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104991</dependson>
          <blocked>39725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>789186</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-12-11 21:55:36 -0800</bug_when>
    <thetext>There are number of works regarding auto scrolling, e.g. drag-and-drop with autoscroll, drag-and-drop with gesture, and so on.
It seems code for handling auto scroll will be increased, e.g. https://bugs.webkit.org/attachment.cgi?id=177950&amp;action=prettypatch

To make code of EventHandler clean and extensible, we should factor out autoscroll handling from EventHandler class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789347</commentid>
    <comment_count>1</comment_count>
      <attachid>179003</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-12 01:57:23 -0800</bug_when>
    <thetext>Created attachment 179003
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789349</commentid>
    <comment_count>2</comment_count>
      <attachid>179003</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-12 01:58:40 -0800</bug_when>
    <thetext>Comment on attachment 179003
Patch 1

Could you review this patch?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789359</commentid>
    <comment_count>3</comment_count>
      <attachid>179003</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 02:13:45 -0800</bug_when>
    <thetext>Comment on attachment 179003
Patch 1

Attachment 179003 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15280432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789367</commentid>
    <comment_count>4</comment_count>
      <attachid>179003</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 02:19:00 -0800</bug_when>
    <thetext>Comment on attachment 179003
Patch 1

Attachment 179003 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15280431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789380</commentid>
    <comment_count>5</comment_count>
      <attachid>179010</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-12 02:34:21 -0800</bug_when>
    <thetext>Created attachment 179010
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789381</commentid>
    <comment_count>6</comment_count>
      <attachid>179010</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-12 02:35:31 -0800</bug_when>
    <thetext>Comment on attachment 179010
Patch 2

Could you review this patch?
Thanks in advance.

= Changes from the last patch =
* Fix compilation error on Linux
** Windows compilation was succeeded on Patch 1...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789409</commentid>
    <comment_count>7</comment_count>
      <attachid>179010</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-12 03:10:49 -0800</bug_when>
    <thetext>Comment on attachment 179010
Patch 2

Attachment 179010 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15275617</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789425</commentid>
    <comment_count>8</comment_count>
      <attachid>179010</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 03:37:49 -0800</bug_when>
    <thetext>Comment on attachment 179010
Patch 2

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

&gt; Source/WebCore/page/EventHandler.cpp:1057
&gt;  void EventHandler::stopAutoscrollTimer(bool rendererIsBeingDestroyed)

This is bad. We should make this just a delegation to AutoScrollController then 
AutoScrollController can notify back to event handler to do cleanup.
Hopefully more code could be move to the controller.

&gt; Source/WebCore/page/EventHandler.cpp:3940
&gt; +    , m_eventHandler(eventHandler)

Can we pass this as a function parameter instead of holding this as a member?
Cyclic reference is bad design and should be avoided as much as possible.

&gt; Source/WebCore/page/EventHandler.cpp:4078
&gt; +    bool east = m_panScrollStartPos.x() &lt; (m_eventHandler-&gt;m_currentMousePosition.x() - ScrollView::noPanScrollRadius);

If we can change to pass EventHandler as a parameter. We even no longer need to pass it: We only need to pass m_currentMousePosition and FrameView.

&gt; Source/WebCore/page/EventHandler.h:247
&gt; +    enum AutoscrollType {

I think this is safe to be WebCore global. name looks unique enough.

&gt; Source/WebCore/page/EventHandler.h:255
&gt; +    class AutoscrollController {

Let&apos;s move this out from EventHandler definition. nested class often results maintenance burden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790331</commentid>
    <comment_count>9</comment_count>
      <attachid>179210</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-12 23:37:24 -0800</bug_when>
    <thetext>Created attachment 179210
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790332</commentid>
    <comment_count>10</comment_count>
      <attachid>179211</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-12 23:48:51 -0800</bug_when>
    <thetext>Created attachment 179211
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790342</commentid>
    <comment_count>11</comment_count>
      <attachid>179212</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 00:03:57 -0800</bug_when>
    <thetext>Created attachment 179212
Patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790345</commentid>
    <comment_count>12</comment_count>
      <attachid>179212</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 00:06:18 -0800</bug_when>
    <thetext>Comment on attachment 179212
Patch 5

Could you review this patch?
Thanks in advance.

= Changes since the last review =
* Move AutoscrollController class to its own files.
* Remove m_eventHandler from AutoscrollController
** Using m_autoscrollRenderer-&gt;frame()-&gt;eventHandler() if we needed.
* EventHandler::stopAutoscrollTimer() is just wrapper of AutoscrollController::stopAutoscrollTimer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790368</commentid>
    <comment_count>13</comment_count>
      <attachid>179212</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 00:30:07 -0800</bug_when>
    <thetext>Comment on attachment 179212
Patch 5

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

This looks much better!

&gt; Source/WebCore/page/EventHandler.h:118
&gt; +    AutoscrollController&amp; autoscrollController() { return m_autoscrollController; }

Let&apos;s kill this. We can just provide didPanScrollStop() and didPanScrollStart() or something to limit the usage.

&gt; Source/WebCore/page/EventHandler.h:404
&gt; +    AutoscrollController m_autoscrollController;

And make this OwnPtr. Then we can hide AutoscrollController.h in EventHandler.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790382</commentid>
    <comment_count>14</comment_count>
      <attachid>179224</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 00:54:38 -0800</bug_when>
    <thetext>Created attachment 179224
Patch 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790383</commentid>
    <comment_count>15</comment_count>
      <attachid>179224</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 00:57:41 -0800</bug_when>
    <thetext>Comment on attachment 179224
Patch 6

Could you review this patch?
Thanks in advance.

= Changes since the last review =
* In EventHandler, use OwnPtr for AutoscrollController instead of containment.
* Introduce didPanScrollStart/didPanScrollTop not to exposure AutoscrollControll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790388</commentid>
    <comment_count>16</comment_count>
      <attachid>179224</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 01:02:35 -0800</bug_when>
    <thetext>Comment on attachment 179224
Patch 6

Please wait until bots become green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791163</commentid>
    <comment_count>17</comment_count>
      <attachid>179224</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 17:46:52 -0800</bug_when>
    <thetext>Comment on attachment 179224
Patch 6

Clearing flags on attachment: 179224

Committed r137691: &lt;http://trac.webkit.org/changeset/137691&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791164</commentid>
    <comment_count>18</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-12-13 17:46:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791223</commentid>
    <comment_count>19</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-12-13 18:47:24 -0800</bug_when>
    <thetext>Regression caused:

http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r137691%20(30897)/results.html

platform/win/fast/events/panScroll-click-hyperlink.html	
platform/win/fast/events/panScroll-event-fired.html
platform/win/fast/events/panScroll-nested-divs.html

It says the tests fail because pan scrolling may not be supported on the platform.
However, seeing as this is just a refactor, that does not seem to be the case.

Reopening bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791232</commentid>
    <comment_count>20</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 18:59:20 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Regression caused:
&gt; 
&gt; http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r137691%20(30897)/results.html
&gt; 
&gt; platform/win/fast/events/panScroll-click-hyperlink.html    
&gt; platform/win/fast/events/panScroll-event-fired.html
&gt; platform/win/fast/events/panScroll-nested-divs.html
&gt; 
&gt; It says the tests fail because pan scrolling may not be supported on the platform.
&gt; However, seeing as this is just a refactor, that does not seem to be the case.
&gt; 
&gt; Reopening bug.

Thanks for the taking care of this. Yes, this patch shouldn&apos;t change the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791255</commentid>
    <comment_count>21</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-12-13 19:45:19 -0800</bug_when>
    <thetext>Sorry, rolling out now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791256</commentid>
    <comment_count>22</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-12-13 19:48:01 -0800</bug_when>
    <thetext>Reverted r137691 for reason:

panscroll test on AppleWin failed

Committed r137703: &lt;http://trac.webkit.org/changeset/137703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791330</commentid>
    <comment_count>23</comment_count>
      <attachid>179418</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 22:08:22 -0800</bug_when>
    <thetext>Created attachment 179418
Patch 7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791332</commentid>
    <comment_count>24</comment_count>
      <attachid>179418</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-13 22:11:09 -0800</bug_when>
    <thetext>Comment on attachment 179418
Patch 7

Could you review this patch?
Thanks in advance.

= Changes since the last patch =
* In EventHandler::handleMouseReleaseEvent, calling stopAutoscrollTimer() if autoscroll in progress. Previous patch does&apos;t check it.
** So, during pan-scrolling mouse up stops pan-scrolling, then some tests failed, e.g. panscroll-clicking-hyperlink.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791346</commentid>
    <comment_count>25</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 22:45:41 -0800</bug_when>
    <thetext>On bug 104991, Yoshin is adding a test for Chromium port to cover this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791423</commentid>
    <comment_count>26</comment_count>
      <attachid>179418</attachid>
    <who name="">yosin</who>
    <bug_when>2012-12-14 00:33:27 -0800</bug_when>
    <thetext>Comment on attachment 179418
Patch 7

Clearing flags on attachment: 179418

Committed r137726: &lt;http://trac.webkit.org/changeset/137726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791424</commentid>
    <comment_count>27</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-12-14 00:33:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179003</attachid>
            <date>2012-12-12 01:57:23 -0800</date>
            <delta_ts>2012-12-12 02:34:18 -0800</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-104764-20121212185444.patch</filename>
            <type>text/plain</type>
            <size>29875</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzZTY4Mzk1MWYyMDE5
ZTIxMTNiZDVjMThjMjFlMzI0OTkxODI4NC4uZGYxMmYzZjM3YTVjZWM2NzI5NjVhNjBlMWNhZGQ3
ZmJhYTlkZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2
ZW50SGFuZGxlcik6IENoYW5nZWQgdG8gaW5pdGlhbGl6ZSBBdXRvc2Nyb2xsQ29udHJvbGxlci4K
KyAgICAgICAgKFdlYkNvcmU6OmNhbkF1dG9zY3JvbGwpOiBDaGFuZ2VkIHRvIG1ha2UgaGVscGVy
IGZ1bmN0aW9uIGZvciBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KTogQ2hhbmdlZCB0byB1c2Ug
QXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsSW5Qcm9ncmVzcyk6IGRpdHRvCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIpOiBkaXR0bworICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOiBDaGFuZ2VkIHRvIHVz
ZSBpc01haW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogQ2hhbmdlZCB0byB1c2UgaXNNYWlu
RnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkgYW5kIEF1dG9zY3JvbGxDb250cm9sbGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjppc01haW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jl
c3MpOiBBZGRlZCBmb3IgYXZvaWRpbmcgcmVwZWF0aW5nIHNhbWUgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2V0TWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9ncmVzc0lmTmVl
ZGVkKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KTog
Q2hhbmdlZCB0byB1c2UgaXNNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkuCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xs
Q29udHJvbGxlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpBdXRv
c2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVHlw
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29u
dHJvbGxlcjo6aXNQYW5TY3JvbGxJblByb2dyZXNzKTogQWRkZWQgYXMgaGVscGVyIGZ1bmNpdG9u
LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6
c3RhcnRBdXRvc2Nyb2xsKTogIE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyIGFuZCBjaGFuZ2VkIHRv
IHVzZSBBdXRvc2Nyb2xsVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6QXV0
b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbFRpbWVyKTogTW92ZWQgZnJvbSBFdmVu
dEhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250
cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVy
ZXIpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6QXV0b3Njcm9sbENv
bnRyb2xsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzZXRQYW5TY3JvbGxJblBy
b2dyZXNzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3Jv
bGxDb250cm9sbGVyOjp0aW1lckZpcmVkKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIgYW5kIGNo
YW5nZWQgdG8gdXNlIEF1dG9zY3JvbGxUeXBlLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlUGFuU2Nyb2xsU3RhdGUpOiBNb3ZlZCBm
cm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAoRXZlbnRIYW5kbGVyKTogTW92ZWQgYXV0b3Njcm9sbCBhbmQgcGFuc2Nyb2xsIHJlbGF0ZWQg
ZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgdG8gQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAg
IChBdXRvc2Nyb2xsQ29udHJvbGxlcik6IEFkZGVkIHRvIGhhbmRsZSBhdXRvc2Nyb2xsIGFuZCBw
YW5zY3JvbGwuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxl
ci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZSk6
IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOiBBZGRlZCBuZXcgZnVuY3Rpb25zIGNhbkF1dG9z
Y3JvbGwoKSBhbmQgZmluZEF1dG9zY3JvbGxhYmxlKCkuCisKIDIwMTItMTItMTEgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CiAKICAgICAgICAgQVg6IGFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgc2hvdWxkIGF2b2lkIGNvbXB1dGluZyB0ZXh0VW5kZXJFbGVtZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOGUyZWNlYmVhYzUyYTRiN2MzNjI5OWQz
NmVmNmJhZjBjZWVhMmM1Yy4uNzBjYWM3YzZiMjZiYzFmMGUzYjJiYWNjZTMzYWZjYmY4ODNhMDlm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzMxLDEzICszMzEsOCBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAs
IG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbihmYWxzZSkKICAgICAsIG1fc2Vs
ZWN0aW9uSW5pdGlhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkU2VsZWN0aW9uKQotICAgICwgbV9w
YW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQotICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2Vk
KGZhbHNlKQotICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQog
ICAgICwgbV9ob3ZlclRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCkK
LSAgICAsIG1fYXV0b3Njcm9sbFRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxU
aW1lckZpcmVkKQotICAgICwgbV9hdXRvc2Nyb2xsUmVuZGVyZXIoMCkKLSAgICAsIG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHRoaXMp
CiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91
c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGlt
ZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKQEAg
LTcwMiwyOCArNjk3LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICByZXR1cm4gc3dh
bGxvd0V2ZW50OwogfQogCi0vLyBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIHJlbmRlcmVyIHRoYXQg
Y2FuIGF1dG9zY3JvbGwuCiBzdGF0aWMgYm9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiB7Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgY2FuIGJlIHNjcm9sbGVkIGlu
IGl0cyBvd24gcmlnaHQuCi0gICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3Jv
bGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgcmVwcmVzZW50cyB0aGUgdG9wIGxldmVsIG9mIGEgd2Vi
IHBhZ2UuCi0gICAgLy8gVGhpcyBjYW4gYmUgc2Nyb2xsZWQgYnkgY2FsbGluZyBDaHJvbWU6OnNj
cm9sbFJlY3RJbnRvVmlldy4KLSAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUg
TWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucwotICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3cyBp
bnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCi0gICAgLy8g
VGhlIGNvZGUgZm9yIHRoaXMgaXMgaW4gUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUu
Ci0gICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgIT0gcmVuZGVyZXItPmRvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0g
ZnJhbWU7CisgICAgcmV0dXJuIHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+Y2FuQXV0b3Njcm9sbCgpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAg
LTc1MiwyMCArNzI4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2
ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKIAogICAgIG1fbW91c2VE
b3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiAKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydEF1
dG9zY3JvbGwgJiYgIW1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeyAgICAgICAgICAgIAotICAgICAg
ICAvLyBGaW5kIGEgcmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KLSAgICAgICAgd2hpbGUg
KHJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKHJlbmRlcmVyKSkgewotICAgICAgICAgICAgaWYg
KCFyZW5kZXJlci0+cGFyZW50KCkgJiYgcmVuZGVyZXItPm5vZGUoKSA9PSByZW5kZXJlci0+ZG9j
dW1lbnQoKSAmJiByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAg
ICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkt
PnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChy
ZW5kZXJlcikgewotICAgICAgICAgICAgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0g
ICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRlcmVyKTsKLSAgICAgICAgfQotICAgICAg
ICAKKyAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgJiYgbV9hdXRvc2Nyb2xs
Q29udHJvbGxlci5pc1BhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAoUmVuZGVy
Qm94KiBzY3JvbGxhYmxlID0gUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUocmVuZGVyZXIp
KQorICAgICAgICAgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci5zdGFydEF1dG9zY3JvbGwoQXV0
b3Njcm9sbEZvclNlbGVjdGlvbiwgc2Nyb2xsYWJsZSk7CiAgICAgICAgIG1fbW91c2VEb3duTWF5
U3RhcnRBdXRvc2Nyb2xsID0gZmFsc2U7CiAgICAgfQogCkBAIC05MzMsOCArODk4LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKLSAgICBp
ZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykKLSAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigp
OworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgIGlmIChoYW5kbGVNb3VzZVVwKGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05ODgsMTMyICs5NTIsMjkgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGUKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAotdm9pZCBFdmVudEhh
bmRsZXI6OmhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9s
bCBpZiBpdCdzIGFscmVhZHkgYWN0aXZlCi0gICAgaWYgKG1fYXV0b3Njcm9sbFRpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIHJldHVybjsgICAgIAotCi0gICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVy
KHJlbmRlcmVyKTsKLQotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgIGlmIChtX3BhblNj
cm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9wYW5TY3JvbGxTdGFydFBvcyA9IGN1cnJlbnRN
b3VzZVBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52
aWV3KCkpCi0gICAgICAgICAgICB2aWV3LT5hZGRQYW5TY3JvbGxJY29uKG1fcGFuU2Nyb2xsU3Rh
cnRQb3MpOwotICAgICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIHRvcCBmcmFtZSB3ZSBub3Rp
ZnkgaXQgdGhhdCB3ZSBkb2luZyBhIHBhblNjcm9sbC4KLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKTsKLSAgICAgICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAg
ICAgICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbEluUHJv
Z3Jlc3MgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzdGFydEF1dG9z
Y3JvbGxUaW1lcigpOwotfQotCi12b2lkIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByID0gYXV0b3Nj
cm9sbFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyIHx8ICFyLT5pc0JveCgpKSB7Ci0gICAgICAgIHN0
b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICht
X2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIGlmICghbV9tb3VzZVByZXNzZWQpIHsK
LSAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChyKS0+YXV0b3Njcm9sbCgpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWluIGZyYW1lIGhhc24ndCBy
ZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCi0gICAgICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAg
ICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAg
ICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOwotICAgICAgICB0b1JlbmRlckJveChyKS0+cGFu
U2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotI2VuZGlmCi0gICAgfQotfQotCiAjaWYgRU5B
QkxFKFBBTl9TQ1JPTExJTkcpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGlu
ZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9
IHRydWU7Ci0gICAgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkID0gdHJ1ZTsKLSAgICBoYW5kbGVB
dXRvc2Nyb2xsKHJlbmRlcmVyKTsKKyAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLnN0YXJ0QXV0
b3Njcm9sbChBdXRvc2Nyb2xsRm9yUGFuLCByZW5kZXJlcik7CiAgICAgaW52YWxpZGF0ZUNsaWNr
KCk7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpCi17Ci0g
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlmICghdmlldykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gQXQgdGhlIG9yaWdpbmFsIGNsaWNrIGxvY2F0aW9uIHdl
IGRyYXcgYSA0IGFycm93ZWQgaWNvbi4gT3ZlciB0aGlzIGljb24gdGhlcmUgd29uJ3QgYmUgYW55
IHNjcm9sbAotICAgIC8vIFNvIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBjdXJzb3Igb3Zl
ciB0aGlzIGFyZWEKLSAgICBib29sIGVhc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA8ICht
X2N1cnJlbnRNb3VzZVBvc2l0aW9uLngoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVz
KTsKLSAgICBib29sIHdlc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA+IChtX2N1cnJlbnRN
b3VzZVBvc2l0aW9uLngoKSArIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKLSAgICBi
b29sIG5vcnRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55KCkgPiAobV9jdXJyZW50TW91c2VQb3Np
dGlvbi55KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9vbCBzb3V0
aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpIDwgKG1fY3VycmVudE1vdXNlUG9zaXRpb24ueSgp
IC0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgICAgICAgCi0gICAgaWYgKChl
YXN0IHx8IHdlc3QgfHwgbm9ydGggfHwgc291dGgpICYmIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3Nl
ZCkKLSAgICAgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLQot
ICAgIGlmIChub3J0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAgICAgICAgICAgIHZpZXctPnNl
dEN1cnNvcihub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBlbHNlIGlmICh3ZXN0
KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0aFBhbm5pbmdD
dXJzb3IoKSk7Ci0gICAgfSBlbHNlIGlmIChzb3V0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAg
ICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAg
ICAgICBlbHNlIGlmICh3ZXN0KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoV2Vz
dFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1
cnNvcihzb3V0aFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgfSBlbHNlIGlmIChlYXN0KQotICAgICAg
ICB2aWV3LT5zZXRDdXJzb3IoZWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgZWxzZSBpZiAod2Vz
dCkKLSAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHdlc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgIGVs
c2UKLSAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1pZGRsZVBhbm5pbmdDdXJzb3IoKSk7Ci19Ci0K
ICNlbmRpZiAvLyBFTkFCTEUoUEFOX1NDUk9MTElORykKIAogUmVuZGVyT2JqZWN0KiBFdmVudEhh
bmRsZXI6OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyOworICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLmF1dG9zY3Jv
bGxSZW5kZXJlcigpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJl
bmRlcmVyKCkKIHsKLSAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludCht
X3BhblNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKLQotICAgIGlmIChOb2RlKiBub2RlQXRQb2ludCA9
IGhpdFRlc3QuaW5uZXJOb2RlKCkpCi0gICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gbm9k
ZUF0UG9pbnQtPnJlbmRlcmVyKCk7Ci0KLSAgICB3aGlsZSAobV9hdXRvc2Nyb2xsUmVuZGVyZXIg
JiYgIWNhbkF1dG9zY3JvbGwobV9hdXRvc2Nyb2xsUmVuZGVyZXIpKQotICAgICAgICBtX2F1dG9z
Y3JvbGxSZW5kZXJlciA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICBtX2F1
dG9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogfQogCi12b2lk
IEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCitib29sIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogewot
ICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgcmV0dXJuIG1fYXV0b3Nj
cm9sbENvbnRyb2xsZXIuYXV0b3Njcm9sbFR5cGUoKSA9PSBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9u
OwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTExOTMsNTAgKzEwNTQsMzYgQEAg
SGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLQotdm9pZCBF
dmVudEhhbmRsZXI6OnN0YXJ0QXV0b3Njcm9sbFRpbWVyKCkKLXsKLSAgICBtX2F1dG9zY3JvbGxU
aW1lci5zdGFydFJlcGVhdGluZyhhdXRvc2Nyb2xsSW50ZXJ2YWwpOwotfQotCiB2b2lkIEV2ZW50
SGFuZGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3ll
ZCkKIHsKLSAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykgeworICAgIHN3aXRjaCAobV9h
dXRvc2Nyb2xsQ29udHJvbGxlci5hdXRvc2Nyb2xsVHlwZSgpKSB7CisgICAgY2FzZSBOb0F1dG9z
Y3JvbGw6CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlv
bjoKICAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSkgewogICAgICAgICAgICAg
aWYgKEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtX21vdXNlUHJlc3NO
b2RlLmdldCgpKSkKICAgICAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnN0
b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRvc2Nyb2xsUmVuZGVyZXIo
KSkgewotICAgICAgICBpZiAoIXJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiAobV9hdXRvc2Ny
b2xsSW5Qcm9ncmVzcyB8fCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MpKQorICAgICAgICBpZiAoIXJl
bmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSkKICAgICAgICAg
ICAgIHRvUmVuZGVyQm94KGF1dG9zY3JvbGxSZW5kZXJlcigpKS0+c3RvcEF1dG9zY3JvbGwoKTsK
KyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICAgICAgaWYg
KG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUtPnZpZXcoKSkgewotICAgICAgICAgICAgICAgIHZpZXctPnJlbW92ZVBhblNj
cm9sbEljb24oKTsKLSAgICAgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNv
cigpKTsKLSAgICAgICAgICAgIH0KKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JQYW46CisgICAgICAg
IGlmICghcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkICYmIGF1dG9zY3JvbGxSZW5kZXJlcigpKQor
ICAgICAgICAgICAgdG9SZW5kZXJCb3goYXV0b3Njcm9sbFJlbmRlcmVyKCkpLT5zdG9wQXV0b3Nj
cm9sbCgpOworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKSB7
CisgICAgICAgICAgICB2aWV3LT5yZW1vdmVQYW5TY3JvbGxJY29uKCk7CisgICAgICAgICAgICB2
aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKICAgICAgICAgfQorICAgICAgICBzZXRN
YWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzSWZOZWVkZWQoZmFsc2UpOwogI2VuZGlmCi0KLSAg
ICAgICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKDApOwotICAgIH0KLQotICAgIG1fYXV0b3Njcm9s
bFRpbWVyLnN0b3AoKTsKLQotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAg
IG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotCi0gICAgLy8gSWYg
d2UncmUgbm90IGluIHRoZSB0b3AgZnJhbWUgd2Ugbm90aWZ5IGl0IHRoYXQgd2UgYXJlIG5vdCBk
b2luZyBhIHBhblNjcm9sbCBhbnkgbW9yZS4KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkgewotICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
Ci0gICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAgICAgICAgICAgIG1haW5GcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBtX2F1dG9zY3JvbGxJblByb2dyZXNzID0gZmFsc2U7Cisg
ICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiB9CiAKIE5v
ZGUqIEV2ZW50SGFuZGxlcjo6bW91c2VQcmVzc05vZGUoKSBjb25zdApAQCAtMTQxOSw3ICsxMjY2
LDcgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXYKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIE5vQ3Vyc29yQ2hhbmdlOwot
ICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Q
cm9ncmVzcykKKyAgICBpZiAoaXNNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBOb0N1cnNvckNoYW5nZTsKIAogICAgIE5vZGUqIG5vZGUgPSBldmVudC50YXJn
ZXROb2RlKCk7CkBAIC0xNjUxLDEwICsxNDk4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAK
ICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKICAgICAvLyBXZSBzdG9yZSB3aGV0aGVyIHBhbiBz
Y3JvbGxpbmcgaXMgaW4gcHJvZ3Jlc3MgYmVmb3JlIGNhbGxpbmcgc3RvcEF1dG9zY3JvbGxUaW1l
cigpCi0gICAgLy8gYmVjYXVzZSBpdCB3aWxsIHNldCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgdG8g
ZmFsc2Ugb24gcmV0dXJuLgotICAgIGJvb2wgaXNQYW5TY3JvbGxJblByb2dyZXNzID0gbV9mcmFt
ZS0+cGFnZSgpICYmIG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5tX3BhblNjcm9sbEluUHJvZ3Jlc3M7Ci0gICAgaWYgKGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyB8
fCBtX2F1dG9zY3JvbGxJblByb2dyZXNzKQotICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7
CisgICAgLy8gYmVjYXVzZSBpdCB3aWxsIHNldCBtX2F1dG9zY3JvbGxUeXBlIHRvIE5vQXV0b3Nj
cm9sbCBvbiByZXR1cm4uCisgICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBpc01haW5G
cmFtZVBhblNjcm9sbEluUHJvZ3Jlc3MoKTsKKyAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAg
ICAgaWYgKGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcykgewogICAgICAgICAvLyBXZSBpbnZhbGlkYXRl
IHRoZSBjbGljayB3aGVuIGV4aXRpbmcgcGFuIHNjcm9sbGluZyBzbyB0aGF0IHdlIGRvbid0IGlu
YWR2ZXJ0ZW50bHkgbmF2aWdhdGUKICAgICAgICAgLy8gYXdheSBmcm9tIHRoZSBjdXJyZW50IHBh
Z2UgKGUuZy4gdGhlIGNsaWNrIHdhcyBvbiBhIGh5cGVybGluaykuIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNjA5NTAyMz4uCkBAIC0xOTUwLDEwICsxNzk2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVu
dCkKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAg
aWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQotICAgICAgICBtX3BhblNj
cm9sbEJ1dHRvblByZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAobV9zcHJpbmdMb2FkZWRQYW5TY3Jv
bGxJblByb2dyZXNzKQotICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgbV9hdXRv
c2Nyb2xsQ29udHJvbGxlci5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICNl
bmRpZgogCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTI3NDgsNiArMjU5MSwyNiBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRl
eHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdAogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoUEFOX1ND
Uk9MTElORykKK2Jvb2wgRXZlbnRIYW5kbGVyOjppc01haW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jl
c3MoKSBjb25zdAoreworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgcmV0
dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX2F1dG9zY3Jv
bGxDb250cm9sbGVyLmlzUGFuU2Nyb2xsSW5Qcm9ncmVzcygpOworfQorCisvLyBJZiB3ZSdyZSBu
b3QgaW4gdGhlIHRvcCBmcmFtZSB3ZSBub3RpZnkgaXQgdGhhdCB3ZSBkb2luZyBhIHBhblNjcm9s
bC4KK3ZvaWQgRXZlbnRIYW5kbGVyOjpzZXRNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzSWZO
ZWVkZWQoYm9vbCBpblByb2dyZXNzKQoreworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSogbWFpbkZy
YW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKG1fZnJhbWUgIT0gbWFpbkZyYW1lKQor
ICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tX2F1dG9zY3JvbGxDb250cm9sbGVy
LnNldFBhblNjcm9sbEluUHJvZ3Jlc3MoaW5Qcm9ncmVzcyk7Cit9CisjZW5kaWYKKwogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUZvclRl
eHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGdlc3R1cmVFdmVudCk7CkBAIC0zMTQwLDE1ICszMDAz
LDEzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAgICAgICAgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFu
Z2VkKCk7CiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5tX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgICAgIC8vIElmIGEg
a2V5IGlzIHByZXNzZWQgd2hpbGUgdGhlIHBhblNjcm9sbCBpcyBpbiBwcm9ncmVzcyB0aGVuIHdl
IHdhbnQgdG8gc3RvcAotICAgICAgICAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6OlJhd0tleURvd24pIAotICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGlt
ZXIoKTsKKyAgICBpZiAoaXNNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKKyAgICAg
ICAgLy8gSWYgYSBrZXkgaXMgcHJlc3NlZCB3aGlsZSB0aGUgcGFuU2Nyb2xsIGlzIGluIHByb2dy
ZXNzIHRoZW4gd2Ugd2FudCB0byBzdG9wCisgICAgICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlw
ZSgpID09IFBsYXRmb3JtRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSAKKyAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xs
VGltZXIoKTsKIAotICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBpbiBwYW5zY3JvbGwgbW9kZSwg
d2Ugc3dhbGxvdyB0aGUga2V5IGV2ZW50Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQorICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBtb2RlLCB3ZSBzd2FsbG93
IHRoZSBrZXkgZXZlbnQKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTQwNzAsNCArMzkzMSwxNzQgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoU3ludGhldGlj
VG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQKIAogI2VuZGlmCiAK
Ky8vIEV2ZW50SGFuZGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24KK0V2
ZW50SGFuZGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKQorICAgIDogbV9hdXRvc2Nyb2xsVGltZXIodGhpcywg
JkF1dG9zY3JvbGxDb250cm9sbGVyOjp0aW1lckZpcmVkKQorICAgICwgbV9hdXRvc2Nyb2xsUmVu
ZGVyZXIoMCkKKyAgICAsIG1fZXZlbnRIYW5kbGVyKGV2ZW50SGFuZGxlcikKKyAgICAsIG1fYXV0
b3Njcm9sbFR5cGUoTm9BdXRvc2Nyb2xsKQorI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAg
ICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkKGZhbHNlKQorICAgICwgbV9zcHJpbmdMb2FkZWRQ
YW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQorI2VuZGlmCit7Cit9CisKK1JlbmRlck9iamVjdCog
RXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9hdXRvc2Nyb2xsUmVuZGVyZXI7Cit9CisKK0V2ZW50SGFu
ZGxlcjo6QXV0b3Njcm9sbFR5cGUgRXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6
YXV0b3Njcm9sbFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxUeXBlOwor
fQorCitib29sIEV2ZW50SGFuZGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmlzUGFuU2Nyb2xs
SW5Qcm9ncmVzcygpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgcmV0
dXJuIG1fYXV0b3Njcm9sbFR5cGUgPT0gQXV0b3Njcm9sbEZvclBhbjsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29u
dHJvbGxlcjo6c3RhcnRBdXRvc2Nyb2xsKEF1dG9zY3JvbGxUeXBlIGF1dG9zY3JvbGxUeXBlLCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBhdXRvc2Ny
b2xsVHlwZTsKKworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciB0aGUgYXV0b3Njcm9s
bCBvciB0aGUgcGFuU2Nyb2xsIGlmIGl0J3MgYWxyZWFkeSBhY3RpdmUKKyAgICBpZiAobV9hdXRv
c2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdXRvc2Ny
b2xsUmVuZGVyZXIgPSByZW5kZXJlcjsKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICBp
ZiAobV9hdXRvc2Nyb2xsVHlwZSA9PSBBdXRvc2Nyb2xsRm9yUGFuKSB7CisgICAgICAgIG1fcGFu
U2Nyb2xsQnV0dG9uUHJlc3NlZCA9IHRydWU7CisgICAgICAgIG1fcGFuU2Nyb2xsU3RhcnRQb3Mg
PSBtX2V2ZW50SGFuZGxlci0+Y3VycmVudE1vdXNlUG9zaXRpb24oKTsKKyAgICAgICAgaWYgKEZy
YW1lVmlldyogdmlldyA9IG1fZXZlbnRIYW5kbGVyLT5tX2ZyYW1lLT52aWV3KCkpCisgICAgICAg
ICAgICB2aWV3LT5hZGRQYW5TY3JvbGxJY29uKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOworICAgICAg
ICBtX2V2ZW50SGFuZGxlci0+c2V0TWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9ncmVzc0lmTmVlZGVk
KHRydWUpOworICAgIH0KKyNlbmRpZgorICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Cit9CisK
K3ZvaWQgRXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRBdXRvc2Nyb2xs
VGltZXIoKQoreworICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0YXJ0UmVwZWF0aW5nKGF1dG9zY3Jv
bGxJbnRlcnZhbCk7Cit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6c3RvcEF1dG9zY3JvbGxUaW1lcigpCit7CisgICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RvcCgp
OworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBOb0F1dG9zY3JvbGw7CisgICAgbV9hdXRvc2Nyb2xs
UmVuZGVyZXIgPSAwOworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIG1fcGFuU2Nyb2xs
QnV0dG9uUHJlc3NlZCA9IGZhbHNlOworICAgIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9n
cmVzcyA9IGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xs
Q29udHJvbGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCkKK3sKKyAgICBpZiAoIW1fYXV0
b3Njcm9sbFJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoUEFOX1NDUk9M
TElORykKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBtX2V2ZW50SGFuZGxlci0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQobV9wYW5TY3JvbGxTdGFydFBvcywgdHJ1ZSk7CisgICAgaWYgKE5vZGUq
IG5vZGVBdFBvaW50ID0gaGl0VGVzdC5pbm5lck5vZGUoKSkKKyAgICAgICAgbV9hdXRvc2Nyb2xs
UmVuZGVyZXIgPSBub2RlQXRQb2ludC0+cmVuZGVyZXIoKTsKKyNlbmRpZgorCisgICAgd2hpbGUg
KG1fYXV0b3Njcm9sbFJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKG1fYXV0b3Njcm9sbFJlbmRl
cmVyKSkKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBtX2F1dG9zY3JvbGxSZW5kZXJl
ci0+cGFyZW50KCk7Cit9CisKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKK3ZvaWQgRXZlbnRI
YW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQoreworICAgIGlmIChtb3VzZUV2ZW50
LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbikKKyAgICAgICAgbV9wYW5TY3JvbGxCdXR0b25QcmVz
c2VkID0gZmFsc2U7CisgICAgaWYgKG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcykK
KyAgICAgICAgbV9ldmVudEhhbmRsZXItPnN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKK30KKwordm9p
ZCBFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzZXRQYW5TY3JvbGxJblByb2dy
ZXNzKGJvb2wgaW5Qcm9ncmVzcykKK3sKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gaW5Qcm9ncmVz
cyA/IEF1dG9zY3JvbGxGb3JQYW4gOiBOb0F1dG9zY3JvbGw7Cit9CisjZW5kaWYKKwordm9pZCBF
dmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPEF1dG9z
Y3JvbGxDb250cm9sbGVyPiopCit7CisgICAgUmVuZGVyT2JqZWN0KiByID0gYXV0b3Njcm9sbFJl
bmRlcmVyKCk7CisgICAgaWYgKCFyIHx8ICFyLT5pc0JveCgpKSB7CisgICAgICAgIG1fZXZlbnRI
YW5kbGVyLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzd2l0Y2ggKG1fYXV0b3Njcm9sbFR5cGUpIHsKKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JT
ZWxlY3Rpb246CisgICAgICAgIGlmICghbV9ldmVudEhhbmRsZXItPm1fbW91c2VQcmVzc2VkKSB7
CisgICAgICAgICAgICBtX2V2ZW50SGFuZGxlci0+c3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRvUmVuZGVyQm94KHIpLT5hdXRv
c2Nyb2xsKCk7CisgICAgICAgIGJyZWFrOworCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisg
ICAgY2FzZSBBdXRvc2Nyb2xsRm9yUGFuOgorICAgICAgICAvLyB3ZSB2ZXJpZnkgdGhhdCB0aGUg
bWFpbiBmcmFtZSBoYXNuJ3QgcmVjZWl2ZWQgdGhlIG9yZGVyIHRvIHN0b3AgdGhlIHBhblNjcm9s
bAorICAgICAgICBpZiAobV9ldmVudEhhbmRsZXItPmlzTWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9n
cmVzcygpKSB7CisgICAgICAgICAgICBtX2V2ZW50SGFuZGxlci0+c3RvcEF1dG9zY3JvbGxUaW1l
cigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZVBhblNj
cm9sbFN0YXRlKCk7CisgICAgICAgIHRvUmVuZGVyQm94KHIpLT5wYW5TY3JvbGwobV9wYW5TY3Jv
bGxTdGFydFBvcyk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisjaWYgRU5B
QkxFKFBBTl9TQ1JPTExJTkcpCit2b2lkIEV2ZW50SGFuZGxlcjo6QXV0b3Njcm9sbENvbnRyb2xs
ZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKCkKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2V2
ZW50SGFuZGxlci0+bV9mcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gQXQgdGhlIG9yaWdpbmFsIGNsaWNrIGxvY2F0aW9uIHdlIGRyYXcgYSA0
IGFycm93ZWQgaWNvbi4gT3ZlciB0aGlzIGljb24gdGhlcmUgd29uJ3QgYmUgYW55IHNjcm9sbAor
ICAgIC8vIFNvIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBjdXJzb3Igb3ZlciB0aGlzIGFy
ZWEKKyAgICBib29sIGVhc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA8IChtX2V2ZW50SGFu
ZGxlci0+bV9jdXJyZW50TW91c2VQb3NpdGlvbi54KCkgLSBTY3JvbGxWaWV3Ojpub1BhblNjcm9s
bFJhZGl1cyk7CisgICAgYm9vbCB3ZXN0ID0gbV9wYW5TY3JvbGxTdGFydFBvcy54KCkgPiAobV9l
dmVudEhhbmRsZXItPm1fY3VycmVudE1vdXNlUG9zaXRpb24ueCgpICsgU2Nyb2xsVmlldzo6bm9Q
YW5TY3JvbGxSYWRpdXMpOworICAgIGJvb2wgbm9ydGggPSBtX3BhblNjcm9sbFN0YXJ0UG9zLnko
KSA+IChtX2V2ZW50SGFuZGxlci0+bV9jdXJyZW50TW91c2VQb3NpdGlvbi55KCkgKyBTY3JvbGxW
aWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7CisgICAgYm9vbCBzb3V0aCA9IG1fcGFuU2Nyb2xsU3Rh
cnRQb3MueSgpIDwgKG1fZXZlbnRIYW5kbGVyLT5tX2N1cnJlbnRNb3VzZVBvc2l0aW9uLnkoKSAt
IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKworICAgIGlmICgoZWFzdCB8fCB3ZXN0
IHx8IG5vcnRoIHx8IHNvdXRoKSAmJiBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQpCisgICAgICAg
IG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7CisKKyAgICBpZiAobm9y
dGgpIHsKKyAgICAgICAgaWYgKGVhc3QpCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9y
dGhFYXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZSBpZiAod2VzdCkKKyAgICAgICAg
ICAgIHZpZXctPnNldEN1cnNvcihub3J0aFdlc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhQYW5uaW5nQ3Vyc29yKCkpOwor
ICAgIH0gZWxzZSBpZiAoc291dGgpIHsKKyAgICAgICAgaWYgKGVhc3QpCisgICAgICAgICAgICB2
aWV3LT5zZXRDdXJzb3Ioc291dGhFYXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZSBp
ZiAod2VzdCkKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aFdlc3RQYW5uaW5nQ3Vy
c29yKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhQ
YW5uaW5nQ3Vyc29yKCkpOworICAgIH0gZWxzZSBpZiAoZWFzdCkKKyAgICAgICAgdmlldy0+c2V0
Q3Vyc29yKGVhc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgIGVsc2UgaWYgKHdlc3QpCisgICAgICAg
IHZpZXctPnNldEN1cnNvcih3ZXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICBlbHNlCisgICAgICAg
IHZpZXctPnNldEN1cnNvcihtaWRkbGVQYW5uaW5nQ3Vyc29yKCkpOworfQorI2VuZGlmIC8vIEVO
QUJMRShQQU5fU0NST0xMSU5HKQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRl
eCBjOWY4ZTZkYmY0Y2NiNTFiYWFkM2Y5YzMxM2M4MTU4ODg2OTk0Y2I0Li40YjAwNzBlNWIzMzEw
ZmY3MDEyN2M3ZDAyYWE4ODcyNDVlNjc4OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRp
bWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOwogICAgIFJlbmRlck9i
amVjdCogYXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Ny
b2xsUmVuZGVyZXIoKTsKLSAgICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsgfQorICAgIGJvb2wgYXV0b3Njcm9sbEluUHJv
Z3Jlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29u
KCk7CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3Qg
RmxvYXRRdWFkJik7CkBAIC0yNDQsNiArMjQ0LDQ1IEBAIHB1YmxpYzoKICAgICBib29sIHVzZUhh
bmRDdXJzb3IoTm9kZSosIGJvb2wgaXNPdmVyTGluaywgYm9vbCBzaGlmdEtleSk7CiAKIHByaXZh
dGU6CisgICAgZW51bSBBdXRvc2Nyb2xsVHlwZSB7CisgICAgICAgIE5vQXV0b3Njcm9sbCwKKyAg
ICAgICAgQXV0b3Njcm9sbEZvclNlbGVjdGlvbiwKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykK
KyAgICAgICAgQXV0b3Njcm9sbEZvclBhbiwKKyNlbmRpZgorICAgIH07CisKKyAgICBjbGFzcyBB
dXRvc2Nyb2xsQ29udHJvbGxlciB7CisgICAgcHVibGljOgorICAgICAgICBBdXRvc2Nyb2xsQ29u
dHJvbGxlcihFdmVudEhhbmRsZXIqKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBFdmVudEhhbmRs
ZXI6OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0OworICAgICAgICBBdXRvc2Nyb2xsVHlwZSBh
dXRvc2Nyb2xsVHlwZSgpIGNvbnN0OworICAgICAgICBib29sIGlzUGFuU2Nyb2xsSW5Qcm9ncmVz
cygpIGNvbnN0OworICAgICAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbChBdXRvc2Nyb2xsVHlwZSwg
UmVuZGVyT2JqZWN0Kik7CisgICAgICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsVGltZXIoKTsKKyAg
ICAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgIHZvaWQgdXBkYXRlQXV0
b3Njcm9sbFJlbmRlcmVyKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgICAgIHZv
aWQgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Cisg
ICAgICAgIHZvaWQgc2V0UGFuU2Nyb2xsSW5Qcm9ncmVzcyhib29sKTsKKyNlbmRpZgorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEF1dG9zY3JvbGxDb250cm9s
bGVyPiopOworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgICAgICB2b2lkIHVwZGF0ZVBh
blNjcm9sbFN0YXRlKCk7CisjZW5kaWYKKyAgICAgICAgVGltZXI8QXV0b3Njcm9sbENvbnRyb2xs
ZXI+IG1fYXV0b3Njcm9sbFRpbWVyOworICAgICAgICBSZW5kZXJPYmplY3QqIG1fYXV0b3Njcm9s
bFJlbmRlcmVyOworICAgICAgICBFdmVudEhhbmRsZXIqIG1fZXZlbnRIYW5kbGVyOworICAgICAg
ICBBdXRvc2Nyb2xsVHlwZSBtX2F1dG9zY3JvbGxUeXBlOworI2lmIEVOQUJMRShQQU5fU0NST0xM
SU5HKQorICAgICAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOworICAgICAgICBib29s
IG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZDsKKyAgICAgICAgYm9vbCBtX3NwcmluZ0xvYWRlZFBh
blNjcm9sbEluUHJvZ3Jlc3M7CisjZW5kaWYKKyAgICB9OworCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKICAgICBzdGF0aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKICAgICBzdGF0aWMgY29u
c3QgZG91YmxlIFRleHREcmFnRGVsYXk7CkBAIC0yNjksMTYgKzMwOCw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJik7CiAKICAgICBPcHRpb25hbEN1cnNvciBzZWxlY3RDdXJzb3IoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIFNjcm9sbGJhciopOwotI2lmIEVOQUJMRShQQU5f
U0NST0xMSU5HKQotICAgIHZvaWQgdXBkYXRlUGFuU2Nyb2xsU3RhdGUoKTsKLSNlbmRpZgotCiAg
ICAgdm9pZCBob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopOwogCi0gICAgdm9p
ZCBoYW5kbGVBdXRvc2Nyb2xsKFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgc3RhcnRBdXRvc2Ny
b2xsVGltZXIoKTsKLSAgICB2b2lkIHNldEF1dG9zY3JvbGxSZW5kZXJlcihSZW5kZXJPYmplY3Qq
KTsKLSAgICB2b2lkIGF1dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKTsK
ICAgICBib29sIGxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7CiAgICAgCiAgICAgYm9v
bCBzaG91bGRUdXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBjb25zdDsKQEAgLTM4MCw2ICs0MTEsMTEg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250
ZXh0TWVudShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKKyAgICBib29sIGlzTWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9ncmVz
cygpIGNvbnN0OworICAgIHZvaWQgc2V0TWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9ncmVzc0lmTmVl
ZGVkKGJvb2wpOworI2VuZGlmCisKICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAgIGJvb2wgbV9t
b3VzZVByZXNzZWQ7CkBAIC0zOTksMTcgKzQzNSwxMSBAQCBwcml2YXRlOgogICAgIExheW91dFBv
aW50IG1fZHJhZ1N0YXJ0UG9zOwogI2VuZGlmCiAKLSAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0
YXJ0UG9zOwotICAgIGJvb2wgbV9wYW5TY3JvbGxJblByb2dyZXNzOwotCiAgICAgYm9vbCBtX3Bh
blNjcm9sbEJ1dHRvblByZXNzZWQ7Ci0gICAgYm9vbCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbElu
UHJvZ3Jlc3M7CiAKICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1faG92ZXJUaW1lcjsKLSAgICAK
LSAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwotICAgIFJlbmRlck9i
amVjdCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7Ci0gICAgYm9vbCBtX2F1dG9zY3JvbGxJblByb2dy
ZXNzOworCisgICAgQXV0b3Njcm9sbENvbnRyb2xsZXIgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcjsK
ICAgICBib29sIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9tb3Vz
ZURvd25XYXNJblN1YmZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IGJiNDQ1NjBmMTA5NmI2ZWNiZjU2OWUzYzRkODViMjYxNGIxNjMyZDcuLjU1MzE3NzRm
ZWMzODkwYzgyZDU3ZGQxYjBjZjViY2NhMWI4MWRjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAt
NjM1LDYgKzYzNiwzOSBAQCB2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCiAgICAgICAgIGxh
eWVyKCktPmF1dG9zY3JvbGwoKTsKIH0KIAorLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5k
ZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgorYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwo
KSBjb25zdAoreworICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBzY3JvbGxlZCBp
biBpdHMgb3duIHJpZ2h0LgorICAgIGlmIChjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFy
ZWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhh
dCByZXByZXNlbnRzIHRoZSB0b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KKyAgICAvLyBUaGlzIGNh
biBiZSBzY3JvbGxlZCBieSBjYWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgorICAg
IC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGlj
YXRpb25zCisgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5l
cnMsIHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KKyAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBp
biBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4KKyAgICBpZiAobm9kZSgpICE9IGRv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlz
LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQ
YWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWlu
RnJhbWUoKSA9PSBmcmFtZTsKK30KKworUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Ny
b2xsYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChyZW5kZXJlciAm
JiByZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkF1dG9zY3Jv
bGwoKSkgeworICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9k
ZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkt
Pm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworfQor
CiB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3VyY2UpCiB7CiAg
ICAgaWYgKGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNGUy
MTU4ZWRmYzRmNTM4ZDlmNDU0MjlkNDNjZjEyYjU4MjMzYTY3Ni4uMjFiM2MwYWU0MmYxMGQ1OWIx
OTRlNzE2YjNiOGE3MTc0NGViYjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aApAQCAtNDM5LDYgKzQzOSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1h
dGljYWxseVNjcm9sbGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsK
KyAgICBib29sIGNhbkF1dG9zY3JvbGwoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVuZGVyQm94KiBm
aW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BB
dXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2lu
dCYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179010</attachid>
            <date>2012-12-12 02:34:21 -0800</date>
            <delta_ts>2012-12-12 23:37:21 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-104764-20121212193141.patch</filename>
            <type>text/plain</type>
            <size>29998</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzZTY4Mzk1MWYyMDE5
ZTIxMTNiZDVjMThjMjFlMzI0OTkxODI4NC4uZGYxMmYzZjM3YTVjZWM2NzI5NjVhNjBlMWNhZGQ3
ZmJhYTlkZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2
ZW50SGFuZGxlcik6IENoYW5nZWQgdG8gaW5pdGlhbGl6ZSBBdXRvc2Nyb2xsQ29udHJvbGxlci4K
KyAgICAgICAgKFdlYkNvcmU6OmNhbkF1dG9zY3JvbGwpOiBDaGFuZ2VkIHRvIG1ha2UgaGVscGVy
IGZ1bmN0aW9uIGZvciBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KTogQ2hhbmdlZCB0byB1c2Ug
QXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsSW5Qcm9ncmVzcyk6IGRpdHRvCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIpOiBkaXR0bworICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOiBDaGFuZ2VkIHRvIHVz
ZSBpc01haW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogQ2hhbmdlZCB0byB1c2UgaXNNYWlu
RnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkgYW5kIEF1dG9zY3JvbGxDb250cm9sbGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjppc01haW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jl
c3MpOiBBZGRlZCBmb3IgYXZvaWRpbmcgcmVwZWF0aW5nIHNhbWUgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2V0TWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9ncmVzc0lmTmVl
ZGVkKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KTog
Q2hhbmdlZCB0byB1c2UgaXNNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkuCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpBdXRvc2Nyb2xs
Q29udHJvbGxlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpBdXRv
c2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVHlw
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29u
dHJvbGxlcjo6aXNQYW5TY3JvbGxJblByb2dyZXNzKTogQWRkZWQgYXMgaGVscGVyIGZ1bmNpdG9u
LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6
c3RhcnRBdXRvc2Nyb2xsKTogIE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyIGFuZCBjaGFuZ2VkIHRv
IHVzZSBBdXRvc2Nyb2xsVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6QXV0
b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbFRpbWVyKTogTW92ZWQgZnJvbSBFdmVu
dEhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250
cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVy
ZXIpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6QXV0b3Njcm9sbENv
bnRyb2xsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzZXRQYW5TY3JvbGxJblBy
b2dyZXNzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkF1dG9zY3Jv
bGxDb250cm9sbGVyOjp0aW1lckZpcmVkKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIgYW5kIGNo
YW5nZWQgdG8gdXNlIEF1dG9zY3JvbGxUeXBlLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlUGFuU2Nyb2xsU3RhdGUpOiBNb3ZlZCBm
cm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAoRXZlbnRIYW5kbGVyKTogTW92ZWQgYXV0b3Njcm9sbCBhbmQgcGFuc2Nyb2xsIHJlbGF0ZWQg
ZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgdG8gQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAg
IChBdXRvc2Nyb2xsQ29udHJvbGxlcik6IEFkZGVkIHRvIGhhbmRsZSBhdXRvc2Nyb2xsIGFuZCBw
YW5zY3JvbGwuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxl
ci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZSk6
IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOiBBZGRlZCBuZXcgZnVuY3Rpb25zIGNhbkF1dG9z
Y3JvbGwoKSBhbmQgZmluZEF1dG9zY3JvbGxhYmxlKCkuCisKIDIwMTItMTItMTEgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CiAKICAgICAgICAgQVg6IGFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgc2hvdWxkIGF2b2lkIGNvbXB1dGluZyB0ZXh0VW5kZXJFbGVtZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOGUyZWNlYmVhYzUyYTRiN2MzNjI5OWQz
NmVmNmJhZjBjZWVhMmM1Yy4uNzQyMDYzZTY5ZjBiZjBmM2IyMzlmZGNmMWFkM2JjMTliOTNiYzBl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzMxLDEzICszMzEsOCBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAs
IG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbihmYWxzZSkKICAgICAsIG1fc2Vs
ZWN0aW9uSW5pdGlhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkU2VsZWN0aW9uKQotICAgICwgbV9w
YW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQotICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2Vk
KGZhbHNlKQotICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQog
ICAgICwgbV9ob3ZlclRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCkK
LSAgICAsIG1fYXV0b3Njcm9sbFRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxU
aW1lckZpcmVkKQotICAgICwgbV9hdXRvc2Nyb2xsUmVuZGVyZXIoMCkKLSAgICAsIG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHRoaXMp
CiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91
c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGlt
ZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKQEAg
LTcwMiwyOCArNjk3LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICByZXR1cm4gc3dh
bGxvd0V2ZW50OwogfQogCi0vLyBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIHJlbmRlcmVyIHRoYXQg
Y2FuIGF1dG9zY3JvbGwuCiBzdGF0aWMgYm9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiB7Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgY2FuIGJlIHNjcm9sbGVkIGlu
IGl0cyBvd24gcmlnaHQuCi0gICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3Jv
bGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgcmVwcmVzZW50cyB0aGUgdG9wIGxldmVsIG9mIGEgd2Vi
IHBhZ2UuCi0gICAgLy8gVGhpcyBjYW4gYmUgc2Nyb2xsZWQgYnkgY2FsbGluZyBDaHJvbWU6OnNj
cm9sbFJlY3RJbnRvVmlldy4KLSAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUg
TWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucwotICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3cyBp
bnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCi0gICAgLy8g
VGhlIGNvZGUgZm9yIHRoaXMgaXMgaW4gUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUu
Ci0gICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgIT0gcmVuZGVyZXItPmRvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0g
ZnJhbWU7CisgICAgcmV0dXJuIHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+Y2FuQXV0b3Njcm9sbCgpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAg
LTc1MiwyMCArNzI4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2
ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKIAogICAgIG1fbW91c2VE
b3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiAKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydEF1
dG9zY3JvbGwgJiYgIW1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeyAgICAgICAgICAgIAotICAgICAg
ICAvLyBGaW5kIGEgcmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KLSAgICAgICAgd2hpbGUg
KHJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKHJlbmRlcmVyKSkgewotICAgICAgICAgICAgaWYg
KCFyZW5kZXJlci0+cGFyZW50KCkgJiYgcmVuZGVyZXItPm5vZGUoKSA9PSByZW5kZXJlci0+ZG9j
dW1lbnQoKSAmJiByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAg
ICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkt
PnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChy
ZW5kZXJlcikgewotICAgICAgICAgICAgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0g
ICAgICAgICAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRlcmVyKTsKLSAgICAgICAgfQotICAgICAg
ICAKKyAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgJiYgbV9hdXRvc2Nyb2xs
Q29udHJvbGxlci5pc1BhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAoUmVuZGVy
Qm94KiBzY3JvbGxhYmxlID0gUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUocmVuZGVyZXIp
KQorICAgICAgICAgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci5zdGFydEF1dG9zY3JvbGwoQXV0
b3Njcm9sbEZvclNlbGVjdGlvbiwgc2Nyb2xsYWJsZSk7CiAgICAgICAgIG1fbW91c2VEb3duTWF5
U3RhcnRBdXRvc2Nyb2xsID0gZmFsc2U7CiAgICAgfQogCkBAIC05MzMsOCArODk4LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKLSAgICBp
ZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykKLSAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigp
OworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgIGlmIChoYW5kbGVNb3VzZVVwKGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05ODgsMTMyICs5NTIsMjkgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGUKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAotdm9pZCBFdmVudEhh
bmRsZXI6OmhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9s
bCBpZiBpdCdzIGFscmVhZHkgYWN0aXZlCi0gICAgaWYgKG1fYXV0b3Njcm9sbFRpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIHJldHVybjsgICAgIAotCi0gICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVy
KHJlbmRlcmVyKTsKLQotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgIGlmIChtX3BhblNj
cm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9wYW5TY3JvbGxTdGFydFBvcyA9IGN1cnJlbnRN
b3VzZVBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52
aWV3KCkpCi0gICAgICAgICAgICB2aWV3LT5hZGRQYW5TY3JvbGxJY29uKG1fcGFuU2Nyb2xsU3Rh
cnRQb3MpOwotICAgICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIHRvcCBmcmFtZSB3ZSBub3Rp
ZnkgaXQgdGhhdCB3ZSBkb2luZyBhIHBhblNjcm9sbC4KLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKTsKLSAgICAgICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAg
ICAgICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbEluUHJv
Z3Jlc3MgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzdGFydEF1dG9z
Y3JvbGxUaW1lcigpOwotfQotCi12b2lkIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByID0gYXV0b3Nj
cm9sbFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyIHx8ICFyLT5pc0JveCgpKSB7Ci0gICAgICAgIHN0
b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICht
X2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIGlmICghbV9tb3VzZVByZXNzZWQpIHsK
LSAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChyKS0+YXV0b3Njcm9sbCgpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWluIGZyYW1lIGhhc24ndCBy
ZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCi0gICAgICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAg
ICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAg
ICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOwotICAgICAgICB0b1JlbmRlckJveChyKS0+cGFu
U2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotI2VuZGlmCi0gICAgfQotfQotCiAjaWYgRU5B
QkxFKFBBTl9TQ1JPTExJTkcpCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGlu
ZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9
IHRydWU7Ci0gICAgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkID0gdHJ1ZTsKLSAgICBoYW5kbGVB
dXRvc2Nyb2xsKHJlbmRlcmVyKTsKKyAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLnN0YXJ0QXV0
b3Njcm9sbChBdXRvc2Nyb2xsRm9yUGFuLCByZW5kZXJlcik7CiAgICAgaW52YWxpZGF0ZUNsaWNr
KCk7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpCi17Ci0g
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlmICghdmlldykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gQXQgdGhlIG9yaWdpbmFsIGNsaWNrIGxvY2F0aW9uIHdl
IGRyYXcgYSA0IGFycm93ZWQgaWNvbi4gT3ZlciB0aGlzIGljb24gdGhlcmUgd29uJ3QgYmUgYW55
IHNjcm9sbAotICAgIC8vIFNvIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBjdXJzb3Igb3Zl
ciB0aGlzIGFyZWEKLSAgICBib29sIGVhc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA8ICht
X2N1cnJlbnRNb3VzZVBvc2l0aW9uLngoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVz
KTsKLSAgICBib29sIHdlc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA+IChtX2N1cnJlbnRN
b3VzZVBvc2l0aW9uLngoKSArIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKLSAgICBi
b29sIG5vcnRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55KCkgPiAobV9jdXJyZW50TW91c2VQb3Np
dGlvbi55KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9vbCBzb3V0
aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpIDwgKG1fY3VycmVudE1vdXNlUG9zaXRpb24ueSgp
IC0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgICAgICAgCi0gICAgaWYgKChl
YXN0IHx8IHdlc3QgfHwgbm9ydGggfHwgc291dGgpICYmIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3Nl
ZCkKLSAgICAgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLQot
ICAgIGlmIChub3J0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAgICAgICAgICAgIHZpZXctPnNl
dEN1cnNvcihub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBlbHNlIGlmICh3ZXN0
KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0aFBhbm5pbmdD
dXJzb3IoKSk7Ci0gICAgfSBlbHNlIGlmIChzb3V0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAg
ICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAg
ICAgICBlbHNlIGlmICh3ZXN0KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoV2Vz
dFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1
cnNvcihzb3V0aFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgfSBlbHNlIGlmIChlYXN0KQotICAgICAg
ICB2aWV3LT5zZXRDdXJzb3IoZWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgZWxzZSBpZiAod2Vz
dCkKLSAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHdlc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgIGVs
c2UKLSAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1pZGRsZVBhbm5pbmdDdXJzb3IoKSk7Ci19Ci0K
ICNlbmRpZiAvLyBFTkFCTEUoUEFOX1NDUk9MTElORykKIAogUmVuZGVyT2JqZWN0KiBFdmVudEhh
bmRsZXI6OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyOworICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLmF1dG9zY3Jv
bGxSZW5kZXJlcigpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJl
bmRlcmVyKCkKIHsKLSAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludCht
X3BhblNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKLQotICAgIGlmIChOb2RlKiBub2RlQXRQb2ludCA9
IGhpdFRlc3QuaW5uZXJOb2RlKCkpCi0gICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gbm9k
ZUF0UG9pbnQtPnJlbmRlcmVyKCk7Ci0KLSAgICB3aGlsZSAobV9hdXRvc2Nyb2xsUmVuZGVyZXIg
JiYgIWNhbkF1dG9zY3JvbGwobV9hdXRvc2Nyb2xsUmVuZGVyZXIpKQotICAgICAgICBtX2F1dG9z
Y3JvbGxSZW5kZXJlciA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICBtX2F1
dG9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogfQogCi12b2lk
IEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCitib29sIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogewot
ICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgcmV0dXJuIG1fYXV0b3Nj
cm9sbENvbnRyb2xsZXIuYXV0b3Njcm9sbFR5cGUoKSA9PSBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9u
OwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTExOTMsNTAgKzEwNTQsMzYgQEAg
SGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLQotdm9pZCBF
dmVudEhhbmRsZXI6OnN0YXJ0QXV0b3Njcm9sbFRpbWVyKCkKLXsKLSAgICBtX2F1dG9zY3JvbGxU
aW1lci5zdGFydFJlcGVhdGluZyhhdXRvc2Nyb2xsSW50ZXJ2YWwpOwotfQotCiB2b2lkIEV2ZW50
SGFuZGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3ll
ZCkKIHsKLSAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykgeworICAgIHN3aXRjaCAobV9h
dXRvc2Nyb2xsQ29udHJvbGxlci5hdXRvc2Nyb2xsVHlwZSgpKSB7CisgICAgY2FzZSBOb0F1dG9z
Y3JvbGw6CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlv
bjoKICAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSkgewogICAgICAgICAgICAg
aWYgKEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtX21vdXNlUHJlc3NO
b2RlLmdldCgpKSkKICAgICAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnN0
b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRvc2Nyb2xsUmVuZGVyZXIo
KSkgewotICAgICAgICBpZiAoIXJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiAobV9hdXRvc2Ny
b2xsSW5Qcm9ncmVzcyB8fCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MpKQorICAgICAgICBpZiAoIXJl
bmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSkKICAgICAgICAg
ICAgIHRvUmVuZGVyQm94KGF1dG9zY3JvbGxSZW5kZXJlcigpKS0+c3RvcEF1dG9zY3JvbGwoKTsK
KyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICAgICAgaWYg
KG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUtPnZpZXcoKSkgewotICAgICAgICAgICAgICAgIHZpZXctPnJlbW92ZVBhblNj
cm9sbEljb24oKTsKLSAgICAgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNv
cigpKTsKLSAgICAgICAgICAgIH0KKyAgICBjYXNlIEF1dG9zY3JvbGxGb3JQYW46CisgICAgICAg
IGlmICghcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkICYmIGF1dG9zY3JvbGxSZW5kZXJlcigpKQor
ICAgICAgICAgICAgdG9SZW5kZXJCb3goYXV0b3Njcm9sbFJlbmRlcmVyKCkpLT5zdG9wQXV0b3Nj
cm9sbCgpOworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKSB7
CisgICAgICAgICAgICB2aWV3LT5yZW1vdmVQYW5TY3JvbGxJY29uKCk7CisgICAgICAgICAgICB2
aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKICAgICAgICAgfQorICAgICAgICBzZXRN
YWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzSWZOZWVkZWQoZmFsc2UpOwogI2VuZGlmCi0KLSAg
ICAgICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKDApOwotICAgIH0KLQotICAgIG1fYXV0b3Njcm9s
bFRpbWVyLnN0b3AoKTsKLQotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAg
IG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotCi0gICAgLy8gSWYg
d2UncmUgbm90IGluIHRoZSB0b3AgZnJhbWUgd2Ugbm90aWZ5IGl0IHRoYXQgd2UgYXJlIG5vdCBk
b2luZyBhIHBhblNjcm9sbCBhbnkgbW9yZS4KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkgewotICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
Ci0gICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAgICAgICAgICAgIG1haW5GcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBtX2F1dG9zY3JvbGxJblByb2dyZXNzID0gZmFsc2U7Cisg
ICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiB9CiAKIE5v
ZGUqIEV2ZW50SGFuZGxlcjo6bW91c2VQcmVzc05vZGUoKSBjb25zdApAQCAtMTQxOSw4ICsxMjY2
LDEwIEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOb0N1cnNvckNoYW5nZTsK
LSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbElu
UHJvZ3Jlc3MpCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgaWYgKGlzTWFpbkZyYW1l
UGFuU2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7Cisj
ZW5kaWYKIAogICAgIE5vZGUqIG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJlcigpIDogMDsKQEAgLTE2NTEs
MTAgKzE1MDAsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIAogI2lmIEVOQUJMRShQQU5fU0NS
T0xMSU5HKQogICAgIC8vIFdlIHN0b3JlIHdoZXRoZXIgcGFuIHNjcm9sbGluZyBpcyBpbiBwcm9n
cmVzcyBiZWZvcmUgY2FsbGluZyBzdG9wQXV0b3Njcm9sbFRpbWVyKCkKLSAgICAvLyBiZWNhdXNl
IGl0IHdpbGwgc2V0IG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyB0byBmYWxzZSBvbiByZXR1cm4uCi0g
ICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9mcmFt
ZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9n
cmVzczsKLSAgICBpZiAoaXNQYW5TY3JvbGxJblByb2dyZXNzIHx8IG1fYXV0b3Njcm9sbEluUHJv
Z3Jlc3MpCi0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAvLyBiZWNhdXNlIGl0
IHdpbGwgc2V0IG1fYXV0b3Njcm9sbFR5cGUgdG8gTm9BdXRvc2Nyb2xsIG9uIHJldHVybi4KKyAg
ICBib29sIGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGlzTWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9n
cmVzcygpOworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICBpZiAoaXNQYW5TY3JvbGxJ
blByb2dyZXNzKSB7CiAgICAgICAgIC8vIFdlIGludmFsaWRhdGUgdGhlIGNsaWNrIHdoZW4gZXhp
dGluZyBwYW4gc2Nyb2xsaW5nIHNvIHRoYXQgd2UgZG9uJ3QgaW5hZHZlcnRlbnRseSBuYXZpZ2F0
ZQogICAgICAgICAvLyBhd2F5IGZyb20gdGhlIGN1cnJlbnQgcGFnZSAoZS5nLiB0aGUgY2xpY2sg
d2FzIG9uIGEgaHlwZXJsaW5rKS4gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk1MDIzPi4KQEAgLTE5
NTAsMTAgKzE3OTgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSk7CiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICBpZiAobW91c2VFdmVudC5idXR0
b24oKSA9PSBNaWRkbGVCdXR0b24pCi0gICAgICAgIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCA9
IGZhbHNlOwotICAgIGlmIChtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MpCi0gICAg
ICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnQpOwogI2VuZGlmCiAKICAgICBtX21vdXNl
UHJlc3NlZCA9IGZhbHNlOwpAQCAtMjc0OCw2ICsyNTkzLDI2IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3QgUGxhdGZv
cm1HZXN0CiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorYm9vbCBFdmVu
dEhhbmRsZXI6OmlzTWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5t
YWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1fYXV0b3Njcm9sbENvbnRyb2xsZXIuaXNQYW5T
Y3JvbGxJblByb2dyZXNzKCk7Cit9CisKKy8vIElmIHdlJ3JlIG5vdCBpbiB0aGUgdG9wIGZyYW1l
IHdlIG5vdGlmeSBpdCB0aGF0IHdlIGRvaW5nIGEgcGFuU2Nyb2xsLgordm9pZCBFdmVudEhhbmRs
ZXI6OnNldE1haW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jlc3NJZk5lZWRlZChib29sIGluUHJvZ3Jl
c3MpCit7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKTsKKyAgICBpZiAobV9mcmFtZSAhPSBtYWluRnJhbWUpCisgICAgICAgIG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPm1fYXV0b3Njcm9sbENvbnRyb2xsZXIuc2V0UGFuU2Nyb2xsSW5Qcm9n
cmVzcyhpblByb2dyZXNzKTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
R2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQogewogICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4
dE1lbnUoZ2VzdHVyZUV2ZW50KTsKQEAgLTMxNDAsMTUgKzMwMDUsMTMgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2
ZW50KQogICAgICAgICBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKIAogI2lmIEVOQUJM
RShQQU5fU0NST0xMSU5HKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7
Ci0gICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Ny
b2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgLy8gSWYgYSBrZXkgaXMgcHJlc3NlZCB3aGls
ZSB0aGUgcGFuU2Nyb2xsIGlzIGluIHByb2dyZXNzIHRoZW4gd2Ugd2FudCB0byBzdG9wCi0gICAg
ICAgICAgICBpZiAoaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duIHx8IGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bikgCi0gICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgIGlmIChpc01h
aW5GcmFtZVBhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICAvLyBJZiBhIGtleSBpcyBw
cmVzc2VkIHdoaWxlIHRoZSBwYW5TY3JvbGwgaXMgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3YW50IHRv
IHN0b3AKKyAgICAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJh
d0tleURvd24pIAorICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogCi0gICAgICAg
ICAgICAvLyBJZiB3ZSB3ZXJlIGluIHBhbnNjcm9sbCBtb2RlLCB3ZSBzd2FsbG93IHRoZSBrZXkg
ZXZlbnQKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIC8vIElm
IHdlIHdlcmUgaW4gcGFuc2Nyb2xsIG1vZGUsIHdlIHN3YWxsb3cgdGhlIGtleSBldmVudAorICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIApAQCAtNDA3MCw0ICszOTMzLDE3NyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVk
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudAogCiAjZW5kaWYKIAorLy8gRXZlbnRIYW5kbGVyOjpB
dXRvc2Nyb2xsQ29udHJvbGxlciBpbXBsZW1lbnRhdGlvbgorRXZlbnRIYW5kbGVyOjpBdXRvc2Ny
b2xsQ29udHJvbGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXIoRXZlbnRIYW5kbGVyKiBldmVudEhh
bmRsZXIpCisgICAgOiBtX2F1dG9zY3JvbGxUaW1lcih0aGlzLCAmQXV0b3Njcm9sbENvbnRyb2xs
ZXI6OnRpbWVyRmlyZWQpCisgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQorICAgICwgbV9l
dmVudEhhbmRsZXIoZXZlbnRIYW5kbGVyKQorICAgICwgbV9hdXRvc2Nyb2xsVHlwZShOb0F1dG9z
Y3JvbGwpCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgLCBtX3BhblNjcm9sbEJ1dHRv
blByZXNzZWQoZmFsc2UpCisgICAgLCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3Mo
ZmFsc2UpCisjZW5kaWYKK3sKK30KKworUmVuZGVyT2JqZWN0KiBFdmVudEhhbmRsZXI6OkF1dG9z
Y3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKK30KKworRXZlbnRIYW5kbGVyOjpBdXRvc2Nyb2xsVHlw
ZSBFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYXV0b3Njcm9sbFR5cGU7Cit9CisKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6aXNQYW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3QK
K3sKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICByZXR1cm4gbV9hdXRvc2Nyb2xsVHlw
ZSA9PSBBdXRvc2Nyb2xsRm9yUGFuOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwordm9pZCBFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9z
Y3JvbGwoQXV0b3Njcm9sbFR5cGUgYXV0b3Njcm9sbFR5cGUsIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCit7CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IGF1dG9zY3JvbGxUeXBlOworCisgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwg
aWYgaXQncyBhbHJlYWR5IGFjdGl2ZQorICAgIGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHJlbmRl
cmVyOworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIGlmIChtX2F1dG9zY3JvbGxUeXBl
ID09IEF1dG9zY3JvbGxGb3JQYW4pIHsKKyAgICAgICAgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2Vk
ID0gdHJ1ZTsKKyAgICAgICAgbV9wYW5TY3JvbGxTdGFydFBvcyA9IG1fZXZlbnRIYW5kbGVyLT5j
dXJyZW50TW91c2VQb3NpdGlvbigpOworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9l
dmVudEhhbmRsZXItPm1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHZpZXctPmFkZFBhblNj
cm9sbEljb24obV9wYW5TY3JvbGxTdGFydFBvcyk7CisgICAgICAgIG1fZXZlbnRIYW5kbGVyLT5z
ZXRNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzSWZOZWVkZWQodHJ1ZSk7CisgICAgfQorI2Vu
ZGlmCisgICAgc3RhcnRBdXRvc2Nyb2xsVGltZXIoKTsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6
OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcigpCit7CisgICAgbV9h
dXRvc2Nyb2xsVGltZXIuc3RhcnRSZXBlYXRpbmcoYXV0b3Njcm9sbEludGVydmFsKTsKK30KKwor
dm9pZCBFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRp
bWVyKCkKK3sKKyAgICBtX2F1dG9zY3JvbGxUaW1lci5zdG9wKCk7CisgICAgbV9hdXRvc2Nyb2xs
VHlwZSA9IE5vQXV0b3Njcm9sbDsKKyAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IDA7CisjaWYg
RU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkID0gZmFs
c2U7CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7CisjZW5k
aWYKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVB
dXRvc2Nyb2xsUmVuZGVyZXIoKQoreworICAgIGlmICghbV9hdXRvc2Nyb2xsUmVuZGVyZXIpCisg
ICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIEhpdFRlc3RS
ZXN1bHQgaGl0VGVzdCA9IG1fZXZlbnRIYW5kbGVyLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtX3Bh
blNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKKyAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRU
ZXN0LmlubmVyTm9kZSgpKQorICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBv
aW50LT5yZW5kZXJlcigpOworI2VuZGlmCisKKyAgICB3aGlsZSAobV9hdXRvc2Nyb2xsUmVuZGVy
ZXIgJiYgIWNhbkF1dG9zY3JvbGwobV9hdXRvc2Nyb2xsUmVuZGVyZXIpKQorICAgICAgICBtX2F1
dG9zY3JvbGxSZW5kZXJlciA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5wYXJlbnQoKTsKK30KKwor
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQordm9pZCBFdmVudEhhbmRsZXI6OkF1dG9zY3JvbGxD
b250cm9sbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxl
QnV0dG9uKQorICAgICAgICBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQgPSBmYWxzZTsKKyAgICBp
ZiAobV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKQorICAgICAgICBtX2V2ZW50SGFu
ZGxlci0+c3RvcEF1dG9zY3JvbGxUaW1lcigpOworfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6QXV0
b3Njcm9sbENvbnRyb2xsZXI6OnNldFBhblNjcm9sbEluUHJvZ3Jlc3MoYm9vbCBpblByb2dyZXNz
KQoreworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBpblByb2dyZXNzID8gQXV0b3Njcm9sbEZvclBh
biA6IE5vQXV0b3Njcm9sbDsKK30KKyNlbmRpZgorCit2b2lkIEV2ZW50SGFuZGxlcjo6QXV0b3Nj
cm9sbENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QXV0b3Njcm9sbENvbnRyb2xsZXI+KikK
K3sKKyAgICBSZW5kZXJPYmplY3QqIHIgPSBhdXRvc2Nyb2xsUmVuZGVyZXIoKTsKKyAgICBpZiAo
IXIgfHwgIXItPmlzQm94KCkpIHsKKyAgICAgICAgbV9ldmVudEhhbmRsZXItPnN0b3BBdXRvc2Ny
b2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAobV9hdXRv
c2Nyb2xsVHlwZSkgeworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlvbjoKKyAgICAgICAg
aWYgKCFtX2V2ZW50SGFuZGxlci0+bV9tb3VzZVByZXNzZWQpIHsKKyAgICAgICAgICAgIG1fZXZl
bnRIYW5kbGVyLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgdG9SZW5kZXJCb3gociktPmF1dG9zY3JvbGwoKTsKKyAgICAgICAg
YnJlYWs7CisKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICBjYXNlIEF1dG9zY3JvbGxG
b3JQYW46CisgICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWluIGZyYW1lIGhhc24ndCBy
ZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCisgICAgICAgIGlmIChtX2V2
ZW50SGFuZGxlci0+aXNNYWluRnJhbWVQYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKKyAgICAgICAg
ICAgIG1fZXZlbnRIYW5kbGVyLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlUGFuU2Nyb2xsU3RhdGUoKTsKKyAgICAg
ICAgdG9SZW5kZXJCb3gociktPnBhblNjcm9sbChtX3BhblNjcm9sbFN0YXJ0UG9zKTsKKyAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKworICAgIGNhc2UgTm9BdXRvc2Nyb2xsOgorICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKK3ZvaWQgRXZlbnRIYW5k
bGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlUGFuU2Nyb2xsU3RhdGUoKQoreworICAg
IEZyYW1lVmlldyogdmlldyA9IG1fZXZlbnRIYW5kbGVyLT5tX2ZyYW1lLT52aWV3KCk7CisgICAg
aWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBdCB0aGUgb3JpZ2luYWwgY2xp
Y2sgbG9jYXRpb24gd2UgZHJhdyBhIDQgYXJyb3dlZCBpY29uLiBPdmVyIHRoaXMgaWNvbiB0aGVy
ZSB3b24ndCBiZSBhbnkgc2Nyb2xsCisgICAgLy8gU28gd2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2Ug
dGhlIGN1cnNvciBvdmVyIHRoaXMgYXJlYQorICAgIGJvb2wgZWFzdCA9IG1fcGFuU2Nyb2xsU3Rh
cnRQb3MueCgpIDwgKG1fZXZlbnRIYW5kbGVyLT5tX2N1cnJlbnRNb3VzZVBvc2l0aW9uLngoKSAt
IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKyAgICBib29sIHdlc3QgPSBtX3BhblNj
cm9sbFN0YXJ0UG9zLngoKSA+IChtX2V2ZW50SGFuZGxlci0+bV9jdXJyZW50TW91c2VQb3NpdGlv
bi54KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7CisgICAgYm9vbCBub3J0aCA9
IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpID4gKG1fZXZlbnRIYW5kbGVyLT5tX2N1cnJlbnRNb3Vz
ZVBvc2l0aW9uLnkoKSArIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKyAgICBib29s
IHNvdXRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55KCkgPCAobV9ldmVudEhhbmRsZXItPm1fY3Vy
cmVudE1vdXNlUG9zaXRpb24ueSgpIC0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwor
CisgICAgaWYgKChlYXN0IHx8IHdlc3QgfHwgbm9ydGggfHwgc291dGgpICYmIG1fcGFuU2Nyb2xs
QnV0dG9uUHJlc3NlZCkKKyAgICAgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNz
ID0gdHJ1ZTsKKworICAgIGlmIChub3J0aCkgeworICAgICAgICBpZiAoZWFzdCkKKyAgICAgICAg
ICAgIHZpZXctPnNldEN1cnNvcihub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgICAgICBl
bHNlIGlmICh3ZXN0KQorICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoV2VzdFBhbm5p
bmdDdXJzb3IoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihu
b3J0aFBhbm5pbmdDdXJzb3IoKSk7CisgICAgfSBlbHNlIGlmIChzb3V0aCkgeworICAgICAgICBp
ZiAoZWFzdCkKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aEVhc3RQYW5uaW5nQ3Vy
c29yKCkpOworICAgICAgICBlbHNlIGlmICh3ZXN0KQorICAgICAgICAgICAgdmlldy0+c2V0Q3Vy
c29yKHNvdXRoV2VzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHZpZXctPnNldEN1cnNvcihzb3V0aFBhbm5pbmdDdXJzb3IoKSk7CisgICAgfSBlbHNlIGlmIChl
YXN0KQorICAgICAgICB2aWV3LT5zZXRDdXJzb3IoZWFzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAg
ZWxzZSBpZiAod2VzdCkKKyAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHdlc3RQYW5uaW5nQ3Vyc29y
KCkpOworICAgIGVsc2UKKyAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1pZGRsZVBhbm5pbmdDdXJz
b3IoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGM5ZjhlNmRiZjRjY2I1MWJhYWQzZjljMzEzYzgxNTg4
ODY5OTRjYjQuLjVmYjEwYzZlMjNlZGRiMzY5OWQxMTY0NTdiMWVlYTk0YzYzZjRmMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQg
PSBmYWxzZSk7CiAgICAgUmVuZGVyT2JqZWN0KiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25zdDsK
ICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwotICAgIGJvb2wgYXV0b3Njcm9s
bEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2F1dG9zY3JvbGxJblByb2dyZXNzOyB9Cisg
ICAgYm9vbCBhdXRvc2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAgICB2b2lkIGRpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1YWQmKTsKQEAgLTI0NCw2ICsyNDQsNDUgQEAg
cHVibGljOgogICAgIGJvb2wgdXNlSGFuZEN1cnNvcihOb2RlKiwgYm9vbCBpc092ZXJMaW5rLCBi
b29sIHNoaWZ0S2V5KTsKIAogcHJpdmF0ZToKKyAgICBlbnVtIEF1dG9zY3JvbGxUeXBlIHsKKyAg
ICAgICAgTm9BdXRvc2Nyb2xsLAorICAgICAgICBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uLAorI2lm
IEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgICAgICBBdXRvc2Nyb2xsRm9yUGFuLAorI2VuZGlm
CisgICAgfTsKKworICAgIGNsYXNzIEF1dG9zY3JvbGxDb250cm9sbGVyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEF1dG9zY3JvbGxDb250cm9sbGVyKEV2ZW50SGFuZGxlciopOworICAgICAgICBS
ZW5kZXJPYmplY3QqIGF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0OworICAgICAgICBBdXRvc2Ny
b2xsVHlwZSBhdXRvc2Nyb2xsVHlwZSgpIGNvbnN0OworICAgICAgICBib29sIGlzUGFuU2Nyb2xs
SW5Qcm9ncmVzcygpIGNvbnN0OworICAgICAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbChBdXRvc2Ny
b2xsVHlwZSwgUmVuZGVyT2JqZWN0Kik7CisgICAgICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsVGlt
ZXIoKTsKKyAgICAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgIHZvaWQg
dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisg
ICAgICAgIHZvaWQgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CisgICAgICAgIHZvaWQgc2V0UGFuU2Nyb2xsSW5Qcm9ncmVzcyhib29sKTsKKyNlbmRp
ZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEF1dG9zY3Jv
bGxDb250cm9sbGVyPiopOworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgICAgICB2b2lk
IHVwZGF0ZVBhblNjcm9sbFN0YXRlKCk7CisjZW5kaWYKKyAgICAgICAgVGltZXI8QXV0b3Njcm9s
bENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOworICAgICAgICBSZW5kZXJPYmplY3QqIG1f
YXV0b3Njcm9sbFJlbmRlcmVyOworICAgICAgICBFdmVudEhhbmRsZXIqIG1fZXZlbnRIYW5kbGVy
OworICAgICAgICBBdXRvc2Nyb2xsVHlwZSBtX2F1dG9zY3JvbGxUeXBlOworI2lmIEVOQUJMRShQ
QU5fU0NST0xMSU5HKQorICAgICAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOworICAg
ICAgICBib29sIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZDsKKyAgICAgICAgYm9vbCBtX3Nwcmlu
Z0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3M7CisjZW5kaWYKKyAgICB9OworCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIFRleHREcmFnRGVsYXk7CkBAIC0yNjksMTYgKzMwOCw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAKICAgICBPcHRpb25hbEN1cnNvciBzZWxlY3RDdXJzb3Io
Y29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIFNjcm9sbGJhciopOwotI2lmIEVO
QUJMRShQQU5fU0NST0xMSU5HKQotICAgIHZvaWQgdXBkYXRlUGFuU2Nyb2xsU3RhdGUoKTsKLSNl
bmRpZgotCiAgICAgdm9pZCBob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopOwog
Ci0gICAgdm9pZCBoYW5kbGVBdXRvc2Nyb2xsKFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgc3Rh
cnRBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICB2b2lkIHNldEF1dG9zY3JvbGxSZW5kZXJlcihSZW5k
ZXJPYmplY3QqKTsKLSAgICB2b2lkIGF1dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFu
ZGxlcj4qKTsKICAgICBib29sIGxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhTY3JvbGxMb2dpY2FsRGly
ZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gMCk7CiAgICAg
CiAgICAgYm9vbCBzaG91bGRUdXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKGNvbnN0IEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBjb25zdDsKQEAgLTM4MCw2
ICs0MTEsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0
aW9uT3JDb250ZXh0TWVudShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICBib29sIGlzTWFpbkZyYW1lUGFuU2Nyb2xs
SW5Qcm9ncmVzcygpIGNvbnN0OworICAgIHZvaWQgc2V0TWFpbkZyYW1lUGFuU2Nyb2xsSW5Qcm9n
cmVzc0lmTmVlZGVkKGJvb2wpOworI2VuZGlmCisKICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAg
IGJvb2wgbV9tb3VzZVByZXNzZWQ7CkBAIC0zOTksMTcgKzQzNSwxMSBAQCBwcml2YXRlOgogICAg
IExheW91dFBvaW50IG1fZHJhZ1N0YXJ0UG9zOwogI2VuZGlmCiAKLSAgICBJbnRQb2ludCBtX3Bh
blNjcm9sbFN0YXJ0UG9zOwotICAgIGJvb2wgbV9wYW5TY3JvbGxJblByb2dyZXNzOwotCiAgICAg
Ym9vbCBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQ7Ci0gICAgYm9vbCBtX3NwcmluZ0xvYWRlZFBh
blNjcm9sbEluUHJvZ3Jlc3M7CiAKICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1faG92ZXJUaW1l
cjsKLSAgICAKLSAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwotICAg
IFJlbmRlck9iamVjdCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7Ci0gICAgYm9vbCBtX2F1dG9zY3Jv
bGxJblByb2dyZXNzOworCisgICAgQXV0b3Njcm9sbENvbnRyb2xsZXIgbV9hdXRvc2Nyb2xsQ29u
dHJvbGxlcjsKICAgICBib29sIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJv
b2wgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IGJiNDQ1NjBmMTA5NmI2ZWNiZjU2OWUzYzRkODViMjYxNGIxNjMyZDcu
LjU1MzE3NzRmZWMzODkwYzgyZDU3ZGQxYjBjZjViY2NhMWI4MWRjMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UXVh
ZC5oIgpAQCAtNjM1LDYgKzYzNiwzOSBAQCB2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCiAg
ICAgICAgIGxheWVyKCktPmF1dG9zY3JvbGwoKTsKIH0KIAorLy8gVGhlcmUgYXJlIHR3byBraW5k
cyBvZiByZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgorYm9vbCBSZW5kZXJCb3g6OmNhbkF1
dG9zY3JvbGwoKSBjb25zdAoreworICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBz
Y3JvbGxlZCBpbiBpdHMgb3duIHJpZ2h0LgorICAgIGlmIChjYW5CZVNjcm9sbGVkQW5kSGFzU2Ny
b2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBmb3Ig
YSBib3ggdGhhdCByZXByZXNlbnRzIHRoZSB0b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KKyAgICAv
LyBUaGlzIGNhbiBiZSBzY3JvbGxlZCBieSBjYWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9W
aWV3LgorICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0g
aW4gYXBwbGljYXRpb25zCisgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5n
IGNvbnRhaW5lcnMsIHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KKyAgICAvLyBUaGUgY29kZSBmb3Ig
dGhpcyBpcyBpbiBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4KKyAgICBpZiAobm9k
ZSgpICE9IGRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBw
YWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKK30KKworUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZp
bmRBdXRvc2Nyb2xsYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChy
ZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNh
bkF1dG9zY3JvbGwoKSkgeworICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5k
ZXJlci0+bm9kZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVu
dCgpLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRv
Y3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikg
OiAwOworfQorCiB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3Vy
Y2UpCiB7CiAgICAgaWYgKGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
aW5kZXggNGUyMTU4ZWRmYzRmNTM4ZDlmNDU0MjlkNDNjZjEyYjU4MjMzYTY3Ni4uMjFiM2MwYWU0
MmYxMGQ1OWIxOTRlNzE2YjNiOGE3MTc0NGViYjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaApAQCAtNDM5LDYgKzQzOSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkJlU2Ny
b2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5C
ZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9z
Y3JvbGwoKTsKKyAgICBib29sIGNhbkF1dG9zY3JvbGwoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVu
ZGVyQm94KiBmaW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BBdXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25z
dCBJbnRQb2ludCYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179210</attachid>
            <date>2012-12-12 23:37:24 -0800</date>
            <delta_ts>2012-12-12 23:48:45 -0800</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-104764-20121213163444.patch</filename>
            <type>text/plain</type>
            <size>43027</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFhNDliZTI0OGNmYWI4
YjEzNmIyMzQyZTU5ZTUzOTgxYjE5ZGFjNy4uNjg2M2I2YThjZGNiY2Y1Zjk2MDIwMzEyNzYyZTBl
ZmU1ZWMzZjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogQ2hhbmdlZCB0byBhZGQgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiAgQ2hhbmdlZCB0byBhZGQgcGFnZS9B
dXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogVGFyZ2V0LnByaTogIENoYW5n
ZWQgdG8gYWRkIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLntjcHAsaH0K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQ2hhbmdlZCB0byBhZGQg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250
cm9sbGVyLntjcHAsaH0KKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5BdXRvc2Nyb2xsKTogSGVscGVyIGZ1bmN0aW9u
IGZvciBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKS4KKyAgICAgICAgKFdlYkNvcmU6OmdldE1h
aW5GcmFtZSk6IEhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxD
b250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVy
LgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1dG9zY3JvbGxSZW5k
ZXJlcik6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Nj
cm9sbENvbnRyb2xsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKTogTW92ZWQgZnJvbSBFdmVudEhh
bmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRBdXRv
c2Nyb2xsRm9yU2VsZWN0aW9uKTogUmVwbGFjZW1lbnQgb2YgRXZlbnRIYW5kbGVyOjpoYW5kbGVB
dXRvc2Nyb2xsKCkuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3Rv
cEF1dG9zY3JvbGxUaW1lcik6IE1vdmVlZCBmcm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIpOiBk
aXR0bworICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KTogRXh0cmFjdGVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MpOiBSZXBsYWNl
bWVudCBvZiBFdmVudEhhbmRsZXI6Om1fcGFuU2Nyb2xsSW5Qcm9ncmVzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZyk6IE1vdmVkIGZy
b20gRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZygpCisgICAgICAgIChXZWJDb3JlOjpB
dXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpOiBNb3ZlZCBmcm9tIEV2
ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcik6IE1vdmVkIGZyb20gRXZl
bnRIYW5kbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcigpLgorICAgICAgICAoV2ViQ29yZTo6QXV0
b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKTogTW92ZWQgZnJvbSBFdmVu
dEhhbmRsZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKCkuCisgICAgICAgICogcGFnZS9BdXRvc2Ny
b2xsQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKEF1dG9zY3JvbGxDb250cm9sbGVyKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6IENoYW5nZWQgYXV0b3Njcm9sbCBhbmQgcGFuc2Nyb2xs
IHJlbGF0ZWQgbWVtYmVyIHZhcmlhYmxlIGluaXRpYWxpemF0aW9ucyB0byBtX2F1dG9zY3JvbGxD
b250cm9sbGVyIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29u
dHJvbGxlcjo6c3RhcnRBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uKCkuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogQ2hhbmdlZCB0byByZW1v
dmUgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKTogQ2hhbmdlZCB0byBjYWxsIEF1dG9zY3Jv
bGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBDaGFuZ2VkIHRvIHVzZSBBdXRvc2Nyb2xs
Q29udHJvbGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Nj
cm9sbFJlbmRlcmVyKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0
b3Njcm9sbEluUHJvZ3Jlc3MpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpwYW5TY3JvbGxJblByb2dyZXNzKTogQWRkZWQgdG8gcmVwbGFjZSBtX3BhblNjcm9sbEluUHJv
Z3Jlc3MuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGlt
ZXIpOiBDaGFuZ2VkIHRvIHVzZSBBdXRvc2Nyb2xsQ29udHJvbGxlci4KKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKTogQ2hhbmdlZCB0byB1c2UgcGFuU2Nyb2xs
SW5Qcm9ncmVzcygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQpOiBDaGFnbmVkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRs
ZU1vdXNlUHJlc3NFdmVudCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlF
dmVudCk6IENoYW5nZWQgdG8gdXNlIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphdXRv
c2Nyb2xsQ29udHJvbGxlcik6IEFkZGVkIGZvciB1c2luZyBtYWluIGZyYW1lJ3MgcGFuU2Nyb2xs
SW5Qcm9ncmVzcygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZURvd25X
YXNJblN1YmZyYW1lKTogQWRkZWQgZm9yIEF1dG9zY3JvbGxDb250cm9sbGVyLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpj
YW5BdXRvc2Nyb2xsKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUpOiBNb3ZlZCBmcm9tIEV2ZW50SGFu
ZGxlci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVu
ZGVyQm94KTogQWRkZWQgbmV3IGZ1bmN0aW9ucyBjYW5BdXRvc2Nyb2xsKCkgYW5kIGZpbmRBdXRv
c2Nyb2xsYWJsZSgpLgorCiAyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDb250YWluZXJOb2RlQWxnb3JpdGhtOjpub3RpZnlJbnNl
cnRlZEludG9Eb2N1bWVudCBpcyBub3QgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlODlm
ZjJlNzNkOTZkYWVhMGEzOTU0OTAyYjAzMTg0MmEwMzE1Mzg0Li5mZGJiOGZkN2MzM2IzNTU3MzM4
M2M4NzY2MzA5NGU5N2NlYzliYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTcxOSw2ICsx
NzE5LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCiAKKyAgICBwYWdlL0F1dG9z
Y3JvbGxDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvQmFySW5mby5jcHAKICAgICBwYWdlL0Nocm9t
ZS5jcHAKICAgICBwYWdlL0NvbnNvbGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCA3YmJkNjM3NDdlMWEwMzc5OWM5OTZkM2I1MGI3MjgzYTQ4MzdhZjQyLi5lNzE2ZjhlZTBh
MGNhM2YwMzA1MjdjMGZmNTc2NmFkOThkMmY2YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTQwMDIsNiArNDAwMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9s
bENvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9s
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvQmFySW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggNTFhMTRmMzhiODVhZDExYzNhYTdjMDNjN2FiNzQ0MGI2YzRhYjY2YS4u
MWYxNGE5YTU4NDQ2Y2NmMzc5YjY3Mjc4MDBlMTlhMGM4ZjgyMjFlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC04NjgsNiArODY4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlv
bi5jcHAgXAogICAgIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBcCisgICAg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2UvQmFySW5mby5jcHAgXAog
ICAgIHBhZ2UvQ2hyb21lLmNwcCBcCiAgICAgcGFnZS9Db25zb2xlLmNwcCBcCkBAIC0yMDE0LDYg
KzIwMTUsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1h
dGlvbi5oIFwKICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oIFwKICAgICBw
YWdlL0FkanVzdFZpZXdTaXplT3JOb3QuaCBcCisgICAgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxl
ci5oIFwKICAgICBwYWdlL0JhckluZm8uaCBcCiAgICAgcGFnZS9DaHJvbWUuaCBcCiAgICAgcGFn
ZS9Db25zb2xlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY5MGQxODgxNjRiNDU5YzM5ZDRhMTNl
MWIzZjM3NjJlOTU4NzEwZTAuLjhlYTBmZDAwODZjMWFmYTc2OWRhMjlhYWNlMDk3NmE0NGU1NGM1
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMjgsNiArMjAyOCw4IEBACiAgICAgICAgICAgICAn
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5o
JywKKyAgICAgICAgICAgICdwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcCcsCisgICAgICAg
ICAgICAncGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL0Jh
ckluZm8uY3BwJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaCcsCiAgICAgICAgICAgICAn
cGFnZS9DaHJvbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggMjVlZTNjMDI5ODFjOTU0ZDYwZGZmMTU0MmI1YzAzZmZjNWY0MmQyYi4u
NGVlNjY4YjM4M2FkZDQ5YWEyYzBjNTFiYWU1NzRiNjU1ZTE5NDczMCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2Nzk4LDYgKzI2Nzk4LDE0
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBh
Z2VcQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEF1dG9zY3JvbGxDb250cm9sbGVyLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQmFySW5m
by5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxYjUyMTkzOTViY2I3MDcwNThjZGRlZjAw
ODM1NDhiOTM2NzgwYjIuLjk0ZGU0YmRiNmNiZjE4ZjY3NGJmNGQ5MzIzMDRmODgxZjM0NDRjNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyMzIsNiArMTIzMiw4IEBACiAJCTQ1MTI1MDIzMTVEQ0UzN0QwMDJGODRFMiAvKiBT
cGluQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50Lmgg
Ki87IH07CiAJCTQ1M0VCNjM2MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTNFQjYzNDE1
OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuY3BwICovOyB9OwogCQk0NTNFQjYzNzE1
OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1M0VCNjM1MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRl
VGltZUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ1ODMwRDREMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovOyB9OworCQk0
NTgzMEQ0RTE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1ODMwRDRDMTY3OUI0Rjgw
MEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1ODYxQzcyMTYxOTQ5REMwMDAxMEYzQSAvKiBC
YXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTg2MUM3MDE2MTk0OURDMDAwMTBGM0Eg
LyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwICovOyB9OwogCQk0
NTg2MUM3MzE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1ODYxQzcxMTYxOTQ5REMwMDAxMEYzQSAvKiBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oICovOyB9OwogCQk0NTg2MUM3RjE2MTk0QTc0MDAwMTBGM0EgLyogRGF0ZVRp
bWVFZGl0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NTg2MUM3NTE2MTk0QTc0MDAwMTBGM0EgLyogRGF0ZVRpbWVFZGl0RWxlbWVudC5j
cHAgKi87IH07CkBAIC04NDc0LDYgKzg0NzYsOCBAQAogCQk0NTEyNTAyMTE1RENFMzdEMDAyRjg0
RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3BpbkJ1dHRvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUz
RUI2MzQxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVUaW1lRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9y
bWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVUaW1lRm9ybWF0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1ODMwRDRCMTY3OUI0RjgwMEFDRjhDMyAv
KiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ1ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvc2Nyb2xsQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTg2MUM3MDE2MTk0OURDMDAwMTBGM0Eg
LyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTg2MUM3MTE2MTk0
OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDU4NjFDNzUx
NjE5NEE3NDAwMDEwRjNBIC8qIERhdGVUaW1lRWRpdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk1MSw2ICsxNTk1NSw4IEBACiAJCQkJODUzOEYwMDAw
QUQ3MTc3MDAwNkE4MUQxIC8qIEFic3RyYWN0Vmlldy5pZGwgKi8sCiAJCQkJQkNGNDhDRTYxMzcw
RDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1
MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJNDU4MzBE
NEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCAqLywKKwkJCQk0
NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCAqLywKIAkJ
CQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5jcHAgKi8sCiAJCQkJQkMxMjRF
RTUwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaCAqLywKIAkJCQlCQzEyNEVFNjBDMjY0MUNE
MDA5RTIzNDkgLyogQmFySW5mby5pZGwgKi8sCkBAIC0yMjY3OCw2ICsyMjY4NCw3IEBACiAJCQkJ
RTEyNDc0ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY0QzBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25N
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTFFQ0IzMEM5MUM1NTYwMERDMjU1QiAvKiBBdXRv
ZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1ODMwRDRFMTY3OUI0RjgwMEFDRjhD
MyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEUw
QTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYzMTUsNiArMjYzMjIsNyBAQAogCQkJCTkzNEY3MTM4MEQ1
QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE0Qzc2NEQwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQUYwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9k
cmFpbmVkUG9vbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ1ODMwRDREMTY3OUI0RjgwMEFDRjhD
MyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjA1
MDBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Ny
b2xsQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdlNzJmNTdiN2U2NTkxZTlmNTI4NGE0Mzc0
M2U4NTc2OWYzNDNkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0
b3Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292
IChhcEB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYy4gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyQm94Lmgi
CisjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFdo
ZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0
aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCitzdGF0aWMgY29uc3QgZG91
YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CisKK3N0YXRpYyBib29sIGNhbkF1dG9zY3Jv
bGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gcmVuZGVyZXItPmlzQm94
KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5BdXRvc2Nyb2xsKCk7Cit9CisKKyNpZiBF
TkFCTEUoUEFOX1NDUk9MTElORykKK3N0YXRpYyBGcmFtZSogZ2V0TWFpbkZyYW1lKEZyYW1lKiBm
cmFtZSkKK3sKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFn
ZSA/IHBhZ2UtPm1haW5GcmFtZSgpIDogMDsKK30KKyNlbmRpZgorCitBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXIoKQorICAgIDogbV9hdXRvc2Nyb2xsVGltZXIodGhp
cywgJkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCkKKyAgICAsIG1f
YXV0b3Njcm9sbFJlbmRlcmVyKDApCisgICAgLCBtX2F1dG9zY3JvbGxUeXBlKE5vQXV0b3Njcm9s
bCkKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICAsIG1fcGFuU2Nyb2xsQnV0dG9uUHJl
c3NlZChmYWxzZSkKKyAgICAsIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyhmYWxz
ZSkKKyNlbmRpZgoreworfQorCitSZW5kZXJCb3gqIEF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRv
c2Nyb2xsUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxSZW5kZXJl
cjsKK30KKworYm9vbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3Mo
KSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxUeXBlID09IEF1dG9zY3JvbGxGb3JT
ZWxlY3Rpb247Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9s
bEZvclNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gdHJpZ2dlciB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFuU2Nyb2xsIGlmIGl0J3Mg
YWxyZWFkeSBhY3RpdmUKKyAgICBpZiAobV9hdXRvc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIFJlbmRlckJveCogc2Nyb2xsYWJsZSA9IFJlbmRlckJveDo6Zmlu
ZEF1dG9zY3JvbGxhYmxlKHJlbmRlcmVyKTsKKyAgICBpZiAoIXNjcm9sbGFibGUpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclNlbGVjdGlvbjsK
KyAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgc3RhcnRBdXRvc2Ny
b2xsVGltZXIoKTsKK30KKwordm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RvcEF1dG9zY3Jv
bGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBSZW5kZXJCb3gq
IHNjcm9sbGFibGUgPSBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKyAgICBtX2F1dG9zY3JvbGxUaW1l
ci5zdG9wKCk7CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IE5vQXV0b3Njcm9sbDsKKyAgICBtX2F1
dG9zY3JvbGxSZW5kZXJlciA9IDA7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgbV9w
YW5TY3JvbGxCdXR0b25QcmVzc2VkID0gZmFsc2U7CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3Jv
bGxJblByb2dyZXNzID0gZmFsc2U7CisjZW5kaWYKKworICAgIGlmICghc2Nyb2xsYWJsZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsK
KyAgICBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsK
KyAgICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBldmVudEhhbmRsZXItPm1vdXNlRG93
bldhc0luU3ViZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gZXZlbnRI
YW5kbGVyLT5zdWJmcmFtZUZvclRhcmdldE5vZGUoZXZlbnRIYW5kbGVyLT5tb3VzZVByZXNzTm9k
ZSgpKSkKKyAgICAgICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3Jv
bGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCisgICAgICAgIHNjcm9sbGFi
bGUtPnN0b3BBdXRvc2Nyb2xsKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgaWYg
KHBhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgdmlldy0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigp
OworICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIC8vIElm
IHdlJ3JlIG5vdCBpbiB0aGUgdG9wIGZyYW1lIHdlIG5vdGlmeSBpdCB0aGF0IHdlIGFyZSBub3Qg
ZG9pbmcgYSBwYW5TY3JvbGwgYW55IG1vcmUuCisgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBn
ZXRNYWluRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGlmIChmcmFtZSAhPSBtYWluRnJhbWUpCisg
ICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5hdXRvc2Nyb2xsQ29udHJvbGxl
cigpLm1fYXV0b3Njcm9sbFR5cGUgPSBOb0F1dG9zY3JvbGw7CisgICAgfQorI2VuZGlmCit9CisK
K3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpCit7
CisgICAgaWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyOworCisjaWYgRU5B
QkxFKFBBTl9TQ1JPTExJTkcpCisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0ID0gbV9hdXRvc2Ny
b2xsUmVuZGVyZXItPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChtX3BhblNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKKworICAgIGlmIChOb2RlKiBub2RlQXRQb2lu
dCA9IGhpdFRlc3QuaW5uZXJOb2RlKCkpCisgICAgICAgIHJlbmRlcmVyID0gbm9kZUF0UG9pbnQt
PnJlbmRlcmVyKCk7CisjZW5kaWYKKworICAgIHdoaWxlIChyZW5kZXJlciAmJiAhY2FuQXV0b3Nj
cm9sbChyZW5kZXJlcikpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwor
ICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkg
PyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworfQorCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJ
TkcpCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKG1vdXNlRXZl
bnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQorICAgICAgICBtX3BhblNjcm9sbEJ1dHRvblBy
ZXNzZWQgPSBmYWxzZTsKKyAgICBpZiAobV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNz
KQorICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cit9CisKK2Jvb2wgQXV0b3Njcm9sbENv
bnRyb2xsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1
dG9zY3JvbGxUeXBlID09IEF1dG9zY3JvbGxGb3JQYW47Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENv
bnRyb2xsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlckJveCogc2Nyb2xsYWJsZSwgY29uc3Qg
SW50UG9pbnQmIGxhc3RLbm93bk1vdXNlUG9zaXRpb24pCit7CisgICAgLy8gV2UgZG9uJ3Qgd2Fu
dCB0byB0cmlnZ2VyIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaWYgaXQncyBhbHJl
YWR5IGFjdGl2ZQorICAgIGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclBhbjsKKyAg
ICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgbV9wYW5TY3JvbGxTdGFy
dFBvcyA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3Jv
bGxJblByb2dyZXNzID0gZmFsc2U7CisKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gc2Nyb2xs
YWJsZS0+ZnJhbWUoKS0+dmlldygpKQorICAgICAgICB2aWV3LT5hZGRQYW5TY3JvbGxJY29uKGxh
c3RLbm93bk1vdXNlUG9zaXRpb24pOworICAgIHNjcm9sbGFibGUtPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5hdXRvc2Nyb2xsQ29udHJvbGxlcigpLm1fYXV0b3Njcm9sbFR5cGUgPSBBdXRvc2Ny
b2xsRm9yUGFuOworICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Cit9CisjZWxzZQorYm9vbCBB
dXRvc2Nyb2xsQ29udHJvbGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1
dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiopCit7CisgICAg
aWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2F1dG9z
Y3JvbGxSZW5kZXJlci0+ZnJhbWUoKTsKKworICAgIHN3aXRjaCAobV9hdXRvc2Nyb2xsVHlwZSkg
eworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlvbjoKKyAgICAgICAgaWYgKCFmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPm1vdXNlUHJlc3NlZCgpKSB7CisgICAgICAgICAgICBzdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9h
dXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBOb0F1dG9zY3JvbGw6CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5H
KQorICAgIGNhc2UgQXV0b3Njcm9sbEZvclBhbjoKKyAgICAgICAgLy8gd2UgdmVyaWZ5IHRoYXQg
dGhlIG1haW4gZnJhbWUgaGFzbid0IHJlY2VpdmVkIHRoZSBvcmRlciB0byBzdG9wIHRoZSBwYW5T
Y3JvbGwKKyAgICAgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBnZXRNYWluRnJhbWUoZnJhbWUp
KSB7CisgICAgICAgICAgICBpZiAoIW1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBhblNjcm9s
bEluUHJvZ3Jlc3MoKSkgeworICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgdXBkYXRlUGFuU2Nyb2xsU3RhdGUoKTsKKyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIt
PnBhblNjcm9sbChtX3BhblNjcm9sbFN0YXJ0UG9zKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICB9Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbFRp
bWVyKCkKK3sKKyAgICBtX2F1dG9zY3JvbGxUaW1lci5zdGFydFJlcGVhdGluZyhhdXRvc2Nyb2xs
SW50ZXJ2YWwpOworfQorCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCit2b2lkIEF1dG9zY3Jv
bGxDb250cm9sbGVyOjp1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpCit7CisgICAgRnJhbWVWaWV3KiB2
aWV3ID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIXZp
ZXcpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBJbnRQb2ludCYgbGFzdEtub3duTW91c2VQ
b3NpdGlvbiA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
bGFzdEtub3duTW91c2VQb3NpdGlvbigpOworICAgIC8vIEF0IHRoZSBvcmlnaW5hbCBjbGljayBs
b2NhdGlvbiB3ZSBkcmF3IGEgNCBhcnJvd2VkIGljb24uIE92ZXIgdGhpcyBpY29uIHRoZXJlIHdv
bid0IGJlIGFueSBzY3JvbGwKKyAgICAvLyBTbyB3ZSBkb24ndCB3YW50IHRvIGNoYW5nZSB0aGUg
Y3Vyc29yIG92ZXIgdGhpcyBhcmVhCisgICAgYm9vbCBlYXN0ID0gbV9wYW5TY3JvbGxTdGFydFBv
cy54KCkgPCAobGFzdEtub3duTW91c2VQb3NpdGlvbi54KCkgLSBTY3JvbGxWaWV3Ojpub1BhblNj
cm9sbFJhZGl1cyk7CisgICAgYm9vbCB3ZXN0ID0gbV9wYW5TY3JvbGxTdGFydFBvcy54KCkgPiAo
bGFzdEtub3duTW91c2VQb3NpdGlvbi54KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1
cyk7CisgICAgYm9vbCBub3J0aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpID4gKGxhc3RLbm93
bk1vdXNlUG9zaXRpb24ueSgpICsgU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOworICAg
IGJvb2wgc291dGggPSBtX3BhblNjcm9sbFN0YXJ0UG9zLnkoKSA8IChsYXN0S25vd25Nb3VzZVBv
c2l0aW9uLnkoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKworICAgIGlmICgo
ZWFzdCB8fCB3ZXN0IHx8IG5vcnRoIHx8IHNvdXRoKSAmJiBtX3BhblNjcm9sbEJ1dHRvblByZXNz
ZWQpCisgICAgICAgIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7CisK
KyAgICBpZiAobm9ydGgpIHsKKyAgICAgICAgaWYgKGVhc3QpCisgICAgICAgICAgICB2aWV3LT5z
ZXRDdXJzb3Iobm9ydGhFYXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZSBpZiAod2Vz
dCkKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0aFdlc3RQYW5uaW5nQ3Vyc29yKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhQYW5uaW5n
Q3Vyc29yKCkpOworICAgIH0gZWxzZSBpZiAoc291dGgpIHsKKyAgICAgICAgaWYgKGVhc3QpCisg
ICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhFYXN0UGFubmluZ0N1cnNvcigpKTsKKyAg
ICAgICAgZWxzZSBpZiAod2VzdCkKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aFdl
c3RQYW5uaW5nQ3Vyc29yKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2aWV3LT5zZXRD
dXJzb3Ioc291dGhQYW5uaW5nQ3Vyc29yKCkpOworICAgIH0gZWxzZSBpZiAoZWFzdCkKKyAgICAg
ICAgdmlldy0+c2V0Q3Vyc29yKGVhc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgIGVsc2UgaWYgKHdl
c3QpCisgICAgICAgIHZpZXctPnNldEN1cnNvcih3ZXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICBl
bHNlCisgICAgICAgIHZpZXctPnNldEN1cnNvcihtaWRkbGVQYW5uaW5nQ3Vyc29yKCkpOworfQor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0
b3Njcm9sbENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNThhOTE0ODM0ZWMxNTEyZjI2M2NjYTM4
MjM3YjIwN2JhNzk1NjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9B
dXRvc2Nyb2xsQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF1dG9zY3JvbGxDb250cm9sbGVyX2gKKyNkZWZpbmUg
QXV0b3Njcm9sbENvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRl
ICJUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50SGFuZGxlcjsK
K2NsYXNzIEZyYW1lOworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworY2xhc3MgUmVuZGVyQm94
OworY2xhc3MgUmVuZGVyT2JqZWN0OworCitlbnVtIEF1dG9zY3JvbGxUeXBlIHsKKyAgICBOb0F1
dG9zY3JvbGwsCisgICAgQXV0b3Njcm9sbEZvclNlbGVjdGlvbiwKKyNpZiBFTkFCTEUoUEFOX1ND
Uk9MTElORykKKyAgICBBdXRvc2Nyb2xsRm9yUGFuLAorI2VuZGlmCit9OworCisvLyBBdXRzY3Jv
bGxDb250cm9sbGVyIGhhbmRlbHMgYXV0b3Njcm9sbCBhbmQgcGFuIHNjcm9sbCBmb3IgRXZlbnRI
YW5kbGVyLgorY2xhc3MgQXV0b3Njcm9sbENvbnRyb2xsZXIgeworcHVibGljOgorICAgIEF1dG9z
Y3JvbGxDb250cm9sbGVyKCk7CisgICAgUmVuZGVyQm94KiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSBj
b25zdDsKKyAgICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CisgICAgYm9vbCBw
YW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CisgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxGb3JT
ZWxlY3Rpb24oUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJv
b2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOworICAgIHZvaWQgdXBkYXRlQXV0
b3Njcm9sbFJlbmRlcmVyKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgdm9pZCBo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2
b2lkIHNldFBhblNjcm9sbEluUHJvZ3Jlc3MoYm9vbCk7CisgICAgdm9pZCBzdGFydFBhblNjcm9s
bGluZyhSZW5kZXJCb3gqLCBjb25zdCBJbnRQb2ludCYpOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBhdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4q
KTsKKyAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JP
TExJTkcpCisgICAgdm9pZCB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOworI2VuZGlmCisKKyAgICBU
aW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4gbV9hdXRvc2Nyb2xsVGltZXI7CisgICAgUmVuZGVy
Qm94KiBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKyAgICBBdXRvc2Nyb2xsVHlwZSBtX2F1dG9zY3Jv
bGxUeXBlOworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIEludFBvaW50IG1fcGFuU2Ny
b2xsU3RhcnRQb3M7CisgICAgYm9vbCBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQ7CisgICAgYm9v
bCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3M7CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1dG9zY3JvbGxDb250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAxNThhZDVjZTAzNmMwNzJiMGRhMDVj
Nzk1NTljM2YyMDFiYzRmMzBhLi5jMmY4NmFlNzkzYTUzNWU4MTIyNTQ2OTRkYWZiYzc4ODczMmQ2
MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMzcsOSArMTM3LDYg
QEAgY29uc3QgaW50IENvbXBvc2l0aW9uRXZlbnRLZXlDb2RlID0gMjI5OwogdXNpbmcgbmFtZXNw
YWNlIFNWR05hbWVzOwogI2VuZGlmCiAKLS8vIFdoZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBh
blNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1h
a2UgaXQgc21vb3RoCi1jb25zdCBkb3VibGUgYXV0b3Njcm9sbEludGVydmFsID0gMC4wNTsKLQog
Ly8gVGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIHNlbmRpbmcgYSBmYWtlIG1vdXNl
IGV2ZW50LCB0cmlnZ2VyZWQKIC8vIGR1cmluZyBhIHNjcm9sbC4gVGhlIHNob3J0IGludGVydmFs
IGlzIHVzZWQgaWYgdGhlIGNvbnRlbnQgcmVzcG9uZHMgdG8gdGhlIG1vdXNlIGV2ZW50cyBxdWlj
a2x5IGVub3VnaCwKIC8vIG90aGVyd2lzZSB0aGUgbG9uZyBpbnRlcnZhbCBpcyB1c2VkLgpAQCAt
MzMxLDEzICszMjgsOCBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUp
CiAjZW5kaWYKICAgICAsIG1fbW91c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbihmYWxz
ZSkKICAgICAsIG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkU2VsZWN0
aW9uKQotICAgICwgbV9wYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQotICAgICwgbV9wYW5TY3Jv
bGxCdXR0b25QcmVzc2VkKGZhbHNlKQotICAgICwgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblBy
b2dyZXNzKGZhbHNlKQogICAgICwgbV9ob3ZlclRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6Omhv
dmVyVGltZXJGaXJlZCkKLSAgICAsIG1fYXV0b3Njcm9sbFRpbWVyKHRoaXMsICZFdmVudEhhbmRs
ZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9hdXRvc2Nyb2xsUmVuZGVyZXIoMCkK
LSAgICAsIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisgICAgLCBtX2F1dG9zY3JvbGxD
b250cm9sbGVyKCkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQog
ICAgICwgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQogICAgICwgbV9mYWtlTW91c2VN
b3ZlRXZlbnRUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1l
ckZpcmVkKQpAQCAtNzA0LDMwICs2OTYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAg
IHJldHVybiBzd2FsbG93RXZlbnQ7CiB9CiAKLS8vIFRoZXJlIGFyZSB0d28ga2luZHMgb2YgcmVu
ZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KLXN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICBpZiAoIXJlbmRlcmVyLT5pc0JveCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCBjYW4gYmUg
c2Nyb2xsZWQgaW4gaXRzIG93biByaWdodC4KLSAgICBpZiAodG9SZW5kZXJCb3gocmVuZGVyZXIp
LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCByZXByZXNlbnRzIHRoZSB0b3AgbGV2
ZWwgb2YgYSB3ZWIgcGFnZS4KLSAgICAvLyBUaGlzIGNhbiBiZSBzY3JvbGxlZCBieSBjYWxsaW5n
IENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgotICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZm
ZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCi0gICAgLy8gdGhhdCBwdXQg
d2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMgTWFjIE9TIFggTWFp
bC4KLSAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5kZXJMYXllcjo6c2Nyb2xsUmVj
dFRvVmlzaWJsZS4KLSAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAhPSByZW5kZXJlci0+ZG9jdW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVy
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBQ
YWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWlu
RnJhbWUoKSA9PSBmcmFtZTsKLX0KLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7CkBAIC03NTQsMjAgKzcyMiw4IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBlCiAKICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogCi0g
ICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFtX3BhblNjcm9sbEluUHJv
Z3Jlc3MpIHsgICAgICAgICAgICAKLSAgICAgICAgLy8gRmluZCBhIHJlbmRlcmVyIHRoYXQgY2Fu
IGF1dG9zY3JvbGwuCi0gICAgICAgIHdoaWxlIChyZW5kZXJlciAmJiAhY2FuQXV0b3Njcm9sbChy
ZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXItPnBhcmVudCgpICYmIHJlbmRl
cmVyLT5ub2RlKCkgPT0gcmVuZGVyZXItPmRvY3VtZW50KCkgJiYgcmVuZGVyZXItPmRvY3VtZW50
KCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXIt
PmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgICAgIG1fYXV0
b3Njcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICAgICAgaGFuZGxlQXV0b3Njcm9sbChy
ZW5kZXJlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCisgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnRBdXRvc2Nyb2xsICYmICFwYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKKyAgICAgICAgbV9hdXRv
c2Nyb2xsQ29udHJvbGxlci5zdGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24ocmVuZGVyZXIpOwog
ICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCA9IGZhbHNlOwogICAgIH0KIApA
QCAtOTM1LDggKzg5MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogCiBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MpCi0gICAgICAg
IHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAKICAg
ICBpZiAoaGFuZGxlTW91c2VVcChldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTkw
LDEzMiArOTQ1LDM2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgcmV0dXJuIGhhbmRs
ZWQ7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVBdXRvc2Nyb2xsKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCi17Ci0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHRoZSBhdXRv
c2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaWYgaXQncyBhbHJlYWR5IGFjdGl2ZQotICAgIGlmICht
X2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47ICAgICAKLQotICAg
IHNldEF1dG9zY3JvbGxSZW5kZXJlcihyZW5kZXJlcik7Ci0KLSNpZiBFTkFCTEUoUEFOX1NDUk9M
TElORykKLSAgICBpZiAobV9wYW5TY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIG1fcGFuU2Ny
b2xsU3RhcnRQb3MgPSBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCk7Ci0gICAgICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICB2aWV3LT5hZGRQYW5T
Y3JvbGxJY29uKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotICAgICAgICAvLyBJZiB3ZSdyZSBub3Qg
aW4gdGhlIHRvcCBmcmFtZSB3ZSBub3RpZnkgaXQgdGhhdCB3ZSBkb2luZyBhIHBhblNjcm9sbC4K
LSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAg
IEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICht
X2ZyYW1lICE9IG1haW5GcmFtZSkKLSAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5tX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBzdGFydEF1dG9zY3JvbGxUaW1lcigpOwotfQotCi12b2lkIEV2ZW50SGFu
ZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCi17Ci0gICAg
UmVuZGVyT2JqZWN0KiByID0gYXV0b3Njcm9sbFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyIHx8ICFy
LT5pc0JveCgpKSB7Ci0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAg
IGlmICghbV9tb3VzZVByZXNzZWQpIHsKLSAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChy
KS0+YXV0b3Njcm9sbCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0
IHRoZSBtYWluIGZyYW1lIGhhc24ndCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFu
U2Nyb2xsCi0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAg
ICAgICAgICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3Jv
bGxJblByb2dyZXNzKSB7Ci0gICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmIEVO
QUJMRShQQU5fU0NST0xMSU5HKQotICAgICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOwotICAg
ICAgICB0b1JlbmRlckJveChyKS0+cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotI2Vu
ZGlmCi0gICAgfQotfQotCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAKIHZvaWQgRXZlbnRI
YW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAg
IG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgbV9wYW5TY3JvbGxCdXR0b25QcmVz
c2VkID0gdHJ1ZTsKLSAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRlcmVyKTsKLSAgICBpbnZhbGlk
YXRlQ2xpY2soKTsKLX0KLQotdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRl
KCkKLXsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCF2
aWV3KQorICAgIGlmICghcmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgIHJldHVybjsKLQotICAg
IC8vIEF0IHRoZSBvcmlnaW5hbCBjbGljayBsb2NhdGlvbiB3ZSBkcmF3IGEgNCBhcnJvd2VkIGlj
b24uIE92ZXIgdGhpcyBpY29uIHRoZXJlIHdvbid0IGJlIGFueSBzY3JvbGwKLSAgICAvLyBTbyB3
ZSBkb24ndCB3YW50IHRvIGNoYW5nZSB0aGUgY3Vyc29yIG92ZXIgdGhpcyBhcmVhCi0gICAgYm9v
bCBlYXN0ID0gbV9wYW5TY3JvbGxTdGFydFBvcy54KCkgPCAobV9sYXN0S25vd25Nb3VzZVBvc2l0
aW9uLngoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKLSAgICBib29sIHdlc3Qg
PSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA+IChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24ueCgp
ICsgU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgIGJvb2wgbm9ydGggPSBtX3Bh
blNjcm9sbFN0YXJ0UG9zLnkoKSA+IChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24ueSgpICsgU2Ny
b2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgIGJvb2wgc291dGggPSBtX3BhblNjcm9s
bFN0YXJ0UG9zLnkoKSA8IChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24ueSgpIC0gU2Nyb2xsVmll
dzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgICAgICAgCi0gICAgaWYgKChlYXN0IHx8IHdlc3Qg
fHwgbm9ydGggfHwgc291dGgpICYmIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCkKLSAgICAgICAg
bV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLQotICAgIGlmIChub3J0
aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0
aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBlbHNlIGlmICh3ZXN0KQotICAgICAgICAg
ICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0aFBhbm5pbmdDdXJzb3IoKSk7Ci0g
ICAgfSBlbHNlIGlmIChzb3V0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAgICAgICAgICAgIHZp
ZXctPnNldEN1cnNvcihzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBlbHNlIGlm
ICh3ZXN0KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoV2VzdFBhbm5pbmdDdXJz
b3IoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aFBh
bm5pbmdDdXJzb3IoKSk7Ci0gICAgfSBlbHNlIGlmIChlYXN0KQotICAgICAgICB2aWV3LT5zZXRD
dXJzb3IoZWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgZWxzZSBpZiAod2VzdCkKLSAgICAgICAg
dmlldy0+c2V0Q3Vyc29yKHdlc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgIGVsc2UKLSAgICAgICAg
dmlldy0+c2V0Q3Vyc29yKG1pZGRsZVBhbm5pbmdDdXJzb3IoKSk7CisgICAgbV9hdXRvc2Nyb2xs
Q29udHJvbGxlci5zdGFydFBhblNjcm9sbGluZyh0b1JlbmRlckJveChyZW5kZXJlciksIGxhc3RL
bm93bk1vdXNlUG9zaXRpb24oKSk7CisgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoUEFOX1NDUk9MTElORykKIAogUmVuZGVyT2JqZWN0KiBFdmVudEhhbmRsZXI6
OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXV0b3Njcm9sbFJl
bmRlcmVyOworICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLmF1dG9zY3JvbGxSZW5k
ZXJlcigpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVy
KCkKIHsKLSAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChtX3BhblNj
cm9sbFN0YXJ0UG9zLCB0cnVlKTsKLQotICAgIGlmIChOb2RlKiBub2RlQXRQb2ludCA9IGhpdFRl
c3QuaW5uZXJOb2RlKCkpCi0gICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gbm9kZUF0UG9p
bnQtPnJlbmRlcmVyKCk7CisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci51cGRhdGVBdXRvc2Ny
b2xsUmVuZGVyZXIoKTsKK30KIAotICAgIHdoaWxlIChtX2F1dG9zY3JvbGxSZW5kZXJlciAmJiAh
Y2FuQXV0b3Njcm9sbChtX2F1dG9zY3JvbGxSZW5kZXJlcikpCi0gICAgICAgIG1fYXV0b3Njcm9s
bFJlbmRlcmVyID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPnBhcmVudCgpOworYm9vbCBFdmVudEhh
bmRsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdXRv
c2Nyb2xsQ29udHJvbGxlci5hdXRvc2Nyb2xsSW5Qcm9ncmVzcygpOwogfQogCi12b2lkIEV2ZW50
SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiti
b29sIEV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0CiB7Ci0gICAgbV9h
dXRvc2Nyb2xsUmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICByZXR1cm4gbV9hdXRvc2Nyb2xsQ29u
dHJvbGxlci5wYW5TY3JvbGxJblByb2dyZXNzKCk7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQpAQCAtMTE5NSw1MCArMTA1NCw5IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpo
aXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi0KLXZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydEF1dG9zY3JvbGxU
aW1lcigpCi17Ci0gICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RhcnRSZXBlYXRpbmcoYXV0b3Njcm9s
bEludGVydmFsKTsKLX0KLQogdm9pZCBFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIo
Ym9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCiB7Ci0gICAgaWYgKG1fYXV0b3Njcm9sbElu
UHJvZ3Jlc3MpIHsKLSAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSkgewotICAg
ICAgICAgICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShtX21v
dXNlUHJlc3NOb2RlLmdldCgpKSkKLSAgICAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRvc2Nyb2xs
UmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCAmJiAo
bV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MpKQotICAgICAg
ICAgICAgdG9SZW5kZXJCb3goYXV0b3Njcm9sbFJlbmRlcmVyKCkpLT5zdG9wQXV0b3Njcm9sbCgp
OwotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgICAgICBpZiAobV9wYW5TY3JvbGxJblBy
b2dyZXNzKSB7Ci0gICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmll
dygpKSB7Ci0gICAgICAgICAgICAgICAgdmlldy0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigpOwotICAg
ICAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBzZXRBdXRvc2Nyb2xsUmVuZGVyZXIo
MCk7Ci0gICAgfQotCi0gICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RvcCgpOwotCi0gICAgbV9wYW5T
Y3JvbGxJblByb2dyZXNzID0gZmFsc2U7Ci0gICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblBy
b2dyZXNzID0gZmFsc2U7Ci0KLSAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIHRvcCBmcmFtZSB3
ZSBub3RpZnkgaXQgdGhhdCB3ZSBhcmUgbm90IGRvaW5nIGEgcGFuU2Nyb2xsIGFueSBtb3JlLgot
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIEZyYW1lKiBt
YWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICAgICAgaWYgKG1fZnJhbWUgIT0gbWFp
bkZyYW1lKQotICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3Jv
bGxJblByb2dyZXNzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVz
cyA9IGZhbHNlOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIuc3RvcEF1dG9zY3JvbGxUaW1l
cihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOwogfQogCiBOb2RlKiBFdmVudEhhbmRsZXI6Om1v
dXNlUHJlc3NOb2RlKCkgY29uc3QKQEAgLTE0MjEsOCArMTIzOSwxMCBAQCBPcHRpb25hbEN1cnNv
ciBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldgogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7Ci0gICAgaWYgKHBhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKQorI2lmIEVOQUJM
RShQQU5fU0NST0xMSU5HKQorICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPnBhblNjcm9sbEluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIE5vQ3Vyc29yQ2hhbmdl
OworI2VuZGlmCiAKICAgICBOb2RlKiBub2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOwogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlID8gbm9kZS0+cmVuZGVyZXIoKSA6IDA7CkBAIC0x
NjUyLDEwICsxNDcyLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAKICNpZiBFTkFCTEUoUEFO
X1NDUk9MTElORykKICAgICAvLyBXZSBzdG9yZSB3aGV0aGVyIHBhbiBzY3JvbGxpbmcgaXMgaW4g
cHJvZ3Jlc3MgYmVmb3JlIGNhbGxpbmcgc3RvcEF1dG9zY3JvbGxUaW1lcigpCi0gICAgLy8gYmVj
YXVzZSBpdCB3aWxsIHNldCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgdG8gZmFsc2Ugb24gcmV0dXJu
LgotICAgIGJvb2wgaXNQYW5TY3JvbGxJblByb2dyZXNzID0gbV9mcmFtZS0+cGFnZSgpICYmIG1f
ZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbElu
UHJvZ3Jlc3M7Ci0gICAgaWYgKGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX2F1dG9zY3JvbGxJ
blByb2dyZXNzKQotICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgLy8gYmVjYXVz
ZSBpdCB3aWxsIHNldCBtX2F1dG9zY3JvbGxUeXBlIHRvIE5vQXV0b3Njcm9sbCBvbiByZXR1cm4u
CisgICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9m
cmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnBhblNjcm9sbEluUHJv
Z3Jlc3MoKTsKKyAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgaWYgKGlzUGFuU2Nyb2xs
SW5Qcm9ncmVzcykgewogICAgICAgICAvLyBXZSBpbnZhbGlkYXRlIHRoZSBjbGljayB3aGVuIGV4
aXRpbmcgcGFuIHNjcm9sbGluZyBzbyB0aGF0IHdlIGRvbid0IGluYWR2ZXJ0ZW50bHkgbmF2aWdh
dGUKICAgICAgICAgLy8gYXdheSBmcm9tIHRoZSBjdXJyZW50IHBhZ2UgKGUuZy4gdGhlIGNsaWNr
IHdhcyBvbiBhIGh5cGVybGluaykuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTAyMz4uCkBAIC0x
OTUwLDEwICsxNzY5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1
cmUpOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgaWYgKG1vdXNlRXZlbnQuYnV0
dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQotICAgICAgICBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQg
PSBmYWxzZTsKLSAgICBpZiAobV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKQotICAg
ICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci5o
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICNlbmRpZgogCiAgICAgbV9tb3Vz
ZVByZXNzZWQgPSBmYWxzZTsKQEAgLTMxNDMsNyArMjk1OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudCkK
IAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBpZiAocGFnZS0+bWFpbkZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKICAgICAgICAgICAg
IC8vIElmIGEga2V5IGlzIHByZXNzZWQgd2hpbGUgdGhlIHBhblNjcm9sbCBpcyBpbiBwcm9ncmVz
cyB0aGVuIHdlIHdhbnQgdG8gc3RvcAogICAgICAgICAgICAgaWYgKGluaXRpYWxLZXlFdmVudC50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZlbnQudHlwZSgp
ID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAogICAgICAgICAgICAgICAgIHN0b3BBdXRv
c2Nyb2xsVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDI3ZTA4MTcw
YjlhMDcwMTY1MGJjMzg4ZjEzMTVkMTBiMzNkNjY1ZjEuLjM2ZWQ1ZWQ5ODczOThlNGFlNmJjMWY4
ZTg1NWZlOTFiNjg3ZTZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBFdmVudEhhbmRsZXJfaAogI2RlZmluZSBFdmVudEhhbmRsZXJf
aAogCisjaW5jbHVkZSAiQXV0b3Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5oIgpAQCAt
MTE0LDcgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJv
b2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOwogICAgIFJlbmRlck9iamVjdCog
YXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Nyb2xsUmVu
ZGVyZXIoKTsKLSAgICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsgfQorICAgIEF1dG9zY3JvbGxDb250cm9sbGVyJiBhdXRv
c2Nyb2xsQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7IH0KKyAg
ICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CisgICAgYm9vbCBtb3VzZURvd25X
YXNJblN1YmZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZURvd25XYXNJblN1YmZyYW1lOyB9
CisgICAgYm9vbCBwYW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIGRpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwpAQCAtMjY5LDE2ICsyNzMsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCiAgICAgT3B0aW9uYWxDdXJzb3Igc2VsZWN0Q3Vy
c29yKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBTY3JvbGxiYXIqKTsKLSNp
ZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICB2b2lkIHVwZGF0ZVBhblNjcm9sbFN0YXRlKCk7
Ci0jZW5kaWYKLQogICAgIHZvaWQgaG92ZXJUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4q
KTsKIAotICAgIHZvaWQgaGFuZGxlQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqKTsKLSAgICB2b2lk
IHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgdm9pZCBzZXRBdXRvc2Nyb2xsUmVuZGVyZXIo
UmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCBhdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxFdmVu
dEhhbmRsZXI+Kik7CiAgICAgYm9vbCBsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coU2Nyb2xsTG9naWNh
bERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IDApOwog
ICAgIAogICAgIGJvb2wgc2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbChjb25z
dCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3Q7CkBAIC00
MDEsMTcgKzM5NywxMSBAQCBwcml2YXRlOgogICAgIExheW91dFBvaW50IG1fZHJhZ1N0YXJ0UG9z
OwogI2VuZGlmCiAKLSAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOwotICAgIGJvb2wg
bV9wYW5TY3JvbGxJblByb2dyZXNzOwotCiAgICAgYm9vbCBtX3BhblNjcm9sbEJ1dHRvblByZXNz
ZWQ7Ci0gICAgYm9vbCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3M7CiAKICAgICBU
aW1lcjxFdmVudEhhbmRsZXI+IG1faG92ZXJUaW1lcjsKLSAgICAKLSAgICBUaW1lcjxFdmVudEhh
bmRsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwotICAgIFJlbmRlck9iamVjdCogbV9hdXRvc2Nyb2xs
UmVuZGVyZXI7Ci0gICAgYm9vbCBtX2F1dG9zY3JvbGxJblByb2dyZXNzOworCisgICAgQXV0b3Nj
cm9sbENvbnRyb2xsZXIgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcjsKICAgICBib29sIG1fbW91c2VE
b3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9tb3VzZURvd25XYXNJblN1YmZyYW1l
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDI1MmQzMDkxMGZm
ZDdjNzc5YThhOGI0NTJjOTUzZDNjNzkwYzFkMTcuLjBhYzJhOGRlMTZlODE2Y2I2YzM2NDU4OGY5
YjBmYjJjODMyOTU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgImh0
bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJh
bWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAtNjQyLDYgKzY0MywzOSBAQCB2
b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCiAgICAgICAgIGxheWVyKCktPmF1dG9zY3JvbGwo
KTsKIH0KIAorLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJlciB0aGF0IGNhbiBhdXRv
c2Nyb2xsLgorYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKSBjb25zdAoreworICAgIC8v
IENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBzY3JvbGxlZCBpbiBpdHMgb3duIHJpZ2h0Lgor
ICAgIGlmIChjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCByZXByZXNlbnRzIHRoZSB0
b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KKyAgICAvLyBUaGlzIGNhbiBiZSBzY3JvbGxlZCBieSBj
YWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgorICAgIC8vIFRoaXMgb25seSBoYXMg
YW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCisgICAgLy8gdGhh
dCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMgTWFjIE9T
IFggTWFpbC4KKyAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5kZXJMYXllcjo6c2Ny
b2xsUmVjdFRvVmlzaWJsZS4KKyAgICBpZiAobm9kZSgpICE9IGRvY3VtZW50KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsK
K30KKworUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChyZW5kZXJlciAmJiAhKHJlbmRlcmVyLT5pc0Jv
eCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0b3Njcm9sbCgpKSkgeworICAgICAg
ICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9kZSgpID09IHJlbmRlcmVy
LT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKKyAg
ICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRl
cmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworfQorCiB2b2lkIFJlbmRlckJv
eDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3VyY2UpCiB7CiAgICAgaWYgKGxheWVyKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNWI4YTZlNGI4MWYxZDExNTQy
N2U1YmMzMDU0ODk3MjY0OWFjMjc3OS4uM2IzYTAyMTdiYTc1OGUxMTVhODhkMWE5ZGU1NGVlY2Vk
ZmJmNGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDM5LDYgKzQz
OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJl
YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVk
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICBib29sIGNhbkF1
dG9zY3JvbGwoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVuZGVyQm94KiBmaW5kQXV0b3Njcm9sbGFi
bGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xsKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179211</attachid>
            <date>2012-12-12 23:48:51 -0800</date>
            <delta_ts>2012-12-13 00:03:51 -0800</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-104764-20121213164611.patch</filename>
            <type>text/plain</type>
            <size>43016</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFhNDliZTI0OGNmYWI4
YjEzNmIyMzQyZTU5ZTUzOTgxYjE5ZGFjNy4uNjg2M2I2YThjZGNiY2Y1Zjk2MDIwMzEyNzYyZTBl
ZmU1ZWMzZjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogQ2hhbmdlZCB0byBhZGQgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiAgQ2hhbmdlZCB0byBhZGQgcGFnZS9B
dXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogVGFyZ2V0LnByaTogIENoYW5n
ZWQgdG8gYWRkIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLntjcHAsaH0K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQ2hhbmdlZCB0byBhZGQg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250
cm9sbGVyLntjcHAsaH0KKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5BdXRvc2Nyb2xsKTogSGVscGVyIGZ1bmN0aW9u
IGZvciBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKS4KKyAgICAgICAgKFdlYkNvcmU6OmdldE1h
aW5GcmFtZSk6IEhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxD
b250cm9sbGVyOjpBdXRvc2Nyb2xsQ29udHJvbGxlcik6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVy
LgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1dG9zY3JvbGxSZW5k
ZXJlcik6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Nj
cm9sbENvbnRyb2xsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKTogTW92ZWQgZnJvbSBFdmVudEhh
bmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRBdXRv
c2Nyb2xsRm9yU2VsZWN0aW9uKTogUmVwbGFjZW1lbnQgb2YgRXZlbnRIYW5kbGVyOjpoYW5kbGVB
dXRvc2Nyb2xsKCkuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3Rv
cEF1dG9zY3JvbGxUaW1lcik6IE1vdmVlZCBmcm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIpOiBk
aXR0bworICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KTogRXh0cmFjdGVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MpOiBSZXBsYWNl
bWVudCBvZiBFdmVudEhhbmRsZXI6Om1fcGFuU2Nyb2xsSW5Qcm9ncmVzcy4KKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZyk6IE1vdmVkIGZy
b20gRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZygpCisgICAgICAgIChXZWJDb3JlOjpB
dXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpOiBNb3ZlZCBmcm9tIEV2
ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcik6IE1vdmVkIGZyb20gRXZl
bnRIYW5kbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcigpLgorICAgICAgICAoV2ViQ29yZTo6QXV0
b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKTogTW92ZWQgZnJvbSBFdmVu
dEhhbmRsZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKCkuCisgICAgICAgICogcGFnZS9BdXRvc2Ny
b2xsQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKEF1dG9zY3JvbGxDb250cm9sbGVyKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6IENoYW5nZWQgYXV0b3Njcm9sbCBhbmQgcGFuc2Nyb2xs
IHJlbGF0ZWQgbWVtYmVyIHZhcmlhYmxlIGluaXRpYWxpemF0aW9ucyB0byBtX2F1dG9zY3JvbGxD
b250cm9sbGVyIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29u
dHJvbGxlcjo6c3RhcnRBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uKCkuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogQ2hhbmdlZCB0byByZW1v
dmUgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKTogQ2hhbmdlZCB0byBjYWxsIEF1dG9zY3Jv
bGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZygpLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBDaGFuZ2VkIHRvIHVzZSBBdXRvc2Nyb2xs
Q29udHJvbGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Nj
cm9sbFJlbmRlcmVyKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0
b3Njcm9sbEluUHJvZ3Jlc3MpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpwYW5TY3JvbGxJblByb2dyZXNzKTogQWRkZWQgdG8gcmVwbGFjZSBtX3BhblNjcm9sbEluUHJv
Z3Jlc3MuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xsVGlt
ZXIpOiBDaGFuZ2VkIHRvIHVzZSBBdXRvc2Nyb2xsQ29udHJvbGxlci4KKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKTogQ2hhbmdlZCB0byB1c2UgcGFuU2Nyb2xs
SW5Qcm9ncmVzcygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQpOiBDaGFnbmVkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRs
ZU1vdXNlUHJlc3NFdmVudCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlF
dmVudCk6IENoYW5nZWQgdG8gdXNlIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphdXRv
c2Nyb2xsQ29udHJvbGxlcik6IEFkZGVkIGZvciB1c2luZyBtYWluIGZyYW1lJ3MgcGFuU2Nyb2xs
SW5Qcm9ncmVzcygpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZURvd25X
YXNJblN1YmZyYW1lKTogQWRkZWQgZm9yIEF1dG9zY3JvbGxDb250cm9sbGVyLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpj
YW5BdXRvc2Nyb2xsKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUpOiBNb3ZlZCBmcm9tIEV2ZW50SGFu
ZGxlci5jcHAuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVu
ZGVyQm94KTogQWRkZWQgbmV3IGZ1bmN0aW9ucyBjYW5BdXRvc2Nyb2xsKCkgYW5kIGZpbmRBdXRv
c2Nyb2xsYWJsZSgpLgorCiAyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDb250YWluZXJOb2RlQWxnb3JpdGhtOjpub3RpZnlJbnNl
cnRlZEludG9Eb2N1bWVudCBpcyBub3QgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlODlm
ZjJlNzNkOTZkYWVhMGEzOTU0OTAyYjAzMTg0MmEwMzE1Mzg0Li5mZGJiOGZkN2MzM2IzNTU3MzM4
M2M4NzY2MzA5NGU5N2NlYzliYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTcxOSw2ICsx
NzE5LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5jcHAKICAgICBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCiAKKyAgICBwYWdlL0F1dG9z
Y3JvbGxDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvQmFySW5mby5jcHAKICAgICBwYWdlL0Nocm9t
ZS5jcHAKICAgICBwYWdlL0NvbnNvbGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCA3YmJkNjM3NDdlMWEwMzc5OWM5OTZkM2I1MGI3MjgzYTQ4MzdhZjQyLi5lNzE2ZjhlZTBh
MGNhM2YwMzA1MjdjMGZmNTc2NmFkOThkMmY2YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTQwMDIsNiArNDAwMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9s
bENvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9s
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvQmFySW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggNTFhMTRmMzhiODVhZDExYzNhYTdjMDNjN2FiNzQ0MGI2YzRhYjY2YS4u
MWYxNGE5YTU4NDQ2Y2NmMzc5YjY3Mjc4MDBlMTlhMGM4ZjgyMjFlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC04NjgsNiArODY4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlv
bi5jcHAgXAogICAgIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBcCisgICAg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2UvQmFySW5mby5jcHAgXAog
ICAgIHBhZ2UvQ2hyb21lLmNwcCBcCiAgICAgcGFnZS9Db25zb2xlLmNwcCBcCkBAIC0yMDE0LDYg
KzIwMTUsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1h
dGlvbi5oIFwKICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oIFwKICAgICBw
YWdlL0FkanVzdFZpZXdTaXplT3JOb3QuaCBcCisgICAgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxl
ci5oIFwKICAgICBwYWdlL0JhckluZm8uaCBcCiAgICAgcGFnZS9DaHJvbWUuaCBcCiAgICAgcGFn
ZS9Db25zb2xlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY5MGQxODgxNjRiNDU5YzM5ZDRhMTNl
MWIzZjM3NjJlOTU4NzEwZTAuLjhlYTBmZDAwODZjMWFmYTc2OWRhMjlhYWNlMDk3NmE0NGU1NGM1
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMjgsNiArMjAyOCw4IEBACiAgICAgICAgICAgICAn
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5o
JywKKyAgICAgICAgICAgICdwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcCcsCisgICAgICAg
ICAgICAncGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL0Jh
ckluZm8uY3BwJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaCcsCiAgICAgICAgICAgICAn
cGFnZS9DaHJvbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggMjVlZTNjMDI5ODFjOTU0ZDYwZGZmMTU0MmI1YzAzZmZjNWY0MmQyYi4u
NGVlNjY4YjM4M2FkZDQ5YWEyYzBjNTFiYWU1NzRiNjU1ZTE5NDczMCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2Nzk4LDYgKzI2Nzk4LDE0
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBh
Z2VcQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEF1dG9zY3JvbGxDb250cm9sbGVyLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcQmFySW5m
by5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxYjUyMTkzOTViY2I3MDcwNThjZGRlZjAw
ODM1NDhiOTM2NzgwYjIuLjk0ZGU0YmRiNmNiZjE4ZjY3NGJmNGQ5MzIzMDRmODgxZjM0NDRjNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyMzIsNiArMTIzMiw4IEBACiAJCTQ1MTI1MDIzMTVEQ0UzN0QwMDJGODRFMiAvKiBT
cGluQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50Lmgg
Ki87IH07CiAJCTQ1M0VCNjM2MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTNFQjYzNDE1
OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuY3BwICovOyB9OwogCQk0NTNFQjYzNzE1
OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1M0VCNjM1MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRl
VGltZUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ1ODMwRDREMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovOyB9OworCQk0
NTgzMEQ0RTE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1ODMwRDRDMTY3OUI0Rjgw
MEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1ODYxQzcyMTYxOTQ5REMwMDAxMEYzQSAvKiBC
YXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTg2MUM3MDE2MTk0OURDMDAwMTBGM0Eg
LyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwICovOyB9OwogCQk0
NTg2MUM3MzE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1ODYxQzcxMTYxOTQ5REMwMDAxMEYzQSAvKiBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oICovOyB9OwogCQk0NTg2MUM3RjE2MTk0QTc0MDAwMTBGM0EgLyogRGF0ZVRp
bWVFZGl0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NTg2MUM3NTE2MTk0QTc0MDAwMTBGM0EgLyogRGF0ZVRpbWVFZGl0RWxlbWVudC5j
cHAgKi87IH07CkBAIC04NDc0LDYgKzg0NzYsOCBAQAogCQk0NTEyNTAyMTE1RENFMzdEMDAyRjg0
RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3BpbkJ1dHRvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUz
RUI2MzQxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVUaW1lRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9y
bWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVUaW1lRm9ybWF0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1ODMwRDRCMTY3OUI0RjgwMEFDRjhDMyAv
KiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ1ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvc2Nyb2xsQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTg2MUM3MDE2MTk0OURDMDAwMTBGM0Eg
LyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTg2MUM3MTE2MTk0
OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDU4NjFDNzUx
NjE5NEE3NDAwMDEwRjNBIC8qIERhdGVUaW1lRWRpdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk1MSw2ICsxNTk1NSw4IEBACiAJCQkJODUzOEYwMDAw
QUQ3MTc3MDAwNkE4MUQxIC8qIEFic3RyYWN0Vmlldy5pZGwgKi8sCiAJCQkJQkNGNDhDRTYxMzcw
RDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1
MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJNDU4MzBE
NEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCAqLywKKwkJCQk0
NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCAqLywKIAkJ
CQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5jcHAgKi8sCiAJCQkJQkMxMjRF
RTUwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaCAqLywKIAkJCQlCQzEyNEVFNjBDMjY0MUNE
MDA5RTIzNDkgLyogQmFySW5mby5pZGwgKi8sCkBAIC0yMjY3OCw2ICsyMjY4NCw3IEBACiAJCQkJ
RTEyNDc0ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY0QzBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25N
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTFFQ0IzMEM5MUM1NTYwMERDMjU1QiAvKiBBdXRv
ZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1ODMwRDRFMTY3OUI0RjgwMEFDRjhD
MyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEUw
QTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjYzMTUsNiArMjYzMjIsNyBAQAogCQkJCTkzNEY3MTM4MEQ1
QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE0Qzc2NEQwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQUYwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9k
cmFpbmVkUG9vbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ1ODMwRDREMTY3OUI0RjgwMEFDRjhD
MyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjA1
MDBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Ny
b2xsQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAxMjc3OTVkYTAwMWMwZDA0MTc4ZDNiZGE2
YTMyZWI2NzNlMzg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0
b3Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292
IChhcEB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYy4gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyQm94Lmgi
CisjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFdo
ZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0
aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCitzdGF0aWMgY29uc3QgZG91
YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CisKK3N0YXRpYyBib29sIGNhbkF1dG9zY3Jv
bGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gcmVuZGVyZXItPmlzQm94
KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5BdXRvc2Nyb2xsKCk7Cit9CisKKyNpZiBF
TkFCTEUoUEFOX1NDUk9MTElORykKK3N0YXRpYyBGcmFtZSogZ2V0TWFpbkZyYW1lKEZyYW1lKiBm
cmFtZSkKK3sKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFn
ZSA/IHBhZ2UtPm1haW5GcmFtZSgpIDogMDsKK30KKyNlbmRpZgorCitBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6QXV0b3Njcm9sbENvbnRyb2xsZXIoKQorICAgIDogbV9hdXRvc2Nyb2xsVGltZXIodGhp
cywgJkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCkKKyAgICAsIG1f
YXV0b3Njcm9sbFJlbmRlcmVyKDApCisgICAgLCBtX2F1dG9zY3JvbGxUeXBlKE5vQXV0b3Njcm9s
bCkKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICAsIG1fcGFuU2Nyb2xsQnV0dG9uUHJl
c3NlZChmYWxzZSkKKyAgICAsIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyhmYWxz
ZSkKKyNlbmRpZgoreworfQorCitSZW5kZXJCb3gqIEF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRv
c2Nyb2xsUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxSZW5kZXJl
cjsKK30KKworYm9vbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3Mo
KSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxUeXBlID09IEF1dG9zY3JvbGxGb3JT
ZWxlY3Rpb247Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9s
bEZvclNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gdHJpZ2dlciB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFuU2Nyb2xsIGlmIGl0J3Mg
YWxyZWFkeSBhY3RpdmUKKyAgICBpZiAobV9hdXRvc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIFJlbmRlckJveCogc2Nyb2xsYWJsZSA9IFJlbmRlckJveDo6Zmlu
ZEF1dG9zY3JvbGxhYmxlKHJlbmRlcmVyKTsKKyAgICBpZiAoIXNjcm9sbGFibGUpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclNlbGVjdGlvbjsK
KyAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgc3RhcnRBdXRvc2Ny
b2xsVGltZXIoKTsKK30KKwordm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RvcEF1dG9zY3Jv
bGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBSZW5kZXJCb3gq
IHNjcm9sbGFibGUgPSBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKyAgICBtX2F1dG9zY3JvbGxUaW1l
ci5zdG9wKCk7CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IE5vQXV0b3Njcm9sbDsKKyAgICBtX2F1
dG9zY3JvbGxSZW5kZXJlciA9IDA7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgbV9w
YW5TY3JvbGxCdXR0b25QcmVzc2VkID0gZmFsc2U7CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3Jv
bGxJblByb2dyZXNzID0gZmFsc2U7CisjZW5kaWYKKworICAgIGlmICghc2Nyb2xsYWJsZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsK
KyAgICBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsK
KyAgICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBldmVudEhhbmRsZXItPm1vdXNlRG93
bldhc0luU3ViZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gZXZlbnRI
YW5kbGVyLT5zdWJmcmFtZUZvclRhcmdldE5vZGUoZXZlbnRIYW5kbGVyLT5tb3VzZVByZXNzTm9k
ZSgpKSkKKyAgICAgICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3Jv
bGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCisgICAgICAgIHNjcm9sbGFi
bGUtPnN0b3BBdXRvc2Nyb2xsKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgaWYg
KHBhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgdmlldy0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigp
OworICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIC8vIElm
IHdlJ3JlIG5vdCBpbiB0aGUgdG9wIGZyYW1lIHdlIG5vdGlmeSBpdCB0aGF0IHdlIGFyZSBub3Qg
ZG9pbmcgYSBwYW5TY3JvbGwgYW55IG1vcmUuCisgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBn
ZXRNYWluRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGlmIChmcmFtZSAhPSBtYWluRnJhbWUpCisg
ICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5hdXRvc2Nyb2xsQ29udHJvbGxl
cigpLm1fYXV0b3Njcm9sbFR5cGUgPSBOb0F1dG9zY3JvbGw7CisgICAgfQorI2VuZGlmCit9CisK
K3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpCit7
CisgICAgaWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyOworCisjaWYgRU5B
QkxFKFBBTl9TQ1JPTExJTkcpCisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0ID0gbV9hdXRvc2Ny
b2xsUmVuZGVyZXItPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChtX3BhblNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKKworICAgIGlmIChOb2RlKiBub2RlQXRQb2lu
dCA9IGhpdFRlc3QuaW5uZXJOb2RlKCkpCisgICAgICAgIHJlbmRlcmVyID0gbm9kZUF0UG9pbnQt
PnJlbmRlcmVyKCk7CisjZW5kaWYKKworICAgIHdoaWxlIChyZW5kZXJlciAmJiAhY2FuQXV0b3Nj
cm9sbChyZW5kZXJlcikpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwor
ICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkg
PyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworfQorCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJ
TkcpCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKG1vdXNlRXZl
bnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQorICAgICAgICBtX3BhblNjcm9sbEJ1dHRvblBy
ZXNzZWQgPSBmYWxzZTsKKyAgICBpZiAobV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNz
KQorICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cit9CisKK2Jvb2wgQXV0b3Njcm9sbENv
bnRyb2xsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1
dG9zY3JvbGxUeXBlID09IEF1dG9zY3JvbGxGb3JQYW47Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENv
bnRyb2xsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlckJveCogc2Nyb2xsYWJsZSwgY29uc3Qg
SW50UG9pbnQmIGxhc3RLbm93bk1vdXNlUG9zaXRpb24pCit7CisgICAgLy8gV2UgZG9uJ3Qgd2Fu
dCB0byB0cmlnZ2VyIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaWYgaXQncyBhbHJl
YWR5IGFjdGl2ZQorICAgIGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclBhbjsKKyAg
ICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgbV9wYW5TY3JvbGxTdGFy
dFBvcyA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3Jv
bGxJblByb2dyZXNzID0gZmFsc2U7CisKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gc2Nyb2xs
YWJsZS0+ZnJhbWUoKS0+dmlldygpKQorICAgICAgICB2aWV3LT5hZGRQYW5TY3JvbGxJY29uKGxh
c3RLbm93bk1vdXNlUG9zaXRpb24pOworICAgIHNjcm9sbGFibGUtPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5hdXRvc2Nyb2xsQ29udHJvbGxlcigpLm1fYXV0b3Njcm9sbFR5cGUgPSBBdXRvc2Ny
b2xsRm9yUGFuOworICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Cit9CisjZWxzZQorYm9vbCBB
dXRvc2Nyb2xsQ29udHJvbGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1
dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiopCit7CisgICAg
aWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2F1dG9z
Y3JvbGxSZW5kZXJlci0+ZnJhbWUoKTsKKyAgICBzd2l0Y2ggKG1fYXV0b3Njcm9sbFR5cGUpIHsK
KyAgICBjYXNlIEF1dG9zY3JvbGxGb3JTZWxlY3Rpb246CisgICAgICAgIGlmICghZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5tb3VzZVByZXNzZWQoKSkgeworICAgICAgICAgICAgc3RvcEF1dG9zY3Jv
bGxUaW1lcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fYXV0
b3Njcm9sbFJlbmRlcmVyLT5hdXRvc2Nyb2xsKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Tm9BdXRvc2Nyb2xsOgorICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykK
KyAgICBjYXNlIEF1dG9zY3JvbGxGb3JQYW46CisgICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRo
ZSBtYWluIGZyYW1lIGhhc24ndCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Ny
b2xsCisgICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gZ2V0TWFpbkZyYW1lKGZyYW1lKSkg
eworICAgICAgICAgICAgaWYgKCFtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJ
blByb2dyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgdXBkYXRl
UGFuU2Nyb2xsU3RhdGUodmlldywgZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmxhc3RLbm93bk1v
dXNlUG9zaXRpb24oKSk7CisgICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5wYW5TY3JvbGwo
bV9wYW5TY3JvbGxTdGFydFBvcyk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorfQor
Cit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcigpCit7Cisg
ICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RhcnRSZXBlYXRpbmcoYXV0b3Njcm9sbEludGVydmFsKTsK
K30KKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQordm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlUGFuU2Nyb2xsU3RhdGUoRnJhbWVWaWV3KiB2aWV3LCBjb25zdCBJbnRQb2ludCYg
bGFzdEtub3duTW91c2VQb3NpdGlvbikKK3sKKyAgICAvLyBBdCB0aGUgb3JpZ2luYWwgY2xpY2sg
bG9jYXRpb24gd2UgZHJhdyBhIDQgYXJyb3dlZCBpY29uLiBPdmVyIHRoaXMgaWNvbiB0aGVyZSB3
b24ndCBiZSBhbnkgc2Nyb2xsCisgICAgLy8gU28gd2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhl
IGN1cnNvciBvdmVyIHRoaXMgYXJlYQorICAgIGJvb2wgZWFzdCA9IG1fcGFuU2Nyb2xsU3RhcnRQ
b3MueCgpIDwgKGxhc3RLbm93bk1vdXNlUG9zaXRpb24ueCgpIC0gU2Nyb2xsVmlldzo6bm9QYW5T
Y3JvbGxSYWRpdXMpOworICAgIGJvb2wgd2VzdCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueCgpID4g
KGxhc3RLbm93bk1vdXNlUG9zaXRpb24ueCgpICsgU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRp
dXMpOworICAgIGJvb2wgbm9ydGggPSBtX3BhblNjcm9sbFN0YXJ0UG9zLnkoKSA+IChsYXN0S25v
d25Nb3VzZVBvc2l0aW9uLnkoKSArIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKyAg
ICBib29sIHNvdXRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55KCkgPCAobGFzdEtub3duTW91c2VQ
b3NpdGlvbi55KCkgLSBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7CisKKyAgICBpZiAo
KGVhc3QgfHwgd2VzdCB8fCBub3J0aCB8fCBzb3V0aCkgJiYgbV9wYW5TY3JvbGxCdXR0b25QcmVz
c2VkKQorICAgICAgICBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwor
CisgICAgaWYgKG5vcnRoKSB7CisgICAgICAgIGlmIChlYXN0KQorICAgICAgICAgICAgdmlldy0+
c2V0Q3Vyc29yKG5vcnRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAgICAgIGVsc2UgaWYgKHdl
c3QpCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhXZXN0UGFubmluZ0N1cnNvcigp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoUGFubmlu
Z0N1cnNvcigpKTsKKyAgICB9IGVsc2UgaWYgKHNvdXRoKSB7CisgICAgICAgIGlmIChlYXN0KQor
ICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKHdlc3QpCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhX
ZXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmlldy0+c2V0
Q3Vyc29yKHNvdXRoUGFubmluZ0N1cnNvcigpKTsKKyAgICB9IGVsc2UgaWYgKGVhc3QpCisgICAg
ICAgIHZpZXctPnNldEN1cnNvcihlYXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICBlbHNlIGlmICh3
ZXN0KQorICAgICAgICB2aWV3LT5zZXRDdXJzb3Iod2VzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAg
ZWxzZQorICAgICAgICB2aWV3LT5zZXRDdXJzb3IobWlkZGxlUGFubmluZ0N1cnNvcigpKTsKK30K
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1
dG9zY3JvbGxDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MxMzkwZjBlODBjNzI1NGExM2NiOGYz
M2Q3OTA5YTdmMWNiZGFmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QXV0b3Njcm9sbENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBdXRvc2Nyb2xsQ29udHJvbGxlcl9oCisjZGVmaW5l
IEF1dG9zY3JvbGxDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVk
ZSAiVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudEhhbmRsZXI7
CitjbGFzcyBGcmFtZTsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlck9iamVjdDsKKworZW51bSBBdXRvc2Ny
b2xsVHlwZSB7CisgICAgTm9BdXRvc2Nyb2xsLAorICAgIEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24s
CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgQXV0b3Njcm9sbEZvclBhbiwKKyNlbmRp
ZgorfTsKKworLy8gQXV0c2Nyb2xsQ29udHJvbGxlciBoYW5kZWxzIGF1dG9zY3JvbGwgYW5kIHBh
biBzY3JvbGwgZm9yIEV2ZW50SGFuZGxlci4KK2NsYXNzIEF1dG9zY3JvbGxDb250cm9sbGVyIHsK
K3B1YmxpYzoKKyAgICBBdXRvc2Nyb2xsQ29udHJvbGxlcigpOworICAgIFJlbmRlckJveCogYXV0
b3Njcm9sbFJlbmRlcmVyKCkgY29uc3Q7CisgICAgYm9vbCBhdXRvc2Nyb2xsSW5Qcm9ncmVzcygp
IGNvbnN0OworICAgIGJvb2wgcGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OworICAgIHZvaWQg
c3RhcnRBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uKFJlbmRlck9iamVjdCopOworICAgIHZvaWQgc3Rv
cEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlKTsK
KyAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOworI2lmIEVOQUJMRShQQU5fU0NS
T0xMSU5HKQorICAgIHZvaWQgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CisgICAgdm9pZCBzZXRQYW5TY3JvbGxJblByb2dyZXNzKGJvb2wpOworICAg
IHZvaWQgc3RhcnRQYW5TY3JvbGxpbmcoUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmKTsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8QXV0
b3Njcm9sbENvbnRyb2xsZXI+Kik7CisgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1lcigpOwor
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIHZvaWQgdXBkYXRlUGFuU2Nyb2xsU3RhdGUo
RnJhbWVWaWV3KiwgY29uc3QgSW50UG9pbnQmKTsKKyNlbmRpZgorCisgICAgVGltZXI8QXV0b3Nj
cm9sbENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOworICAgIFJlbmRlckJveCogbV9hdXRv
c2Nyb2xsUmVuZGVyZXI7CisgICAgQXV0b3Njcm9sbFR5cGUgbV9hdXRvc2Nyb2xsVHlwZTsKKyNp
ZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9z
OworICAgIGJvb2wgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkOworICAgIGJvb2wgbV9zcHJpbmdM
b2FkZWRQYW5TY3JvbGxJblByb2dyZXNzOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBBdXRvc2Nyb2xsQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMTU4YWQ1Y2UwMzZjMDcyYjBkYTA1Yzc5NTU5YzNmMjAx
YmM0ZjMwYS4uYzJmODZhZTc5M2E1MzVlODEyMjU0Njk0ZGFmYmM3ODg3MzJkNjI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTM3LDkgKzEzNyw2IEBAIGNvbnN0IGlu
dCBDb21wb3NpdGlvbkV2ZW50S2V5Q29kZSA9IDIyOTsKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1l
czsKICNlbmRpZgogCi0vLyBXaGVuIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaXMg
dHJpZ2dlcmVkIHdoZW4gZG8gdGhlIHNjcm9sbCBldmVyeSAwLjA1cyB0byBtYWtlIGl0IHNtb290
aAotY29uc3QgZG91YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7Ci0KIC8vIFRoZSBhbW91
bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBzZW5kaW5nIGEgZmFrZSBtb3VzZSBldmVudCwgdHJp
Z2dlcmVkCiAvLyBkdXJpbmcgYSBzY3JvbGwuIFRoZSBzaG9ydCBpbnRlcnZhbCBpcyB1c2VkIGlm
IHRoZSBjb250ZW50IHJlc3BvbmRzIHRvIHRoZSBtb3VzZSBldmVudHMgcXVpY2tseSBlbm91Z2gs
CiAvLyBvdGhlcndpc2UgdGhlIGxvbmcgaW50ZXJ2YWwgaXMgdXNlZC4KQEAgLTMzMSwxMyArMzI4
LDggQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUqIGZyYW1lKQogI2VuZGlmCiAg
ICAgLCBtX21vdXNlRG93bldhc1NpbmdsZUNsaWNrSW5TZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBt
X3NlbGVjdGlvbkluaXRpYXRpb25TdGF0ZShIYXZlTm90U3RhcnRlZFNlbGVjdGlvbikKLSAgICAs
IG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkKLSAgICAsIG1fcGFuU2Nyb2xsQnV0dG9uUHJl
c3NlZChmYWxzZSkKLSAgICAsIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyhmYWxz
ZSkKICAgICAsIG1faG92ZXJUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmly
ZWQpCi0gICAgLCBtX2F1dG9zY3JvbGxUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjphdXRvc2Ny
b2xsVGltZXJGaXJlZCkKLSAgICAsIG1fYXV0b3Njcm9sbFJlbmRlcmVyKDApCi0gICAgLCBtX2F1
dG9zY3JvbGxJblByb2dyZXNzKGZhbHNlKQorICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcigp
CiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91
c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGlt
ZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKQEAg
LTcwNCwzMCArNjk2LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICByZXR1cm4gc3dh
bGxvd0V2ZW50OwogfQogCi0vLyBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIHJlbmRlcmVyIHRoYXQg
Y2FuIGF1dG9zY3JvbGwuCi1zdGF0aWMgYm9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCi17Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgY2FuIGJlIHNjcm9sbGVkIGlu
IGl0cyBvd24gcmlnaHQuCi0gICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3Jv
bGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgcmVwcmVzZW50cyB0aGUgdG9wIGxldmVsIG9mIGEgd2Vi
IHBhZ2UuCi0gICAgLy8gVGhpcyBjYW4gYmUgc2Nyb2xsZWQgYnkgY2FsbGluZyBDaHJvbWU6OnNj
cm9sbFJlY3RJbnRvVmlldy4KLSAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUg
TWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucwotICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3cyBp
bnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCi0gICAgLy8g
VGhlIGNvZGUgZm9yIHRoaXMgaXMgaW4gUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUu
Ci0gICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgIT0gcmVuZGVyZXItPmRvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0g
ZnJhbWU7Ci19Ci0KICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50KQogewpAQCAtNzU0LDIwICs3MjIsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZQogCiAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKIAotICAgIGlmIChtX21v
dXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCAmJiAhbV9wYW5TY3JvbGxJblByb2dyZXNzKSB7ICAg
ICAgICAgICAgCi0gICAgICAgIC8vIEZpbmQgYSByZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xs
LgotICAgICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIWNhbkF1dG9zY3JvbGwocmVuZGVyZXIpKSB7
Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9kZSgp
ID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVs
ZW1lbnQoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5kb2N1bWVudCgp
LT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgICAgICBtX2F1dG9zY3JvbGxJblBy
b2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGhhbmRsZUF1dG9zY3JvbGwocmVuZGVyZXIpOwot
ICAgICAgICB9Ci0gICAgICAgIAorICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9s
bCAmJiAhcGFuU2Nyb2xsSW5Qcm9ncmVzcygpKSB7CisgICAgICAgIG1fYXV0b3Njcm9sbENvbnRy
b2xsZXIuc3RhcnRBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uKHJlbmRlcmVyKTsKICAgICAgICAgbV9t
b3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgPSBmYWxzZTsKICAgICB9CiAKQEAgLTkzNSw4ICs4
OTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
KQogewotICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKQotICAgICAgICBzdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CisgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogCiAgICAgaWYgKGhhbmRs
ZU1vdXNlVXAoZXZlbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5MCwxMzIgKzk0NSwz
NiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZQogICAgIHJldHVybiBoYW5kbGVkOwogfQogCi12
b2lkIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQotewotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciB0aGUgYXV0b3Njcm9sbCBvciB0
aGUgcGFuU2Nyb2xsIGlmIGl0J3MgYWxyZWFkeSBhY3RpdmUKLSAgICBpZiAobV9hdXRvc2Nyb2xs
VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOyAgICAgCi0KLSAgICBzZXRBdXRvc2Ny
b2xsUmVuZGVyZXIocmVuZGVyZXIpOwotCi0jaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAg
aWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICBtX3BhblNjcm9sbFN0YXJ0UG9z
ID0gbGFzdEtub3duTW91c2VQb3NpdGlvbigpOwotICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gbV9mcmFtZS0+dmlldygpKQotICAgICAgICAgICAgdmlldy0+YWRkUGFuU2Nyb2xsSWNvbiht
X3BhblNjcm9sbFN0YXJ0UG9zKTsKLSAgICAgICAgLy8gSWYgd2UncmUgbm90IGluIHRoZSB0b3Ag
ZnJhbWUgd2Ugbm90aWZ5IGl0IHRoYXQgd2UgZG9pbmcgYSBwYW5TY3JvbGwuCi0gICAgICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBGcmFtZSogbWFp
bkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAobV9mcmFtZSAhPSBt
YWluRnJhbWUpCi0gICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bV9w
YW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0g
ICAgc3RhcnRBdXRvc2Nyb2xsVGltZXIoKTsKLX0KLQotdm9pZCBFdmVudEhhbmRsZXI6OmF1dG9z
Y3JvbGxUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4qKQotewotICAgIFJlbmRlck9iamVj
dCogciA9IGF1dG9zY3JvbGxSZW5kZXJlcigpOwotICAgIGlmICghciB8fCAhci0+aXNCb3goKSkg
ewotICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICBpZiAoIW1fbW91
c2VQcmVzc2VkKSB7Ci0gICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdG9SZW5kZXJCb3gociktPmF1dG9zY3Jv
bGwoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyB3ZSB2ZXJpZnkgdGhhdCB0aGUgbWFpbiBm
cmFtZSBoYXNuJ3QgcmVjZWl2ZWQgdGhlIG9yZGVyIHRvIHN0b3AgdGhlIHBhblNjcm9sbAotICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgaWYg
KCFwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVz
cykgewotICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUoUEFOX1ND
Uk9MTElORykKLSAgICAgICAgdXBkYXRlUGFuU2Nyb2xsU3RhdGUoKTsKLSAgICAgICAgdG9SZW5k
ZXJCb3gociktPnBhblNjcm9sbChtX3BhblNjcm9sbFN0YXJ0UG9zKTsKLSNlbmRpZgotICAgIH0K
LX0KLQogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6c3Rh
cnRQYW5TY3JvbGxpbmcoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBtX3BhblNjcm9s
bEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCA9IHRydWU7
Ci0gICAgaGFuZGxlQXV0b3Njcm9sbChyZW5kZXJlcik7Ci0gICAgaW52YWxpZGF0ZUNsaWNrKCk7
Ci19Ci0KLXZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpCi17Ci0gICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlmICghdmlldykKKyAgICBp
ZiAoIXJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBBdCB0aGUg
b3JpZ2luYWwgY2xpY2sgbG9jYXRpb24gd2UgZHJhdyBhIDQgYXJyb3dlZCBpY29uLiBPdmVyIHRo
aXMgaWNvbiB0aGVyZSB3b24ndCBiZSBhbnkgc2Nyb2xsCi0gICAgLy8gU28gd2UgZG9uJ3Qgd2Fu
dCB0byBjaGFuZ2UgdGhlIGN1cnNvciBvdmVyIHRoaXMgYXJlYQotICAgIGJvb2wgZWFzdCA9IG1f
cGFuU2Nyb2xsU3RhcnRQb3MueCgpIDwgKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi54KCkgLSBT
Y3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9vbCB3ZXN0ID0gbV9wYW5TY3Jv
bGxTdGFydFBvcy54KCkgPiAobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLngoKSArIFNjcm9sbFZp
ZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKLSAgICBib29sIG5vcnRoID0gbV9wYW5TY3JvbGxTdGFy
dFBvcy55KCkgPiAobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnkoKSArIFNjcm9sbFZpZXc6Om5v
UGFuU2Nyb2xsUmFkaXVzKTsKLSAgICBib29sIHNvdXRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55
KCkgPCAobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnkoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Ny
b2xsUmFkaXVzKTsKLSAgICAgICAgIAotICAgIGlmICgoZWFzdCB8fCB3ZXN0IHx8IG5vcnRoIHx8
IHNvdXRoKSAmJiBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQpCi0gICAgICAgIG1fc3ByaW5nTG9h
ZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0KLSAgICBpZiAobm9ydGgpIHsKLSAgICAg
ICAgaWYgKGVhc3QpCi0gICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhFYXN0UGFubmlu
Z0N1cnNvcigpKTsKLSAgICAgICAgZWxzZSBpZiAod2VzdCkKLSAgICAgICAgICAgIHZpZXctPnNl
dEN1cnNvcihub3J0aFdlc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhQYW5uaW5nQ3Vyc29yKCkpOwotICAgIH0gZWxzZSBp
ZiAoc291dGgpIHsKLSAgICAgICAgaWYgKGVhc3QpCi0gICAgICAgICAgICB2aWV3LT5zZXRDdXJz
b3Ioc291dGhFYXN0UGFubmluZ0N1cnNvcigpKTsKLSAgICAgICAgZWxzZSBpZiAod2VzdCkKLSAg
ICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aFdlc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhQYW5uaW5nQ3Vyc29y
KCkpOwotICAgIH0gZWxzZSBpZiAoZWFzdCkKLSAgICAgICAgdmlldy0+c2V0Q3Vyc29yKGVhc3RQ
YW5uaW5nQ3Vyc29yKCkpOwotICAgIGVsc2UgaWYgKHdlc3QpCi0gICAgICAgIHZpZXctPnNldEN1
cnNvcih3ZXN0UGFubmluZ0N1cnNvcigpKTsKLSAgICBlbHNlCi0gICAgICAgIHZpZXctPnNldEN1
cnNvcihtaWRkbGVQYW5uaW5nQ3Vyc29yKCkpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIu
c3RhcnRQYW5TY3JvbGxpbmcodG9SZW5kZXJCb3gocmVuZGVyZXIpLCBsYXN0S25vd25Nb3VzZVBv
c2l0aW9uKCkpOworICAgIGludmFsaWRhdGVDbGljaygpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFBBTl9TQ1JPTExJTkcpCiAKIFJlbmRlck9iamVjdCogRXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xs
UmVuZGVyZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKyAg
ICByZXR1cm4gbV9hdXRvc2Nyb2xsQ29udHJvbGxlci5hdXRvc2Nyb2xsUmVuZGVyZXIoKTsKIH0K
IAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpCiB7Ci0gICAg
aWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSGl0VGVz
dFJlc3VsdCBoaXRUZXN0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQobV9wYW5TY3JvbGxTdGFydFBv
cywgdHJ1ZSk7Ci0KLSAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9k
ZSgpKQotICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBvaW50LT5yZW5kZXJl
cigpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIudXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVy
KCk7Cit9CiAKLSAgICB3aGlsZSAobV9hdXRvc2Nyb2xsUmVuZGVyZXIgJiYgIWNhbkF1dG9zY3Jv
bGwobV9hdXRvc2Nyb2xsUmVuZGVyZXIpKQotICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9
IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5wYXJlbnQoKTsKK2Jvb2wgRXZlbnRIYW5kbGVyOjphdXRv
c2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXV0b3Njcm9sbENvbnRy
b2xsZXIuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OnNl
dEF1dG9zY3JvbGxSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorYm9vbCBFdmVudEhh
bmRsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogewotICAgIG1fYXV0b3Njcm9sbFJl
bmRlcmVyID0gcmVuZGVyZXI7CisgICAgcmV0dXJuIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIucGFu
U2Nyb2xsSW5Qcm9ncmVzcygpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTEx
OTUsNTAgKzEwNTQsOSBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotCi12b2lkIEV2ZW50SGFuZGxlcjo6c3RhcnRBdXRvc2Nyb2xsVGltZXIoKQotewot
ICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0YXJ0UmVwZWF0aW5nKGF1dG9zY3JvbGxJbnRlcnZhbCk7
Ci19Ci0KIHZvaWQgRXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVy
ZXJJc0JlaW5nRGVzdHJveWVkKQogewotICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7
Ci0gICAgICAgIGlmIChtX21vdXNlRG93bldhc0luU3ViZnJhbWUpIHsKLSAgICAgICAgICAgIGlm
IChGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvclRhcmdldE5vZGUobV9tb3VzZVByZXNzTm9k
ZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zdG9w
QXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYXV0b3Njcm9sbFJlbmRlcmVyKCkp
IHsKLSAgICAgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgJiYgKG1fYXV0b3Njcm9s
bEluUHJvZ3Jlc3MgfHwgbV9wYW5TY3JvbGxJblByb2dyZXNzKSkKLSAgICAgICAgICAgIHRvUmVu
ZGVyQm94KGF1dG9zY3JvbGxSZW5kZXJlcigpKS0+c3RvcEF1dG9zY3JvbGwoKTsKLSNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKLSAgICAgICAgaWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewot
ICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewotICAg
ICAgICAgICAgICAgIHZpZXctPnJlbW92ZVBhblNjcm9sbEljb24oKTsKLSAgICAgICAgICAgICAg
ICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotI2VuZGlmCi0KLSAgICAgICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKDApOwotICAgIH0K
LQotICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0b3AoKTsKLQotICAgIG1fcGFuU2Nyb2xsSW5Qcm9n
cmVzcyA9IGZhbHNlOwotICAgIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZh
bHNlOwotCi0gICAgLy8gSWYgd2UncmUgbm90IGluIHRoZSB0b3AgZnJhbWUgd2Ugbm90aWZ5IGl0
IHRoYXQgd2UgYXJlIG5vdCBkb2luZyBhIHBhblNjcm9sbCBhbnkgbW9yZS4KLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0g
cGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAg
ICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVz
cyA9IGZhbHNlOwotICAgIH0KLQotICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsK
KyAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJ
c0JlaW5nRGVzdHJveWVkKTsKIH0KIAogTm9kZSogRXZlbnRIYW5kbGVyOjptb3VzZVByZXNzTm9k
ZSgpIGNvbnN0CkBAIC0xNDIxLDggKzEyMzksMTAgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5k
bGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXYK
ICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIE5vQ3Vyc29yQ2hhbmdlOwotICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykKKyNpZiBFTkFCTEUoUEFOX1NDUk9M
TElORykKKyAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5wYW5TY3Jv
bGxJblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBOb0N1cnNvckNoYW5nZTsKKyNlbmRpZgog
CiAgICAgTm9kZSogbm9kZSA9IGV2ZW50LnRhcmdldE5vZGUoKTsKICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwpAQCAtMTY1MiwxMCArMTQ3
Miw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcp
CiAgICAgLy8gV2Ugc3RvcmUgd2hldGhlciBwYW4gc2Nyb2xsaW5nIGlzIGluIHByb2dyZXNzIGJl
Zm9yZSBjYWxsaW5nIHN0b3BBdXRvc2Nyb2xsVGltZXIoKQotICAgIC8vIGJlY2F1c2UgaXQgd2ls
bCBzZXQgbV9wYW5TY3JvbGxJblByb2dyZXNzIHRvIGZhbHNlIG9uIHJldHVybi4KLSAgICBib29s
IGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzOwot
ICAgIGlmIChpc1BhblNjcm9sbEluUHJvZ3Jlc3MgfHwgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykK
LSAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBz
ZXQgbV9hdXRvc2Nyb2xsVHlwZSB0byBOb0F1dG9zY3JvbGwgb24gcmV0dXJuLgorICAgIGJvb2wg
aXNQYW5TY3JvbGxJblByb2dyZXNzID0gbV9mcmFtZS0+cGFnZSgpICYmIG1fZnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJblByb2dyZXNzKCk7Cisg
ICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgIGlmIChpc1BhblNjcm9sbEluUHJvZ3Jlc3Mp
IHsKICAgICAgICAgLy8gV2UgaW52YWxpZGF0ZSB0aGUgY2xpY2sgd2hlbiBleGl0aW5nIHBhbiBz
Y3JvbGxpbmcgc28gdGhhdCB3ZSBkb24ndCBpbmFkdmVydGVudGx5IG5hdmlnYXRlCiAgICAgICAg
IC8vIGF3YXkgZnJvbSB0aGUgY3VycmVudCBwYWdlIChlLmcuIHRoZSBjbGljayB3YXMgb24gYSBo
eXBlcmxpbmspLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUwMjM+LgpAQCAtMTk1MCwxMCArMTc2
OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKIAogI2lm
IEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgIGlmIChtb3VzZUV2ZW50LmJ1dHRvbigpID09IE1p
ZGRsZUJ1dHRvbikKLSAgICAgICAgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkID0gZmFsc2U7Ci0g
ICAgaWYgKG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcykKLSAgICAgICAgc3RvcEF1
dG9zY3JvbGxUaW1lcigpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIuaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CiAjZW5kaWYKIAogICAgIG1fbW91c2VQcmVzc2VkID0g
ZmFsc2U7CkBAIC0zMTQzLDcgKzI5NTksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAKICNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkg
ewotICAgICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNj
cm9sbEluUHJvZ3Jlc3MpIHsKKyAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpKSB7CiAgICAgICAgICAgICAvLyBJZiBhIGtl
eSBpcyBwcmVzc2VkIHdoaWxlIHRoZSBwYW5TY3JvbGwgaXMgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB3
YW50IHRvIHN0b3AKICAgICAgICAgICAgIGlmIChpbml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6OktleURvd24gfHwgaW5pdGlhbEtleUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSAKICAgICAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAyN2UwODE3MGI5YTA3MDE2NTBi
YzM4OGYxMzE1ZDEwYjMzZDY2NWYxLi4zNmVkNWVkOTg3Mzk4ZTRhZTZiYzFmOGU4NTVmZTkxYjY4
N2U2ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgRXZlbnRIYW5kbGVyX2gKICNkZWZpbmUgRXZlbnRIYW5kbGVyX2gKIAorI2luY2x1
ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVk
ZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJEcmFnU3RhdGUuaCIKQEAgLTExNCw3ICsxMTUs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVy
SXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlKTsKICAgICBSZW5kZXJPYmplY3QqIGF1dG9zY3JvbGxS
ZW5kZXJlcigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7Ci0g
ICAgYm9vbCBhdXRvc2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b3Njcm9s
bEluUHJvZ3Jlc3M7IH0KKyAgICBBdXRvc2Nyb2xsQ29udHJvbGxlciYgYXV0b3Njcm9sbENvbnRy
b2xsZXIoKSB7IHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyOyB9CisgICAgYm9vbCBhdXRv
c2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OworICAgIGJvb2wgbW91c2VEb3duV2FzSW5TdWJmcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZTsgfQorICAgIGJvb2wg
cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3Vz
ZU1vdmVFdmVudFNvb24oKTsKICAgICB2b2lkIGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29v
bkluUXVhZChjb25zdCBGbG9hdFF1YWQmKTsKQEAgLTI2OSwxNiArMjczLDggQEAgcHJpdmF0ZToK
ICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmKTsKIAogICAgIE9wdGlvbmFsQ3Vyc29yIHNlbGVjdEN1cnNvcihjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgU2Nyb2xsYmFyKik7Ci0jaWYgRU5BQkxFKFBB
Tl9TQ1JPTExJTkcpCi0gICAgdm9pZCB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOwotI2VuZGlmCi0K
ICAgICB2b2lkIGhvdmVyVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+Kik7CiAKLSAgICB2
b2lkIGhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCBzdGFydEF1dG9z
Y3JvbGxUaW1lcigpOwotICAgIHZvaWQgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVj
dCopOwotICAgIHZvaWQgYXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiop
OwogICAgIGJvb2wgbG9naWNhbFNjcm9sbE92ZXJmbG93KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSAwKTsKICAgICAKICAgICBi
b29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWwoY29uc3QgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0OwpAQCAtNDAxLDE3ICszOTcs
MTEgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRQb2ludCBtX2RyYWdTdGFydFBvczsKICNlbmRpZgog
Ci0gICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBvczsKLSAgICBib29sIG1fcGFuU2Nyb2xs
SW5Qcm9ncmVzczsKLQogICAgIGJvb2wgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkOwotICAgIGJv
b2wgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzOwogCiAgICAgVGltZXI8RXZlbnRI
YW5kbGVyPiBtX2hvdmVyVGltZXI7Ci0gICAgCi0gICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2F1
dG9zY3JvbGxUaW1lcjsKLSAgICBSZW5kZXJPYmplY3QqIG1fYXV0b3Njcm9sbFJlbmRlcmVyOwot
ICAgIGJvb2wgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsKKworICAgIEF1dG9zY3JvbGxDb250cm9s
bGVyIG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7CiAgICAgYm9vbCBtX21vdXNlRG93bk1heVN0YXJ0
QXV0b3Njcm9sbDsKICAgICBib29sIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAyNTJkMzA5MTBmZmQ3Yzc3OWE4YThi
NDUyYzk1M2QzYzc5MGMxZDE3Li4wYWMyYThkZTE2ZTgxNmNiNmMzNjQ1ODhmOWIwZmIyYzgzMjk1
OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKQEAgLTY0Miw2ICs2NDMsMzkgQEAgdm9pZCBSZW5kZXJC
b3g6OmF1dG9zY3JvbGwoKQogICAgICAgICBsYXllcigpLT5hdXRvc2Nyb2xsKCk7CiB9CiAKKy8v
IFRoZXJlIGFyZSB0d28ga2luZHMgb2YgcmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KK2Jv
b2wgUmVuZGVyQm94OjpjYW5BdXRvc2Nyb2xsKCkgY29uc3QKK3sKKyAgICAvLyBDaGVjayBmb3Ig
YSBib3ggdGhhdCBjYW4gYmUgc2Nyb2xsZWQgaW4gaXRzIG93biByaWdodC4KKyAgICBpZiAoY2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgcmVwcmVzZW50cyB0aGUgdG9wIGxldmVsIG9m
IGEgd2ViIHBhZ2UuCisgICAgLy8gVGhpcyBjYW4gYmUgc2Nyb2xsZWQgYnkgY2FsbGluZyBDaHJv
bWU6OnNjcm9sbFJlY3RJbnRvVmlldy4KKyAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBv
biB0aGUgTWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucworICAgIC8vIHRoYXQgcHV0IHdlYiB2
aWV3cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCisg
ICAgLy8gVGhlIGNvZGUgZm9yIHRoaXMgaXMgaW4gUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUuCisgICAgaWYgKG5vZGUoKSAhPSBkb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Cisg
ICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0gZnJhbWU7Cit9CisKK1JlbmRl
ckJveCogUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3sKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgIShyZW5kZXJlci0+aXNCb3goKSAmJiB0b1Jl
bmRlckJveChyZW5kZXJlciktPmNhbkF1dG9zY3JvbGwoKSkpIHsKKyAgICAgICAgaWYgKCFyZW5k
ZXJlci0+cGFyZW50KCkgJiYgcmVuZGVyZXItPm5vZGUoKSA9PSByZW5kZXJlci0+ZG9jdW1lbnQo
KSAmJiByZW5kZXJlci0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpID8g
dG9SZW5kZXJCb3gocmVuZGVyZXIpIDogMDsKK30KKwogdm9pZCBSZW5kZXJCb3g6OnBhblNjcm9s
bChjb25zdCBJbnRQb2ludCYgc291cmNlKQogewogICAgIGlmIChsYXllcigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDViOGE2ZTRiODFmMWQxMTU0MjdlNWJjMzA1NDg5
NzI2NDlhYzI3NzkuLjNiM2EwMjE3YmE3NThlMTE1YTg4ZDFhOWRlNTRlZWNlZGZiZjRmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQzOSw2ICs0MzksOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKCk7CisgICAgYm9vbCBjYW5BdXRvc2Nyb2xsKCkg
Y29uc3Q7CisgICAgc3RhdGljIFJlbmRlckJveCogZmluZEF1dG9zY3JvbGxhYmxlKFJlbmRlck9i
amVjdCopOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBwYW5TY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179212</attachid>
            <date>2012-12-13 00:03:57 -0800</date>
            <delta_ts>2012-12-13 00:54:33 -0800</delta_ts>
            <desc>Patch 5</desc>
            <filename>bug-104764-20121213170117.patch</filename>
            <type>text/plain</type>
            <size>42805</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFhNDliZTI0OGNmYWI4
YjEzNmIyMzQyZTU5ZTUzOTgxYjE5ZGFjNy4uNzBjM2EzMTk3NjA3NWJjMWM1ODdiY2Y5ZTBkNDRm
NTMzZWMyMjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogQ2hhbmdlZCB0byBhZGQgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiAgQ2hhbmdlZCB0byBhZGQgcGFnZS9B
dXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogVGFyZ2V0LnByaTogIENoYW5n
ZWQgdG8gYWRkIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLntjcHAsaH0K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQ2hhbmdlZCB0byBhZGQg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250
cm9sbGVyLntjcHAsaH0KKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRNYWluRnJhbWUpOiBIZWxwZXIgZnVuY3Rpb24u
CisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6QXV0b3Njcm9sbENvbnRy
b2xsZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9z
Y3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFu
ZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xs
SW5Qcm9ncmVzcyk6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6
QXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbEZvclNlbGVjdGlvbik6IFJlcGxh
Y2VtZW50IG9mIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbCgpLgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIpOiBNb3ZlZWQg
ZnJvbSBFdmVudEhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6IEV4dHJhY3RlZCBm
cm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVy
OjpwYW5TY3JvbGxJblByb2dyZXNzKTogUmVwbGFjZW1lbnQgb2YgRXZlbnRIYW5kbGVyOjptX3Bh
blNjcm9sbEluUHJvZ3Jlc3MuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6c3RhcnRQYW5TY3JvbGxpbmcpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlcjo6c3RhcnRQYW5T
Y3JvbGxpbmcoKQorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1dG9z
Y3JvbGxUaW1lckZpcmVkKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1l
ckZpcmVkKCkuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRB
dXRvc2Nyb2xsVGltZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlcjo6c3RhcnRBdXRvc2Nyb2xs
VGltZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVQ
YW5TY3JvbGxTdGF0ZSk6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyOjp1cGRhdGVQYW5TY3JvbGxT
dGF0ZSgpLgorICAgICAgICAqIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaDogQWRkZWQuCisg
ICAgICAgIChBdXRvc2Nyb2xsQ29udHJvbGxlcik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOiBD
aGFuZ2VkIGF1dG9zY3JvbGwgYW5kIHBhbnNjcm9sbCByZWxhdGVkIG1lbWJlciB2YXJpYWJsZSBp
bml0aWFsaXphdGlvbnMgdG8gbV9hdXRvc2Nyb2xsQ29udHJvbGxlciBpbml0aWFsaXphdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQp
OiBDaGFuZ2VkIHRvIGNhbGwgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbEZv
clNlbGVjdGlvbigpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudCk6IENoYW5nZWQgdG8gcmVtb3ZlIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3Mg
cmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9s
bGluZyk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRQYW5TY3Jv
bGxpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRl
cmVyKTogQ2hhbmdlZCB0byB1c2UgQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6IGRpdHRvCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKTogZGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcyk6IEFk
ZGVkIHRvIHJlcGxhY2UgbV9wYW5TY3JvbGxJblByb2dyZXNzLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogQ2hhbmdlZCB0byB1c2UgQXV0b3Nj
cm9sbENvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1
cnNvcik6IENoYW5nZWQgdG8gdXNlIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogQ2hhZ25lZCB0byBj
YWxsIEF1dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOiBDaGFuZ2VkIHRvIHVzZSBwYW5T
Y3JvbGxJblByb2dyZXNzKCkuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbENvbnRyb2xsZXIpOiBBZGRlZCBm
b3IgdXNpbmcgbWFpbiBmcmFtZSdzIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VEb3duV2FzSW5TdWJmcmFtZSk6IEFkZGVkIGZvciBB
dXRvc2Nyb2xsQ29udHJvbGxlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FuQXV0b3Njcm9sbCk6IE1vdmVkIGZyb20g
RXZlbnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZmluZEF1dG9z
Y3JvbGxhYmxlKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIuY3BwLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6IEFkZGVkIG5ldyBmdW5jdGlv
bnMgY2FuQXV0b3Njcm9sbCgpIGFuZCBmaW5kQXV0b3Njcm9sbGFibGUoKS4KKwogMjAxMi0xMi0x
MiAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29u
dGFpbmVyTm9kZUFsZ29yaXRobTo6bm90aWZ5SW5zZXJ0ZWRJbnRvRG9jdW1lbnQgaXMgbm90IHVz
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTg5ZmYyZTczZDk2ZGFlYTBhMzk1NDkwMmIwMzE4
NDJhMDMxNTM4NC4uZmRiYjhmZDdjMzNiMzU1NzMzODNjODc2NjMwOTRlOTdjZWM5YmI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MTksNiArMTcxOSw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcAogCisgICAgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKICAgICBw
YWdlL0JhckluZm8uY3BwCiAgICAgcGFnZS9DaHJvbWUuY3BwCiAgICAgcGFnZS9Db25zb2xlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggN2JiZDYzNzQ3ZTFhMDM3OTljOTk2
ZDNiNTBiNzI4M2E0ODM3YWY0Mi4uZTcxNmY4ZWUwYTBjYTNmMDMwNTI3YzBmZjU3NjZhZDk4ZDJm
NmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MDAyLDYgKzQwMDIsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tl
eWZyYW1lQW5pbWF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQWRqdXN0Vmlld1NpemVP
ck5vdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL0JhckluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDUxYTE0ZjM4Yjg1
YWQxMWMzYWE3YzAzYzdhYjc0NDBiNmM0YWI2NmEuLjFmMTRhOWE1ODQ0NmNjZjM3OWI2NzI3ODAw
ZTE5YTBjOGY4MjIxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtODY4LDYgKzg2OCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBcCiAgICAg
cGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwKICAgICBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgXAorICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIu
Y3BwIFwKICAgICBwYWdlL0JhckluZm8uY3BwIFwKICAgICBwYWdlL0Nocm9tZS5jcHAgXAogICAg
IHBhZ2UvQ29uc29sZS5jcHAgXApAQCAtMjAxNCw2ICsyMDE1LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaCBcCiAgICAgcGFnZS9hbmltYXRp
b24vS2V5ZnJhbWVBbmltYXRpb24uaCBcCiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90Lmgg
XAorICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBcCiAgICAgcGFnZS9CYXJJbmZvLmgg
XAogICAgIHBhZ2UvQ2hyb21lLmggXAogICAgIHBhZ2UvQ29uc29sZS5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA2OTBkMTg4MTY0YjQ1OWMzOWQ0YTEzZTFiM2YzNzYyZTk1ODcxMGUwLi44ZWEwZmQw
MDg2YzFhZmE3NjlkYTI5YWFjZTA5NzZhNDRlNTRjNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
MDI4LDYgKzIwMjgsOCBAQAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5o
JywKICAgICAgICAgICAgICdtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwJywKICAgICAgICAg
ICAgICdtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaCcsCisgICAgICAgICAgICAncGFnZS9BdXRv
c2Nyb2xsQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvQXV0b3Njcm9sbENvbnRy
b2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZvLmNwcCcsCiAgICAgICAgICAgICAn
cGFnZS9CYXJJbmZvLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ2hyb21lLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDI1ZWUzYzAyOTgx
Yzk1NGQ2MGRmZjE1NDJiNWMwM2ZmYzVmNDJkMmIuLjRlZTY2OGIzODNhZGQ0OWFhMmMwYzUxYmFl
NTc0YjY1NWUxOTQ3MzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0yNjc5OCw2ICsyNjc5OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEF1dG9zY3JvbGxDb250cm9sbGVyLmNw
cCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFn
ZVxBdXRvc2Nyb2xsQ29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEJhckluZm8uY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3MWI1MjE5Mzk1YmNiNzA3MDU4Y2RkZWYwMDgzNTQ4YjkzNjc4MGIyLi45NGRlNGJkYjZj
YmYxOGY2NzRiZjRkOTMyMzA0Zjg4MWYzNDQ0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMyLDYgKzEyMzIsOCBAQAog
CQk0NTEyNTAyMzE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTI1MDIxMTVEQ0UzN0Qw
MDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovOyB9OwogCQk0NTNFQjYzNjE1OUM1NzA0
MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzRUI2MzQxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1l
Rm9ybWF0LmNwcCAqLzsgfTsKIAkJNDUzRUI2MzcxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1l
Rm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NTNFQjYzNTE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NTgzMEQ0RDE2NzlCNEY4MDBB
Q0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9z
Y3JvbGxDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJNDU4MzBENEUxNjc5QjRGODAwQUNGOEMzIC8q
IEF1dG9zY3JvbGxDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRy
b2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NTg2MUM3MjE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDU4NjFDNzAxNjE5NDlEQzAwMDEwRjNBIC8qIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJNDU4NjFDNzMxNjE5NDlEQzAwMDEwRjNBIC8q
IEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTg2MUM3MTE2MTk0OURDMDAwMTBGM0Eg
LyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCAqLzsgfTsKIAkJNDU4
NjFDN0YxNjE5NEE3NDAwMDEwRjNBIC8qIERhdGVUaW1lRWRpdEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU4NjFDNzUxNjE5NEE3NDAw
MDEwRjNBIC8qIERhdGVUaW1lRWRpdEVsZW1lbnQuY3BwICovOyB9OwpAQCAtODQ3NCw2ICs4NDc2
LDggQEAKIAkJNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwaW5CdXR0b25FbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1M0VCNjM0MTU5QzU3MDQwMDAwMUJCNyAvKiBE
YXRlVGltZUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
YXRlVGltZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1M0VCNjM1
MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NTgzMEQ0QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b3Njcm9sbENvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NTgzMEQ0QzE2NzlCNEY4MDBB
Q0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0b3Njcm9sbENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDU4NjFDNzAxNjE5NDlEQzAwMDEwRjNBIC8qIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDU4NjFDNzExNjE5NDlEQzAwMDEwRjNBIC8qIEJhc2VNdWx0aXBs
ZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1ODYxQzc1MTYxOTRBNzQwMDAxMEYzQSAvKiBEYXRlVGlt
ZUVkaXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERh
dGVUaW1lRWRpdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU5
NTEsNiArMTU5NTUsOCBAQAogCQkJCTg1MzhGMDAwMEFENzE3NzAwMDZBODFEMSAvKiBBYnN0cmFj
dFZpZXcuaWRsICovLAogCQkJCUJDRjQ4Q0U2MTM3MEQxMTQwMDRFODdENiAvKiBBZGp1c3RWaWV3
U2l6ZU9yTm90LmggKi8sCiAJCQkJQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovLAorCQkJCTQ1ODMwRDRCMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRv
c2Nyb2xsQ29udHJvbGxlci5jcHAgKi8sCisJCQkJNDU4MzBENEMxNjc5QjRGODAwQUNGOEMzIC8q
IEF1dG9zY3JvbGxDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5
IC8qIEJhckluZm8uY3BwICovLAogCQkJCUJDMTI0RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJ
bmZvLmggKi8sCiAJCQkJQkMxMjRFRTYwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICov
LApAQCAtMjI2NzgsNiArMjI2ODQsNyBAQAogCQkJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAv
KiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NEMwQ0U5
MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUUxRUNCMzBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NTgzMEQ0RTE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDRFMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFi
bGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzgxRTExRTNEMzY5MDA4
MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MzE1
LDYgKzI2MzIyLDcgQEAKIAkJCQk5MzRGNzEzODBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjREMENFOTIz
NEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
RTFFQ0FGMEM5MUM1NDYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wubW0gaW4gU291cmNlcyAq
LywKKwkJCQk0NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNTAwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9U
YWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4MTI0QjBGQkI5Q0E5MDA1MTAy
OTMgLyogQVhPYmplY3RDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQThDODFGMTFF
M0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY4NzkwMmQ4NTVlZWQwZDA4MjlmMzQ0NmNhZDNmZDQ5MTVmYWExZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAt
MCwwICsxLDI2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAxMiBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRvc2Nyb2xsQ29udHJvbGxlci5o
IgorCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBXaGVuIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBw
YW5TY3JvbGwgaXMgdHJpZ2dlcmVkIHdoZW4gZG8gdGhlIHNjcm9sbCBldmVyeSAwLjA1cyB0byBt
YWtlIGl0IHNtb290aAorc3RhdGljIGNvbnN0IGRvdWJsZSBhdXRvc2Nyb2xsSW50ZXJ2YWwgPSAw
LjA1OworCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCitzdGF0aWMgRnJhbWUqIGdldE1haW5G
cmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Cisg
ICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKSA6IDA7Cit9CisjZW5kaWYKKworQXV0
b3Njcm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVyKCkKKyAgICA6IG1fYXV0b3Nj
cm9sbFRpbWVyKHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmly
ZWQpCisgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQorICAgICwgbV9hdXRvc2Nyb2xsVHlw
ZShOb0F1dG9zY3JvbGwpCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgLCBtX3BhblNj
cm9sbEJ1dHRvblByZXNzZWQoZmFsc2UpCisgICAgLCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbElu
UHJvZ3Jlc3MoZmFsc2UpCisjZW5kaWYKK3sKK30KKworUmVuZGVyQm94KiBBdXRvc2Nyb2xsQ29u
dHJvbGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdXRv
c2Nyb2xsUmVuZGVyZXI7Cit9CisKK2Jvb2wgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1dG9zY3Jv
bGxJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdXRvc2Nyb2xsVHlwZSA9PSBB
dXRvc2Nyb2xsRm9yU2VsZWN0aW9uOworfQorCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpz
dGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNj
cm9sbCBpZiBpdCdzIGFscmVhZHkgYWN0aXZlCisgICAgaWYgKG1fYXV0b3Njcm9sbFRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSZW5kZXJCb3gqIHNjcm9sbGFibGUgPSBS
ZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShyZW5kZXJlcik7CisgICAgaWYgKCFzY3JvbGxh
YmxlKQorICAgICAgICByZXR1cm47CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IEF1dG9zY3JvbGxG
b3JTZWxlY3Rpb247CisgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBzY3JvbGxhYmxlOworICAg
IHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6
OnN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCit7Cisg
ICAgUmVuZGVyQm94KiBzY3JvbGxhYmxlID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXI7CisgICAgbV9h
dXRvc2Nyb2xsVGltZXIuc3RvcCgpOworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBOb0F1dG9zY3Jv
bGw7CisgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSAwOworI2lmIEVOQUJMRShQQU5fU0NST0xM
SU5HKQorICAgIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCA9IGZhbHNlOworICAgIG1fc3ByaW5n
TG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAoIXNj
cm9sbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHNjcm9sbGFi
bGUtPmZyYW1lKCk7CisgICAgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIgPSBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCk7CisgICAgaWYgKGF1dG9zY3JvbGxJblByb2dyZXNzKCkgJiYgZXZlbnRIYW5k
bGVyLT5tb3VzZURvd25XYXNJblN1YmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBzdWJm
cmFtZSA9IGV2ZW50SGFuZGxlci0+c3ViZnJhbWVGb3JUYXJnZXROb2RlKGV2ZW50SGFuZGxlci0+
bW91c2VQcmVzc05vZGUoKSkpCisgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKQorICAg
ICAgICBzY3JvbGxhYmxlLT5zdG9wQXV0b3Njcm9sbCgpOworI2lmIEVOQUJMRShQQU5fU0NST0xM
SU5HKQorICAgIGlmIChwYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKKyAgICAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IGZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAgICAgIHZpZXctPnJlbW92ZVBh
blNjcm9sbEljb24oKTsKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29y
KCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElO
RykKKyAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIHRvcCBmcmFtZSB3ZSBub3RpZnkgaXQgdGhh
dCB3ZSBhcmUgbm90IGRvaW5nIGEgcGFuU2Nyb2xsIGFueSBtb3JlLgorICAgIGlmIChGcmFtZSog
bWFpbkZyYW1lID0gZ2V0TWFpbkZyYW1lKGZyYW1lKSkgeworICAgICAgICBpZiAoZnJhbWUgIT0g
bWFpbkZyYW1lKQorICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+YXV0b3Nj
cm9sbENvbnRyb2xsZXIoKS5tX2F1dG9zY3JvbGxUeXBlID0gTm9BdXRvc2Nyb2xsOworICAgIH0K
KyNlbmRpZgorfQorCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xs
UmVuZGVyZXIoKQoreworICAgIGlmICghbV9hdXRvc2Nyb2xsUmVuZGVyZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2F1dG9zY3JvbGxSZW5kZXJl
cjsKKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dCA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQobV9wYW5TY3JvbGxTdGFydFBvcywgdHJ1ZSk7CisKKyAgICBpZiAoTm9k
ZSogbm9kZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9kZSgpKQorICAgICAgICByZW5kZXJlciA9
IG5vZGVBdFBvaW50LT5yZW5kZXJlcigpOworI2VuZGlmCisKKyAgICB3aGlsZSAocmVuZGVyZXIg
JiYgIShyZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkF1dG9z
Y3JvbGwoKSkpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOworICAgIG1f
YXV0b3Njcm9sbFJlbmRlcmVyID0gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1Jl
bmRlckJveChyZW5kZXJlcikgOiAwOworfQorCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCit2
b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKG1vdXNlRXZlbnQuYnV0
dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQorICAgICAgICBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQg
PSBmYWxzZTsKKyAgICBpZiAobV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKQorICAg
ICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cit9CisKK2Jvb2wgQXV0b3Njcm9sbENvbnRyb2xs
ZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3Jv
bGxUeXBlID09IEF1dG9zY3JvbGxGb3JQYW47Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xs
ZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlckJveCogc2Nyb2xsYWJsZSwgY29uc3QgSW50UG9p
bnQmIGxhc3RLbm93bk1vdXNlUG9zaXRpb24pCit7CisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0
cmlnZ2VyIHRoZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaWYgaXQncyBhbHJlYWR5IGFj
dGl2ZQorICAgIGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclBhbjsKKyAgICBtX2F1
dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgbV9wYW5TY3JvbGxTdGFydFBvcyA9
IGxhc3RLbm93bk1vdXNlUG9zaXRpb247CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblBy
b2dyZXNzID0gZmFsc2U7CisKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gc2Nyb2xsYWJsZS0+
ZnJhbWUoKS0+dmlldygpKQorICAgICAgICB2aWV3LT5hZGRQYW5TY3JvbGxJY29uKGxhc3RLbm93
bk1vdXNlUG9zaXRpb24pOworICAgIHNjcm9sbGFibGUtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5hdXRvc2Nyb2xsQ29udHJvbGxlcigpLm1fYXV0b3Njcm9sbFR5cGUgPSBBdXRvc2Nyb2xsRm9y
UGFuOworICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Cit9CisjZWxzZQorYm9vbCBBdXRvc2Ny
b2xsQ29udHJvbGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorI2VuZGlmCisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmF1dG9zY3Jv
bGxUaW1lckZpcmVkKFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiopCit7CisgICAgaWYgKCFt
X2F1dG9zY3JvbGxSZW5kZXJlcikgeworICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2F1dG9zY3JvbGxS
ZW5kZXJlci0+ZnJhbWUoKTsKKyAgICBzd2l0Y2ggKG1fYXV0b3Njcm9sbFR5cGUpIHsKKyAgICBj
YXNlIEF1dG9zY3JvbGxGb3JTZWxlY3Rpb246CisgICAgICAgIGlmICghZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5tb3VzZVByZXNzZWQoKSkgeworICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1l
cigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fYXV0b3Njcm9s
bFJlbmRlcmVyLT5hdXRvc2Nyb2xsKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9BdXRv
c2Nyb2xsOgorICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICBj
YXNlIEF1dG9zY3JvbGxGb3JQYW46CisgICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWlu
IGZyYW1lIGhhc24ndCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCisg
ICAgICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gZ2V0TWFpbkZyYW1lKGZyYW1lKSkgeworICAg
ICAgICAgICAgaWYgKCFtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJblByb2dy
ZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKQorICAgICAgICAgICAgdXBkYXRlUGFuU2Ny
b2xsU3RhdGUodmlldywgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5sYXN0S25vd25Nb3VzZVBvc2l0
aW9uKCkpOworICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlci0+cGFuU2Nyb2xsKG1fcGFuU2Ny
b2xsU3RhcnRQb3MpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBB
dXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRBdXRvc2Nyb2xsVGltZXIoKQoreworICAgIG1fYXV0
b3Njcm9sbFRpbWVyLnN0YXJ0UmVwZWF0aW5nKGF1dG9zY3JvbGxJbnRlcnZhbCk7Cit9CisKKyNp
ZiBFTkFCTEUoUEFOX1NDUk9MTElORykKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0
ZVBhblNjcm9sbFN0YXRlKEZyYW1lVmlldyogdmlldywgY29uc3QgSW50UG9pbnQmIGxhc3RLbm93
bk1vdXNlUG9zaXRpb24pCit7CisgICAgLy8gQXQgdGhlIG9yaWdpbmFsIGNsaWNrIGxvY2F0aW9u
IHdlIGRyYXcgYSA0IGFycm93ZWQgaWNvbi4gT3ZlciB0aGlzIGljb24gdGhlcmUgd29uJ3QgYmUg
YW55IHNjcm9sbAorICAgIC8vIFNvIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBjdXJzb3Ig
b3ZlciB0aGlzIGFyZWEKKyAgICBib29sIGVhc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA8
IChsYXN0S25vd25Nb3VzZVBvc2l0aW9uLngoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFk
aXVzKTsKKyAgICBib29sIHdlc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA+IChsYXN0S25v
d25Nb3VzZVBvc2l0aW9uLngoKSArIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKyAg
ICBib29sIG5vcnRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55KCkgPiAobGFzdEtub3duTW91c2VQ
b3NpdGlvbi55KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7CisgICAgYm9vbCBz
b3V0aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpIDwgKGxhc3RLbm93bk1vdXNlUG9zaXRpb24u
eSgpIC0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOworCisgICAgaWYgKChlYXN0IHx8
IHdlc3QgfHwgbm9ydGggfHwgc291dGgpICYmIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCkKKyAg
ICAgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKKworICAgIGlm
IChub3J0aCkgeworICAgICAgICBpZiAoZWFzdCkKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNv
cihub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgICAgICBlbHNlIGlmICh3ZXN0KQorICAg
ICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0aFBhbm5pbmdDdXJzb3Io
KSk7CisgICAgfSBlbHNlIGlmIChzb3V0aCkgeworICAgICAgICBpZiAoZWFzdCkKKyAgICAgICAg
ICAgIHZpZXctPnNldEN1cnNvcihzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgICAgICBl
bHNlIGlmICh3ZXN0KQorICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoV2VzdFBhbm5p
bmdDdXJzb3IoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihz
b3V0aFBhbm5pbmdDdXJzb3IoKSk7CisgICAgfSBlbHNlIGlmIChlYXN0KQorICAgICAgICB2aWV3
LT5zZXRDdXJzb3IoZWFzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAgZWxzZSBpZiAod2VzdCkKKyAg
ICAgICAgdmlldy0+c2V0Q3Vyc29yKHdlc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgIGVsc2UKKyAg
ICAgICAgdmlldy0+c2V0Q3Vyc29yKG1pZGRsZVBhbm5pbmdDdXJzb3IoKSk7Cit9CisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMTM5MGYwZTgwYzcyNTRhMTNjYjhmMzNkNzkwOWE3
ZjFjYmRhZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3Jv
bGxDb250cm9sbGVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgQXV0b3Njcm9sbENvbnRyb2xsZXJfaAorI2RlZmluZSBBdXRvc2Ny
b2xsQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIlRpbWVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnRIYW5kbGVyOworY2xhc3Mg
RnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CitjbGFz
cyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJPYmplY3Q7CisKK2VudW0gQXV0b3Njcm9sbFR5cGUg
eworICAgIE5vQXV0b3Njcm9sbCwKKyAgICBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uLAorI2lmIEVO
QUJMRShQQU5fU0NST0xMSU5HKQorICAgIEF1dG9zY3JvbGxGb3JQYW4sCisjZW5kaWYKK307CisK
Ky8vIEF1dHNjcm9sbENvbnRyb2xsZXIgaGFuZGVscyBhdXRvc2Nyb2xsIGFuZCBwYW4gc2Nyb2xs
IGZvciBFdmVudEhhbmRsZXIuCitjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciB7CitwdWJsaWM6
CisgICAgQXV0b3Njcm9sbENvbnRyb2xsZXIoKTsKKyAgICBSZW5kZXJCb3gqIGF1dG9zY3JvbGxS
ZW5kZXJlcigpIGNvbnN0OworICAgIGJvb2wgYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsK
KyAgICBib29sIHBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsKKyAgICB2b2lkIHN0YXJ0QXV0
b3Njcm9sbEZvclNlbGVjdGlvbihSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIHN0b3BBdXRvc2Ny
b2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZSk7CisgICAgdm9p
ZCB1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykK
KyAgICB2b2lkIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOworICAgIHZvaWQgc2V0UGFuU2Nyb2xsSW5Qcm9ncmVzcyhib29sKTsKKyAgICB2b2lkIHN0
YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlckJveCosIGNvbnN0IEludFBvaW50Jik7CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGF1dG9zY3JvbGxUaW1lckZpcmVkKFRpbWVyPEF1dG9zY3JvbGxD
b250cm9sbGVyPiopOworICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsVGltZXIoKTsKKyNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKKyAgICB2b2lkIHVwZGF0ZVBhblNjcm9sbFN0YXRlKEZyYW1lVmll
dyosIGNvbnN0IEludFBvaW50Jik7CisjZW5kaWYKKworICAgIFRpbWVyPEF1dG9zY3JvbGxDb250
cm9sbGVyPiBtX2F1dG9zY3JvbGxUaW1lcjsKKyAgICBSZW5kZXJCb3gqIG1fYXV0b3Njcm9sbFJl
bmRlcmVyOworICAgIEF1dG9zY3JvbGxUeXBlIG1fYXV0b3Njcm9sbFR5cGU7CisjaWYgRU5BQkxF
KFBBTl9TQ1JPTExJTkcpCisgICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBvczsKKyAgICBi
b29sIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZDsKKyAgICBib29sIG1fc3ByaW5nTG9hZGVkUGFu
U2Nyb2xsSW5Qcm9ncmVzczsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQXV0b3Njcm9sbENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDE1OGFkNWNlMDM2YzA3MmIwZGEwNWM3OTU1OWMzZjIwMWJjNGYzMGEu
LjZjZTg2OTQ0NGI2ZjZiZjhiODRlOTgxMGU2MzM0OWYxYWIwMDc3YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEzNyw5ICsxMzcsNiBAQCBjb25zdCBpbnQgQ29tcG9z
aXRpb25FdmVudEtleUNvZGUgPSAyMjk7CiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAjZW5k
aWYKIAotLy8gV2hlbiB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFuU2Nyb2xsIGlzIHRyaWdnZXJl
ZCB3aGVuIGRvIHRoZSBzY3JvbGwgZXZlcnkgMC4wNXMgdG8gbWFrZSBpdCBzbW9vdGgKLWNvbnN0
IGRvdWJsZSBhdXRvc2Nyb2xsSW50ZXJ2YWwgPSAwLjA1OwotCiAvLyBUaGUgYW1vdW50IG9mIHRp
bWUgdG8gd2FpdCBiZWZvcmUgc2VuZGluZyBhIGZha2UgbW91c2UgZXZlbnQsIHRyaWdnZXJlZAog
Ly8gZHVyaW5nIGEgc2Nyb2xsLiBUaGUgc2hvcnQgaW50ZXJ2YWwgaXMgdXNlZCBpZiB0aGUgY29u
dGVudCByZXNwb25kcyB0byB0aGUgbW91c2UgZXZlbnRzIHF1aWNrbHkgZW5vdWdoLAogLy8gb3Ro
ZXJ3aXNlIHRoZSBsb25nIGludGVydmFsIGlzIHVzZWQuCkBAIC0zMzEsMTMgKzMyOCw3IEBAIEV2
ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwgbV9t
b3VzZURvd25XYXNTaW5nbGVDbGlja0luU2VsZWN0aW9uKGZhbHNlKQogICAgICwgbV9zZWxlY3Rp
b25Jbml0aWF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRTZWxlY3Rpb24pCi0gICAgLCBtX3BhblNj
cm9sbEluUHJvZ3Jlc3MoZmFsc2UpCi0gICAgLCBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQoZmFs
c2UpCi0gICAgLCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCiAgICAg
LCBtX2hvdmVyVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKQotICAg
ICwgbV9hdXRvc2Nyb2xsVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVy
RmlyZWQpCi0gICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQotICAgICwgbV9hdXRvc2Nyb2xs
SW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZh
bHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQogICAgICwgbV9mYWtl
TW91c2VNb3ZlRXZlbnRUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZl
bnRUaW1lckZpcmVkKQpAQCAtNzA0LDMwICs2OTUsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2
ZQogICAgIHJldHVybiBzd2FsbG93RXZlbnQ7CiB9CiAKLS8vIFRoZXJlIGFyZSB0d28ga2luZHMg
b2YgcmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KLXN0YXRpYyBib29sIGNhbkF1dG9zY3Jv
bGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICBpZiAoIXJlbmRlcmVyLT5pc0JveCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCBj
YW4gYmUgc2Nyb2xsZWQgaW4gaXRzIG93biByaWdodC4KLSAgICBpZiAodG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCByZXByZXNlbnRzIHRoZSB0
b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KLSAgICAvLyBUaGlzIGNhbiBiZSBzY3JvbGxlZCBieSBj
YWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgotICAgIC8vIFRoaXMgb25seSBoYXMg
YW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCi0gICAgLy8gdGhh
dCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMgTWFjIE9T
IFggTWFpbC4KLSAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5kZXJMYXllcjo6c2Ny
b2xsUmVjdFRvVmlzaWJsZS4KLSAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAhPSByZW5kZXJlci0+
ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IHJl
bmRlcmVyLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZSAmJiBwYWdl
LT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKLX0KLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7CkBAIC03NTQsMjAgKzcyMSw4IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBlCiAKICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNl
OwogCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFtX3BhblNjcm9s
bEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKLSAgICAgICAgLy8gRmluZCBhIHJlbmRlcmVyIHRo
YXQgY2FuIGF1dG9zY3JvbGwuCi0gICAgICAgIHdoaWxlIChyZW5kZXJlciAmJiAhY2FuQXV0b3Nj
cm9sbChyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXItPnBhcmVudCgpICYm
IHJlbmRlcmVyLT5ub2RlKCkgPT0gcmVuZGVyZXItPmRvY3VtZW50KCkgJiYgcmVuZGVyZXItPmRv
Y3VtZW50KCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVu
ZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgICAg
IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICAgICAgaGFuZGxlQXV0b3Nj
cm9sbChyZW5kZXJlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCisgICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnRBdXRvc2Nyb2xsICYmICFwYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKKyAgICAgICAg
bV9hdXRvc2Nyb2xsQ29udHJvbGxlci5zdGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24ocmVuZGVy
ZXIpOwogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCA9IGZhbHNlOwogICAg
IH0KIApAQCAtOTM1LDggKzg5MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVw
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogCiBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MpCi0g
ICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7
CiAKICAgICBpZiAoaGFuZGxlTW91c2VVcChldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtOTkwLDEzMiArOTQ0LDM2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgcmV0dXJu
IGhhbmRsZWQ7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVBdXRvc2Nyb2xsKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHRo
ZSBhdXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaWYgaXQncyBhbHJlYWR5IGFjdGl2ZQotICAg
IGlmIChtX2F1dG9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47ICAgICAK
LQotICAgIHNldEF1dG9zY3JvbGxSZW5kZXJlcihyZW5kZXJlcik7Ci0KLSNpZiBFTkFCTEUoUEFO
X1NDUk9MTElORykKLSAgICBpZiAobV9wYW5TY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIG1f
cGFuU2Nyb2xsU3RhcnRQb3MgPSBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCk7Ci0gICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICB2aWV3LT5h
ZGRQYW5TY3JvbGxJY29uKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotICAgICAgICAvLyBJZiB3ZSdy
ZSBub3QgaW4gdGhlIHRvcCBmcmFtZSB3ZSBub3RpZnkgaXQgdGhhdCB3ZSBkb2luZyBhIHBhblNj
cm9sbC4KLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAg
ICAgICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICAgICAgICAg
IGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICB9Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBzdGFydEF1dG9zY3JvbGxUaW1lcigpOwotfQotCi12b2lkIEV2
ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCi17
Ci0gICAgUmVuZGVyT2JqZWN0KiByID0gYXV0b3Njcm9sbFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFy
IHx8ICFyLT5pc0JveCgpKSB7Ci0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0g
ICAgICAgIGlmICghbV9tb3VzZVByZXNzZWQpIHsKLSAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xs
VGltZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0b1JlbmRl
ckJveChyKS0+YXV0b3Njcm9sbCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHdlIHZlcmlm
eSB0aGF0IHRoZSBtYWluIGZyYW1lIGhhc24ndCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0
aGUgcGFuU2Nyb2xsCi0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7
Ci0gICAgICAgICAgICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9w
YW5TY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1l
cigpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgp
OwotICAgICAgICB0b1JlbmRlckJveChyKS0+cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3Mp
OwotI2VuZGlmCi0gICAgfQotfQotCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAKIHZvaWQg
RXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
ewotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgbV9wYW5TY3JvbGxCdXR0
b25QcmVzc2VkID0gdHJ1ZTsKLSAgICBoYW5kbGVBdXRvc2Nyb2xsKHJlbmRlcmVyKTsKLSAgICBp
bnZhbGlkYXRlQ2xpY2soKTsKLX0KLQotdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVBhblNjcm9s
bFN0YXRlKCkKLXsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAg
aWYgKCF2aWV3KQorICAgIGlmICghcmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgIHJldHVybjsK
LQotICAgIC8vIEF0IHRoZSBvcmlnaW5hbCBjbGljayBsb2NhdGlvbiB3ZSBkcmF3IGEgNCBhcnJv
d2VkIGljb24uIE92ZXIgdGhpcyBpY29uIHRoZXJlIHdvbid0IGJlIGFueSBzY3JvbGwKLSAgICAv
LyBTbyB3ZSBkb24ndCB3YW50IHRvIGNoYW5nZSB0aGUgY3Vyc29yIG92ZXIgdGhpcyBhcmVhCi0g
ICAgYm9vbCBlYXN0ID0gbV9wYW5TY3JvbGxTdGFydFBvcy54KCkgPCAobV9sYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uLngoKSAtIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKLSAgICBib29s
IHdlc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA+IChtX2xhc3RLbm93bk1vdXNlUG9zaXRp
b24ueCgpICsgU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgIGJvb2wgbm9ydGgg
PSBtX3BhblNjcm9sbFN0YXJ0UG9zLnkoKSA+IChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24ueSgp
ICsgU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgIGJvb2wgc291dGggPSBtX3Bh
blNjcm9sbFN0YXJ0UG9zLnkoKSA8IChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24ueSgpIC0gU2Ny
b2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgICAgICAgCi0gICAgaWYgKChlYXN0IHx8
IHdlc3QgfHwgbm9ydGggfHwgc291dGgpICYmIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCkKLSAg
ICAgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLQotICAgIGlm
IChub3J0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNv
cihub3J0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBlbHNlIGlmICh3ZXN0KQotICAg
ICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihub3J0aFBhbm5pbmdDdXJzb3Io
KSk7Ci0gICAgfSBlbHNlIGlmIChzb3V0aCkgewotICAgICAgICBpZiAoZWFzdCkKLSAgICAgICAg
ICAgIHZpZXctPnNldEN1cnNvcihzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgICAgICBl
bHNlIGlmICh3ZXN0KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoV2VzdFBhbm5p
bmdDdXJzb3IoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihz
b3V0aFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgfSBlbHNlIGlmIChlYXN0KQotICAgICAgICB2aWV3
LT5zZXRDdXJzb3IoZWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgZWxzZSBpZiAod2VzdCkKLSAg
ICAgICAgdmlldy0+c2V0Q3Vyc29yKHdlc3RQYW5uaW5nQ3Vyc29yKCkpOwotICAgIGVsc2UKLSAg
ICAgICAgdmlldy0+c2V0Q3Vyc29yKG1pZGRsZVBhbm5pbmdDdXJzb3IoKSk7CisgICAgbV9hdXRv
c2Nyb2xsQ29udHJvbGxlci5zdGFydFBhblNjcm9sbGluZyh0b1JlbmRlckJveChyZW5kZXJlciks
IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CisgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoUEFOX1NDUk9MTElORykKIAogUmVuZGVyT2JqZWN0KiBFdmVudEhh
bmRsZXI6OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXV0b3Nj
cm9sbFJlbmRlcmVyOworICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLmF1dG9zY3Jv
bGxSZW5kZXJlcigpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJl
bmRlcmVyKCkKIHsKLSAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludCht
X3BhblNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKLQotICAgIGlmIChOb2RlKiBub2RlQXRQb2ludCA9
IGhpdFRlc3QuaW5uZXJOb2RlKCkpCi0gICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gbm9k
ZUF0UG9pbnQtPnJlbmRlcmVyKCk7CisgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci51cGRhdGVB
dXRvc2Nyb2xsUmVuZGVyZXIoKTsKK30KIAotICAgIHdoaWxlIChtX2F1dG9zY3JvbGxSZW5kZXJl
ciAmJiAhY2FuQXV0b3Njcm9sbChtX2F1dG9zY3JvbGxSZW5kZXJlcikpCi0gICAgICAgIG1fYXV0
b3Njcm9sbFJlbmRlcmVyID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPnBhcmVudCgpOworYm9vbCBF
dmVudEhhbmRsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hdXRvc2Nyb2xsQ29udHJvbGxlci5hdXRvc2Nyb2xsSW5Qcm9ncmVzcygpOwogfQogCi12b2lk
IEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCitib29sIEV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0CiB7Ci0g
ICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICByZXR1cm4gbV9hdXRvc2Ny
b2xsQ29udHJvbGxlci5wYW5TY3JvbGxJblByb2dyZXNzKCk7CiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQpAQCAtMTE5NSw1MCArMTA1Myw5IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5k
bGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0KLXZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydEF1dG9z
Y3JvbGxUaW1lcigpCi17Ci0gICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RhcnRSZXBlYXRpbmcoYXV0
b3Njcm9sbEludGVydmFsKTsKLX0KLQogdm9pZCBFdmVudEhhbmRsZXI6OnN0b3BBdXRvc2Nyb2xs
VGltZXIoYm9vbCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCiB7Ci0gICAgaWYgKG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSkg
ewotICAgICAgICAgICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9yVGFyZ2V0Tm9k
ZShtX21vdXNlUHJlc3NOb2RlLmdldCgpKSkKLSAgICAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVk
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhdXRv
c2Nyb2xsUmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoIXJlbmRlcmVySXNCZWluZ0Rlc3Ryb3ll
ZCAmJiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MpKQot
ICAgICAgICAgICAgdG9SZW5kZXJCb3goYXV0b3Njcm9sbFJlbmRlcmVyKCkpLT5zdG9wQXV0b3Nj
cm9sbCgpOwotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgICAgICBpZiAobV9wYW5TY3Jv
bGxJblByb2dyZXNzKSB7Ci0gICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS0+dmlldygpKSB7Ci0gICAgICAgICAgICAgICAgdmlldy0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigp
OwotICAgICAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBzZXRBdXRvc2Nyb2xsUmVu
ZGVyZXIoMCk7Ci0gICAgfQotCi0gICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RvcCgpOwotCi0gICAg
bV9wYW5TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7Ci0gICAgbV9zcHJpbmdMb2FkZWRQYW5TY3Jv
bGxJblByb2dyZXNzID0gZmFsc2U7Ci0KLSAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIHRvcCBm
cmFtZSB3ZSBub3RpZnkgaXQgdGhhdCB3ZSBhcmUgbm90IGRvaW5nIGEgcGFuU2Nyb2xsIGFueSBt
b3JlLgotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIEZy
YW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICAgICAgaWYgKG1fZnJhbWUg
IT0gbWFpbkZyYW1lKQotICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bV9w
YW5TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgbV9hdXRvc2Nyb2xsSW5Q
cm9ncmVzcyA9IGZhbHNlOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIuc3RvcEF1dG9zY3Jv
bGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOwogfQogCiBOb2RlKiBFdmVudEhhbmRs
ZXI6Om1vdXNlUHJlc3NOb2RlKCkgY29uc3QKQEAgLTE0MjEsOCArMTIzOCwxMCBAQCBPcHRpb25h
bEN1cnNvciBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiBldgogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7Ci0gICAgaWYgKHBhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKQorI2lm
IEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPnBhblNjcm9sbEluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIE5vQ3Vyc29y
Q2hhbmdlOworI2VuZGlmCiAKICAgICBOb2RlKiBub2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOwog
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlID8gbm9kZS0+cmVuZGVyZXIoKSA6IDA7
CkBAIC0xNjUyLDEwICsxNDcxLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAKICNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKICAgICAvLyBXZSBzdG9yZSB3aGV0aGVyIHBhbiBzY3JvbGxpbmcg
aXMgaW4gcHJvZ3Jlc3MgYmVmb3JlIGNhbGxpbmcgc3RvcEF1dG9zY3JvbGxUaW1lcigpCi0gICAg
Ly8gYmVjYXVzZSBpdCB3aWxsIHNldCBtX3BhblNjcm9sbEluUHJvZ3Jlc3MgdG8gZmFsc2Ugb24g
cmV0dXJuLgotICAgIGJvb2wgaXNQYW5TY3JvbGxJblByb2dyZXNzID0gbV9mcmFtZS0+cGFnZSgp
ICYmIG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNj
cm9sbEluUHJvZ3Jlc3M7Ci0gICAgaWYgKGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX2F1dG9z
Y3JvbGxJblByb2dyZXNzKQotICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgLy8g
YmVjYXVzZSBpdCB3aWxsIHNldCBtX2F1dG9zY3JvbGxUeXBlIHRvIE5vQXV0b3Njcm9sbCBvbiBy
ZXR1cm4uCisgICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBtX2ZyYW1lLT5wYWdlKCkg
JiYgbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnBhblNjcm9s
bEluUHJvZ3Jlc3MoKTsKKyAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgaWYgKGlzUGFu
U2Nyb2xsSW5Qcm9ncmVzcykgewogICAgICAgICAvLyBXZSBpbnZhbGlkYXRlIHRoZSBjbGljayB3
aGVuIGV4aXRpbmcgcGFuIHNjcm9sbGluZyBzbyB0aGF0IHdlIGRvbid0IGluYWR2ZXJ0ZW50bHkg
bmF2aWdhdGUKICAgICAgICAgLy8gYXdheSBmcm9tIHRoZSBjdXJyZW50IHBhZ2UgKGUuZy4gdGhl
IGNsaWNrIHdhcyBvbiBhIGh5cGVybGluaykuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTAyMz4u
CkBAIC0xOTUwLDEwICsxNzY4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgaWYgKG1vdXNlRXZl
bnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKQotICAgICAgICBtX3BhblNjcm9sbEJ1dHRvblBy
ZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAobV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNz
KQotICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgbV9hdXRvc2Nyb2xsQ29udHJv
bGxlci5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICNlbmRpZgogCiAgICAg
bV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTMxNDMsNyArMjk1OCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlF
dmVudCkKIAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBpZiAocGFnZS0+bWFp
bkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJblByb2dyZXNzKCkpIHsKICAgICAg
ICAgICAgIC8vIElmIGEga2V5IGlzIHByZXNzZWQgd2hpbGUgdGhlIHBhblNjcm9sbCBpcyBpbiBw
cm9ncmVzcyB0aGVuIHdlIHdhbnQgdG8gc3RvcAogICAgICAgICAgICAgaWYgKGluaXRpYWxLZXlF
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8fCBpbml0aWFsS2V5RXZlbnQu
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAogICAgICAgICAgICAgICAgIHN0
b3BBdXRvc2Nyb2xsVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDI3
ZTA4MTcwYjlhMDcwMTY1MGJjMzg4ZjEzMTVkMTBiMzNkNjY1ZjEuLjM2ZWQ1ZWQ5ODczOThlNGFl
NmJjMWY4ZTg1NWZlOTFiNjg3ZTZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBFdmVudEhhbmRsZXJfaAogI2RlZmluZSBFdmVudEhh
bmRsZXJfaAogCisjaW5jbHVkZSAiQXV0b3Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJD
dXJzb3IuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5o
IgpAQCAtMTE0LDcgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRp
bWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOwogICAgIFJlbmRlck9i
amVjdCogYXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Ny
b2xsUmVuZGVyZXIoKTsKLSAgICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsgfQorICAgIEF1dG9zY3JvbGxDb250cm9sbGVy
JiBhdXRvc2Nyb2xsQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7
IH0KKyAgICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CisgICAgYm9vbCBtb3Vz
ZURvd25XYXNJblN1YmZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZURvd25XYXNJblN1YmZy
YW1lOyB9CisgICAgYm9vbCBwYW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lk
IGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtl
TW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwpAQCAtMjY5LDE2ICsy
NzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogCiAgICAgT3B0aW9uYWxDdXJzb3Igc2Vs
ZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBTY3JvbGxiYXIq
KTsKLSNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICB2b2lkIHVwZGF0ZVBhblNjcm9sbFN0
YXRlKCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgaG92ZXJUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFu
ZGxlcj4qKTsKIAotICAgIHZvaWQgaGFuZGxlQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqKTsKLSAg
ICB2b2lkIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Ci0gICAgdm9pZCBzZXRBdXRvc2Nyb2xsUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCBhdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1l
cjxFdmVudEhhbmRsZXI+Kik7CiAgICAgYm9vbCBsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coU2Nyb2xs
TG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9
IDApOwogICAgIAogICAgIGJvb2wgc2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9yaXpvbnRh
bChjb25zdCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3Q7
CkBAIC00MDEsMTcgKzM5NywxMSBAQCBwcml2YXRlOgogICAgIExheW91dFBvaW50IG1fZHJhZ1N0
YXJ0UG9zOwogI2VuZGlmCiAKLSAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOwotICAg
IGJvb2wgbV9wYW5TY3JvbGxJblByb2dyZXNzOwotCiAgICAgYm9vbCBtX3BhblNjcm9sbEJ1dHRv
blByZXNzZWQ7Ci0gICAgYm9vbCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3M7CiAK
ICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1faG92ZXJUaW1lcjsKLSAgICAKLSAgICBUaW1lcjxF
dmVudEhhbmRsZXI+IG1fYXV0b3Njcm9sbFRpbWVyOwotICAgIFJlbmRlck9iamVjdCogbV9hdXRv
c2Nyb2xsUmVuZGVyZXI7Ci0gICAgYm9vbCBtX2F1dG9zY3JvbGxJblByb2dyZXNzOworCisgICAg
QXV0b3Njcm9sbENvbnRyb2xsZXIgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcjsKICAgICBib29sIG1f
bW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9tb3VzZURvd25XYXNJblN1
YmZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDI1MmQz
MDkxMGZmZDdjNzc5YThhOGI0NTJjOTUzZDNjNzkwYzFkMTcuLjBhYzJhOGRlMTZlODE2Y2I2YzM2
NDU4OGY5YjBmYjJjODMyOTU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAtNjQyLDYgKzY0Mywz
OSBAQCB2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCiAgICAgICAgIGxheWVyKCktPmF1dG9z
Y3JvbGwoKTsKIH0KIAorLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJlciB0aGF0IGNh
biBhdXRvc2Nyb2xsLgorYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKSBjb25zdAorewor
ICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBzY3JvbGxlZCBpbiBpdHMgb3duIHJp
Z2h0LgorICAgIGlmIChjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCByZXByZXNlbnRz
IHRoZSB0b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KKyAgICAvLyBUaGlzIGNhbiBiZSBzY3JvbGxl
ZCBieSBjYWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgorICAgIC8vIFRoaXMgb25s
eSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCisgICAg
Ly8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMg
TWFjIE9TIFggTWFpbC4KKyAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5kZXJMYXll
cjo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4KKyAgICBpZiAobm9kZSgpICE9IGRvY3VtZW50KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwor
ICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBm
cmFtZTsKK30KKworUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChyZW5kZXJlciAmJiAhKHJlbmRlcmVy
LT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0b3Njcm9sbCgpKSkgewor
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9kZSgpID09IHJl
bmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQo
KSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxl
bWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZW5kZXJlciA9
IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVu
ZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworfQorCiB2b2lkIFJl
bmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3VyY2UpCiB7CiAgICAgaWYgKGxh
eWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNWI4YTZlNGI4MWYx
ZDExNTQyN2U1YmMzMDU0ODk3MjY0OWFjMjc3OS4uM2IzYTAyMTdiYTc1OGUxMTVhODhkMWE5ZGU1
NGVlY2VkZmJmNGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDM5
LDYgKzQzOSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxh
YmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNj
cm9sbGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsKKyAgICBib29s
IGNhbkF1dG9zY3JvbGwoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVuZGVyQm94KiBmaW5kQXV0b3Nj
cm9sbGFibGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xs
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179224</attachid>
            <date>2012-12-13 00:54:38 -0800</date>
            <delta_ts>2012-12-13 22:08:16 -0800</delta_ts>
            <desc>Patch 6</desc>
            <filename>bug-104764-20121213175158.patch</filename>
            <type>text/plain</type>
            <size>43954</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAzYTM0NDNkNDY5NmQ4
NzZlZTI1ZjMzMDM0MzAxNmNmOGViMWY0Mi4uZGQwMjJlZTg4OWE4ZDEyODNiNzUyMzJlOGM2OTRl
NTNmZmVmNjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogQ2hhbmdlZCB0byBhZGQgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiAgQ2hhbmdlZCB0byBhZGQgcGFnZS9B
dXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogVGFyZ2V0LnByaTogIENoYW5n
ZWQgdG8gYWRkIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLntjcHAsaH0K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQ2hhbmdlZCB0byBhZGQg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250
cm9sbGVyLntjcHAsaH0KKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRNYWluRnJhbWUpOiBIZWxwZXIgZnVuY3Rpb24u
CisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6QXV0b3Njcm9sbENvbnRy
b2xsZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9z
Y3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFu
ZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xs
SW5Qcm9ncmVzcyk6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6
QXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbEZvclNlbGVjdGlvbik6IFJlcGxh
Y2VtZW50IG9mIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbCgpLgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIpOiBNb3ZlZWQg
ZnJvbSBFdmVudEhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9zY3JvbGxDb250cm9sbGVyOjpkaWRQYW5TY3JvbGxTdGFydCk6IEFkZGVkIGZvciB1cGRhdGlu
ZyBwYW4gc2Nyb2xsaW5nIHN0YXR1cyBvZiBtYWluIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6
QXV0b3Njcm9sbENvbnRyb2xsZXI6OmRpZFBhblNjcm9sbFN0b3ApOiBkaXR0bworICAgICAgICAo
V2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTog
RXh0cmFjdGVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9s
bENvbnRyb2xsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MpOiBSZXBsYWNlbWVudCBvZiBFdmVudEhh
bmRsZXI6Om1fcGFuU2Nyb2xsSW5Qcm9ncmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3Jv
bGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZyk6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVy
OjpzdGFydFBhblNjcm9sbGluZygpCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlcjo6YXV0
b3Njcm9sbFRpbWVyRmlyZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9s
bGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcik6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyOjpzdGFy
dEF1dG9zY3JvbGxUaW1lcigpLgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xs
ZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXI6OnVwZGF0
ZVBhblNjcm9sbFN0YXRlKCkuCisgICAgICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKEF1dG9zY3JvbGxDb250cm9sbGVyKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50
SGFuZGxlcik6IENoYW5nZWQgYXV0b3Njcm9sbCBhbmQgcGFuc2Nyb2xsIHJlbGF0ZWQgbWVtYmVy
IHZhcmlhYmxlIGluaXRpYWxpemF0aW9ucyB0byBtX2F1dG9zY3JvbGxDb250cm9sbGVyIGluaXRp
YWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURy
YWdnZWRFdmVudCk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRB
dXRvc2Nyb2xsRm9yU2VsZWN0aW9uKCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogQ2hhbmdlZCB0byByZW1vdmUgbV9hdXRvc2Nyb2xs
SW5Qcm9ncmVzcyByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRp
ZFBhblNjcm9sbFN0YXJ0KTogQWRkZWQgZm9yIHVwZGF0aW5nIHBhbiBzY3JvbGxpbmcgc3RhdHVz
IG9mIG1haW4gZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpZFBhblNj
cm9sbFN0b3ApOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdGFydFBh
blNjcm9sbGluZyk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRQ
YW5TY3JvbGxpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9s
bFJlbmRlcmVyKTogQ2hhbmdlZCB0byB1c2UgQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6IGRpdHRv
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKTog
ZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVz
cyk6IEFkZGVkIHRvIHJlcGxhY2UgbV9wYW5TY3JvbGxJblByb2dyZXNzLgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogQ2hhbmdlZCB0byB1c2Ug
QXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcik6IENoYW5nZWQgdG8gdXNlIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogQ2hhZ25l
ZCB0byBjYWxsIEF1dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoKS4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOiBDaGFuZ2VkIHRvIHVz
ZSBwYW5TY3JvbGxJblByb2dyZXNzKCkuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbENvbnRyb2xsZXIpOiBB
ZGRlZCBmb3IgdXNpbmcgbWFpbiBmcmFtZSdzIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VEb3duV2FzSW5TdWJmcmFtZSk6IEFkZGVk
IGZvciBBdXRvc2Nyb2xsQ29udHJvbGxlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FuQXV0b3Njcm9sbCk6IE1vdmVk
IGZyb20gRXZlbnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Zmlu
ZEF1dG9zY3JvbGxhYmxlKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIuY3BwLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6IEFkZGVkIG5ldyBm
dW5jdGlvbnMgY2FuQXV0b3Njcm9sbCgpIGFuZCBmaW5kQXV0b3Njcm9sbGFibGUoKS4KKwogMjAx
Mi0xMi0xMiAgS3VuaWhpa28gU2FrYW1vdG8gIDxrc2FrYW1vdG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE1pbGxpc2Vjb25kcyBmaWVsZCBvZiBkYXRlL3RpbWUgaW5wdXQgVUkgc2hvdWxkIHJl
c3BlY3Qgc3RlcCBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTg5ZmYyZTczZDk2
ZGFlYTBhMzk1NDkwMmIwMzE4NDJhMDMxNTM4NC4uZmRiYjhmZDdjMzNiMzU1NzMzODNjODc2NjMw
OTRlOTdjZWM5YmI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MTksNiArMTcxOSw3IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCiAg
ICAgbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAogCisgICAgcGFnZS9BdXRvc2Nyb2xsQ29u
dHJvbGxlci5jcHAKICAgICBwYWdlL0JhckluZm8uY3BwCiAgICAgcGFnZS9DaHJvbWUuY3BwCiAg
ICAgcGFnZS9Db25zb2xlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggN2Ji
ZDYzNzQ3ZTFhMDM3OTljOTk2ZDNiNTBiNzI4M2E0ODM3YWY0Mi4uZTcxNmY4ZWUwYTBjYTNmMDMw
NTI3YzBmZjU3NjZhZDk4ZDJmNmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MDAyLDYgKzQwMDIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQWRqdXN0Vmlld1NpemVPck5vdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9s
bGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdl
L0JhckluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IDUxYTE0ZjM4Yjg1YWQxMWMzYWE3YzAzYzdhYjc0NDBiNmM0YWI2NmEuLjFmMTRhOWE1
ODQ0NmNjZjM3OWI2NzI3ODAwZTE5YTBjOGY4MjIxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtODY4LDYg
Kzg2OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIFwK
ICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgXAorICAgIHBhZ2UvQXV0
b3Njcm9sbENvbnRyb2xsZXIuY3BwIFwKICAgICBwYWdlL0JhckluZm8uY3BwIFwKICAgICBwYWdl
L0Nocm9tZS5jcHAgXAogICAgIHBhZ2UvQ29uc29sZS5jcHAgXApAQCAtMjAxNCw2ICsyMDE1LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaCBc
CiAgICAgcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaCBcCiAgICAgcGFnZS9BZGp1
c3RWaWV3U2l6ZU9yTm90LmggXAorICAgIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBcCiAg
ICAgcGFnZS9CYXJJbmZvLmggXAogICAgIHBhZ2UvQ2hyb21lLmggXAogICAgIHBhZ2UvQ29uc29s
ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2OTBkMTg4MTY0YjQ1OWMzOWQ0YTEzZTFiM2YzNzYy
ZTk1ODcxMGUwLi44ZWEwZmQwMDg2YzFhZmE3NjlkYTI5YWFjZTA5NzZhNDRlNTRjNWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yMDI4LDYgKzIwMjgsOCBAQAogICAgICAgICAgICAgJ21hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5oJywKICAgICAgICAgICAgICdtYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICdtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaCcsCisgICAg
ICAgICAgICAncGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ3Bh
Z2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZvLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZvLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ2hy
b21lLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDI1ZWUzYzAyOTgxYzk1NGQ2MGRmZjE1NDJiNWMwM2ZmYzVmNDJkMmIuLjRlZTY2OGIz
ODNhZGQ0OWFhMmMwYzUxYmFlNTc0YjY1NWUxOTQ3MzAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNjc5OCw2ICsyNjc5OCwxNCBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEF1dG9z
Y3JvbGxDb250cm9sbGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGFnZVxBdXRvc2Nyb2xsQ29udHJvbGxlci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEJhckluZm8uY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3MWI1MjE5Mzk1YmNiNzA3MDU4Y2RkZWYwMDgzNTQ4Yjkz
Njc4MGIyLi45NGRlNGJkYjZjYmYxOGY2NzRiZjRkOTMyMzA0Zjg4MWYzNDQ0YzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjMyLDYgKzEyMzIsOCBAQAogCQk0NTEyNTAyMzE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRv
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovOyB9Owog
CQk0NTNFQjYzNjE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzRUI2MzQxNTlDNTcwNDAw
MDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmNwcCAqLzsgfTsKIAkJNDUzRUI2MzcxNTlDNTcwNDAw
MDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NTNFQjYzNTE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3Jt
YXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU4MzBENEIxNjc5QjRG
ODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJNDU4MzBENEUx
Njc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMg
LyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NTg2MUM3MjE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRp
cGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU4NjFDNzAxNjE5NDlEQzAwMDEwRjNBIC8qIEJhc2VN
dWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJNDU4NjFDNzMx
NjE5NDlEQzAwMDEwRjNBIC8qIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTg2MUM3
MTE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaCAqLzsgfTsKIAkJNDU4NjFDN0YxNjE5NEE3NDAwMDEwRjNBIC8qIERhdGVUaW1lRWRpdEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDU4NjFDNzUxNjE5NEE3NDAwMDEwRjNBIC8qIERhdGVUaW1lRWRpdEVsZW1lbnQuY3BwICovOyB9
OwpAQCAtODQ3NCw2ICs4NDc2LDggQEAKIAkJNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNw
aW5CdXR0b25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwaW5C
dXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1M0VCNjM0MTU5
QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEYXRlVGltZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ1M0VCNjM1MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NTgzMEQ0QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Nj
cm9sbENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b3Njcm9sbENvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDU4NjFDNzAxNjE5NDlEQzAwMDEwRjNBIC8qIEJhc2VN
dWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDU4NjFDNzExNjE5NDlEQzAwMDEw
RjNBIC8qIEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5w
dXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1ODYxQzc1MTYxOTRBNzQw
MDAxMEYzQSAvKiBEYXRlVGltZUVkaXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERhdGVUaW1lRWRpdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU5NTEsNiArMTU5NTUsOCBAQAogCQkJCTg1MzhGMDAwMEFENzE3NzAw
MDZBODFEMSAvKiBBYnN0cmFjdFZpZXcuaWRsICovLAogCQkJCUJDRjQ4Q0U2MTM3MEQxMTQwMDRF
ODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggKi8sCiAJCQkJQ0VEQTEyRDYxNTJDQTFDQjAw
RDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAorCQkJCTQ1ODMwRDRCMTY3OUI0
RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgKi8sCisJCQkJNDU4MzBENEMx
Njc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmggKi8sCiAJCQkJQkMxMjRF
RTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uY3BwICovLAogCQkJCUJDMTI0RUU1MEMyNjQx
Q0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggKi8sCiAJCQkJQkMxMjRFRTYwQzI2NDFDRDAwOUUyMzQ5
IC8qIEJhckluZm8uaWRsICovLApAQCAtMjI2NzgsNiArMjI2ODQsNyBAQAogCQkJCUUxMjQ3NDg0
MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUUxRUNCMzBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQ
b29sLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NTgzMEQ0RTE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0
b3Njcm9sbENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDRFMEExNTRGMDkw
MDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4
MEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2MzE1LDYgKzI2MzIyLDcgQEAKIAkJCQk5MzRGNzEzODBENUE2RUZGMDAw
MThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxNEM3NjREMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxRTFFQ0FGMEM5MUM1NDYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBv
b2wubW0gaW4gU291cmNlcyAqLywKKwkJCQk0NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0
b3Njcm9sbENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNTAwQTE1NEYw
OTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4
MTI0QjBGQkI5Q0E5MDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDQThDODFGMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9z
Y3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRy
b2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGU5OWQzMTFiN2FiYTUxNjk0ZmQ0ZjhlZWQ4NmNlNWQw
MDI1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxD
b250cm9sbGVyLmNwcApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Vi
a2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRv
c2Nyb2xsQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBXaGVuIHRoZSBh
dXRvc2Nyb2xsIG9yIHRoZSBwYW5TY3JvbGwgaXMgdHJpZ2dlcmVkIHdoZW4gZG8gdGhlIHNjcm9s
bCBldmVyeSAwLjA1cyB0byBtYWtlIGl0IHNtb290aAorc3RhdGljIGNvbnN0IGRvdWJsZSBhdXRv
c2Nyb2xsSW50ZXJ2YWwgPSAwLjA1OworCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCitzdGF0
aWMgRnJhbWUqIGdldE1haW5GcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5tYWluRnJhbWUoKSA6IDA7
Cit9CisjZW5kaWYKKworQXV0b3Njcm9sbENvbnRyb2xsZXI6OkF1dG9zY3JvbGxDb250cm9sbGVy
KCkKKyAgICA6IG1fYXV0b3Njcm9sbFRpbWVyKHRoaXMsICZBdXRvc2Nyb2xsQ29udHJvbGxlcjo6
YXV0b3Njcm9sbFRpbWVyRmlyZWQpCisgICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQorICAg
ICwgbV9hdXRvc2Nyb2xsVHlwZShOb0F1dG9zY3JvbGwpCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJ
TkcpCisgICAgLCBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQoZmFsc2UpCisgICAgLCBtX3Nwcmlu
Z0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisjZW5kaWYKK3sKK30KKworUmVuZGVy
Qm94KiBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9hdXRvc2Nyb2xsUmVuZGVyZXI7Cit9CisKK2Jvb2wgQXV0b3Njcm9sbENv
bnRyb2xsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9h
dXRvc2Nyb2xsVHlwZSA9PSBBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uOworfQorCit2b2lkIEF1dG9z
Y3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9zY3JvbGxGb3JTZWxlY3Rpb24oUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3sKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgdGhlIGF1dG9z
Y3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpZiBpdCdzIGFscmVhZHkgYWN0aXZlCisgICAgaWYgKG1f
YXV0b3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSZW5kZXJC
b3gqIHNjcm9sbGFibGUgPSBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xsYWJsZShyZW5kZXJlcik7
CisgICAgaWYgKCFzY3JvbGxhYmxlKQorICAgICAgICByZXR1cm47CisgICAgbV9hdXRvc2Nyb2xs
VHlwZSA9IEF1dG9zY3JvbGxGb3JTZWxlY3Rpb247CisgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIg
PSBzY3JvbGxhYmxlOworICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Cit9CisKK3ZvaWQgQXV0
b3Njcm9sbENvbnRyb2xsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVp
bmdEZXN0cm95ZWQpCit7CisgICAgUmVuZGVyQm94KiBzY3JvbGxhYmxlID0gbV9hdXRvc2Nyb2xs
UmVuZGVyZXI7CisgICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RvcCgpOworICAgIG1fYXV0b3Njcm9s
bFR5cGUgPSBOb0F1dG9zY3JvbGw7CisgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSAwOworI2lm
IEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZCA9IGZh
bHNlOworICAgIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOworI2Vu
ZGlmCisKKyAgICBpZiAoIXNjcm9sbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1l
KiBmcmFtZSA9IHNjcm9sbGFibGUtPmZyYW1lKCk7CisgICAgRXZlbnRIYW5kbGVyKiBldmVudEhh
bmRsZXIgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCk7CisgICAgaWYgKGF1dG9zY3JvbGxJblByb2dy
ZXNzKCkgJiYgZXZlbnRIYW5kbGVyLT5tb3VzZURvd25XYXNJblN1YmZyYW1lKCkpIHsKKyAgICAg
ICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9IGV2ZW50SGFuZGxlci0+c3ViZnJhbWVGb3JUYXJnZXRO
b2RlKGV2ZW50SGFuZGxlci0+bW91c2VQcmVzc05vZGUoKSkpCisgICAgICAgICAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVz
dHJveWVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghcmVuZGVyZXJJc0Jl
aW5nRGVzdHJveWVkKQorICAgICAgICBzY3JvbGxhYmxlLT5zdG9wQXV0b3Njcm9sbCgpOworI2lm
IEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIGlmIChwYW5TY3JvbGxJblByb2dyZXNzKCkpIHsK
KyAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAg
ICAgIHZpZXctPnJlbW92ZVBhblNjcm9sbEljb24oKTsKKyAgICAgICAgICAgIHZpZXctPnNldEN1
cnNvcihwb2ludGVyQ3Vyc29yKCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoUEFOX1NDUk9MTElORykKKyAgICAvLyBJZiB3ZSdyZSBub3QgaW4gdGhlIHRvcCBmcmFt
ZSB3ZSBub3RpZnkgaXQgdGhhdCB3ZSBhcmUgbm90IGRvaW5nIGEgcGFuU2Nyb2xsIGFueSBtb3Jl
LgorICAgIGlmIChGcmFtZSogbWFpbkZyYW1lID0gZ2V0TWFpbkZyYW1lKGZyYW1lKSkgeworICAg
ICAgICBpZiAoZnJhbWUgIT0gbWFpbkZyYW1lKQorICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+ZGlkUGFuU2Nyb2xsU3RvcCgpOworICAgIH0KKyNlbmRpZgorfQorCit2b2lk
IEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKQoreworICAg
IGlmICghbV9hdXRvc2Nyb2xsUmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKworI2lmIEVOQUJMRShQ
QU5fU0NST0xMSU5HKQorICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9IG1fYXV0b3Njcm9sbFJl
bmRlcmVyLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9w
YW5TY3JvbGxTdGFydFBvcywgdHJ1ZSk7CisKKyAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBo
aXRUZXN0LmlubmVyTm9kZSgpKQorICAgICAgICByZW5kZXJlciA9IG5vZGVBdFBvaW50LT5yZW5k
ZXJlcigpOworI2VuZGlmCisKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgIShyZW5kZXJlci0+aXNC
b3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkF1dG9zY3JvbGwoKSkpCisgICAgICAg
IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOworICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVy
ID0gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikg
OiAwOworfQorCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCit2b2lkIEF1dG9zY3JvbGxDb250
cm9sbGVyOjpkaWRQYW5TY3JvbGxTdGFydCgpCit7CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IEF1
dG9zY3JvbGxGb3JQYW47Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmRpZFBhblNj
cm9sbFN0b3AoKQoreworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBOb0F1dG9zY3JvbGw7Cit9CisK
K3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKK3sKKyAgICBpZiAobW91c2VFdmVudC5i
dXR0b24oKSA9PSBNaWRkbGVCdXR0b24pCisgICAgICAgIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3Nl
ZCA9IGZhbHNlOworICAgIGlmIChtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MpCisg
ICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKK30KKworYm9vbCBBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXV0b3Nj
cm9sbFR5cGUgPT0gQXV0b3Njcm9sbEZvclBhbjsKK30KKwordm9pZCBBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcoUmVuZGVyQm94KiBzY3JvbGxhYmxlLCBjb25zdCBJbnRQ
b2ludCYgbGFzdEtub3duTW91c2VQb3NpdGlvbikKK3sKKyAgICAvLyBXZSBkb24ndCB3YW50IHRv
IHRyaWdnZXIgdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpZiBpdCdzIGFscmVhZHkg
YWN0aXZlCisgICAgaWYgKG1fYXV0b3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYXV0b3Njcm9sbFR5cGUgPSBBdXRvc2Nyb2xsRm9yUGFuOworICAgIG1f
YXV0b3Njcm9sbFJlbmRlcmVyID0gc2Nyb2xsYWJsZTsKKyAgICBtX3BhblNjcm9sbFN0YXJ0UG9z
ID0gbGFzdEtub3duTW91c2VQb3NpdGlvbjsKKyAgICBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbElu
UHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBzY3JvbGxhYmxl
LT5mcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHZpZXctPmFkZFBhblNjcm9sbEljb24obGFzdEtu
b3duTW91c2VQb3NpdGlvbik7CisgICAgc2Nyb2xsYWJsZS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmRpZFBhblNjcm9sbFN0YXJ0KCk7CisgICAgc3RhcnRBdXRvc2Nyb2xsVGltZXIoKTsKK30K
KyNlbHNlCitib29sIEF1dG9zY3JvbGxDb250cm9sbGVyOjpwYW5TY3JvbGxJblByb2dyZXNzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwordm9pZCBBdXRvc2Nyb2xs
Q29udHJvbGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8QXV0b3Njcm9sbENvbnRyb2xs
ZXI+KikKK3sKKyAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKSB7CisgICAgICAgIHN0b3BB
dXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZyYW1lKiBm
cmFtZSA9IG1fYXV0b3Njcm9sbFJlbmRlcmVyLT5mcmFtZSgpOworICAgIHN3aXRjaCAobV9hdXRv
c2Nyb2xsVHlwZSkgeworICAgIGNhc2UgQXV0b3Njcm9sbEZvclNlbGVjdGlvbjoKKyAgICAgICAg
aWYgKCFmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlUHJlc3NlZCgpKSB7CisgICAgICAgICAg
ICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmF1dG9zY3JvbGwoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBOb0F1dG9zY3JvbGw6CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShQ
QU5fU0NST0xMSU5HKQorICAgIGNhc2UgQXV0b3Njcm9sbEZvclBhbjoKKyAgICAgICAgLy8gd2Ug
dmVyaWZ5IHRoYXQgdGhlIG1haW4gZnJhbWUgaGFzbid0IHJlY2VpdmVkIHRoZSBvcmRlciB0byBz
dG9wIHRoZSBwYW5TY3JvbGwKKyAgICAgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBnZXRNYWlu
RnJhbWUoZnJhbWUpKSB7CisgICAgICAgICAgICBpZiAoIW1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPnBhblNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICAgICAgICAgIHN0b3BBdXRvc2Ny
b2xsVGltZXIoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCkpCisgICAg
ICAgICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSh2aWV3LCBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
Pmxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CisgICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVy
LT5wYW5TY3JvbGwobV9wYW5TY3JvbGxTdGFydFBvcyk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisgICAgfQorfQorCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydEF1dG9zY3JvbGxU
aW1lcigpCit7CisgICAgbV9hdXRvc2Nyb2xsVGltZXIuc3RhcnRSZXBlYXRpbmcoYXV0b3Njcm9s
bEludGVydmFsKTsKK30KKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQordm9pZCBBdXRvc2Ny
b2xsQ29udHJvbGxlcjo6dXBkYXRlUGFuU2Nyb2xsU3RhdGUoRnJhbWVWaWV3KiB2aWV3LCBjb25z
dCBJbnRQb2ludCYgbGFzdEtub3duTW91c2VQb3NpdGlvbikKK3sKKyAgICAvLyBBdCB0aGUgb3Jp
Z2luYWwgY2xpY2sgbG9jYXRpb24gd2UgZHJhdyBhIDQgYXJyb3dlZCBpY29uLiBPdmVyIHRoaXMg
aWNvbiB0aGVyZSB3b24ndCBiZSBhbnkgc2Nyb2xsCisgICAgLy8gU28gd2UgZG9uJ3Qgd2FudCB0
byBjaGFuZ2UgdGhlIGN1cnNvciBvdmVyIHRoaXMgYXJlYQorICAgIGJvb2wgZWFzdCA9IG1fcGFu
U2Nyb2xsU3RhcnRQb3MueCgpIDwgKGxhc3RLbm93bk1vdXNlUG9zaXRpb24ueCgpIC0gU2Nyb2xs
Vmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOworICAgIGJvb2wgd2VzdCA9IG1fcGFuU2Nyb2xsU3Rh
cnRQb3MueCgpID4gKGxhc3RLbm93bk1vdXNlUG9zaXRpb24ueCgpICsgU2Nyb2xsVmlldzo6bm9Q
YW5TY3JvbGxSYWRpdXMpOworICAgIGJvb2wgbm9ydGggPSBtX3BhblNjcm9sbFN0YXJ0UG9zLnko
KSA+IChsYXN0S25vd25Nb3VzZVBvc2l0aW9uLnkoKSArIFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xs
UmFkaXVzKTsKKyAgICBib29sIHNvdXRoID0gbV9wYW5TY3JvbGxTdGFydFBvcy55KCkgPCAobGFz
dEtub3duTW91c2VQb3NpdGlvbi55KCkgLSBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7
CisKKyAgICBpZiAoKGVhc3QgfHwgd2VzdCB8fCBub3J0aCB8fCBzb3V0aCkgJiYgbV9wYW5TY3Jv
bGxCdXR0b25QcmVzc2VkKQorICAgICAgICBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jl
c3MgPSB0cnVlOworCisgICAgaWYgKG5vcnRoKSB7CisgICAgICAgIGlmIChlYXN0KQorICAgICAg
ICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7CisgICAgICAg
IGVsc2UgaWYgKHdlc3QpCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhXZXN0UGFu
bmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29y
KG5vcnRoUGFubmluZ0N1cnNvcigpKTsKKyAgICB9IGVsc2UgaWYgKHNvdXRoKSB7CisgICAgICAg
IGlmIChlYXN0KQorICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoRWFzdFBhbm5pbmdD
dXJzb3IoKSk7CisgICAgICAgIGVsc2UgaWYgKHdlc3QpCisgICAgICAgICAgICB2aWV3LT5zZXRD
dXJzb3Ioc291dGhXZXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoUGFubmluZ0N1cnNvcigpKTsKKyAgICB9IGVsc2UgaWYg
KGVhc3QpCisgICAgICAgIHZpZXctPnNldEN1cnNvcihlYXN0UGFubmluZ0N1cnNvcigpKTsKKyAg
ICBlbHNlIGlmICh3ZXN0KQorICAgICAgICB2aWV3LT5zZXRDdXJzb3Iod2VzdFBhbm5pbmdDdXJz
b3IoKSk7CisgICAgZWxzZQorICAgICAgICB2aWV3LT5zZXRDdXJzb3IobWlkZGxlUGFubmluZ0N1
cnNvcigpKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY3MWYxNWQ0MzM2
NTcxYWRhMmNlNTUyZjBkNzdiYWEzYjg4ODk2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBdXRvc2Nyb2xsQ29udHJvbGxl
cl9oCisjZGVmaW5lIEF1dG9zY3JvbGxDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkludFBvaW50
LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBF
dmVudEhhbmRsZXI7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFBsYXRm
b3JtTW91c2VFdmVudDsKK2NsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlck9iamVjdDsKKwor
ZW51bSBBdXRvc2Nyb2xsVHlwZSB7CisgICAgTm9BdXRvc2Nyb2xsLAorICAgIEF1dG9zY3JvbGxG
b3JTZWxlY3Rpb24sCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgQXV0b3Njcm9sbEZv
clBhbiwKKyNlbmRpZgorfTsKKworLy8gQXV0c2Nyb2xsQ29udHJvbGxlciBoYW5kZWxzIGF1dG9z
Y3JvbGwgYW5kIHBhbiBzY3JvbGwgZm9yIEV2ZW50SGFuZGxlci4KK2NsYXNzIEF1dG9zY3JvbGxD
b250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBBdXRvc2Nyb2xsQ29udHJvbGxlcigpOworICAgIFJl
bmRlckJveCogYXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3Q7CisgICAgYm9vbCBhdXRvc2Nyb2xs
SW5Qcm9ncmVzcygpIGNvbnN0OworICAgIGJvb2wgcGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0
OworICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsRm9yU2VsZWN0aW9uKFJlbmRlck9iamVjdCopOwor
ICAgIHZvaWQgc3RvcEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3ll
ZCA9IGZhbHNlKTsKKyAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOworI2lmIEVO
QUJMRShQQU5fU0NST0xMSU5HKQorICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RhcnQoKTsKKyAgICB2
b2lkIGRpZFBhblNjcm9sbFN0b3AoKTsKKyAgICB2b2lkIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZvaWQgc2V0UGFuU2Nyb2xsSW5Qcm9n
cmVzcyhib29sKTsKKyAgICB2b2lkIHN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlckJveCosIGNvbnN0
IEludFBvaW50Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGF1dG9zY3JvbGxUaW1l
ckZpcmVkKFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiopOworICAgIHZvaWQgc3RhcnRBdXRv
c2Nyb2xsVGltZXIoKTsKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICB2b2lkIHVwZGF0
ZVBhblNjcm9sbFN0YXRlKEZyYW1lVmlldyosIGNvbnN0IEludFBvaW50Jik7CisjZW5kaWYKKwor
ICAgIFRpbWVyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9zY3JvbGxUaW1lcjsKKyAgICBS
ZW5kZXJCb3gqIG1fYXV0b3Njcm9sbFJlbmRlcmVyOworICAgIEF1dG9zY3JvbGxUeXBlIG1fYXV0
b3Njcm9sbFR5cGU7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgSW50UG9pbnQgbV9w
YW5TY3JvbGxTdGFydFBvczsKKyAgICBib29sIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3NlZDsKKyAg
ICBib29sIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzczsKKyNlbmRpZgorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXV0b3Njcm9sbENvbnRyb2xsZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDE1OGFkNWNlMDM2YzA3MmIw
ZGEwNWM3OTU1OWMzZjIwMWJjNGYzMGEuLjM3M2EyZTczZWQwYzNhYTY5YjYxYmE0NjQ2MWY0M2Jh
OTgyMzRkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2Fj
aGUuaCIKKyNpbmNsdWRlICJBdXRvc2Nyb2xsQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CkBAIC0xMzcsOSArMTM4LDYgQEAgY29uc3QgaW50IENvbXBvc2l0aW9uRXZlbnRLZXlDb2RlID0g
MjI5OwogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogI2VuZGlmCiAKLS8vIFdoZW4gdGhlIGF1
dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmlnZ2VyZWQgd2hlbiBkbyB0aGUgc2Nyb2xs
IGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCi1jb25zdCBkb3VibGUgYXV0b3Njcm9sbElu
dGVydmFsID0gMC4wNTsKLQogLy8gVGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIHNl
bmRpbmcgYSBmYWtlIG1vdXNlIGV2ZW50LCB0cmlnZ2VyZWQKIC8vIGR1cmluZyBhIHNjcm9sbC4g
VGhlIHNob3J0IGludGVydmFsIGlzIHVzZWQgaWYgdGhlIGNvbnRlbnQgcmVzcG9uZHMgdG8gdGhl
IG1vdXNlIGV2ZW50cyBxdWlja2x5IGVub3VnaCwKIC8vIG90aGVyd2lzZSB0aGUgbG9uZyBpbnRl
cnZhbCBpcyB1c2VkLgpAQCAtMzMxLDEzICszMjksOCBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFu
ZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAsIG1fbW91c2VEb3duV2FzU2luZ2xlQ2xp
Y2tJblNlbGVjdGlvbihmYWxzZSkKICAgICAsIG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRlKEhh
dmVOb3RTdGFydGVkU2VsZWN0aW9uKQotICAgICwgbV9wYW5TY3JvbGxJblByb2dyZXNzKGZhbHNl
KQotICAgICwgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkKGZhbHNlKQotICAgICwgbV9zcHJpbmdM
b2FkZWRQYW5TY3JvbGxJblByb2dyZXNzKGZhbHNlKQogICAgICwgbV9ob3ZlclRpbWVyKHRoaXMs
ICZFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCkKLSAgICAsIG1fYXV0b3Njcm9sbFRpbWVy
KHRoaXMsICZFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9hdXRv
c2Nyb2xsUmVuZGVyZXIoMCkKLSAgICAsIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCisg
ICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBBdXRvc2Nyb2xsQ29udHJv
bGxlcikpCiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAs
IG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2
ZW50VGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJl
ZCkKQEAgLTcwNCwzMCArNjk3LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICByZXR1
cm4gc3dhbGxvd0V2ZW50OwogfQogCi0vLyBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIHJlbmRlcmVy
IHRoYXQgY2FuIGF1dG9zY3JvbGwuCi1zdGF0aWMgYm9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCi17Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgY2FuIGJlIHNjcm9s
bGVkIGluIGl0cyBvd24gcmlnaHQuCi0gICAgaWYgKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gQ2hlY2sgZm9yIGEgYm94IHRoYXQgcmVwcmVzZW50cyB0aGUgdG9wIGxldmVsIG9m
IGEgd2ViIHBhZ2UuCi0gICAgLy8gVGhpcyBjYW4gYmUgc2Nyb2xsZWQgYnkgY2FsbGluZyBDaHJv
bWU6OnNjcm9sbFJlY3RJbnRvVmlldy4KLSAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBv
biB0aGUgTWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucwotICAgIC8vIHRoYXQgcHV0IHdlYiB2
aWV3cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCi0g
ICAgLy8gVGhlIGNvZGUgZm9yIHRoaXMgaXMgaW4gUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUuCi0gICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgIT0gcmVuZGVyZXItPmRvY3VtZW50KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1l
KCkgPT0gZnJhbWU7Ci19Ci0KICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50KQogewpAQCAtNzU0LDIwICs3MjMsOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZQogCiAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKIAotICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCAmJiAhbV9wYW5TY3JvbGxJblByb2dyZXNz
KSB7ICAgICAgICAgICAgCi0gICAgICAgIC8vIEZpbmQgYSByZW5kZXJlciB0aGF0IGNhbiBhdXRv
c2Nyb2xsLgotICAgICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIWNhbkF1dG9zY3JvbGwocmVuZGVy
ZXIpKSB7Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+
bm9kZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5v
d25lckVsZW1lbnQoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5kb2N1
bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgICAgICBtX2F1dG9zY3Jv
bGxJblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGhhbmRsZUF1dG9zY3JvbGwocmVuZGVy
ZXIpOwotICAgICAgICB9Ci0gICAgICAgIAorICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0QXV0
b3Njcm9sbCAmJiAhcGFuU2Nyb2xsSW5Qcm9ncmVzcygpKSB7CisgICAgICAgIG1fYXV0b3Njcm9s
bENvbnRyb2xsZXItPnN0YXJ0QXV0b3Njcm9sbEZvclNlbGVjdGlvbihyZW5kZXJlcik7CiAgICAg
ICAgIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsID0gZmFsc2U7CiAgICAgfQogCkBAIC05
MzUsOCArODkyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCkKIHsKLSAgICBpZiAobV9hdXRvc2Nyb2xsSW5Qcm9ncmVzcykKLSAgICAgICAgc3Rv
cEF1dG9zY3JvbGxUaW1lcigpOworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAogICAgIGlm
IChoYW5kbGVNb3VzZVVwKGV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05OTAsMTMy
ICs5NDYsNDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICByZXR1cm4gaGFuZGxlZDsK
IH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKLXsKLSAgICAvLyBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgdGhlIGF1dG9zY3Jv
bGwgb3IgdGhlIHBhblNjcm9sbCBpZiBpdCdzIGFscmVhZHkgYWN0aXZlCi0gICAgaWYgKG1fYXV0
b3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsgICAgIAotCi0gICAgc2V0
QXV0b3Njcm9sbFJlbmRlcmVyKHJlbmRlcmVyKTsKLQogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5H
KQotICAgIGlmIChtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9wYW5TY3JvbGxT
dGFydFBvcyA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKTsKLSAgICAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHZpZXctPmFkZFBhblNjcm9s
bEljb24obV9wYW5TY3JvbGxTdGFydFBvcyk7Ci0gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBpbiB0
aGUgdG9wIGZyYW1lIHdlIG5vdGlmeSBpdCB0aGF0IHdlIGRvaW5nIGEgcGFuU2Nyb2xsLgotICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgRnJh
bWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwotICAgICAgICAgICAgaWYgKG1fZnJh
bWUgIT0gbWFpbkZyYW1lKQotICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5k
aWYKIAotICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Ci19Ci0KLXZvaWQgRXZlbnRIYW5kbGVy
OjphdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+KikKK3ZvaWQgRXZlbnRI
YW5kbGVyOjpkaWRQYW5TY3JvbGxTdGFydCgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByID0gYXV0
b3Njcm9sbFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyIHx8ICFyLT5pc0JveCgpKSB7Ci0gICAgICAg
IHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIGlmICghbV9tb3VzZVByZXNzZWQp
IHsKLSAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChyKS0+YXV0b3Njcm9sbCgpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWluIGZyYW1lIGhhc24n
dCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCi0gICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UtPm1h
aW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKSB7Ci0gICAg
ICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQot
ICAgICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOwotICAgICAgICB0b1JlbmRlckJveChyKS0+
cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotI2VuZGlmCi0gICAgfQorICAgIG1fYXV0
b3Njcm9sbENvbnRyb2xsZXItPmRpZFBhblNjcm9sbFN0YXJ0KCk7CiB9CiAKLSNpZiBFTkFCTEUo
UEFOX1NDUk9MTElORykKLQotdm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkUGFuU2Nyb2xsU3Rv
cCgpCiB7Ci0gICAgbV9wYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLSAgICBtX3BhblNjcm9s
bEJ1dHRvblByZXNzZWQgPSB0cnVlOwotICAgIGhhbmRsZUF1dG9zY3JvbGwocmVuZGVyZXIpOwot
ICAgIGludmFsaWRhdGVDbGljaygpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPmRpZFBh
blNjcm9sbFN0b3AoKTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVBhblNjcm9sbFN0
YXRlKCkKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKLSAg
ICBpZiAoIXZpZXcpCisgICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gQXQgdGhlIG9yaWdpbmFsIGNsaWNrIGxvY2F0aW9uIHdlIGRyYXcgYSA0IGFy
cm93ZWQgaWNvbi4gT3ZlciB0aGlzIGljb24gdGhlcmUgd29uJ3QgYmUgYW55IHNjcm9sbAotICAg
IC8vIFNvIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBjdXJzb3Igb3ZlciB0aGlzIGFyZWEK
LSAgICBib29sIGVhc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA8IChtX2xhc3RLbm93bk1v
dXNlUG9zaXRpb24ueCgpIC0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwotICAgIGJv
b2wgd2VzdCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueCgpID4gKG1fbGFzdEtub3duTW91c2VQb3Np
dGlvbi54KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9vbCBub3J0
aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpID4gKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi55
KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9vbCBzb3V0aCA9IG1f
cGFuU2Nyb2xsU3RhcnRQb3MueSgpIDwgKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi55KCkgLSBT
Y3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgICAgICAKLSAgICBpZiAoKGVhc3Qg
fHwgd2VzdCB8fCBub3J0aCB8fCBzb3V0aCkgJiYgbV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkKQot
ICAgICAgICBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotCi0gICAg
aWYgKG5vcnRoKSB7Ci0gICAgICAgIGlmIChlYXN0KQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vy
c29yKG5vcnRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHdlc3QpCi0g
ICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhXZXN0UGFubmluZ0N1cnNvcigpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoUGFubmluZ0N1cnNv
cigpKTsKLSAgICB9IGVsc2UgaWYgKHNvdXRoKSB7Ci0gICAgICAgIGlmIChlYXN0KQotICAgICAg
ICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgICAg
IGVsc2UgaWYgKHdlc3QpCi0gICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhXZXN0UGFu
bmluZ0N1cnNvcigpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29y
KHNvdXRoUGFubmluZ0N1cnNvcigpKTsKLSAgICB9IGVsc2UgaWYgKGVhc3QpCi0gICAgICAgIHZp
ZXctPnNldEN1cnNvcihlYXN0UGFubmluZ0N1cnNvcigpKTsKLSAgICBlbHNlIGlmICh3ZXN0KQot
ICAgICAgICB2aWV3LT5zZXRDdXJzb3Iod2VzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgZWxzZQot
ICAgICAgICB2aWV3LT5zZXRDdXJzb3IobWlkZGxlUGFubmluZ0N1cnNvcigpKTsKKyAgICBtX2F1
dG9zY3JvbGxDb250cm9sbGVyLT5zdGFydFBhblNjcm9sbGluZyh0b1JlbmRlckJveChyZW5kZXJl
ciksIGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CisgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoUEFOX1NDUk9MTElORykKIAogUmVuZGVyT2JqZWN0KiBFdmVu
dEhhbmRsZXI6OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXV0
b3Njcm9sbFJlbmRlcmVyOworICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5hdXRv
c2Nyb2xsUmVuZGVyZXIoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3Jv
bGxSZW5kZXJlcigpCiB7Ci0gICAgaWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0ID0gaGl0VGVzdFJlc3VsdEF0UG9p
bnQobV9wYW5TY3JvbGxTdGFydFBvcywgdHJ1ZSk7Ci0KLSAgICBpZiAoTm9kZSogbm9kZUF0UG9p
bnQgPSBoaXRUZXN0LmlubmVyTm9kZSgpKQotICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9
IG5vZGVBdFBvaW50LT5yZW5kZXJlcigpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPnVw
ZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOworfQogCi0gICAgd2hpbGUgKG1fYXV0b3Njcm9sbFJl
bmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKG1fYXV0b3Njcm9sbFJlbmRlcmVyKSkKLSAgICAgICAg
bV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBtX2F1dG9zY3JvbGxSZW5kZXJlci0+cGFyZW50KCk7Citi
b29sIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5hdXRvc2Nyb2xsSW5Qcm9ncmVzcygpOwogfQog
Ci12b2lkIEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCitib29sIEV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0
CiB7Ci0gICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICByZXR1cm4gbV9h
dXRvc2Nyb2xsQ29udHJvbGxlci0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpOwogfQogCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTExOTUsNTAgKzEwNjUsOSBAQCBIaXRUZXN0UmVzdWx0IEV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
LCBib29sCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotCi12b2lkIEV2ZW50SGFuZGxlcjo6c3Rh
cnRBdXRvc2Nyb2xsVGltZXIoKQotewotICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0YXJ0UmVwZWF0
aW5nKGF1dG9zY3JvbGxJbnRlcnZhbCk7Ci19Ci0KIHZvaWQgRXZlbnRIYW5kbGVyOjpzdG9wQXV0
b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKQogewotICAgIGlmICht
X2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIGlmIChtX21vdXNlRG93bldhc0luU3Vi
ZnJhbWUpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvclRh
cmdldE5vZGUobV9tb3VzZVByZXNzTm9kZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgc3ViZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rl
c3Ryb3llZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoYXV0b3Njcm9sbFJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdE
ZXN0cm95ZWQgJiYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgfHwgbV9wYW5TY3JvbGxJblByb2dy
ZXNzKSkKLSAgICAgICAgICAgIHRvUmVuZGVyQm94KGF1dG9zY3JvbGxSZW5kZXJlcigpKS0+c3Rv
cEF1dG9zY3JvbGwoKTsKLSNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICAgICAgaWYgKG1f
cGFuU2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUtPnZpZXcoKSkgewotICAgICAgICAgICAgICAgIHZpZXctPnJlbW92ZVBhblNjcm9s
bEljb24oKTsKLSAgICAgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgc2V0QXV0b3Nj
cm9sbFJlbmRlcmVyKDApOwotICAgIH0KLQotICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0b3AoKTsK
LQotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgIG1fc3ByaW5nTG9hZGVk
UGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotCi0gICAgLy8gSWYgd2UncmUgbm90IGluIHRo
ZSB0b3AgZnJhbWUgd2Ugbm90aWZ5IGl0IHRoYXQgd2UgYXJlIG5vdCBkb2luZyBhIHBhblNjcm9s
bCBhbnkgbW9yZS4KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAg
ICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgICAgIGlmICht
X2ZyYW1lICE9IG1haW5GcmFtZSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgIH0KLQotICAgIG1fYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdG9w
QXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCk7CiB9CiAKIE5vZGUqIEV2
ZW50SGFuZGxlcjo6bW91c2VQcmVzc05vZGUoKSBjb25zdApAQCAtMTQyMSw4ICsxMjUwLDEwIEBA
IE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOb0N1cnNvckNoYW5nZTsKLSAgICBp
ZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbEluUHJvZ3Jl
c3MpCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4g
Tm9DdXJzb3JDaGFuZ2U7CisjZW5kaWYKIAogICAgIE5vZGUqIG5vZGUgPSBldmVudC50YXJnZXRO
b2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJl
cigpIDogMDsKQEAgLTE2NTIsMTAgKzE0ODMsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIAog
I2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIC8vIFdlIHN0b3JlIHdoZXRoZXIgcGFuIHNj
cm9sbGluZyBpcyBpbiBwcm9ncmVzcyBiZWZvcmUgY2FsbGluZyBzdG9wQXV0b3Njcm9sbFRpbWVy
KCkKLSAgICAvLyBiZWNhdXNlIGl0IHdpbGwgc2V0IG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyB0byBm
YWxzZSBvbiByZXR1cm4uCi0gICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBtX2ZyYW1l
LT5wYWdlKCkgJiYgbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
Pm1fcGFuU2Nyb2xsSW5Qcm9ncmVzczsKLSAgICBpZiAoaXNQYW5TY3JvbGxJblByb2dyZXNzIHx8
IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MpCi0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsK
KyAgICAvLyBiZWNhdXNlIGl0IHdpbGwgc2V0IG1fYXV0b3Njcm9sbFR5cGUgdG8gTm9BdXRvc2Ny
b2xsIG9uIHJldHVybi4KKyAgICBib29sIGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IG1fZnJhbWUt
PnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
cGFuU2Nyb2xsSW5Qcm9ncmVzcygpOworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICBp
ZiAoaXNQYW5TY3JvbGxJblByb2dyZXNzKSB7CiAgICAgICAgIC8vIFdlIGludmFsaWRhdGUgdGhl
IGNsaWNrIHdoZW4gZXhpdGluZyBwYW4gc2Nyb2xsaW5nIHNvIHRoYXQgd2UgZG9uJ3QgaW5hZHZl
cnRlbnRseSBuYXZpZ2F0ZQogICAgICAgICAvLyBhd2F5IGZyb20gdGhlIGN1cnJlbnQgcGFnZSAo
ZS5nLiB0aGUgY2xpY2sgd2FzIG9uIGEgaHlwZXJsaW5rKS4gU2VlIDxyZGFyOi8vcHJvYmxlbS82
MDk1MDIzPi4KQEAgLTE5NTAsMTAgKzE3ODAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQog
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nl
c3NpbmdVc2VyR2VzdHVyZSk7CiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICBpZiAo
bW91c2VFdmVudC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24pCi0gICAgICAgIG1fcGFuU2Nyb2xs
QnV0dG9uUHJlc3NlZCA9IGZhbHNlOwotICAgIGlmIChtX3NwcmluZ0xvYWRlZFBhblNjcm9sbElu
UHJvZ3Jlc3MpCi0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICBtX2F1dG9zY3Jv
bGxDb250cm9sbGVyLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICNlbmRp
ZgogCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTMxNDMsNyArMjk3MCw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGlu
aXRpYWxLZXlFdmVudCkKIAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBpZiAo
cGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJblByb2dyZXNzKCkp
IHsKICAgICAgICAgICAgIC8vIElmIGEga2V5IGlzIHByZXNzZWQgd2hpbGUgdGhlIHBhblNjcm9s
bCBpcyBpbiBwcm9ncmVzcyB0aGVuIHdlIHdhbnQgdG8gc3RvcAogICAgICAgICAgICAgaWYgKGlu
aXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8fCBpbml0aWFs
S2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAogICAgICAgICAg
ICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CmluZGV4IDI3ZTA4MTcwYjlhMDcwMTY1MGJjMzg4ZjEzMTVkMTBiMzNkNjY1ZjEuLjE2N2QxZGYy
NjczM2YyZDQ3MTQxMmY3YjZlYmRhNjFkZjBjZjZkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBOU1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQXV0b3Njcm9sbENvbnRyb2xsZXI7CiBjbGFzcyBDbGlwYm9hcmQ7CiBj
bGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwpAQCAtMTA5LDEyICsxMTAsMTggQEAgcHVi
bGljOgogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNb3Vz
ZVByZXNzTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKIAorI2lmIEVOQUJMRShQQU5fU0NST0xMSU5H
KQorICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RhcnQoKTsKKyAgICB2b2lkIGRpZFBhblNjcm9sbFN0
b3AoKTsKICAgICB2b2lkIHN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlck9iamVjdCopOworI2VuZGlm
CiAKICAgICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVpbmdEZXN0
cm95ZWQgPSBmYWxzZSk7CiAgICAgUmVuZGVyT2JqZWN0KiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSBj
b25zdDsKICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwotICAgIGJvb2wgYXV0
b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2F1dG9zY3JvbGxJblByb2dyZXNz
OyB9CisgICAgYm9vbCBhdXRvc2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OworICAgIGJvb2wgbW91
c2VEb3duV2FzSW5TdWJmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VEb3duV2FzSW5TdWJm
cmFtZTsgfQorICAgIGJvb2wgcGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9p
ZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAgICB2b2lkIGRpc3BhdGNoRmFr
ZU1vdXNlTW92ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1YWQmKTsKQEAgLTI2OSwxNiAr
Mjc2LDggQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAogICAgIE9wdGlvbmFsQ3Vyc29yIHNl
bGVjdEN1cnNvcihjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgU2Nyb2xsYmFy
Kik7Ci0jaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgdm9pZCB1cGRhdGVQYW5TY3JvbGxT
dGF0ZSgpOwotI2VuZGlmCi0KICAgICB2b2lkIGhvdmVyVGltZXJGaXJlZChUaW1lcjxFdmVudEhh
bmRsZXI+Kik7CiAKLSAgICB2b2lkIGhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0Kik7Ci0g
ICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1lcigpOwotICAgIHZvaWQgc2V0QXV0b3Njcm9sbFJl
bmRlcmVyKFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgYXV0b3Njcm9sbFRpbWVyRmlyZWQoVGlt
ZXI8RXZlbnRIYW5kbGVyPiopOwogICAgIGJvb2wgbG9naWNhbFNjcm9sbE92ZXJmbG93KFNjcm9s
bExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUg
PSAwKTsKICAgICAKICAgICBib29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250
YWwoY29uc3QgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIGNvbnN0
OwpAQCAtNDAxLDE3ICs0MDAsMTEgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRQb2ludCBtX2RyYWdT
dGFydFBvczsKICNlbmRpZgogCi0gICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBvczsKLSAg
ICBib29sIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzczsKLQogICAgIGJvb2wgbV9wYW5TY3JvbGxCdXR0
b25QcmVzc2VkOwotICAgIGJvb2wgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dyZXNzOwog
CiAgICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2hvdmVyVGltZXI7Ci0gICAgCi0gICAgVGltZXI8
RXZlbnRIYW5kbGVyPiBtX2F1dG9zY3JvbGxUaW1lcjsKLSAgICBSZW5kZXJPYmplY3QqIG1fYXV0
b3Njcm9sbFJlbmRlcmVyOwotICAgIGJvb2wgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsKKworICAg
IE93blB0cjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4gbV9hdXRvc2Nyb2xsQ29udHJvbGxlcjsKICAg
ICBib29sIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9tb3VzZURv
d25XYXNJblN1YmZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IDI1MmQzMDkxMGZmZDdjNzc5YThhOGI0NTJjOTUzZDNjNzkwYzFkMTcuLjBhYzJhOGRlMTZl
ODE2Y2I2YzM2NDU4OGY5YjBmYjJjODMyOTU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAtNjQy
LDYgKzY0MywzOSBAQCB2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCiAgICAgICAgIGxheWVy
KCktPmF1dG9zY3JvbGwoKTsKIH0KIAorLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiByZW5kZXJl
ciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgorYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3JvbGwoKSBj
b25zdAoreworICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBzY3JvbGxlZCBpbiBp
dHMgb3duIHJpZ2h0LgorICAgIGlmIChjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCBy
ZXByZXNlbnRzIHRoZSB0b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KKyAgICAvLyBUaGlzIGNhbiBi
ZSBzY3JvbGxlZCBieSBjYWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgorICAgIC8v
IFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRp
b25zCisgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMs
IHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KKyAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4KKyAgICBpZiAobm9kZSgpICE9IGRvY3Vt
ZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdl
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5tYWluRnJh
bWUoKSA9PSBmcmFtZTsKK30KKworUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRvc2Nyb2xs
YWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChyZW5kZXJlciAmJiAh
KHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0b3Njcm9s
bCgpKSkgeworICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJlci0+bm9k
ZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgpLT5vd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkt
Pm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOworfQor
CiB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3VyY2UpCiB7CiAg
ICAgaWYgKGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNWI4
YTZlNGI4MWYxZDExNTQyN2U1YmMzMDU0ODk3MjY0OWFjMjc3OS4uM2IzYTAyMTdiYTc1OGUxMTVh
ODhkMWE5ZGU1NGVlY2VkZmJmNGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aApAQCAtNDM5LDYgKzQzOSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1h
dGljYWxseVNjcm9sbGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3JvbGwoKTsK
KyAgICBib29sIGNhbkF1dG9zY3JvbGwoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVuZGVyQm94KiBm
aW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BB
dXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2lu
dCYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179418</attachid>
            <date>2012-12-13 22:08:22 -0800</date>
            <delta_ts>2012-12-14 00:33:27 -0800</delta_ts>
            <desc>Patch 7</desc>
            <filename>bug-104764-20121214150541.patch</filename>
            <type>text/plain</type>
            <size>43903</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZiMDdhM2Y0OGM5Zjc5
YjQzNTYyNjU5YzlkNGZhM2I3NWNiMDU3OC4uMWI0NTgyZTBlYzhmOTAzOGMxNjUzY2IwZmE4YTc3
ZDU5NWJmOGZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEyLTEyICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSGFuZGxpbmcgYXV0
b3Njcm9sbCBpbiBFdmVudEhhbmRsZXIgc2hvdWxkIGJlIHJlLWZhY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IG5ldyBjbGFzcyBBdXRvc2Nyb2xsQ29udHJvbGxlciBmb3IgbW92aW5nIGF1dG9zY3JvbGwKKyAg
ICAgICAgYW5kIHBhbnNjcm9sbCBmcm9tIEV2ZW50SGFuZGxlciBjbGFzcyBmb3IgZWFzZSBvZiBt
YWludGVuYW5jZSBvZgorICAgICAgICBFdmVudEhhbmRsZXIgYW5kIGVhc2Ugb2YgYWRkaW5nIGF1
dG9zY3JvbGwgcmVsYXRlZCBmZWF0dXJlcywgZS5nLiBhdXRvc2Nyb2xsCisgICAgICAgIGR1cmlu
ZyBkcmFnLWFuZC1kcm9wLCBhdXRvc2NvbGwgYnkgZ2VzdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDogQ2hhbmdlZCB0byBhZGQgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5j
cHAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiAgQ2hhbmdlZCB0byBhZGQgcGFnZS9B
dXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogVGFyZ2V0LnByaTogIENoYW5n
ZWQgdG8gYWRkIHBhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLntjcHAsaH0K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQ2hhbmdlZCB0byBhZGQg
cGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci57Y3BwLGh9CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDaGFuZ2VkIHRvIGFkZCBwYWdlL0F1dG9zY3JvbGxDb250
cm9sbGVyLntjcHAsaH0KKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRNYWluRnJhbWUpOiBIZWxwZXIgZnVuY3Rpb24u
CisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6QXV0b3Njcm9sbENvbnRy
b2xsZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9z
Y3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOiBNb3ZlZCBmcm9tIEV2ZW50SGFu
ZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xs
SW5Qcm9ncmVzcyk6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6
QXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbEZvclNlbGVjdGlvbik6IFJlcGxh
Y2VtZW50IG9mIEV2ZW50SGFuZGxlcjo6aGFuZGxlQXV0b3Njcm9sbCgpLgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0b3BBdXRvc2Nyb2xsVGltZXIpOiBNb3ZlZWQg
ZnJvbSBFdmVudEhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9zY3JvbGxDb250cm9sbGVyOjpkaWRQYW5TY3JvbGxTdGFydCk6IEFkZGVkIGZvciB1cGRhdGlu
ZyBwYW4gc2Nyb2xsaW5nIHN0YXR1cyBvZiBtYWluIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6
QXV0b3Njcm9sbENvbnRyb2xsZXI6OmRpZFBhblNjcm9sbFN0b3ApOiBkaXR0bworICAgICAgICAo
V2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTog
RXh0cmFjdGVkIGZyb20gRXZlbnRIYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9s
bENvbnRyb2xsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MpOiBSZXBsYWNlbWVudCBvZiBFdmVudEhh
bmRsZXI6Om1fcGFuU2Nyb2xsSW5Qcm9ncmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3Jv
bGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZyk6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVy
OjpzdGFydFBhblNjcm9sbGluZygpCisgICAgICAgIChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJv
bGxlcjo6YXV0b3Njcm9sbFRpbWVyRmlyZWQpOiBNb3ZlZCBmcm9tIEV2ZW50SGFuZGxlcjo6YXV0
b3Njcm9sbFRpbWVyRmlyZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkF1dG9zY3JvbGxDb250cm9s
bGVyOjpzdGFydEF1dG9zY3JvbGxUaW1lcik6IE1vdmVkIGZyb20gRXZlbnRIYW5kbGVyOjpzdGFy
dEF1dG9zY3JvbGxUaW1lcigpLgorICAgICAgICAoV2ViQ29yZTo6QXV0b3Njcm9sbENvbnRyb2xs
ZXI6OnVwZGF0ZVBhblNjcm9sbFN0YXRlKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXI6OnVwZGF0
ZVBhblNjcm9sbFN0YXRlKCkuCisgICAgICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKEF1dG9zY3JvbGxDb250cm9sbGVyKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50
SGFuZGxlcik6IENoYW5nZWQgYXV0b3Njcm9sbCBhbmQgcGFuc2Nyb2xsIHJlbGF0ZWQgbWVtYmVy
IHZhcmlhYmxlIGluaXRpYWxpemF0aW9ucyB0byBtX2F1dG9zY3JvbGxDb250cm9sbGVyIGluaXRp
YWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURy
YWdnZWRFdmVudCk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRB
dXRvc2Nyb2xsRm9yU2VsZWN0aW9uKCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KTogQ2hhbmdlZCB0byByZW1vdmUgbV9hdXRvc2Nyb2xs
SW5Qcm9ncmVzcyByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRp
ZFBhblNjcm9sbFN0YXJ0KTogQWRkZWQgZm9yIHVwZGF0aW5nIHBhbiBzY3JvbGxpbmcgc3RhdHVz
IG9mIG1haW4gZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpZFBhblNj
cm9sbFN0b3ApOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdGFydFBh
blNjcm9sbGluZyk6IENoYW5nZWQgdG8gY2FsbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRQ
YW5TY3JvbGxpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9s
bFJlbmRlcmVyKTogQ2hhbmdlZCB0byB1c2UgQXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6IGRpdHRv
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxJblByb2dyZXNzKTog
ZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVz
cyk6IEFkZGVkIHRvIHJlcGxhY2UgbV9wYW5TY3JvbGxJblByb2dyZXNzLgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKTogQ2hhbmdlZCB0byB1c2Ug
QXV0b3Njcm9sbENvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcik6IENoYW5nZWQgdG8gdXNlIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogQ2hhZ25l
ZCB0byBjYWxsIEF1dG9zY3JvbGxDb250cm9sbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoKS4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOiBDaGFuZ2VkIHRvIHVz
ZSBwYW5TY3JvbGxJblByb2dyZXNzKCkuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbENvbnRyb2xsZXIpOiBB
ZGRlZCBmb3IgdXNpbmcgbWFpbiBmcmFtZSdzIHBhblNjcm9sbEluUHJvZ3Jlc3MoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VEb3duV2FzSW5TdWJmcmFtZSk6IEFkZGVk
IGZvciBBdXRvc2Nyb2xsQ29udHJvbGxlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FuQXV0b3Njcm9sbCk6IE1vdmVk
IGZyb20gRXZlbnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Zmlu
ZEF1dG9zY3JvbGxhYmxlKTogTW92ZWQgZnJvbSBFdmVudEhhbmRsZXIuY3BwLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRlckJveCk6IEFkZGVkIG5ldyBm
dW5jdGlvbnMgY2FuQXV0b3Njcm9sbCgpIGFuZCBmaW5kQXV0b3Njcm9sbGFibGUoKS4KKwogMjAx
Mi0xMi0xMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVm
YWN0b3Jpbmc6IEZpeCBpbmRlbnRhdGlvbiBvZiBDaHJvbWVDbGllbnQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBlODlmZjJlNzNkOTZkYWVhMGEzOTU0OTAyYjAzMTg0MmEwMzE1Mzg0Li5mZGJi
OGZkN2MzM2IzNTU3MzM4M2M4NzY2MzA5NGU5N2NlYzliYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTcxOSw2ICsxNzE5LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIG1hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCiAK
KyAgICBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvQmFySW5mby5jcHAK
ICAgICBwYWdlL0Nocm9tZS5jcHAKICAgICBwYWdlL0NvbnNvbGUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA3YmJkNjM3NDdlMWEwMzc5OWM5OTZkM2I1MGI3MjgzYTQ4Mzdh
ZjQyLi5lNzE2ZjhlZTBhMGNhM2YwMzA1MjdjMGZmNTc2NmFkOThkMmY2YmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQwMDIsNiArNDAwMiw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0F1
dG9zY3JvbGxDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQmFySW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYWE5MDUxYzFjMGY5YzQ0OGJmNDAwNzFlMjc0
OGE2ZTg0OWJmZDcwOS4uNDVkMTc3ZTFiMWQyYmNiNjU1ZmRlMDYxMzQzYzA4YTVlMzA4YjMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC04NjgsNiArODY4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9J
bXBsaWNpdEFuaW1hdGlvbi5jcHAgXAogICAgIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmNwcCBcCisgICAgcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2Uv
QmFySW5mby5jcHAgXAogICAgIHBhZ2UvQ2hyb21lLmNwcCBcCiAgICAgcGFnZS9Db25zb2xlLmNw
cCBcCkBAIC0yMDE0LDYgKzIwMTUsNyBAQCBIRUFERVJTICs9IFwKICAgICBwYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oIFwKICAgICBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1h
dGlvbi5oIFwKICAgICBwYWdlL0FkanVzdFZpZXdTaXplT3JOb3QuaCBcCisgICAgcGFnZS9BdXRv
c2Nyb2xsQ29udHJvbGxlci5oIFwKICAgICBwYWdlL0JhckluZm8uaCBcCiAgICAgcGFnZS9DaHJv
bWUuaCBcCiAgICAgcGFnZS9Db25zb2xlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY5MGQxODgx
NjRiNDU5YzM5ZDRhMTNlMWIzZjM3NjJlOTU4NzEwZTAuLjhlYTBmZDAwODZjMWFmYTc2OWRhMjlh
YWNlMDk3NmE0NGU1NGM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMjgsNiArMjAyOCw4IEBA
CiAgICAgICAgICAgICAnbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgnLAogICAgICAgICAgICAg
J21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5oJywKKyAgICAgICAgICAgICdwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcCcsCisgICAgICAgICAgICAncGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5oJywKICAgICAg
ICAgICAgICdwYWdlL0JhckluZm8uY3BwJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaCcs
CiAgICAgICAgICAgICAncGFnZS9DaHJvbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMjVlZTNjMDI5ODFjOTU0ZDYwZGZmMTU0MmI1
YzAzZmZjNWY0MmQyYi4uNGVlNjY4YjM4M2FkZDQ5YWEyYzBjNTFiYWU1NzRiNjU1ZTE5NDczMCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI2
Nzk4LDYgKzI2Nzk4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBhZ2VcQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEF1dG9zY3JvbGxDb250
cm9sbGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcQmFySW5mby5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxYjUyMTkzOTVi
Y2I3MDcwNThjZGRlZjAwODM1NDhiOTM2NzgwYjIuLjk0ZGU0YmRiNmNiZjE4ZjY3NGJmNGQ5MzIz
MDRmODgxZjM0NDRjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzIsNiArMTIzMiw4IEBACiAJCTQ1MTI1MDIzMTVEQ0Uz
N0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5C
dXR0b25FbGVtZW50LmggKi87IH07CiAJCTQ1M0VCNjM2MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRl
VGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NTNFQjYzNDE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuY3BwICovOyB9
OwogCQk0NTNFQjYzNzE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1M0VCNjM1MTU5QzU3MDQw
MDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ1ODMwRDREMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Ny
b2xsQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NTgzMEQ0QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIu
Y3BwICovOyB9OworCQk0NTgzMEQ0RTE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1ODYxQzcyMTYxOTQ5
REMwMDAxMEYzQSAvKiBCYXNlTXVsdGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTg2MUM3MDE2
MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
Y3BwICovOyB9OwogCQk0NTg2MUM3MzE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmll
bGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ1ODYxQzcxMTYxOTQ5REMwMDAxMEYzQSAvKiBCYXNlTXVsdGlwbGVG
aWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5oICovOyB9OwogCQk0NTg2MUM3RjE2MTk0QTc0MDAw
MTBGM0EgLyogRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTg2MUM3NTE2MTk0QTc0MDAwMTBGM0EgLyogRGF0ZVRp
bWVFZGl0RWxlbWVudC5jcHAgKi87IH07CkBAIC04NDc0LDYgKzg0NzYsOCBAQAogCQk0NTEyNTAy
MTE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3BpbkJ1dHRvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDUzRUI2MzQxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVUaW1lRm9ybWF0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3
IC8qIERhdGVUaW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGVUaW1lRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1ODMwRDRCMTY3
OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Ny
b2xsQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvc2Ny
b2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTg2MUM3MDE2
MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZU11bHRpcGxlRmll
bGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NTg2MUM3MTE2MTk0OURDMDAwMTBGM0EgLyogQmFzZU11bHRpcGxlRmllbGRzRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZU11bHRp
cGxlRmllbGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDU4NjFDNzUxNjE5NEE3NDAwMDEwRjNBIC8qIERhdGVUaW1lRWRpdEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZVRpbWVFZGl0RWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk1MSw2ICsxNTk1NSw4IEBA
CiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFic3RyYWN0Vmlldy5pZGwgKi8sCiAJ
CQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywK
IAkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmgg
Ki8sCisJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVy
LmNwcCAqLywKKwkJCQk0NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRy
b2xsZXIuaCAqLywKIAkJCQlCQzEyNEVFNDBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5jcHAg
Ki8sCiAJCQkJQkMxMjRFRTUwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaCAqLywKIAkJCQlC
QzEyNEVFNjBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5pZGwgKi8sCkBAIC0yMjY3OCw2ICsy
MjY4NCw3IEBACiAJCQkJRTEyNDc0ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY0QzBDRTkyMzRFMDA3RUYzQ0QgLyog
QXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTFFQ0IzMEM5MUM1NTYw
MERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1ODMwRDRF
MTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDRkYwNEUwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9y
d2FyZENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYzMTUsNiArMjYzMjIsNyBAQAog
CQkJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NEQwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1
dGhlbnRpY2F0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQUYwQzkxQzU0NjAw
REMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ1ODMwRDRE
MTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOENGRjA1MDBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENh
Y2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM4MUYxMUUzRDM2OTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4ZTk5ZDMxMWI3
YWJhNTE2OTRmZDRmOGVlZDg2Y2U1ZDAwMjViZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMjcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEyIERp
Z2lhIFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkF1dG9zY3JvbGxDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJF
dmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIFdoZW4gdGhlIGF1dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpcyB0cmln
Z2VyZWQgd2hlbiBkbyB0aGUgc2Nyb2xsIGV2ZXJ5IDAuMDVzIHRvIG1ha2UgaXQgc21vb3RoCitz
dGF0aWMgY29uc3QgZG91YmxlIGF1dG9zY3JvbGxJbnRlcnZhbCA9IDAuMDU7CisKKyNpZiBFTkFC
TEUoUEFOX1NDUk9MTElORykKK3N0YXRpYyBGcmFtZSogZ2V0TWFpbkZyYW1lKEZyYW1lKiBmcmFt
ZSkKK3sKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSA/
IHBhZ2UtPm1haW5GcmFtZSgpIDogMDsKK30KKyNlbmRpZgorCitBdXRvc2Nyb2xsQ29udHJvbGxl
cjo6QXV0b3Njcm9sbENvbnRyb2xsZXIoKQorICAgIDogbV9hdXRvc2Nyb2xsVGltZXIodGhpcywg
JkF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCkKKyAgICAsIG1fYXV0
b3Njcm9sbFJlbmRlcmVyKDApCisgICAgLCBtX2F1dG9zY3JvbGxUeXBlKE5vQXV0b3Njcm9sbCkK
KyNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKKyAgICAsIG1fcGFuU2Nyb2xsQnV0dG9uUHJlc3Nl
ZChmYWxzZSkKKyAgICAsIG1fc3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkK
KyNlbmRpZgoreworfQorCitSZW5kZXJCb3gqIEF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Ny
b2xsUmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxSZW5kZXJlcjsK
K30KKworYm9vbCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBtX2F1dG9zY3JvbGxUeXBlID09IEF1dG9zY3JvbGxGb3JTZWxl
Y3Rpb247Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnN0YXJ0QXV0b3Njcm9sbEZv
clNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gdHJpZ2dlciB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFuU2Nyb2xsIGlmIGl0J3MgYWxy
ZWFkeSBhY3RpdmUKKyAgICBpZiAobV9hdXRvc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFJlbmRlckJveCogc2Nyb2xsYWJsZSA9IFJlbmRlckJveDo6ZmluZEF1
dG9zY3JvbGxhYmxlKHJlbmRlcmVyKTsKKyAgICBpZiAoIXNjcm9sbGFibGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclNlbGVjdGlvbjsKKyAg
ICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IHNjcm9sbGFibGU7CisgICAgc3RhcnRBdXRvc2Nyb2xs
VGltZXIoKTsKK30KKwordm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RvcEF1dG9zY3JvbGxU
aW1lcihib29sIHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBSZW5kZXJCb3gqIHNj
cm9sbGFibGUgPSBtX2F1dG9zY3JvbGxSZW5kZXJlcjsKKyAgICBtX2F1dG9zY3JvbGxUaW1lci5z
dG9wKCk7CisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IE5vQXV0b3Njcm9sbDsKKyAgICBtX2F1dG9z
Y3JvbGxSZW5kZXJlciA9IDA7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgbV9wYW5T
Y3JvbGxCdXR0b25QcmVzc2VkID0gZmFsc2U7CisgICAgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJ
blByb2dyZXNzID0gZmFsc2U7CisjZW5kaWYKKworICAgIGlmICghc2Nyb2xsYWJsZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsKKyAg
ICBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlciA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKTsKKyAg
ICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBldmVudEhhbmRsZXItPm1vdXNlRG93bldh
c0luU3ViZnJhbWUoKSkgeworICAgICAgICBpZiAoRnJhbWUqIHN1YmZyYW1lID0gZXZlbnRIYW5k
bGVyLT5zdWJmcmFtZUZvclRhcmdldE5vZGUoZXZlbnRIYW5kbGVyLT5tb3VzZVByZXNzTm9kZSgp
KSkKKyAgICAgICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3JvbGxU
aW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpCisgICAgICAgIHNjcm9sbGFibGUt
PnN0b3BBdXRvc2Nyb2xsKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgaWYgKHBh
blNjcm9sbEluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJh
bWUtPnZpZXcoKSkgeworICAgICAgICAgICAgdmlldy0+cmVtb3ZlUGFuU2Nyb2xsSWNvbigpOwor
ICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQorICAgIC8vIElmIHdl
J3JlIG5vdCBpbiB0aGUgdG9wIGZyYW1lIHdlIG5vdGlmeSBpdCB0aGF0IHdlIGFyZSBub3QgZG9p
bmcgYSBwYW5TY3JvbGwgYW55IG1vcmUuCisgICAgaWYgKEZyYW1lKiBtYWluRnJhbWUgPSBnZXRN
YWluRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGlmIChmcmFtZSAhPSBtYWluRnJhbWUpCisgICAg
ICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kaWRQYW5TY3JvbGxTdG9wKCk7Cisg
ICAgfQorI2VuZGlmCit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OnVwZGF0ZUF1dG9z
Y3JvbGxSZW5kZXJlcigpCit7CisgICAgaWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fYXV0b3Njcm9sbFJl
bmRlcmVyOworCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgSGl0VGVzdFJlc3VsdCBo
aXRUZXN0ID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChtX3BhblNjcm9sbFN0YXJ0UG9zLCB0cnVlKTsKKworICAgIGlm
IChOb2RlKiBub2RlQXRQb2ludCA9IGhpdFRlc3QuaW5uZXJOb2RlKCkpCisgICAgICAgIHJlbmRl
cmVyID0gbm9kZUF0UG9pbnQtPnJlbmRlcmVyKCk7CisjZW5kaWYKKworICAgIHdoaWxlIChyZW5k
ZXJlciAmJiAhKHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2Fu
QXV0b3Njcm9sbCgpKSkKKyAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7Cisg
ICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSByZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSA/
IHRvUmVuZGVyQm94KHJlbmRlcmVyKSA6IDA7Cit9CisKKyNpZiBFTkFCTEUoUEFOX1NDUk9MTElO
RykKK3ZvaWQgQXV0b3Njcm9sbENvbnRyb2xsZXI6OmRpZFBhblNjcm9sbFN0YXJ0KCkKK3sKKyAg
ICBtX2F1dG9zY3JvbGxUeXBlID0gQXV0b3Njcm9sbEZvclBhbjsKK30KKwordm9pZCBBdXRvc2Ny
b2xsQ29udHJvbGxlcjo6ZGlkUGFuU2Nyb2xsU3RvcCgpCit7CisgICAgbV9hdXRvc2Nyb2xsVHlw
ZSA9IE5vQXV0b3Njcm9sbDsKK30KKwordm9pZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQor
eworICAgIGlmIChtb3VzZUV2ZW50LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbikKKyAgICAgICAg
bV9wYW5TY3JvbGxCdXR0b25QcmVzc2VkID0gZmFsc2U7CisgICAgaWYgKG1fc3ByaW5nTG9hZGVk
UGFuU2Nyb2xsSW5Qcm9ncmVzcykKKyAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworfQor
Citib29sIEF1dG9zY3JvbGxDb250cm9sbGVyOjpwYW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9hdXRvc2Nyb2xsVHlwZSA9PSBBdXRvc2Nyb2xsRm9yUGFuOworfQor
Cit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJCb3gq
IHNjcm9sbGFibGUsIGNvbnN0IEludFBvaW50JiBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKQorewor
ICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFu
U2Nyb2xsIGlmIGl0J3MgYWxyZWFkeSBhY3RpdmUKKyAgICBpZiAobV9hdXRvc2Nyb2xsVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdXRvc2Nyb2xsVHlwZSA9IEF1
dG9zY3JvbGxGb3JQYW47CisgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBzY3JvbGxhYmxlOwor
ICAgIG1fcGFuU2Nyb2xsU3RhcnRQb3MgPSBsYXN0S25vd25Nb3VzZVBvc2l0aW9uOworICAgIG1f
c3ByaW5nTG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOworCisgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IHNjcm9sbGFibGUtPmZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgdmlldy0+
YWRkUGFuU2Nyb2xsSWNvbihsYXN0S25vd25Nb3VzZVBvc2l0aW9uKTsKKyAgICBzY3JvbGxhYmxl
LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+ZGlkUGFuU2Nyb2xsU3RhcnQoKTsKKyAgICBzdGFy
dEF1dG9zY3JvbGxUaW1lcigpOworfQorI2Vsc2UKK2Jvb2wgQXV0b3Njcm9sbENvbnRyb2xsZXI6
OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNl
bmRpZgorCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZChU
aW1lcjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4qKQoreworICAgIGlmICghbV9hdXRvc2Nyb2xsUmVu
ZGVyZXIpIHsKKyAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lID0gbV9hdXRvc2Nyb2xsUmVuZGVyZXItPmZyYW1l
KCk7CisgICAgc3dpdGNoIChtX2F1dG9zY3JvbGxUeXBlKSB7CisgICAgY2FzZSBBdXRvc2Nyb2xs
Rm9yU2VsZWN0aW9uOgorICAgICAgICBpZiAoIWZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQ
cmVzc2VkKCkpIHsKKyAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlci0+YXV0
b3Njcm9sbCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vQXV0b3Njcm9sbDoKKyAgICAg
ICAgYnJlYWs7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgY2FzZSBBdXRvc2Nyb2xs
Rm9yUGFuOgorICAgICAgICAvLyB3ZSB2ZXJpZnkgdGhhdCB0aGUgbWFpbiBmcmFtZSBoYXNuJ3Qg
cmVjZWl2ZWQgdGhlIG9yZGVyIHRvIHN0b3AgdGhlIHBhblNjcm9sbAorICAgICAgICBpZiAoRnJh
bWUqIG1haW5GcmFtZSA9IGdldE1haW5GcmFtZShmcmFtZSkpIHsKKyAgICAgICAgICAgIGlmICgh
bWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpKSB7CisgICAg
ICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgIHVwZGF0ZVBhblNjcm9sbFN0YXRlKHZpZXcs
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bGFzdEtub3duTW91c2VQb3NpdGlvbigpKTsKKyAgICAg
ICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXItPnBhblNjcm9sbChtX3BhblNjcm9sbFN0YXJ0UG9zKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgQXV0b3Njcm9sbENvbnRy
b2xsZXI6OnN0YXJ0QXV0b3Njcm9sbFRpbWVyKCkKK3sKKyAgICBtX2F1dG9zY3JvbGxUaW1lci5z
dGFydFJlcGVhdGluZyhhdXRvc2Nyb2xsSW50ZXJ2YWwpOworfQorCisjaWYgRU5BQkxFKFBBTl9T
Q1JPTExJTkcpCit2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRhdGVQYW5TY3JvbGxTdGF0
ZShGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEludFBvaW50JiBsYXN0S25vd25Nb3VzZVBvc2l0aW9u
KQoreworICAgIC8vIEF0IHRoZSBvcmlnaW5hbCBjbGljayBsb2NhdGlvbiB3ZSBkcmF3IGEgNCBh
cnJvd2VkIGljb24uIE92ZXIgdGhpcyBpY29uIHRoZXJlIHdvbid0IGJlIGFueSBzY3JvbGwKKyAg
ICAvLyBTbyB3ZSBkb24ndCB3YW50IHRvIGNoYW5nZSB0aGUgY3Vyc29yIG92ZXIgdGhpcyBhcmVh
CisgICAgYm9vbCBlYXN0ID0gbV9wYW5TY3JvbGxTdGFydFBvcy54KCkgPCAobGFzdEtub3duTW91
c2VQb3NpdGlvbi54KCkgLSBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7CisgICAgYm9v
bCB3ZXN0ID0gbV9wYW5TY3JvbGxTdGFydFBvcy54KCkgPiAobGFzdEtub3duTW91c2VQb3NpdGlv
bi54KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7CisgICAgYm9vbCBub3J0aCA9
IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpID4gKGxhc3RLbm93bk1vdXNlUG9zaXRpb24ueSgpICsg
U2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOworICAgIGJvb2wgc291dGggPSBtX3BhblNj
cm9sbFN0YXJ0UG9zLnkoKSA8IChsYXN0S25vd25Nb3VzZVBvc2l0aW9uLnkoKSAtIFNjcm9sbFZp
ZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKTsKKworICAgIGlmICgoZWFzdCB8fCB3ZXN0IHx8IG5vcnRo
IHx8IHNvdXRoKSAmJiBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQpCisgICAgICAgIG1fc3ByaW5n
TG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7CisKKyAgICBpZiAobm9ydGgpIHsKKyAg
ICAgICAgaWYgKGVhc3QpCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhFYXN0UGFu
bmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZSBpZiAod2VzdCkKKyAgICAgICAgICAgIHZpZXct
PnNldEN1cnNvcihub3J0aFdlc3RQYW5uaW5nQ3Vyc29yKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhQYW5uaW5nQ3Vyc29yKCkpOworICAgIH0gZWxz
ZSBpZiAoc291dGgpIHsKKyAgICAgICAgaWYgKGVhc3QpCisgICAgICAgICAgICB2aWV3LT5zZXRD
dXJzb3Ioc291dGhFYXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICAgICAgZWxzZSBpZiAod2VzdCkK
KyAgICAgICAgICAgIHZpZXctPnNldEN1cnNvcihzb3V0aFdlc3RQYW5uaW5nQ3Vyc29yKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhQYW5uaW5nQ3Vy
c29yKCkpOworICAgIH0gZWxzZSBpZiAoZWFzdCkKKyAgICAgICAgdmlldy0+c2V0Q3Vyc29yKGVh
c3RQYW5uaW5nQ3Vyc29yKCkpOworICAgIGVsc2UgaWYgKHdlc3QpCisgICAgICAgIHZpZXctPnNl
dEN1cnNvcih3ZXN0UGFubmluZ0N1cnNvcigpKTsKKyAgICBlbHNlCisgICAgICAgIHZpZXctPnNl
dEN1cnNvcihtaWRkbGVQYW5uaW5nQ3Vyc29yKCkpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjcxZjE1ZDQzMzY1NzFhZGEyY2U1NTJmMGQ3N2JhYTNiODg4OTY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5o
CkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDks
IDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEF1dG9zY3JvbGxDb250cm9sbGVyX2gKKyNkZWZpbmUgQXV0b3Njcm9sbENvbnRyb2xsZXJf
aAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50SGFuZGxlcjsKK2NsYXNzIEZyYW1lOworY2xhc3Mg
RnJhbWVWaWV3OworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworY2xhc3MgUmVuZGVyQm94Owor
Y2xhc3MgUmVuZGVyT2JqZWN0OworCitlbnVtIEF1dG9zY3JvbGxUeXBlIHsKKyAgICBOb0F1dG9z
Y3JvbGwsCisgICAgQXV0b3Njcm9sbEZvclNlbGVjdGlvbiwKKyNpZiBFTkFCTEUoUEFOX1NDUk9M
TElORykKKyAgICBBdXRvc2Nyb2xsRm9yUGFuLAorI2VuZGlmCit9OworCisvLyBBdXRzY3JvbGxD
b250cm9sbGVyIGhhbmRlbHMgYXV0b3Njcm9sbCBhbmQgcGFuIHNjcm9sbCBmb3IgRXZlbnRIYW5k
bGVyLgorY2xhc3MgQXV0b3Njcm9sbENvbnRyb2xsZXIgeworcHVibGljOgorICAgIEF1dG9zY3Jv
bGxDb250cm9sbGVyKCk7CisgICAgUmVuZGVyQm94KiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25z
dDsKKyAgICBib29sIGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CisgICAgYm9vbCBwYW5T
Y3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CisgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxGb3JTZWxl
Y3Rpb24oUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wg
cmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOworICAgIHZvaWQgdXBkYXRlQXV0b3Nj
cm9sbFJlbmRlcmVyKCk7CisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgdm9pZCBkaWRQ
YW5TY3JvbGxTdGFydCgpOworICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RvcCgpOworICAgIHZvaWQg
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAg
dm9pZCBzZXRQYW5TY3JvbGxJblByb2dyZXNzKGJvb2wpOworICAgIHZvaWQgc3RhcnRQYW5TY3Jv
bGxpbmcoUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmKTsKKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIHZvaWQgYXV0b3Njcm9sbFRpbWVyRmlyZWQoVGltZXI8QXV0b3Njcm9sbENvbnRyb2xsZXI+
Kik7CisgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1lcigpOworI2lmIEVOQUJMRShQQU5fU0NS
T0xMSU5HKQorICAgIHZvaWQgdXBkYXRlUGFuU2Nyb2xsU3RhdGUoRnJhbWVWaWV3KiwgY29uc3Qg
SW50UG9pbnQmKTsKKyNlbmRpZgorCisgICAgVGltZXI8QXV0b3Njcm9sbENvbnRyb2xsZXI+IG1f
YXV0b3Njcm9sbFRpbWVyOworICAgIFJlbmRlckJveCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7Cisg
ICAgQXV0b3Njcm9sbFR5cGUgbV9hdXRvc2Nyb2xsVHlwZTsKKyNpZiBFTkFCTEUoUEFOX1NDUk9M
TElORykKKyAgICBJbnRQb2ludCBtX3BhblNjcm9sbFN0YXJ0UG9zOworICAgIGJvb2wgbV9wYW5T
Y3JvbGxCdXR0b25QcmVzc2VkOworICAgIGJvb2wgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblBy
b2dyZXNzOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBBdXRvc2Nyb2xsQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggMmY0MjlhNzU4OGQ0ZDE1YWI5MzIwMDY0ZTg4ZjM0YjQ2YTJmNDY3Ni4uNDFkZmM0MGQz
M2ViNzM5MDY0NTE3NWYxMDcwZWY3ZTBiYWJmN2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgog
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkF1dG9zY3JvbGxDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKQEAgLTEzNyw5ICsxMzgsNiBAQCBjb25zdCBpbnQgQ29t
cG9zaXRpb25FdmVudEtleUNvZGUgPSAyMjk7CiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAj
ZW5kaWYKIAotLy8gV2hlbiB0aGUgYXV0b3Njcm9sbCBvciB0aGUgcGFuU2Nyb2xsIGlzIHRyaWdn
ZXJlZCB3aGVuIGRvIHRoZSBzY3JvbGwgZXZlcnkgMC4wNXMgdG8gbWFrZSBpdCBzbW9vdGgKLWNv
bnN0IGRvdWJsZSBhdXRvc2Nyb2xsSW50ZXJ2YWwgPSAwLjA1OwotCiAvLyBUaGUgYW1vdW50IG9m
IHRpbWUgdG8gd2FpdCBiZWZvcmUgc2VuZGluZyBhIGZha2UgbW91c2UgZXZlbnQsIHRyaWdnZXJl
ZAogLy8gZHVyaW5nIGEgc2Nyb2xsLiBUaGUgc2hvcnQgaW50ZXJ2YWwgaXMgdXNlZCBpZiB0aGUg
Y29udGVudCByZXNwb25kcyB0byB0aGUgbW91c2UgZXZlbnRzIHF1aWNrbHkgZW5vdWdoLAogLy8g
b3RoZXJ3aXNlIHRoZSBsb25nIGludGVydmFsIGlzIHVzZWQuCkBAIC0zMzEsMTMgKzMyOSw4IEBA
IEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwg
bV9tb3VzZURvd25XYXNTaW5nbGVDbGlja0luU2VsZWN0aW9uKGZhbHNlKQogICAgICwgbV9zZWxl
Y3Rpb25Jbml0aWF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRTZWxlY3Rpb24pCi0gICAgLCBtX3Bh
blNjcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCi0gICAgLCBtX3BhblNjcm9sbEJ1dHRvblByZXNzZWQo
ZmFsc2UpCi0gICAgLCBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCiAg
ICAgLCBtX2hvdmVyVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKQot
ICAgICwgbV9hdXRvc2Nyb2xsVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFRp
bWVyRmlyZWQpCi0gICAgLCBtX2F1dG9zY3JvbGxSZW5kZXJlcigwKQotICAgICwgbV9hdXRvc2Ny
b2xsSW5Qcm9ncmVzcyhmYWxzZSkKKyAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoYWRvcHRQ
dHIobmV3IEF1dG9zY3JvbGxDb250cm9sbGVyKSkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRB
dXRvc2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQog
ICAgICwgbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpmYWtl
TW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKQpAQCAtNzA0LDMwICs2OTcsNiBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZQogICAgIHJldHVybiBzd2FsbG93RXZlbnQ7CiB9CiAKLS8vIFRoZXJlIGFy
ZSB0d28ga2luZHMgb2YgcmVuZGVyZXIgdGhhdCBjYW4gYXV0b3Njcm9sbC4KLXN0YXRpYyBib29s
IGNhbkF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICBpZiAoIXJlbmRl
cmVyLT5pc0JveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Ig
YSBib3ggdGhhdCBjYW4gYmUgc2Nyb2xsZWQgaW4gaXRzIG93biByaWdodC4KLSAgICBpZiAodG9S
ZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBDaGVjayBmb3IgYSBib3ggdGhhdCByZXBy
ZXNlbnRzIHRoZSB0b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KLSAgICAvLyBUaGlzIGNhbiBiZSBz
Y3JvbGxlZCBieSBjYWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3LgotICAgIC8vIFRo
aXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25z
Ci0gICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRhaW5lcnMsIHN1
Y2ggYXMgTWFjIE9TIFggTWFpbC4KLSAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBpcyBpbiBSZW5k
ZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4KLSAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAh
PSByZW5kZXJlci0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEZyYW1l
KiBmcmFtZSA9IHJlbmRlcmVyLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICByZXR1cm4g
cGFnZSAmJiBwYWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKLX0KLQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7CkBAIC03NTQsMjAgKzcy
Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAKICAgICBtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYm
ICFtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsgICAgICAgICAgICAKLSAgICAgICAgLy8gRmluZCBh
IHJlbmRlcmVyIHRoYXQgY2FuIGF1dG9zY3JvbGwuCi0gICAgICAgIHdoaWxlIChyZW5kZXJlciAm
JiAhY2FuQXV0b3Njcm9sbChyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXIt
PnBhcmVudCgpICYmIHJlbmRlcmVyLT5ub2RlKCkgPT0gcmVuZGVyZXItPmRvY3VtZW50KCkgJiYg
cmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyID0gcmVuZGVyZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXIt
PnBhcmVudCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAocmVuZGVyZXIpIHsK
LSAgICAgICAgICAgIG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICAgICAg
aGFuZGxlQXV0b3Njcm9sbChyZW5kZXJlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCisgICAgaWYg
KG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsICYmICFwYW5TY3JvbGxJblByb2dyZXNzKCkp
IHsKKyAgICAgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+c3RhcnRBdXRvc2Nyb2xsRm9yU2Vs
ZWN0aW9uKHJlbmRlcmVyKTsKICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwg
PSBmYWxzZTsKICAgICB9CiAKQEAgLTkzNSw3ICs4OTIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
IAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChtX2F1dG9zY3JvbGxJ
blByb2dyZXNzKQorICAgIGlmIChhdXRvc2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICBzdG9w
QXV0b3Njcm9sbFRpbWVyKCk7CiAKICAgICBpZiAoaGFuZGxlTW91c2VVcChldmVudCkpCkBAIC05
OTAsMTMyICs5NDcsNDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2
ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICByZXR1cm4gaGFu
ZGxlZDsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKLXsKLSAgICAvLyBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgdGhlIGF1
dG9zY3JvbGwgb3IgdGhlIHBhblNjcm9sbCBpZiBpdCdzIGFscmVhZHkgYWN0aXZlCi0gICAgaWYg
KG1fYXV0b3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsgICAgIAotCi0g
ICAgc2V0QXV0b3Njcm9sbFJlbmRlcmVyKHJlbmRlcmVyKTsKLQogI2lmIEVOQUJMRShQQU5fU0NS
T0xMSU5HKQotICAgIGlmIChtX3BhblNjcm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgbV9wYW5T
Y3JvbGxTdGFydFBvcyA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKTsKLSAgICAgICAgaWYgKEZy
YW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHZpZXctPmFkZFBh
blNjcm9sbEljb24obV9wYW5TY3JvbGxTdGFydFBvcyk7Ci0gICAgICAgIC8vIElmIHdlJ3JlIG5v
dCBpbiB0aGUgdG9wIGZyYW1lIHdlIG5vdGlmeSBpdCB0aGF0IHdlIGRvaW5nIGEgcGFuU2Nyb2xs
LgotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAg
ICAgRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwotICAgICAgICAgICAgaWYg
KG1fZnJhbWUgIT0gbWFpbkZyYW1lKQotICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9
Ci0jZW5kaWYKLQotICAgIHN0YXJ0QXV0b3Njcm9sbFRpbWVyKCk7Ci19CiAKLXZvaWQgRXZlbnRI
YW5kbGVyOjphdXRvc2Nyb2xsVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+KikKK3ZvaWQg
RXZlbnRIYW5kbGVyOjpkaWRQYW5TY3JvbGxTdGFydCgpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ID0gYXV0b3Njcm9sbFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyIHx8ICFyLT5pc0JveCgpKSB7Ci0g
ICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIGlmICghbV9tb3VzZVBy
ZXNzZWQpIHsKLSAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0b1JlbmRlckJveChyKS0+YXV0b3Njcm9sbCgp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHdlIHZlcmlmeSB0aGF0IHRoZSBtYWluIGZyYW1l
IGhhc24ndCByZWNlaXZlZCB0aGUgb3JkZXIgdG8gc3RvcCB0aGUgcGFuU2Nyb2xsCi0gICAgICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXBh
Z2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bV9wYW5TY3JvbGxJblByb2dyZXNzKSB7
Ci0gICAgICAgICAgICAgICAgc3RvcEF1dG9zY3JvbGxUaW1lcigpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmIEVOQUJMRShQQU5fU0NST0xM
SU5HKQotICAgICAgICB1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpOwotICAgICAgICB0b1JlbmRlckJv
eChyKS0+cGFuU2Nyb2xsKG1fcGFuU2Nyb2xsU3RhcnRQb3MpOwotI2VuZGlmCi0gICAgfQorICAg
IG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPmRpZFBhblNjcm9sbFN0YXJ0KCk7CiB9CiAKLSNpZiBF
TkFCTEUoUEFOX1NDUk9MTElORykKLQotdm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xs
aW5nKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkUGFuU2Ny
b2xsU3RvcCgpCiB7Ci0gICAgbV9wYW5TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLSAgICBtX3Bh
blNjcm9sbEJ1dHRvblByZXNzZWQgPSB0cnVlOwotICAgIGhhbmRsZUF1dG9zY3JvbGwocmVuZGVy
ZXIpOwotICAgIGludmFsaWRhdGVDbGljaygpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIt
PmRpZFBhblNjcm9sbFN0b3AoKTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVBhblNj
cm9sbFN0YXRlKCkKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogewotICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXco
KTsKLSAgICBpZiAoIXZpZXcpCisgICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gQXQgdGhlIG9yaWdpbmFsIGNsaWNrIGxvY2F0aW9uIHdlIGRyYXcg
YSA0IGFycm93ZWQgaWNvbi4gT3ZlciB0aGlzIGljb24gdGhlcmUgd29uJ3QgYmUgYW55IHNjcm9s
bAotICAgIC8vIFNvIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSBjdXJzb3Igb3ZlciB0aGlz
IGFyZWEKLSAgICBib29sIGVhc3QgPSBtX3BhblNjcm9sbFN0YXJ0UG9zLngoKSA8IChtX2xhc3RL
bm93bk1vdXNlUG9zaXRpb24ueCgpIC0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpOwot
ICAgIGJvb2wgd2VzdCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueCgpID4gKG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbi54KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9v
bCBub3J0aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpID4gKG1fbGFzdEtub3duTW91c2VQb3Np
dGlvbi55KCkgKyBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgYm9vbCBzb3V0
aCA9IG1fcGFuU2Nyb2xsU3RhcnRQb3MueSgpIDwgKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi55
KCkgLSBTY3JvbGxWaWV3Ojpub1BhblNjcm9sbFJhZGl1cyk7Ci0gICAgICAgICAKLSAgICBpZiAo
KGVhc3QgfHwgd2VzdCB8fCBub3J0aCB8fCBzb3V0aCkgJiYgbV9wYW5TY3JvbGxCdXR0b25QcmVz
c2VkKQotICAgICAgICBtX3NwcmluZ0xvYWRlZFBhblNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwot
Ci0gICAgaWYgKG5vcnRoKSB7Ci0gICAgICAgIGlmIChlYXN0KQotICAgICAgICAgICAgdmlldy0+
c2V0Q3Vyc29yKG5vcnRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHdl
c3QpCi0gICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Iobm9ydGhXZXN0UGFubmluZ0N1cnNvcigp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG5vcnRoUGFubmlu
Z0N1cnNvcigpKTsKLSAgICB9IGVsc2UgaWYgKHNvdXRoKSB7Ci0gICAgICAgIGlmIChlYXN0KQot
ICAgICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHNvdXRoRWFzdFBhbm5pbmdDdXJzb3IoKSk7Ci0g
ICAgICAgIGVsc2UgaWYgKHdlc3QpCi0gICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3Ioc291dGhX
ZXN0UGFubmluZ0N1cnNvcigpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlldy0+c2V0
Q3Vyc29yKHNvdXRoUGFubmluZ0N1cnNvcigpKTsKLSAgICB9IGVsc2UgaWYgKGVhc3QpCi0gICAg
ICAgIHZpZXctPnNldEN1cnNvcihlYXN0UGFubmluZ0N1cnNvcigpKTsKLSAgICBlbHNlIGlmICh3
ZXN0KQotICAgICAgICB2aWV3LT5zZXRDdXJzb3Iod2VzdFBhbm5pbmdDdXJzb3IoKSk7Ci0gICAg
ZWxzZQotICAgICAgICB2aWV3LT5zZXRDdXJzb3IobWlkZGxlUGFubmluZ0N1cnNvcigpKTsKKyAg
ICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdGFydFBhblNjcm9sbGluZyh0b1JlbmRlckJveChy
ZW5kZXJlciksIGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSk7CisgICAgaW52YWxpZGF0ZUNsaWNr
KCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoUEFOX1NDUk9MTElORykKIAogUmVuZGVyT2JqZWN0
KiBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYXV0b3Njcm9sbFJlbmRlcmVyOworICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVy
LT5hdXRvc2Nyb2xsUmVuZGVyZXIoKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUF1
dG9zY3JvbGxSZW5kZXJlcigpCiB7Ci0gICAgaWYgKCFtX2F1dG9zY3JvbGxSZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0ID0gaGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9wYW5TY3JvbGxTdGFydFBvcywgdHJ1ZSk7Ci0KLSAgICBpZiAoTm9kZSogbm9k
ZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9kZSgpKQotICAgICAgICBtX2F1dG9zY3JvbGxSZW5k
ZXJlciA9IG5vZGVBdFBvaW50LT5yZW5kZXJlcigpOworICAgIG1fYXV0b3Njcm9sbENvbnRyb2xs
ZXItPnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOworfQogCi0gICAgd2hpbGUgKG1fYXV0b3Nj
cm9sbFJlbmRlcmVyICYmICFjYW5BdXRvc2Nyb2xsKG1fYXV0b3Njcm9sbFJlbmRlcmVyKSkKLSAg
ICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSBtX2F1dG9zY3JvbGxSZW5kZXJlci0+cGFyZW50
KCk7Citib29sIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5hdXRvc2Nyb2xsSW5Qcm9ncmVzcygp
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6c2V0QXV0b3Njcm9sbFJlbmRlcmVyKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCitib29sIEV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygp
IGNvbnN0CiB7Ci0gICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICByZXR1
cm4gbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpOwogfQogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTExOTUsNTAgKzEwNjYsOSBAQCBIaXRUZXN0UmVz
dWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBib29sCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotCi12b2lkIEV2ZW50SGFuZGxl
cjo6c3RhcnRBdXRvc2Nyb2xsVGltZXIoKQotewotICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0YXJ0
UmVwZWF0aW5nKGF1dG9zY3JvbGxJbnRlcnZhbCk7Ci19Ci0KIHZvaWQgRXZlbnRIYW5kbGVyOjpz
dG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKQogewotICAg
IGlmIChtX2F1dG9zY3JvbGxJblByb2dyZXNzKSB7Ci0gICAgICAgIGlmIChtX21vdXNlRG93bldh
c0luU3ViZnJhbWUpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFt
ZUZvclRhcmdldE5vZGUobV9tb3VzZVByZXNzTm9kZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAg
c3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNC
ZWluZ0Rlc3Ryb3llZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoYXV0b3Njcm9sbFJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKCFyZW5kZXJlcklz
QmVpbmdEZXN0cm95ZWQgJiYgKG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MgfHwgbV9wYW5TY3JvbGxJ
blByb2dyZXNzKSkKLSAgICAgICAgICAgIHRvUmVuZGVyQm94KGF1dG9zY3JvbGxSZW5kZXJlcigp
KS0+c3RvcEF1dG9zY3JvbGwoKTsKLSNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAgICAgICAg
aWYgKG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgaWYgKEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewotICAgICAgICAgICAgICAgIHZpZXctPnJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICAgICAgICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1
cnNvcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgc2V0
QXV0b3Njcm9sbFJlbmRlcmVyKDApOwotICAgIH0KLQotICAgIG1fYXV0b3Njcm9sbFRpbWVyLnN0
b3AoKTsKLQotICAgIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgIG1fc3ByaW5n
TG9hZGVkUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotCi0gICAgLy8gSWYgd2UncmUgbm90
IGluIHRoZSB0b3AgZnJhbWUgd2Ugbm90aWZ5IGl0IHRoYXQgd2UgYXJlIG5vdCBkb2luZyBhIHBh
blNjcm9sbCBhbnkgbW9yZS4KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkg
ewotICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgICAg
IGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkKLSAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgIH0KLQotICAgIG1f
YXV0b3Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVy
LT5zdG9wQXV0b3Njcm9sbFRpbWVyKHJlbmRlcmVySXNCZWluZ0Rlc3Ryb3llZCk7CiB9CiAKIE5v
ZGUqIEV2ZW50SGFuZGxlcjo6bW91c2VQcmVzc05vZGUoKSBjb25zdApAQCAtMTQyMSw4ICsxMjUx
LDEwIEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOb0N1cnNvckNoYW5nZTsK
LSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5tX3BhblNjcm9sbElu
UHJvZ3Jlc3MpCisjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgaWYgKHBhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpKQogICAgICAgICBy
ZXR1cm4gTm9DdXJzb3JDaGFuZ2U7CisjZW5kaWYKIAogICAgIE5vZGUqIG5vZGUgPSBldmVudC50
YXJnZXROb2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5y
ZW5kZXJlcigpIDogMDsKQEAgLTE2NTIsMTAgKzE0ODQsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVu
dCkKIAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIC8vIFdlIHN0b3JlIHdoZXRoZXIg
cGFuIHNjcm9sbGluZyBpcyBpbiBwcm9ncmVzcyBiZWZvcmUgY2FsbGluZyBzdG9wQXV0b3Njcm9s
bFRpbWVyKCkKLSAgICAvLyBiZWNhdXNlIGl0IHdpbGwgc2V0IG1fcGFuU2Nyb2xsSW5Qcm9ncmVz
cyB0byBmYWxzZSBvbiByZXR1cm4uCi0gICAgYm9vbCBpc1BhblNjcm9sbEluUHJvZ3Jlc3MgPSBt
X2ZyYW1lLT5wYWdlKCkgJiYgbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzczsKLSAgICBpZiAoaXNQYW5TY3JvbGxJblByb2dy
ZXNzIHx8IG1fYXV0b3Njcm9sbEluUHJvZ3Jlc3MpCi0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGlt
ZXIoKTsKKyAgICAvLyBiZWNhdXNlIGl0IHdpbGwgc2V0IG1fYXV0b3Njcm9sbFR5cGUgdG8gTm9B
dXRvc2Nyb2xsIG9uIHJldHVybi4KKyAgICBib29sIGlzUGFuU2Nyb2xsSW5Qcm9ncmVzcyA9IG1f
ZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS0+cGFuU2Nyb2xsSW5Qcm9ncmVzcygpOworICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsK
ICAgICBpZiAoaXNQYW5TY3JvbGxJblByb2dyZXNzKSB7CiAgICAgICAgIC8vIFdlIGludmFsaWRh
dGUgdGhlIGNsaWNrIHdoZW4gZXhpdGluZyBwYW4gc2Nyb2xsaW5nIHNvIHRoYXQgd2UgZG9uJ3Qg
aW5hZHZlcnRlbnRseSBuYXZpZ2F0ZQogICAgICAgICAvLyBhd2F5IGZyb20gdGhlIGN1cnJlbnQg
cGFnZSAoZS5nLiB0aGUgY2xpY2sgd2FzIG9uIGEgaHlwZXJsaW5rKS4gU2VlIDxyZGFyOi8vcHJv
YmxlbS82MDk1MDIzPi4KQEAgLTE5NTAsMTAgKzE3ODEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2
ZW50KQogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVs
eVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKLSAg
ICBpZiAobW91c2VFdmVudC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24pCi0gICAgICAgIG1fcGFu
U2Nyb2xsQnV0dG9uUHJlc3NlZCA9IGZhbHNlOwotICAgIGlmIChtX3NwcmluZ0xvYWRlZFBhblNj
cm9sbEluUHJvZ3Jlc3MpCi0gICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICBtX2F1
dG9zY3JvbGxDb250cm9sbGVyLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsK
ICNlbmRpZgogCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKQEAgLTMxNDMsNyArMjk3MSw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmIGluaXRpYWxLZXlFdmVudCkKIAogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChwYWdlLT5tYWlu
RnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPm1fcGFuU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAg
ICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5wYW5TY3JvbGxJblByb2dy
ZXNzKCkpIHsKICAgICAgICAgICAgIC8vIElmIGEga2V5IGlzIHByZXNzZWQgd2hpbGUgdGhlIHBh
blNjcm9sbCBpcyBpbiBwcm9ncmVzcyB0aGVuIHdlIHdhbnQgdG8gc3RvcAogICAgICAgICAgICAg
aWYgKGluaXRpYWxLZXlFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6S2V5RG93biB8fCBp
bml0aWFsS2V5RXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIAogICAg
ICAgICAgICAgICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCmluZGV4IDI3ZTA4MTcwYjlhMDcwMTY1MGJjMzg4ZjEzMTVkMTBiMzNkNjY1ZjEuLjE2
N2QxZGYyNjczM2YyZDQ3MTQxMmY3YjZlYmRhNjFkZjBjZjZkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBOU1ZpZXc7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQXV0b3Njcm9sbENvbnRyb2xsZXI7CiBjbGFzcyBDbGlwYm9h
cmQ7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwpAQCAtMTA5LDEyICsxMTAsMTgg
QEAgcHVibGljOgogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRNb3VzZVByZXNzTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKIAorI2lmIEVOQUJMRShQQU5fU0NS
T0xMSU5HKQorICAgIHZvaWQgZGlkUGFuU2Nyb2xsU3RhcnQoKTsKKyAgICB2b2lkIGRpZFBhblNj
cm9sbFN0b3AoKTsKICAgICB2b2lkIHN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlck9iamVjdCopOwor
I2VuZGlmCiAKICAgICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9vbCByZW5kZXJlcklzQmVp
bmdEZXN0cm95ZWQgPSBmYWxzZSk7CiAgICAgUmVuZGVyT2JqZWN0KiBhdXRvc2Nyb2xsUmVuZGVy
ZXIoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwotICAgIGJv
b2wgYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2F1dG9zY3JvbGxJblBy
b2dyZXNzOyB9CisgICAgYm9vbCBhdXRvc2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OworICAgIGJv
b2wgbW91c2VEb3duV2FzSW5TdWJmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VEb3duV2Fz
SW5TdWJmcmFtZTsgfQorICAgIGJvb2wgcGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCiAg
ICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAgICB2b2lkIGRpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1YWQmKTsKQEAgLTI2
OSwxNiArMjc2LDggQEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIAogICAgIE9wdGlvbmFsQ3Vy
c29yIHNlbGVjdEN1cnNvcihjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgU2Ny
b2xsYmFyKik7Ci0jaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgdm9pZCB1cGRhdGVQYW5T
Y3JvbGxTdGF0ZSgpOwotI2VuZGlmCi0KICAgICB2b2lkIGhvdmVyVGltZXJGaXJlZChUaW1lcjxF
dmVudEhhbmRsZXI+Kik7CiAKLSAgICB2b2lkIGhhbmRsZUF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0
Kik7Ci0gICAgdm9pZCBzdGFydEF1dG9zY3JvbGxUaW1lcigpOwotICAgIHZvaWQgc2V0QXV0b3Nj
cm9sbFJlbmRlcmVyKFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgYXV0b3Njcm9sbFRpbWVyRmly
ZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopOwogICAgIGJvb2wgbG9naWNhbFNjcm9sbE92ZXJmbG93
KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGlu
Z05vZGUgPSAwKTsKICAgICAKICAgICBib29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hv
cml6b250YWwoY29uc3QgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
IGNvbnN0OwpAQCAtNDAxLDE3ICs0MDAsMTEgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRQb2ludCBt
X2RyYWdTdGFydFBvczsKICNlbmRpZgogCi0gICAgSW50UG9pbnQgbV9wYW5TY3JvbGxTdGFydFBv
czsKLSAgICBib29sIG1fcGFuU2Nyb2xsSW5Qcm9ncmVzczsKLQogICAgIGJvb2wgbV9wYW5TY3Jv
bGxCdXR0b25QcmVzc2VkOwotICAgIGJvb2wgbV9zcHJpbmdMb2FkZWRQYW5TY3JvbGxJblByb2dy
ZXNzOwogCiAgICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2hvdmVyVGltZXI7Ci0gICAgCi0gICAg
VGltZXI8RXZlbnRIYW5kbGVyPiBtX2F1dG9zY3JvbGxUaW1lcjsKLSAgICBSZW5kZXJPYmplY3Qq
IG1fYXV0b3Njcm9sbFJlbmRlcmVyOwotICAgIGJvb2wgbV9hdXRvc2Nyb2xsSW5Qcm9ncmVzczsK
KworICAgIE93blB0cjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4gbV9hdXRvc2Nyb2xsQ29udHJvbGxl
cjsKICAgICBib29sIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJvb2wgbV9t
b3VzZURvd25XYXNJblN1YmZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDU1OTg4NDI2OTRhMzczZjBmZmFkODAzM2IzMTdiNDExZDU1MTA4ZjguLmEzOWVj
OWYxMmRhNWI1N2MzY2YxODE5MGMwNjgzNTAzZjEyMTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpA
QCAtNjQyLDYgKzY0MywzOSBAQCB2b2lkIFJlbmRlckJveDo6YXV0b3Njcm9sbCgpCiAgICAgICAg
IGxheWVyKCktPmF1dG9zY3JvbGwoKTsKIH0KIAorLy8gVGhlcmUgYXJlIHR3byBraW5kcyBvZiBy
ZW5kZXJlciB0aGF0IGNhbiBhdXRvc2Nyb2xsLgorYm9vbCBSZW5kZXJCb3g6OmNhbkF1dG9zY3Jv
bGwoKSBjb25zdAoreworICAgIC8vIENoZWNrIGZvciBhIGJveCB0aGF0IGNhbiBiZSBzY3JvbGxl
ZCBpbiBpdHMgb3duIHJpZ2h0LgorICAgIGlmIChjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBmb3IgYSBib3gg
dGhhdCByZXByZXNlbnRzIHRoZSB0b3AgbGV2ZWwgb2YgYSB3ZWIgcGFnZS4KKyAgICAvLyBUaGlz
IGNhbiBiZSBzY3JvbGxlZCBieSBjYWxsaW5nIENocm9tZTo6c2Nyb2xsUmVjdEludG9WaWV3Lgor
ICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBw
bGljYXRpb25zCisgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Nyb2xsaW5nIGNvbnRh
aW5lcnMsIHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KKyAgICAvLyBUaGUgY29kZSBmb3IgdGhpcyBp
cyBpbiBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4KKyAgICBpZiAobm9kZSgpICE9
IGRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5t
YWluRnJhbWUoKSA9PSBmcmFtZTsKK30KKworUmVuZGVyQm94KiBSZW5kZXJCb3g6OmZpbmRBdXRv
c2Nyb2xsYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHdoaWxlIChyZW5kZXJl
ciAmJiAhKHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQXV0
b3Njcm9sbCgpKSkgeworICAgICAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQoKSAmJiByZW5kZXJl
ci0+bm9kZSgpID09IHJlbmRlcmVyLT5kb2N1bWVudCgpICYmIHJlbmRlcmVyLT5kb2N1bWVudCgp
LT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmRvY3Vt
ZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAw
OworfQorCiB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3VyY2Up
CiB7CiAgICAgaWYgKGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5k
ZXggNWI4YTZlNGI4MWYxZDExNTQyN2U1YmMzMDU0ODk3MjY0OWFjMjc3OS4uM2IzYTAyMTdiYTc1
OGUxMTVhODhkMWE5ZGU1NGVlY2VkZmJmNGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtNDM5LDYgKzQzOSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkJlU2Nyb2xs
ZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVBy
b2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9zY3Jv
bGwoKTsKKyAgICBib29sIGNhbkF1dG9zY3JvbGwoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVuZGVy
Qm94KiBmaW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3BBdXRvc2Nyb2xsKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJ
bnRQb2ludCYpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>