<?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>44330</bug_id>
          
          <creation_ts>2010-08-20 03:50:25 -0700</creation_ts>
          <short_desc>[Qt] WebKit2 needs to support touchevents</short_desc>
          <delta_ts>2010-08-24 04:29:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Juha Savolainen">juha.savolainen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kim.1.gronholm</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>267190</commentid>
    <comment_count>0</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-08-20 03:50:25 -0700</bug_when>
    <thetext>[Qt] WebKit2 needs to support QTouchEvents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267193</commentid>
    <comment_count>1</comment_count>
      <attachid>64942</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-08-20 03:57:39 -0700</bug_when>
    <thetext>Created attachment 64942
This patch adds QTouchvents-support for webkit2-qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267195</commentid>
    <comment_count>2</comment_count>
      <attachid>64942</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-20 04:14:40 -0700</bug_when>
    <thetext>Comment on attachment 64942
This patch adds QTouchvents-support for webkit2-qt

WebKit2/ChangeLog:6
 +          https://bugs.webkit.org/show_bug.cgi?id=44330
The ChangeLog could be a bit more descriptive about what you did, like why and how.

WebKit2/Shared/WebEvent.h:57
 +         , TouchMove
The , should be last. The first one is acceptable only due to it not compiling without and I might even add that on a separate line

WebKit2/Shared/WebEvent.h:409
 +      Type type() const { return (Type)m_type; }
Why not use a C++ cast instead?

WebKit2/Shared/WebEvent.h:418
 +      static bool decode(CoreIPC::ArgumentDecoder* decoder, WebTouchEvent&amp; t)
I think &quot;ev&quot; or &quot;event&quot; makes more sense than t

WebKit2/Shared/WebEvent.h:426
 +      return true;
indentation issue here

WebKit2/Shared/WebEvent.h:442
 +  
additional newline, remove

WebKit2/Shared/WebEventConversion.cpp:157
 +      WebKit2PlatformTouchPoint(const WebTouchPoint&amp; webTouchPoint)
The contents of this method has wrong indentation

WebKit2/Shared/WebEventConversion.cpp:157
 +      WebKit2PlatformTouchPoint(const WebTouchPoint&amp; webTouchPoint)
Maybe this class should be called WebPlatformTouchPoint for consistency reasons?

WebKit2/Shared/WebEventConversion.cpp:183
 +  
extra newline, remove

WebKit2/Shared/WebEventConversion.cpp:185
 +  
here as well

WebKit2/Shared/WebEventConversion.cpp:192
 +  
here as well plus the whole method has wrong indentation

WebKit2/Shared/qt/WebEventFactoryQt.cpp:187
 +          case Qt::TouchPointReleased: state = WebTouchPoint::TouchReleased; break;
wrong coding style!

WebKit2/UIProcess/API/qt/qgraphicswkview.cpp:153
 +                  || event-&gt;type() == QEvent::TouchEnd
wrong coding style

WebKit2/UIProcess/API/qt/qgraphicswkview.cpp:152
 +      if ( event-&gt;type() == QEvent::TouchBegin
wrong coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267219</commentid>
    <comment_count>3</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-08-20 05:54:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 64942 [details])

&gt; WebKit2/Shared/WebEvent.h:409
&gt;  +      Type type() const { return (Type)m_type; }
&gt; Why not use a C++ cast instead?

We remove this because we can use function from base-class.

&gt; WebKit2/Shared/WebEvent.h:418
&gt;  +      static bool decode(CoreIPC::ArgumentDecoder* decoder, WebTouchEvent&amp; t)
&gt; I think &quot;ev&quot; or &quot;event&quot; makes more sense than t

This function is inherited from WebEvent and also all other WebEventXXX-classes has named parameters in the same way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267221</commentid>
    <comment_count>4</comment_count>
      <attachid>64948</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-08-20 05:57:27 -0700</bug_when>
    <thetext>Created attachment 64948
Fixed version(review comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267224</commentid>
    <comment_count>5</comment_count>
      <attachid>64948</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-20 06:04:37 -0700</bug_when>
    <thetext>Comment on attachment 64948
Fixed version(review comments)

WebKit2/UIProcess/API/qt/qgraphicswkview.cpp:153
 +             || event-&gt;type() == QEvent::TouchEnd
This indentation here wasnt fixed

WebKit2/UIProcess/API/qt/qgraphicswkview.h:69
 +      virtual void touchEvent(QTouchEvent* ev);
remove ev here

R=me, with the above changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267548</commentid>
    <comment_count>6</comment_count>
      <attachid>65023</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-08-21 01:57:53 -0700</bug_when>
    <thetext>Created attachment 65023
Fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267721</commentid>
    <comment_count>7</comment_count>
      <attachid>65023</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-22 15:43:06 -0700</bug_when>
    <thetext>Comment on attachment 65023
Fixed patch

Clearing flags on attachment: 65023

Committed r65788: &lt;http://trac.webkit.org/changeset/65788&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64942</attachid>
            <date>2010-08-20 03:57:39 -0700</date>
            <delta_ts>2010-08-20 04:14:39 -0700</delta_ts>
            <desc>This patch adds QTouchvents-support for webkit2-qt</desc>
            <filename>webkit2touch.patch</filename>
            <type>text/plain</type>
            <size>21408</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NThjNjgwYy4uY2RhNWM5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0yMCAgSnVoYSBTYXZvbGFp
bmVuICA8anVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIFFUb3VjaEV2ZW50cyBzdXBwb3J0IGZv
ciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NDMzMAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBRVG91Y2hFdmVu
dHMgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9p
bnQpOgorCiAyMDEwLTA4LTE5ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtVG91Y2hQb2ludC5oCmluZGV4IDRhNjY3YTAuLjNhMjU3MzYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoUG9pbnQuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFU
Rk9STShRVCkKICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNo
UG9pbnQmKTsKKyAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoKSB7fTsKICNlbGlmIFBMQVRGT1JNKEFO
RFJPSUQpCiAgICAgUGxhdGZvcm1Ub3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb3Ms
IFN0YXRlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA4NDg4MDgwLi4xZjAxMzk4IDEwMDY0NAotLS0gYS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEwLTA4
LTIwICBKdWhhIFNhdm9sYWluZW4gIDxqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBBZGQgUVRvdWNo
RXZlbnRzIHN1cHBvcnQgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0MzMwCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcm86
CisgICAgICAgICogU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaDoK
KyAgICAgICAgKFdlYlBhZ2VNZXNzYWdlOjopOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hQb2ludDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OmlkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVG91Y2hQb2ludDo6c3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50
OjpzY3JlZW5Qb3NYKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6c2NyZWVuUG9z
WSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OnBvc1gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaFBvaW50Ojpwb3NZKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2lu
dDo6c2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OnRvdWNoUG9p
bnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVG91Y2hFdmVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6aXNUb3VjaEV2ZW50VHlwZSk6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29u
dmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OldlYktpdDJQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxh
dGZvcm1Ub3VjaEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6cGxhdGZvcm0pOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaDoK
KyAgICAgICAgKiBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojp3ZWJFdmVudFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkV2ZW50
RmFjdG9yeVF0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcu
Y3BwOgorICAgICAgICAoUUdyYXBoaWNzV0tWaWV3OjpldmVudCk6CisgICAgICAgIChRR3JhcGhp
Y3NXS1ZpZXc6OnRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBo
aWNzd2t2aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAg
ICAgICAgKFFXS1BhZ2VQcml2YXRlOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoRXZlbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxMC0wOC0xOCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCmRpZmYg
LS1naXQgYS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnBybyBiL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMucHJvCmluZGV4IDdiMzlhY2IuLjhlMzZhZTUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMucHJvCisrKyBiL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCkBAIC04MCw2ICs4
MCw4IEBAIFdFQkNPUkVfSEVBREVSU19GT1JfV0VCS0lUMiArPSBcCiAgICAgcGxhdGZvcm0vUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5o
IFwKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaCBcCisgICAgcGxhdGZvcm0vUGxh
dGZvcm1Ub3VjaFBvaW50LmggXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oIFwK
ICAgICBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBcCiAgICAgcGxhdGZvcm0vUG9wdXBN
ZW51LmggXAogICAgIHBsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1dl
YktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaCBiL1dlYktp
dDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaAppbmRleCA0Mzky
NzNjLi44MTBjNDQyIDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9X
ZWJQYWdlTWVzc2FnZUtpbmRzLmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQv
V2ViUGFnZU1lc3NhZ2VLaW5kcy5oCkBAIC01Miw2ICs1Miw5IEBAIGVudW0gS2luZCB7CiAgICAg
U3RvcExvYWRpbmcsCiAgICAgVHJ5Q2xvc2UsCiAgICAgV2hlZWxFdmVudAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgLCBUb3VjaEV2ZW50CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmggYi9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5o
CmluZGV4IGNmZjdjMjcuLmU0NTQyOTcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL1dlYkV2
ZW50LmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaApAQCAtNTIsNiArNTIsMTIgQEAg
cHVibGljOgogICAgICAgICBLZXlVcCwKICAgICAgICAgUmF3S2V5RG93biwKICAgICAgICAgQ2hh
cgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgLCBUb3VjaFN0YXJ0CisgICAgICAg
LCBUb3VjaE1vdmUKKyAgICAgICAsIFRvdWNoRW5kCisgICAgICAgLCBUb3VjaENhbmNlbAorI2Vu
ZGlmCiAgICAgfTsKIAogICAgIGVudW0gTW9kaWZpZXJzIHsKQEAgLTMyNyw2ICszMzMsMTE2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwogfTsKIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisKK2NsYXNzIFdlYlRvdWNoUG9pbnQgeworcHVibGljOgorICAgIGVudW0gVG91
Y2hQb2ludFN0YXRlIHsKKyAgICAgICAgVG91Y2hSZWxlYXNlZCwKKyAgICAgICAgVG91Y2hQcmVz
c2VkLAorICAgICAgICBUb3VjaE1vdmVkLAorICAgICAgICBUb3VjaFN0YXRpb25hcnksCisgICAg
ICAgIFRvdWNoQ2FuY2VsbGVkCisgICAgfTsKKworICAgIFdlYlRvdWNoUG9pbnQoKQorICAgIHsK
KyAgICB9CisKKyAgICBXZWJUb3VjaFBvaW50KHVuc2lnbmVkIGlkLCBUb3VjaFBvaW50U3RhdGUg
c3RhdGUsIGludCBzY3JlZW5Qb3NYLCBpbnQgc2NyZWVuUG9zWSwgaW50IHBvc1gsIGludCBwb3NZ
KQorICAgICAgICA6IG1faWQoaWQpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICAgICAg
LCBtX3NjcmVlblBvc1goc2NyZWVuUG9zWCkKKyAgICAgICAgLCBtX3NjcmVlblBvc1koc2NyZWVu
UG9zWSkKKyAgICAgICAgLCBtX3Bvc1gocG9zWCkKKyAgICAgICAgLCBtX3Bvc1kocG9zWSkKKyAg
ICB7CisgICAgfQorCisgICAgdW5zaWduZWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Cisg
ICAgVG91Y2hQb2ludFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorCisg
ICAgaW50IHNjcmVlblBvc1goKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblBvc1g7IH0KKyAgICBp
bnQgc2NyZWVuUG9zWSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuUG9zWTsgfQorICAgIGludDMy
X3QgcG9zWCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zWDsgfQorICAgIGludDMyX3QgcG9zWSgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9zWTsgfQorICAgICAgICAgIAorICAgIHZvaWQgc2V0U3RhdGUoVG91
Y2hQb2ludFN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQorCisgICAgdm9pZCBlbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
dGhpcyksIHNpemVvZigqdGhpcykpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlRvdWNoUG9pbnQmIHQpCisgICAg
eworICAgICAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oJnQpLCBzaXplb2YodCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX2lkOworICAgIFRvdWNoUG9pbnRTdGF0ZSBtX3N0YXRlOworICAgIGludCBtX3NjcmVlblBv
c1gsIG1fc2NyZWVuUG9zWTsKKyAgICBpbnQzMl90IG1fcG9zWCwgbV9wb3NZOworCit9OworCitj
bGFzcyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYkV2ZW50IHsKK3B1YmxpYzoKKworICAgIFdl
YlRvdWNoRXZlbnQoKQorICAgIHsKKyAgICB9CisgCisgICAgV2ViVG91Y2hFdmVudChXZWJFdmVu
dDo6VHlwZSB0eXBlLCBWZWN0b3I8V2ViVG91Y2hQb2ludD4gdG91Y2hQb2ludHMsIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgTW9kaWZpZXJz
IG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgOiBXZWJFdmVudCh0eXBlLCBt
b2RpZmllcnMsIHRpbWVzdGFtcCkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBt
X3RvdWNoUG9pbnRzKHRvdWNoUG9pbnRzKQorICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQor
ICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKKyAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5
KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
VG91Y2hFdmVudFR5cGUodHlwZSkpOworICAgIH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIChUeXBlKW1fdHlwZTsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJUb3VjaFBvaW50PiB0
b3VjaFBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hQb2ludHM7IH0KKworICAgIHZvaWQg
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIFdlYkV2ZW50OjplbmNvZGUoZW5jb2Rlcik7CisgICAgICAgIGVuY29kZXItPmVuY29k
ZShtX3RvdWNoUG9pbnRzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJUb3VjaEV2ZW50JiB0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFXZWJFdmVudDo6ZGVjb2RlKGRlY29kZXIsIHQpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHQubV90b3VjaFBvaW50
cykpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgaXNUb3VjaEV2ZW50VHlwZShUeXBlIHR5
cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBUb3VjaFN0YXJ0IHx8IHR5cGUgPT0g
VG91Y2hNb3ZlIHx8IHR5cGUgPT0gVG91Y2hFbmQ7CisgICAgfQorCisgICAgVHlwZSBtX3R5cGU7
CisgICAgVmVjdG9yPFdlYlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CisgICAgYm9vbCBtX2N0
cmxLZXk7CisgICAgYm9vbCBtX2FsdEtleTsKKyAgICBib29sIG1fc2hpZnRLZXk7CisgICAgYm9v
bCBtX21ldGFLZXk7CisgICAgZG91YmxlIG1fdGltZXN0YW1wOworCit9OworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViRXZlbnRfaApkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBiL1dlYktpdDIvU2hhcmVkL1dl
YkV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggZTNkZDMyMC4uZjU2NTliMiAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC0xNTEsNCArMTUxLDc0IEBAIFdlYkNvcmU6OlBs
YXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybShjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3ZWJF
dmVudCkKICAgICByZXR1cm4gV2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCh3ZWJFdmVudCk7
CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgV2ViS2l0MlBsYXRmb3JtVG91
Y2hQb2ludCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVibGljOgor
ICAgIFdlYktpdDJQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgV2ViVG91Y2hQb2ludCYgd2ViVG91
Y2hQb2ludCkKKyAgICB7CisgICAgbV9pZCA9IHdlYlRvdWNoUG9pbnQuaWQoKTsKKworICAgIHN3
aXRjaCAod2ViVG91Y2hQb2ludC5zdGF0ZSgpKSB7CisgICAgY2FzZSBXZWJUb3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkOgorICAgICAgICBtX3N0YXRlID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aFJlbGVhc2VkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVz
c2VkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ6
CisgICAgICAgIG1fc3RhdGUgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgorICAg
ICAgICBtX3N0YXRlID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlbih3ZWJUb3VjaFBvaW50LnNjcmVl
blBvc1goKSwgd2ViVG91Y2hQb2ludC5zY3JlZW5Qb3NZKCkpOworICAgIFdlYkNvcmU6OkludFBv
aW50IHBvc2l0aW9uKHdlYlRvdWNoUG9pbnQucG9zWCgpLCB3ZWJUb3VjaFBvaW50LnBvc1koKSk7
CisKKyAgICBtX3NjcmVlblBvcyA9IHNjcmVlbjsKKyAgICBtX3BvcyA9IHBvc2l0aW9uOworCisg
ICAgfQorCit9OworCitjbGFzcyBXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50IDogcHVibGljIFdl
YkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgV2ViS2l0MlBsYXRmb3Jt
VG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiB3ZWJFdmVudCkKKyAgICB7CisKKyAgICBz
d2l0Y2ggKHdlYkV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoU3RhcnQ6
IAorICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpUb3VjaFN0YXJ0OyAKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hNb3ZlOiAKKyAgICAgICAgbV90eXBlID0gV2ViQ29y
ZTo6VG91Y2hNb3ZlOyAKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hF
bmQ6IAorICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpUb3VjaEVuZDsgCisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2ViRXZlbnQudG91Y2hQb2ludHMoKS5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoV2ViS2l0MlBsYXRmb3JtVG91Y2hQb2lu
dCh3ZWJFdmVudC50b3VjaFBvaW50cygpLmF0KGkpKSk7CisKKyAgICBtX2N0cmxLZXkgPSB3ZWJF
dmVudC5jb250cm9sS2V5KCk7CisgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKKyAg
ICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKKyAgICBtX21ldGFLZXkgPSB3ZWJF
dmVudC5tZXRhS2V5KCk7CisKKyAgICB9Cit9OworCitXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZl
bnQgcGxhdGZvcm0oY29uc3QgV2ViVG91Y2hFdmVudCYgd2ViRXZlbnQpCit7CisgICAgcmV0dXJu
IFdlYktpdDJQbGF0Zm9ybVRvdWNoRXZlbnQod2ViRXZlbnQpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252
ZXJzaW9uLmggYi9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaAppbmRleCBlNmRl
MmE3Li44ZmEwODEzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNp
b24uaAorKysgYi9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaApAQCAtMjksMTcg
KzI5LDI3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1XaGVlbEV2ZW50Lmg+CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtVG91Y2hFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1Ub3VjaFBvaW50Lmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
Yk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVu
dDsKLQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBXZWJUb3VjaEV2ZW50OworY2xh
c3MgV2ViVG91Y2hQb2ludDsKKyNlbmRpZgogV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IHBs
YXRmb3JtKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKIFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVu
dCBwbGF0Zm9ybShjb25zdCBXZWJXaGVlbEV2ZW50Jik7CiBXZWJDb3JlOjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQgcGxhdGZvcm0oY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwotCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKK1dlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCBwbGF0Zm9ybShjb25z
dCBXZWJUb3VjaEV2ZW50Jik7CitXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQgcGxhdGZvcm0o
Y29uc3QgV2ViVG91Y2hQb2ludCYpOworI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIFdlYkV2ZW50Q29udmVyc2lvbl9oCmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJl
ZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgYi9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZh
Y3RvcnlRdC5jcHAKaW5kZXggZTFhY2I0Ni4uZTQxZjA1ZCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9T
aGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwCisrKyBiL1dlYktpdDIvU2hhcmVkL3F0L1dl
YkV2ZW50RmFjdG9yeVF0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogICovCiAKICNpbmNsdWRlICJX
ZWJFdmVudEZhY3RvcnlRdC5oIgotCiAjaW5jbHVkZSA8cWdyYXBoaWNzc2NlbmVldmVudC5oPgog
I2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRS2V5RXZlbnQ+CkBAIC02NCw2ICs2
MywxNCBAQCBzdGF0aWMgV2ViRXZlbnQ6OlR5cGUgd2ViRXZlbnRUeXBlRm9yRXZlbnQoUUV2ZW50
KiBldmVudCkKICAgICAgICAgICAgIHJldHVybiBXZWJFdmVudDo6S2V5RG93bjsKICAgICAgICAg
Y2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6CiAgICAgICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Oktl
eVVwOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGNhc2UgUUV2ZW50OjpUb3Vj
aEJlZ2luOgorICAgICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OworICAgICAg
ICBjYXNlIFFFdmVudDo6VG91Y2hVcGRhdGU6CisgICAgICAgICAgICByZXR1cm4gV2ViRXZlbnQ6
OlRvdWNoTW92ZTsKKyAgICAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgorICAgICAgICAgICAg
cmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgLy8gYXNzZXJ0CiAgICAgICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Ok1vdXNlTW92
ZTsKQEAgLTE2MSw0ICsxNjgsNDEgQEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKICAgICByZXR1cm4gV2Vi
S2V5Ym9hcmRFdmVudCh0eXBlLCB0ZXh0LCB1bm1vZGlmaWVkVGV4dCwga2V5SWRlbnRpZmllciwg
d2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgaXNBdXRvUmVwZWF0
LCBpc0tleXBhZCwgaXNTeXN0ZW1LZXksIG1vZGlmaWVycywgdGltZXN0YW1wKTsKIH0KIAorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK1dlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJUb3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBXZWJFdmVudDo6
VHlwZSB0eXBlICA9IHdlYkV2ZW50VHlwZUZvckV2ZW50KGV2ZW50KTsKKyAgICBXZWJUb3VjaFBv
aW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGlkOworICAgIFdl
YkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVudC0+
bW9kaWZpZXJzKCkpOworICAgIGRvdWJsZSB0aW1lc3RhbXAgICAgICAgICAgICAgICAgPSBXVEY6
OmN1cnJlbnRUaW1lKCk7CisKKyAgICBjb25zdCBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2lu
dD4mIHBvaW50cyA9IGV2ZW50LT50b3VjaFBvaW50cygpOworICAgIAorICAgIFZlY3RvcjxXZWJU
b3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRz
LmNvdW50KCk7ICsraSkgeworICAgICAgICBpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb2lu
dHMuYXQoaSkuaWQoKSk7CisgICAgICAgIHN3aXRjaCAocG9pbnRzLmF0KGkpLnN0YXRlKCkpIHsK
KyAgICAgICAgY2FzZSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkOiBzdGF0ZSA9IFdlYlRvdWNoUG9p
bnQ6OlRvdWNoUmVsZWFzZWQ7IGJyZWFrOworICAgICAgICBjYXNlIFF0OjpUb3VjaFBvaW50TW92
ZWQ6IHN0YXRlID0gV2ViVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsgYnJlYWs7CisgICAgICAgIGNh
c2UgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkOiBzdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlRvdWNoUHJl
c3NlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5OiBzdGF0
ZSA9IFdlYlRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJUb3VjaFBvaW50KGlkLCBzdGF0ZSwgcG9p
bnRzLmF0KGkpLnNjcmVlblBvcygpLnRvUG9pbnQoKS54KCksCisgICAgICAgICAgICBwb2ludHMu
YXQoaSkuc2NyZWVuUG9zKCkudG9Qb2ludCgpLnkoKSwKKyAgICAgICAgICAgIHBvaW50cy5hdChp
KS5wb3MoKS50b1BvaW50KCkueCgpLAorICAgICAgICAgICAgcG9pbnRzLmF0KGkpLnBvcygpLnRv
UG9pbnQoKS55KCkpKTsKKyAgICAgICAgfQorCisgICAgYm9vbCBtX2N0cmxLZXkgPSAoZXZlbnQt
Pm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcik7CisgICAgYm9vbCBtX2FsdEtleSA9
IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6QWx0TW9kaWZpZXIpOworICAgIGJvb2wgbV9zaGlm
dEtleSA9IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcik7CisgICAgYm9v
bCBtX21ldGFLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2RpZmllcik7CisK
KyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlLCBtX3RvdWNoUG9pbnRzLCBtX2N0cmxLZXks
IG1fYWx0S2V5LCBtX3NoaWZ0S2V5LCBtX21ldGFLZXksIG1vZGlmaWVycywgdGltZXN0YW1wKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIv
U2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmggYi9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVu
dEZhY3RvcnlRdC5oCmluZGV4IGJmOWMzOGIuLjc4NjRiMTYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIv
U2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvcXQvV2Vi
RXZlbnRGYWN0b3J5UXQuaApAQCAtMjksNiArMjksMTAgQEAKIAogI2luY2x1ZGUgIldlYkV2ZW50
LmgiCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgUVRvdWNoRXZlbnQ7CisjZW5k
aWYKKwogY2xhc3MgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50OwogY2xhc3MgUUdyYXBoaWNzU2Nl
bmVXaGVlbEV2ZW50OwogY2xhc3MgUUtleUV2ZW50OwpAQCAtNDAsNiArNDQsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50KTsKICAgICBzdGF0aWMg
V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVu
dCogZXZlbnQpOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJk
RXZlbnQoUUtleUV2ZW50KiBldmVudCk7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBz
dGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVu
dCk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAgYi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAppbmRleCBmZDBiODZlLi41ZjE1OTMxIDEw
MDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAor
KysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcApAQCAtMTQ4
LDYgKzE0OCwxNSBAQCBRVmFyaWFudCBRR3JhcGhpY3NXS1ZpZXc6Oml0ZW1DaGFuZ2UoR3JhcGhp
Y3NJdGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgUVZhcmlhbnQmCiAqLwogYm9vbCBRR3JhcGhpY3NX
S1ZpZXc6OmV2ZW50KFFFdmVudCogZXZlbnQpCiB7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDQsIDYsIDApCisgICAgaWYgKCBldmVudC0+dHlwZSgpID09IFFFdmVudDo6VG91
Y2hCZWdpbgorICAgICAgICAgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpUb3Vj
aEVuZAorICAgICAgICAgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpUb3VjaFVw
ZGF0ZSkgeworICAgICAgICAgIHRvdWNoRXZlbnQoc3RhdGljX2Nhc3Q8UVRvdWNoRXZlbnQqPihl
dmVudCkpOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAKKwogICAgIC8v
IEhlcmUgc28gdGhhdCBpdCBjYW4gYmUgcmVpbXBsZW1lbnRlZCB3aXRob3V0IGJyZWFraW5nIEFC
SS4KICAgICByZXR1cm4gUUdyYXBoaWNzV2lkZ2V0OjpldmVudChldmVudCk7CiB9CkBAIC0yMzAs
NiArMjM5LDEzIEBAIHZvaWQgUUdyYXBoaWNzV0tWaWV3Ojp3aGVlbEV2ZW50KFFHcmFwaGljc1Nj
ZW5lV2hlZWxFdmVudCogZXYpCiAgICAgICAgIFFHcmFwaGljc0l0ZW06OndoZWVsRXZlbnQoZXYp
OwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUUdyYXBoaWNzV0tWaWV3Ojp0
b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldikKK3sKKyAgICBwYWdlKCktPmQtPnRvdWNoRXZlbnQo
ZXYpOworfQorI2VuZGlmCisKIFFHcmFwaGljc1dLVmlld1ByaXZhdGU6OlFHcmFwaGljc1dLVmll
d1ByaXZhdGUoUUdyYXBoaWNzV0tWaWV3KiB2aWV3KQogICAgIDogcSh2aWV3KQogewpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oIGIvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oCmluZGV4IGJlYzIyMGIuLjdjMTg3
NDIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcu
aAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmgKQEAgLTY2
LDYgKzY2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVu
dChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3Vi
bGVDbGlja0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCB3aGVlbEV2ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaG92ZXJN
b3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlLmNwcAppbmRleCBiNmQyOTE2Li5hNTc1NDY2IDEwMDY0NAotLS0gYS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2UuY3BwCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tG
cmFtZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KIAorI2lmIFFUX1ZFUlNJ
T04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorI2luY2x1ZGUgPFFUb3VjaEV2ZW50Pgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtMTk0LDYgKzE5OCwxNiBAQCB2b2lkIFFXS1BhZ2VQcml2YXRlOjpfcV93ZWJBY3Rp
b25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKQogfQogI2VuZGlmIC8vIFFUX05PX0FDVElPTgogCisj
aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDApCisKK3ZvaWQgUVdLUGFn
ZVByaXZhdGU6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQoreworICAgIFdlYlRvdWNo
RXZlbnQgdG91Y2hFdmVudCA9IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChl
dmVudCk7CisgICAgcGFnZS0+dG91Y2hFdmVudCh0b3VjaEV2ZW50KTsKK30KKworI2VuZGlmCisK
IFFXS1BhZ2U6OlFXS1BhZ2UoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFjZVJlZikKICAgICA6
IGQobmV3IFFXS1BhZ2VQcml2YXRlKHRoaXMsIG5hbWVzcGFjZVJlZikpCiB7CmRpZmYgLS1naXQg
YS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggYi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZV9wLmgKaW5kZXggMGRlZGEzNC4uMjQ0NGYyMSAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCisrKyBiL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlX3AuaApAQCAtNjcsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBfcV93ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsKIAorI2lmIFFUX1ZFUlNJ
T04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorICAgIHZvaWQgdG91Y2hFdmVudChRVG91
Y2hFdmVudCopOworI2VuZGlmCisKICAgICBRQWN0aW9uKiBhY3Rpb25zW1FXS1BhZ2U6OldlYkFj
dGlvbkNvdW50XTsKIAogICAgIFFXS1BhZ2UqIHE7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBmZDVhODA5Li5jMGNjNTM5IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTMzMiw2ICszMzIsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmtleUV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIHByb2Nlc3MoKS0+c2VuZChXZWJQYWdlTWVzc2Fn
ZTo6S2V5RXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihldmVudCkpOwogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEV2ZW50KGNvbnN0IFdl
YlRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisgICAgcHJvY2VzcygpLT5zZW5kKFdlYlBhZ2VNZXNzYWdlOjpUb3VjaEV2ZW50LCBtX3Bh
Z2VJRCwgQ29yZUlQQzo6SW4oZXZlbnQpKTsgCit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uIGFjdGlvbiwg
V2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI0ZWZmNGMuLmZlYTRjYTIg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjYsNiArMTI2LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCB3aGVl
bEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKICAgICB2b2lkIGtleUV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgdG91
Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisjZW5kaWYKIAogICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBwYWdlVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsgfQogICAgIGNv
bnN0IFdURjo6U3RyaW5nJiB0b29sVGlwKCkgY29uc3QgeyByZXR1cm4gbV90b29sVGlwOyB9CmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQwNjZiNDQuLjU4NGRhMWIg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MTksNiArNDE5LDIw
IEBAIHZvaWQgV2ViUGFnZTo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9h
cmRFdmVudCkKICAgICAodm9pZCloYW5kbGVkOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK3ZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2
ZW50KQoreworICAgIEN1cnJlbnRFdmVudCBjdXJyZW50RXZlbnQodG91Y2hFdmVudCk7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3Nh
Z2U6OkRpZFJlY2VpdmVFdmVudCwgbV9wYWdlSUQsIENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVp
bnQzMl90Pih0b3VjaEV2ZW50LnR5cGUoKSkpKTsKKyAgICAgICAgICAgIAorICAgIGlmICghbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBs
YXRmb3JtVG91Y2hFdmVudCBwbGF0Zm9ybVRvdWNoRXZlbnQgPSBwbGF0Zm9ybSh0b3VjaEV2ZW50
KTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVU
b3VjaEV2ZW50KHBsYXRmb3JtVG91Y2hFdmVudCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdl
OjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKIHsKICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5zZXRBY3RpdmUoaXNBY3RpdmUpOwpAQCAtNTg4LDYgKzYwMiwxNCBAQCB2b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZwogICAgICAgICAgICAga2V5RXZlbnQoZXZlbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgY2Fz
ZSBXZWJQYWdlTWVzc2FnZTo6VG91Y2hFdmVudDogeworICAgICAgICAgICAgV2ViVG91Y2hFdmVu
dCBldmVudDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZXZlbnQpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRvdWNoRXZlbnQoZXZlbnQpOworICAg
ICAgICB9CisjZW5kaWYKICAgICAgICAgY2FzZSBXZWJQYWdlTWVzc2FnZTo6TG9hZFVSTDogewog
ICAgICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUodXJsKSkKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5ZDY0ZWMzLi5i
MTQwNzdhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00MCw2ICs0MCw5
IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVG91Y2hFdmVudC5oPgorI2VuZGlmCiAKIG5h
bWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CkBAIC02MSw2ICs2
NCw5IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdl
Yk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCitjbGFzcyBXZWJUb3VjaEV2ZW50OworI2VuZGlmCiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNT
dG9yZTsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUElPYmplY3QgewpAQCAtMTUyLDYgKzE1
OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQm
KTsKICAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwogICAgIHZvaWQg
a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKKyNlbmRpZgog
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hh
bmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
</data>
<flag name="review"
          id="53617"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="53618"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64948</attachid>
            <date>2010-08-20 05:57:27 -0700</date>
            <delta_ts>2010-08-20 06:04:37 -0700</delta_ts>
            <desc>Fixed version(review comments)</desc>
            <filename>webkit2touch.patch</filename>
            <type>text/plain</type>
            <size>22563</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NThjNjgwYy4uOWJmYTFmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wOC0yMCAgSnVoYSBTYXZvbGFp
bmVuICA8anVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIFFUb3VjaEV2ZW50cyBzdXBwb3J0IGZv
ciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NDMzMAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBRVG91Y2hFdmVu
dHMgaW4gV2ViS2l0Mi4gQSBuZXcgV2ViRXZlbnQtY2xhc3MKKyAgICAgICAgaXMgY3JlYXRlZCBm
b3IgdG91Y2hldmVudHMsIFdlYlRvdWNoRXZlbnQuIEFsc28gdG91Y2hwb2ludHMgbmVlZGVkIGEg
bmV3CisgICAgICAgIGNsYXNzLCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuIFRoaXMgaXMgc2ltaWxh
ciBzb2x1dGlvbiBsaWtlIGluIG90aGVyCisgICAgICAgIGV2ZW50cyhsaWtlIE1vdXNlRXZlbnQp
IG9uIFdlYktpdDIuIFRoZXNlIGNsYXNzZXMgYXJlIGludHJvZHVjZWQgaW4gV2ViRXZlbnQuaCAK
KyAgICAgICAgQWxzbyB0aGVyZSB3YXMgYSBuZWVkIHRvIGNyZWF0ZSBhbiBlbXB0eSBjb25zdHJ1
Y3RvciB0byBQbGF0Zm9ybVRvdWNoUG9pbnQtY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2lu
dDo6UGxhdGZvcm1Ub3VjaFBvaW50KToKKwogMjAxMC0wOC0xOSAgQWxlamFuZHJvIEcuIENhc3Ry
byAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAppbmRleCA0YTY2N2EwLi4zYTI1NzM2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUGxhdGZvcm1Ub3VjaFBvaW50KGNvbnN0
IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7CisgICAgUGxhdGZvcm1Ub3VjaFBvaW50KCkge307
CiAjZWxpZiBQTEFURk9STShBTkRST0lEKQogICAgIFBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBJ
bnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdDIv
Q2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODQ4ODA4MC4uYWQ1ODBjYSAxMDA2
NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxMC0wOC0yMCAgSnVoYSBTYXZvbGFpbmVuICA8anVoYS5zYXZvbGFpbmVu
QHdlZWdvLmZpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtRdF0gQWRkIFFUb3VjaEV2ZW50cyBzdXBwb3J0IGZvciBXZWJLaXQyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDMzMAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBRVG91Y2hFdmVudHMgaW4gV2ViS2l0Mi4gQSBuZXcg
V2ViRXZlbnQtY2xhc3MKKyAgICAgICAgaXMgY3JlYXRlZCBmb3IgdG91Y2hldmVudHMsIFdlYlRv
dWNoRXZlbnQuIEFsc28gdG91Y2hwb2ludHMgbmVlZGVkIGEgbmV3CisgICAgICAgIGNsYXNzLCBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQuIFRoaXMgaXMgc2ltaWxhciBzb2x1dGlvbiBsaWtlIGluIG90
aGVyCisgICAgICAgIGV2ZW50cyhsaWtlIE1vdXNlRXZlbnQpIG9uIFdlYktpdDIuIFRoZXNlIGNs
YXNzZXMgYXJlIGludHJvZHVjZWQgaW4gV2ViRXZlbnQuaCAKKyAgICAgICAgQWxzbyB0aGVyZSB3
YXMgYSBuZWVkIHRvIGNyZWF0ZSBhbiBlbXB0eSBjb25zdHJ1Y3RvciB0byBQbGF0Zm9ybVRvdWNo
UG9pbnQtY2xhc3MuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcm86CisgICAgICAgICog
U2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKFdl
YlBhZ2VNZXNzYWdlOjopOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJFdmVudDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OmlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQ
b2ludDo6c3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjpzY3JlZW5Qb3NY
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6c2NyZWVuUG9zWSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OnBvc1gpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3Vj
aFBvaW50Ojpwb3NZKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6c2V0U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaFBvaW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaEV2
ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6dHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OnRvdWNoUG9pbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VG91Y2hFdmVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6aXNU
b3VjaEV2ZW50VHlwZSk6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVRvdWNoUG9pbnQ6OldlYktpdDJQbGF0
Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2
ZW50OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6cGxhdGZv
cm0pOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaDoKKyAgICAgICAgKiBT
aGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJFdmVu
dFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwOgorICAgICAg
ICAoUUdyYXBoaWNzV0tWaWV3OjpldmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXS1ZpZXc6OnRv
dWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1Bh
Z2VQcml2YXRlOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKwogMjAxMC0wOC0xOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLnBybyBiL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCmluZGV4
IDdiMzlhY2IuLjhlMzZhZTUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJv
CisrKyBiL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCkBAIC04MCw2ICs4MCw4IEBAIFdFQkNP
UkVfSEVBREVSU19GT1JfV0VCS0lUMiArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oIFwKICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBv
aW50LmggXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oIFwKICAgICBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBcCiAgICAgcGxhdGZvcm0vUG9wdXBNZW51LmggXAogICAg
IHBsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaCBiL1dlYktpdDIvU2hhcmVkL0Nv
cmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaAppbmRleCA0MzkyNzNjLi44MTBjNDQy
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlTWVzc2Fn
ZUtpbmRzLmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3Nh
Z2VLaW5kcy5oCkBAIC01Miw2ICs1Miw5IEBAIGVudW0gS2luZCB7CiAgICAgU3RvcExvYWRpbmcs
CiAgICAgVHJ5Q2xvc2UsCiAgICAgV2hlZWxFdmVudAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgLCBUb3VjaEV2ZW50CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIv
U2hhcmVkL1dlYkV2ZW50LmggYi9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oCmluZGV4IGNmZjdj
MjcuLjU3ZWY5MTYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKKysrIGIv
V2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaApAQCAtNTIsNiArNTIsMTMgQEAgcHVibGljOgogICAg
ICAgICBLZXlVcCwKICAgICAgICAgUmF3S2V5RG93biwKICAgICAgICAgQ2hhcgorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgICAgICwKKyAgICAgICAgVG91Y2hTdGFydCwKKyAgICAgICAg
VG91Y2hNb3ZlLAorICAgICAgICBUb3VjaEVuZCwKKyAgICAgICAgVG91Y2hDYW5jZWwKKyNlbmRp
ZgogICAgIH07CiAKICAgICBlbnVtIE1vZGlmaWVycyB7CkBAIC0zMjcsNiArMzM0LDExNCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc1N5c3RlbUtleTsKIH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorCitjbGFzcyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVibGljOgorICAgIGVu
dW0gVG91Y2hQb2ludFN0YXRlIHsKKyAgICAgICAgVG91Y2hSZWxlYXNlZCwKKyAgICAgICAgVG91
Y2hQcmVzc2VkLAorICAgICAgICBUb3VjaE1vdmVkLAorICAgICAgICBUb3VjaFN0YXRpb25hcnks
CisgICAgICAgIFRvdWNoQ2FuY2VsbGVkCisgICAgfTsKKworICAgIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludCgpCisgICAgeworICAgIH0KKworICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludCh1bnNpZ25l
ZCBpZCwgVG91Y2hQb2ludFN0YXRlIHN0YXRlLCBpbnQgc2NyZWVuUG9zWCwgaW50IHNjcmVlblBv
c1ksIGludCBwb3NYLCBpbnQgcG9zWSkKKyAgICAgICAgOiBtX2lkKGlkKQorICAgICAgICAsIG1f
c3RhdGUoc3RhdGUpCisgICAgICAgICwgbV9zY3JlZW5Qb3NYKHNjcmVlblBvc1gpCisgICAgICAg
ICwgbV9zY3JlZW5Qb3NZKHNjcmVlblBvc1kpCisgICAgICAgICwgbV9wb3NYKHBvc1gpCisgICAg
ICAgICwgbV9wb3NZKHBvc1kpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorICAgIFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGludCBzY3JlZW5Qb3NYKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JlZW5Qb3NYOyB9CisgICAgaW50IHNjcmVlblBvc1koKSBjb25zdCB7IHJldHVybiBtX3Nj
cmVlblBvc1k7IH0KKyAgICBpbnQzMl90IHBvc1goKSBjb25zdCB7IHJldHVybiBtX3Bvc1g7IH0K
KyAgICBpbnQzMl90IHBvc1koKSBjb25zdCB7IHJldHVybiBtX3Bvc1k7IH0KKyAgICAgICAgICAK
KyAgICB2b2lkIHNldFN0YXRlKFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3Rh
dGU7IH0KKworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpLCBzaXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQmIHQpCisgICAgeworICAgICAgICByZXR1cm4gZGVjb2Rlci0+
ZGVjb2RlQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnQpLCBzaXplb2YodCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2lkOworICAgIFRvdWNoUG9pbnRTdGF0
ZSBtX3N0YXRlOworICAgIGludCBtX3NjcmVlblBvc1gsIG1fc2NyZWVuUG9zWTsKKyAgICBpbnQz
Ml90IG1fcG9zWCwgbV9wb3NZOworCit9OworCitjbGFzcyBXZWJUb3VjaEV2ZW50IDogcHVibGlj
IFdlYkV2ZW50IHsKK3B1YmxpYzoKKworICAgIFdlYlRvdWNoRXZlbnQoKQorICAgIHsKKyAgICB9
CisgCisgICAgV2ViVG91Y2hFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBWZWN0b3I8V2ViUGxh
dGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50cywgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUg
dGltZXN0YW1wKQorICAgICAgICA6IFdlYkV2ZW50KHR5cGUsIG1vZGlmaWVycywgdGltZXN0YW1w
KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fdG91Y2hQb2ludHModG91Y2hQ
b2ludHMpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9hbHRLZXko
YWx0S2V5KQorICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCisgICAgICAgICwgbV9tZXRh
S2V5KG1ldGFLZXkpCisgICAgeworICAgICAgICBBU1NFUlQoaXNUb3VjaEV2ZW50VHlwZSh0eXBl
KSk7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91
Y2hQb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoUG9pbnRzOyB9CisKKyAgICB2b2lkIGVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBXZWJFdmVudDo6ZW5jb2RlKGVuY29kZXIpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bV90b3VjaFBvaW50cyk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViVG91Y2hFdmVudCYgdCkKKyAgICB7CisgICAg
ICAgIGlmICghV2ViRXZlbnQ6OmRlY29kZShkZWNvZGVyLCB0KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0Lm1fdG91Y2hQb2ludHMp
KQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBpc1RvdWNoRXZlbnRUeXBlKFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IFRvdWNoU3RhcnQgfHwgdHlwZSA9
PSBUb3VjaE1vdmUgfHwgdHlwZSA9PSBUb3VjaEVuZDsKKyAgICB9CisKKyAgICBUeXBlIG1fdHlw
ZTsKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOworICAg
IGJvb2wgbV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX3NoaWZ0S2V5
OworICAgIGJvb2wgbV9tZXRhS2V5OworICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKK307CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJFdmVudF9oCmRpZmYg
LS1naXQgYS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwIGIvV2ViS2l0Mi9T
aGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCBlM2RkMzIwLi5hNzgzNWE3IDEwMDY0
NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTE1MSw0ICsxNTEsNzAgQEAgV2Vi
Q29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtKGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIHdlYkV2ZW50KQogICAgIHJldHVybiBXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KHdl
YkV2ZW50KTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBXZWJLaXQyUGxh
dGZvcm1Ub3VjaFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludCB7Citw
dWJsaWM6CisgICAgV2ViS2l0MlBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQmIHdlYlRvdWNoUG9pbnQpCisgICAgeworICAgICAgICBtX2lkID0gd2ViVG91Y2hQ
b2ludC5pZCgpOworCisgICAgICAgIHN3aXRjaCAod2ViVG91Y2hQb2ludC5zdGF0ZSgpKSB7Cisg
ICAgICAgIGNhc2UgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOgorICAgICAg
ICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
cmVzc2VkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
cmVzc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYlBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICAgICAgbV9zdGF0ZSA9
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlbih3ZWJUb3VjaFBvaW50
LnNjcmVlblBvc1goKSwgd2ViVG91Y2hQb2ludC5zY3JlZW5Qb3NZKCkpOworICAgICAgICBXZWJD
b3JlOjpJbnRQb2ludCBwb3NpdGlvbih3ZWJUb3VjaFBvaW50LnBvc1goKSwgd2ViVG91Y2hQb2lu
dC5wb3NZKCkpOworCisgICAgICAgIG1fc2NyZWVuUG9zID0gc2NyZWVuOworICAgICAgICBtX3Bv
cyA9IHBvc2l0aW9uOworICAgIH0KK307CisKK2NsYXNzIFdlYktpdDJQbGF0Zm9ybVRvdWNoRXZl
bnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBX
ZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHdlYkV2ZW50KQor
ICAgIHsKKyAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBX
ZWJFdmVudDo6VG91Y2hTdGFydDogCisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpUb3Vj
aFN0YXJ0OyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkV2ZW50OjpUb3Vj
aE1vdmU6IAorICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6VG91Y2hNb3ZlOyAKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaEVuZDogCisgICAgICAg
ICAgICBtX3R5cGUgPSBXZWJDb3JlOjpUb3VjaEVuZDsgCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3ZWJFdmVudC50b3VjaFBvaW50cygp
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoV2ViS2l0MlBs
YXRmb3JtVG91Y2hQb2ludCh3ZWJFdmVudC50b3VjaFBvaW50cygpLmF0KGkpKSk7CisKKyAgICAg
ICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBtX2FsdEtleSA9
IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRL
ZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgIH0KK307
CisKK1dlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCBwbGF0Zm9ybShjb25zdCBXZWJUb3VjaEV2
ZW50JiB3ZWJFdmVudCkKK3sKKyAgICByZXR1cm4gV2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCh3
ZWJFdmVudCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaCBiL1dlYktpdDIvU2hhcmVkL1dl
YkV2ZW50Q29udmVyc2lvbi5oCmluZGV4IGU2ZGUyYTcuLjhmYTA4MTMgMTAwNjQ0Ci0tLSBhL1dl
YktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5oCisrKyBiL1dlYktpdDIvU2hhcmVkL1dl
YkV2ZW50Q29udmVyc2lvbi5oCkBAIC0yOSwxNyArMjksMjcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Nb3Vz
ZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVdoZWVsRXZlbnQuaD4KKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Ub3VjaEV2ZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRvdWNoUG9pbnQuaD4KKyNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYldoZWVs
RXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwotCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7CitjbGFzcyBXZWJUb3VjaFBvaW50OworI2VuZGlmCiBX
ZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm0oY29uc3QgV2ViTW91c2VFdmVudCYp
OwogV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtKGNvbnN0IFdlYldoZWVsRXZl
bnQmKTsKIFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybShjb25zdCBXZWJL
ZXlib2FyZEV2ZW50Jik7Ci0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorV2ViQ29yZTo6UGxh
dGZvcm1Ub3VjaEV2ZW50IHBsYXRmb3JtKGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKK1dlYkNvcmU6
OlBsYXRmb3JtVG91Y2hQb2ludCBwbGF0Zm9ybShjb25zdCBXZWJUb3VjaFBvaW50Jik7CisjZW5k
aWYKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViRXZlbnRDb252ZXJzaW9u
X2gKZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcCBi
L1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcAppbmRleCBlMWFjYjQ2Li5i
ZGQ2YTIzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5j
cHAKKysrIGIvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwCkBAIC0yNSw3
ICsyNSw2IEBACiAgKi8KIAogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0LmgiCi0KICNpbmNs
dWRlIDxxZ3JhcGhpY3NzY2VuZWV2ZW50Lmg+CiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgogI2lu
Y2x1ZGUgPFFLZXlFdmVudD4KQEAgLTY0LDYgKzYzLDE0IEBAIHN0YXRpYyBXZWJFdmVudDo6VHlw
ZSB3ZWJFdmVudFR5cGVGb3JFdmVudChRRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgcmV0dXJu
IFdlYkV2ZW50OjpLZXlEb3duOwogICAgICAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFzZToKICAg
ICAgICAgICAgIHJldHVybiBXZWJFdmVudDo6S2V5VXA7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgICAgICAgICByZXR1cm4g
V2ViRXZlbnQ6OlRvdWNoU3RhcnQ7CisgICAgICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0ZToK
KyAgICAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOworICAgICAgICBjYXNlIFFF
dmVudDo6VG91Y2hFbmQ6CisgICAgICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5kOwor
I2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBhc3NlcnQKICAgICAgICAg
ICAgIHJldHVybiBXZWJFdmVudDo6TW91c2VNb3ZlOwpAQCAtMTYxLDQgKzE2OCw0OSBAQCBXZWJL
ZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChRS2V5
RXZlbnQqIGV2ZW50KQogICAgIHJldHVybiBXZWJLZXlib2FyZEV2ZW50KHR5cGUsIHRleHQsIHVu
bW9kaWZpZWRUZXh0LCBrZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5hdGl2
ZVZpcnR1YWxLZXlDb2RlLCBpc0F1dG9SZXBlYXQsIGlzS2V5cGFkLCBpc1N5c3RlbUtleSwgbW9k
aWZpZXJzLCB0aW1lc3RhbXApOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworV2Vi
VG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoUVRvdWNoRXZl
bnQqIGV2ZW50KQoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgID0gd2ViRXZlbnRUeXBlRm9y
RXZlbnQoZXZlbnQpOworICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRl
IHN0YXRlOworICAgIHVuc2lnbmVkIGludCBpZDsKKyAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1v
ZGlmaWVycyAgID0gbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycygpKTsKKyAgICBk
b3VibGUgdGltZXN0YW1wICAgICAgICAgICAgICAgID0gV1RGOjpjdXJyZW50VGltZSgpOworCisg
ICAgY29uc3QgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiBwb2ludHMgPSBldmVudC0+
dG91Y2hQb2ludHMoKTsKKyAgICAKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBt
X3RvdWNoUG9pbnRzOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRzLmNvdW50KCk7ICsr
aSkgeworICAgICAgICBpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb2ludHMuYXQoaSkuaWQo
KSk7CisgICAgICAgIHN3aXRjaCAocG9pbnRzLmF0KGkpLnN0YXRlKCkpIHsKKyAgICAgICAgY2Fz
ZSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkOiAKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFF0OjpUb3VjaFBvaW50TW92ZWQ6IAorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkOiAKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7IAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5OiAKKyAgICAgICAgICAgIHN0YXRlID0g
V2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7IAorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQoaWQsIHN0YXRlLCBwb2ludHMuYXQoaSkuc2NyZWVuUG9zKCkudG9Qb2ludCgp
LngoKSwKKyAgICAgICAgICAgIHBvaW50cy5hdChpKS5zY3JlZW5Qb3MoKS50b1BvaW50KCkueSgp
LAorICAgICAgICAgICAgcG9pbnRzLmF0KGkpLnBvcygpLnRvUG9pbnQoKS54KCksCisgICAgICAg
ICAgICBwb2ludHMuYXQoaSkucG9zKCkudG9Qb2ludCgpLnkoKSkpOworICAgICAgICB9CisKKyAg
ICBib29sIG1fY3RybEtleSA9IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlm
aWVyKTsKKyAgICBib29sIG1fYWx0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRN
b2RpZmllcik7CisgICAgYm9vbCBtX3NoaWZ0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0
OjpTaGlmdE1vZGlmaWVyKTsKKyAgICBib29sIG1fbWV0YUtleSA9IChldmVudC0+bW9kaWZpZXJz
KCkgJiBRdDo6TWV0YU1vZGlmaWVyKTsKKworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGUs
IG1fdG91Y2hQb2ludHMsIG1fY3RybEtleSwgbV9hbHRLZXksIG1fc2hpZnRLZXksIG1fbWV0YUtl
eSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaCBi
L1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmgKaW5kZXggYmY5YzM4Yi4uNzg2
NGIxNiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaAor
KysgYi9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5oCkBAIC0yOSw2ICsyOSwx
MCBAQAogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitjbGFzcyBRVG91Y2hFdmVudDsKKyNlbmRpZgorCiBjbGFzcyBRR3JhcGhpY3NTY2VuZU1vdXNl
RXZlbnQ7CiBjbGFzcyBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQ7CiBjbGFzcyBRS2V5RXZlbnQ7
CkBAIC00MCw2ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVh
dGVXZWJNb3VzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogZXZlbnQsIGludCBldmVu
dENsaWNrQ291bnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZl
bnQoUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBldmVudCk7CiAgICAgc3RhdGljIFdlYktleWJv
YXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNz
d2t2aWV3LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3Bw
CmluZGV4IGZkMGI4NmUuLjA4ZjEyZDMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
Z3JhcGhpY3N3a3ZpZXcuY3BwCkBAIC0xNDgsNiArMTQ4LDE1IEBAIFFWYXJpYW50IFFHcmFwaGlj
c1dLVmlldzo6aXRlbUNoYW5nZShHcmFwaGljc0l0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBRVmFy
aWFudCYKICovCiBib29sIFFHcmFwaGljc1dLVmlldzo6ZXZlbnQoUUV2ZW50KiBldmVudCkKIHsK
KyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoQmVnaW4KKyAgICAgICAgICAgfHwgZXZlbnQtPnR5
cGUoKSA9PSBRRXZlbnQ6OlRvdWNoRW5kCisgICAgICAgICAgIHx8IGV2ZW50LT50eXBlKCkgPT0g
UUV2ZW50OjpUb3VjaFVwZGF0ZSkgeworICAgICAgICAgIHRvdWNoRXZlbnQoc3RhdGljX2Nhc3Q8
UVRvdWNoRXZlbnQqPihldmVudCkpOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNl
bmRpZiAKKwogICAgIC8vIEhlcmUgc28gdGhhdCBpdCBjYW4gYmUgcmVpbXBsZW1lbnRlZCB3aXRo
b3V0IGJyZWFraW5nIEFCSS4KICAgICByZXR1cm4gUUdyYXBoaWNzV2lkZ2V0OjpldmVudChldmVu
dCk7CiB9CkBAIC0yMzAsNiArMjM5LDEzIEBAIHZvaWQgUUdyYXBoaWNzV0tWaWV3Ojp3aGVlbEV2
ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCogZXYpCiAgICAgICAgIFFHcmFwaGljc0l0ZW06
OndoZWVsRXZlbnQoZXYpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUUdy
YXBoaWNzV0tWaWV3Ojp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldikKK3sKKyAgICBwYWdlKCkt
PmQtPnRvdWNoRXZlbnQoZXYpOworfQorI2VuZGlmCisKIFFHcmFwaGljc1dLVmlld1ByaXZhdGU6
OlFHcmFwaGljc1dLVmlld1ByaXZhdGUoUUdyYXBoaWNzV0tWaWV3KiB2aWV3KQogICAgIDogcSh2
aWV3KQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3dr
dmlldy5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oCmluZGV4
IGJlYzIyMGIuLjdjMTg3NDIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
Z3JhcGhpY3N3a3ZpZXcuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNz
d2t2aWV3LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBt
b3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKICAgICB2aXJ0dWFs
IHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCopOwor
ICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2ZW50Kik7CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcCBiL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAppbmRleCBiNmQyOTE2Li5hNTc1NDY2IDEwMDY0
NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKKysrIGIvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1
ZGUgPFdlYktpdDIvV0tGcmFtZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
IAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorI2luY2x1ZGUg
PFFUb3VjaEV2ZW50PgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTk0LDYgKzE5OCwxNiBAQCB2b2lkIFFXS1BhZ2VQcml2
YXRlOjpfcV93ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKQogfQogI2VuZGlmIC8vIFFU
X05PX0FDVElPTgogCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDAp
CisKK3ZvaWQgUVdLUGFnZVByaXZhdGU6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQor
eworICAgIFdlYlRvdWNoRXZlbnQgdG91Y2hFdmVudCA9IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViVG91Y2hFdmVudChldmVudCk7CisgICAgcGFnZS0+dG91Y2hFdmVudCh0b3VjaEV2ZW50KTsK
K30KKworI2VuZGlmCisKIFFXS1BhZ2U6OlFXS1BhZ2UoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVz
cGFjZVJlZikKICAgICA6IGQobmV3IFFXS1BhZ2VQcml2YXRlKHRoaXMsIG5hbWVzcGFjZVJlZikp
CiB7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKaW5kZXggMGRlZGEzNC4uMjQ0NGYy
MSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCisrKyBi
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaApAQCAtNjcsNiArNjcsMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCBfcV93ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsK
IAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorICAgIHZvaWQg
dG91Y2hFdmVudChRVG91Y2hFdmVudCopOworI2VuZGlmCisKICAgICBRQWN0aW9uKiBhY3Rpb25z
W1FXS1BhZ2U6OldlYkFjdGlvbkNvdW50XTsKIAogICAgIFFXS1BhZ2UqIHE7CmRpZmYgLS1naXQg
YS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBmZDVhODA5Li5jMGNjNTM5IDEwMDY0NAotLS0gYS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTMzMiw2ICszMzIsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIHByb2Nlc3MoKS0+c2Vu
ZChXZWJQYWdlTWVzc2FnZTo6S2V5RXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihldmVudCkp
OwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0b3Vj
aEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisgICAgcHJvY2VzcygpLT5zZW5kKFdlYlBhZ2VNZXNzYWdlOjpU
b3VjaEV2ZW50LCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4oZXZlbnQpKTsgCit9CisjZW5kaWYKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQp
CiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI0
ZWZmNGMuLmZlYTRjYTIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjYsNiArMTI2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7
CiAgICAgdm9pZCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKICAgICB2b2lkIGtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHZvaWQgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisjZW5kaWYKIAog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBwYWdlVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VU
aXRsZTsgfQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiB0b29sVGlwKCkgY29uc3QgeyByZXR1cm4g
bV90b29sVGlwOyB9CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQw
NjZiNDQuLjU4NGRhMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC00MTksNiArNDE5LDIwIEBAIHZvaWQgV2ViUGFnZTo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9h
cmRFdmVudCYga2V5Ym9hcmRFdmVudCkKICAgICAodm9pZCloYW5kbGVkOwogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudChjb25zdCBXZWJUb3Vj
aEV2ZW50JiB0b3VjaEV2ZW50KQoreworICAgIEN1cnJlbnRFdmVudCBjdXJyZW50RXZlbnQodG91
Y2hFdmVudCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdl
YlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVFdmVudCwgbV9wYWdlSUQsIENvcmVJUEM6Oklu
KHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b3VjaEV2ZW50LnR5cGUoKSkpKTsKKyAgICAgICAgICAg
IAorICAgIGlmICghbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFBsYXRmb3JtVG91Y2hFdmVudCBwbGF0Zm9ybVRvdWNoRXZlbnQgPSBwbGF0
Zm9ybSh0b3VjaEV2ZW50KTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHBsYXRmb3JtVG91Y2hFdmVudCk7Cit9CisjZW5kaWYK
Kwogdm9pZCBXZWJQYWdlOjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKIHsKICAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUoaXNBY3RpdmUpOwpAQCAtNTg4LDYgKzYwMiwx
NCBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZwogICAgICAgICAgICAga2V5RXZlbnQoZXZlbnQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAgICAgY2FzZSBXZWJQYWdlTWVzc2FnZTo6VG91Y2hFdmVudDogeworICAgICAgICAg
ICAgV2ViVG91Y2hFdmVudCBldmVudDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUoZXZlbnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRvdWNoRXZl
bnQoZXZlbnQpOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgY2FzZSBXZWJQYWdlTWVzc2Fn
ZTo6TG9hZFVSTDogewogICAgICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgICAgIGlmICgh
YXJndW1lbnRzLT5kZWNvZGUodXJsKSkKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA5ZDY0ZWMzLi5iMTQwNzdhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC00MCw2ICs0MCw5IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVG91Y2hFdmVudC5o
PgorI2VuZGlmCiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29k
ZXI7CkBAIC02MSw2ICs2NCw5IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViS2V5Ym9hcmRF
dmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBXZWJUb3VjaEV2ZW50OworI2VuZGlmCiBzdHJ1Y3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUElPYmplY3Qg
ewpAQCAtMTUyLDYgKzE1OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVu
dCYpOwogICAgIHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZl
bnQmKTsKKyNlbmRpZgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFdU
Rjo6U3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
</data>
<flag name="review"
          id="53625"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65023</attachid>
            <date>2010-08-21 01:57:53 -0700</date>
            <delta_ts>2010-08-22 15:43:05 -0700</delta_ts>
            <desc>Fixed patch</desc>
            <filename>webkit2touch.patch</filename>
            <type>text/plain</type>
            <size>22532</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NThjNjgwYy4uOWJmYTFmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wOC0yMCAgSnVoYSBTYXZvbGFp
bmVuICA8anVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIFFUb3VjaEV2ZW50cyBzdXBwb3J0IGZv
ciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NDMzMAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBRVG91Y2hFdmVu
dHMgaW4gV2ViS2l0Mi4gQSBuZXcgV2ViRXZlbnQtY2xhc3MKKyAgICAgICAgaXMgY3JlYXRlZCBm
b3IgdG91Y2hldmVudHMsIFdlYlRvdWNoRXZlbnQuIEFsc28gdG91Y2hwb2ludHMgbmVlZGVkIGEg
bmV3CisgICAgICAgIGNsYXNzLCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuIFRoaXMgaXMgc2ltaWxh
ciBzb2x1dGlvbiBsaWtlIGluIG90aGVyCisgICAgICAgIGV2ZW50cyhsaWtlIE1vdXNlRXZlbnQp
IG9uIFdlYktpdDIuIFRoZXNlIGNsYXNzZXMgYXJlIGludHJvZHVjZWQgaW4gV2ViRXZlbnQuaCAK
KyAgICAgICAgQWxzbyB0aGVyZSB3YXMgYSBuZWVkIHRvIGNyZWF0ZSBhbiBlbXB0eSBjb25zdHJ1
Y3RvciB0byBQbGF0Zm9ybVRvdWNoUG9pbnQtY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2lu
dDo6UGxhdGZvcm1Ub3VjaFBvaW50KToKKwogMjAxMC0wOC0xOSAgQWxlamFuZHJvIEcuIENhc3Ry
byAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAppbmRleCA0YTY2N2EwLi4zYTI1NzM2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUGxhdGZvcm1Ub3VjaFBvaW50KGNvbnN0
IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7CisgICAgUGxhdGZvcm1Ub3VjaFBvaW50KCkge307
CiAjZWxpZiBQTEFURk9STShBTkRST0lEKQogICAgIFBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBJ
bnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdDIv
Q2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODQ4ODA4MC4uYWQ1ODBjYSAxMDA2
NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxMC0wOC0yMCAgSnVoYSBTYXZvbGFpbmVuICA8anVoYS5zYXZvbGFpbmVu
QHdlZWdvLmZpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtRdF0gQWRkIFFUb3VjaEV2ZW50cyBzdXBwb3J0IGZvciBXZWJLaXQyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDMzMAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBRVG91Y2hFdmVudHMgaW4gV2ViS2l0Mi4gQSBuZXcg
V2ViRXZlbnQtY2xhc3MKKyAgICAgICAgaXMgY3JlYXRlZCBmb3IgdG91Y2hldmVudHMsIFdlYlRv
dWNoRXZlbnQuIEFsc28gdG91Y2hwb2ludHMgbmVlZGVkIGEgbmV3CisgICAgICAgIGNsYXNzLCBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQuIFRoaXMgaXMgc2ltaWxhciBzb2x1dGlvbiBsaWtlIGluIG90
aGVyCisgICAgICAgIGV2ZW50cyhsaWtlIE1vdXNlRXZlbnQpIG9uIFdlYktpdDIuIFRoZXNlIGNs
YXNzZXMgYXJlIGludHJvZHVjZWQgaW4gV2ViRXZlbnQuaCAKKyAgICAgICAgQWxzbyB0aGVyZSB3
YXMgYSBuZWVkIHRvIGNyZWF0ZSBhbiBlbXB0eSBjb25zdHJ1Y3RvciB0byBQbGF0Zm9ybVRvdWNo
UG9pbnQtY2xhc3MuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcm86CisgICAgICAgICog
U2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKFdl
YlBhZ2VNZXNzYWdlOjopOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJFdmVudDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OmlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQ
b2ludDo6c3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjpzY3JlZW5Qb3NY
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6c2NyZWVuUG9zWSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OnBvc1gpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3Vj
aFBvaW50Ojpwb3NZKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6c2V0U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaFBvaW50OjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaFBvaW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb3VjaEV2
ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6dHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OnRvdWNoUG9pbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VG91Y2hFdmVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hFdmVudDo6aXNU
b3VjaEV2ZW50VHlwZSk6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVRvdWNoUG9pbnQ6OldlYktpdDJQbGF0
Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2
ZW50OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6cGxhdGZv
cm0pOgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaDoKKyAgICAgICAgKiBT
aGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJFdmVu
dFR5cGVGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwOgorICAgICAg
ICAoUUdyYXBoaWNzV0tWaWV3OjpldmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXS1ZpZXc6OnRv
dWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1Bh
Z2VQcml2YXRlOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKwogMjAxMC0wOC0xOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLnBybyBiL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCmluZGV4
IDdiMzlhY2IuLjhlMzZhZTUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJv
CisrKyBiL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCkBAIC04MCw2ICs4MCw4IEBAIFdFQkNP
UkVfSEVBREVSU19GT1JfV0VCS0lUMiArPSBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oIFwKICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBv
aW50LmggXAorICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oIFwKICAgICBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBcCiAgICAgcGxhdGZvcm0vUG9wdXBNZW51LmggXAogICAg
IHBsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaCBiL1dlYktpdDIvU2hhcmVkL0Nv
cmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaAppbmRleCA0MzkyNzNjLi44MTBjNDQy
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlTWVzc2Fn
ZUtpbmRzLmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3Nh
Z2VLaW5kcy5oCkBAIC01Miw2ICs1Miw5IEBAIGVudW0gS2luZCB7CiAgICAgU3RvcExvYWRpbmcs
CiAgICAgVHJ5Q2xvc2UsCiAgICAgV2hlZWxFdmVudAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgLCBUb3VjaEV2ZW50CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIv
U2hhcmVkL1dlYkV2ZW50LmggYi9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oCmluZGV4IGNmZjdj
MjcuLjU3ZWY5MTYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKKysrIGIv
V2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaApAQCAtNTIsNiArNTIsMTMgQEAgcHVibGljOgogICAg
ICAgICBLZXlVcCwKICAgICAgICAgUmF3S2V5RG93biwKICAgICAgICAgQ2hhcgorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgICAgICwKKyAgICAgICAgVG91Y2hTdGFydCwKKyAgICAgICAg
VG91Y2hNb3ZlLAorICAgICAgICBUb3VjaEVuZCwKKyAgICAgICAgVG91Y2hDYW5jZWwKKyNlbmRp
ZgogICAgIH07CiAKICAgICBlbnVtIE1vZGlmaWVycyB7CkBAIC0zMjcsNiArMzM0LDExNCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc1N5c3RlbUtleTsKIH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorCitjbGFzcyBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVibGljOgorICAgIGVu
dW0gVG91Y2hQb2ludFN0YXRlIHsKKyAgICAgICAgVG91Y2hSZWxlYXNlZCwKKyAgICAgICAgVG91
Y2hQcmVzc2VkLAorICAgICAgICBUb3VjaE1vdmVkLAorICAgICAgICBUb3VjaFN0YXRpb25hcnks
CisgICAgICAgIFRvdWNoQ2FuY2VsbGVkCisgICAgfTsKKworICAgIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludCgpCisgICAgeworICAgIH0KKworICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludCh1bnNpZ25l
ZCBpZCwgVG91Y2hQb2ludFN0YXRlIHN0YXRlLCBpbnQgc2NyZWVuUG9zWCwgaW50IHNjcmVlblBv
c1ksIGludCBwb3NYLCBpbnQgcG9zWSkKKyAgICAgICAgOiBtX2lkKGlkKQorICAgICAgICAsIG1f
c3RhdGUoc3RhdGUpCisgICAgICAgICwgbV9zY3JlZW5Qb3NYKHNjcmVlblBvc1gpCisgICAgICAg
ICwgbV9zY3JlZW5Qb3NZKHNjcmVlblBvc1kpCisgICAgICAgICwgbV9wb3NYKHBvc1gpCisgICAg
ICAgICwgbV9wb3NZKHBvc1kpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorICAgIFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGludCBzY3JlZW5Qb3NYKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JlZW5Qb3NYOyB9CisgICAgaW50IHNjcmVlblBvc1koKSBjb25zdCB7IHJldHVybiBtX3Nj
cmVlblBvc1k7IH0KKyAgICBpbnQzMl90IHBvc1goKSBjb25zdCB7IHJldHVybiBtX3Bvc1g7IH0K
KyAgICBpbnQzMl90IHBvc1koKSBjb25zdCB7IHJldHVybiBtX3Bvc1k7IH0KKyAgICAgICAgICAK
KyAgICB2b2lkIHNldFN0YXRlKFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3Rh
dGU7IH0KKworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpLCBzaXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQmIHQpCisgICAgeworICAgICAgICByZXR1cm4gZGVjb2Rlci0+
ZGVjb2RlQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnQpLCBzaXplb2YodCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2lkOworICAgIFRvdWNoUG9pbnRTdGF0
ZSBtX3N0YXRlOworICAgIGludCBtX3NjcmVlblBvc1gsIG1fc2NyZWVuUG9zWTsKKyAgICBpbnQz
Ml90IG1fcG9zWCwgbV9wb3NZOworCit9OworCitjbGFzcyBXZWJUb3VjaEV2ZW50IDogcHVibGlj
IFdlYkV2ZW50IHsKK3B1YmxpYzoKKworICAgIFdlYlRvdWNoRXZlbnQoKQorICAgIHsKKyAgICB9
CisgCisgICAgV2ViVG91Y2hFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBWZWN0b3I8V2ViUGxh
dGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50cywgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUg
dGltZXN0YW1wKQorICAgICAgICA6IFdlYkV2ZW50KHR5cGUsIG1vZGlmaWVycywgdGltZXN0YW1w
KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fdG91Y2hQb2ludHModG91Y2hQ
b2ludHMpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9hbHRLZXko
YWx0S2V5KQorICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCisgICAgICAgICwgbV9tZXRh
S2V5KG1ldGFLZXkpCisgICAgeworICAgICAgICBBU1NFUlQoaXNUb3VjaEV2ZW50VHlwZSh0eXBl
KSk7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91
Y2hQb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoUG9pbnRzOyB9CisKKyAgICB2b2lkIGVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBXZWJFdmVudDo6ZW5jb2RlKGVuY29kZXIpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bV90b3VjaFBvaW50cyk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViVG91Y2hFdmVudCYgdCkKKyAgICB7CisgICAg
ICAgIGlmICghV2ViRXZlbnQ6OmRlY29kZShkZWNvZGVyLCB0KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0Lm1fdG91Y2hQb2ludHMp
KQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBpc1RvdWNoRXZlbnRUeXBlKFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IFRvdWNoU3RhcnQgfHwgdHlwZSA9
PSBUb3VjaE1vdmUgfHwgdHlwZSA9PSBUb3VjaEVuZDsKKyAgICB9CisKKyAgICBUeXBlIG1fdHlw
ZTsKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOworICAg
IGJvb2wgbV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX3NoaWZ0S2V5
OworICAgIGJvb2wgbV9tZXRhS2V5OworICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKK307CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJFdmVudF9oCmRpZmYg
LS1naXQgYS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwIGIvV2ViS2l0Mi9T
aGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCBlM2RkMzIwLi5hNzgzNWE3IDEwMDY0
NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTE1MSw0ICsxNTEsNzAgQEAgV2Vi
Q29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtKGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIHdlYkV2ZW50KQogICAgIHJldHVybiBXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50KHdl
YkV2ZW50KTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBXZWJLaXQyUGxh
dGZvcm1Ub3VjaFBvaW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludCB7Citw
dWJsaWM6CisgICAgV2ViS2l0MlBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQmIHdlYlRvdWNoUG9pbnQpCisgICAgeworICAgICAgICBtX2lkID0gd2ViVG91Y2hQ
b2ludC5pZCgpOworCisgICAgICAgIHN3aXRjaCAod2ViVG91Y2hQb2ludC5zdGF0ZSgpKSB7Cisg
ICAgICAgIGNhc2UgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOgorICAgICAg
ICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
cmVzc2VkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQ
cmVzc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaE1vdmVkOgorICAgICAgICAgICAgbV9zdGF0ZSA9IFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYlBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICAgICAgbV9zdGF0ZSA9
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlbih3ZWJUb3VjaFBvaW50
LnNjcmVlblBvc1goKSwgd2ViVG91Y2hQb2ludC5zY3JlZW5Qb3NZKCkpOworICAgICAgICBXZWJD
b3JlOjpJbnRQb2ludCBwb3NpdGlvbih3ZWJUb3VjaFBvaW50LnBvc1goKSwgd2ViVG91Y2hQb2lu
dC5wb3NZKCkpOworCisgICAgICAgIG1fc2NyZWVuUG9zID0gc2NyZWVuOworICAgICAgICBtX3Bv
cyA9IHBvc2l0aW9uOworICAgIH0KK307CisKK2NsYXNzIFdlYktpdDJQbGF0Zm9ybVRvdWNoRXZl
bnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBX
ZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHdlYkV2ZW50KQor
ICAgIHsKKyAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBX
ZWJFdmVudDo6VG91Y2hTdGFydDogCisgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpUb3Vj
aFN0YXJ0OyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkV2ZW50OjpUb3Vj
aE1vdmU6IAorICAgICAgICAgICAgbV90eXBlID0gV2ViQ29yZTo6VG91Y2hNb3ZlOyAKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaEVuZDogCisgICAgICAg
ICAgICBtX3R5cGUgPSBXZWJDb3JlOjpUb3VjaEVuZDsgCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3ZWJFdmVudC50b3VjaFBvaW50cygp
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoV2ViS2l0MlBs
YXRmb3JtVG91Y2hQb2ludCh3ZWJFdmVudC50b3VjaFBvaW50cygpLmF0KGkpKSk7CisKKyAgICAg
ICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOworICAgICAgICBtX2FsdEtleSA9
IHdlYkV2ZW50LmFsdEtleSgpOworICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRL
ZXkoKTsKKyAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgIH0KK307
CisKK1dlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCBwbGF0Zm9ybShjb25zdCBXZWJUb3VjaEV2
ZW50JiB3ZWJFdmVudCkKK3sKKyAgICByZXR1cm4gV2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCh3
ZWJFdmVudCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uaCBiL1dlYktpdDIvU2hhcmVkL1dl
YkV2ZW50Q29udmVyc2lvbi5oCmluZGV4IGU2ZGUyYTcuLjhmYTA4MTMgMTAwNjQ0Ci0tLSBhL1dl
YktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5oCisrKyBiL1dlYktpdDIvU2hhcmVkL1dl
YkV2ZW50Q29udmVyc2lvbi5oCkBAIC0yOSwxNyArMjksMjcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Nb3Vz
ZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVdoZWVsRXZlbnQuaD4KKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Ub3VjaEV2ZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRvdWNoUG9pbnQuaD4KKyNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYldoZWVs
RXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwotCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7CitjbGFzcyBXZWJUb3VjaFBvaW50OworI2VuZGlmCiBX
ZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZvcm0oY29uc3QgV2ViTW91c2VFdmVudCYp
OwogV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtKGNvbnN0IFdlYldoZWVsRXZl
bnQmKTsKIFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybShjb25zdCBXZWJL
ZXlib2FyZEV2ZW50Jik7Ci0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorV2ViQ29yZTo6UGxh
dGZvcm1Ub3VjaEV2ZW50IHBsYXRmb3JtKGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKK1dlYkNvcmU6
OlBsYXRmb3JtVG91Y2hQb2ludCBwbGF0Zm9ybShjb25zdCBXZWJUb3VjaFBvaW50Jik7CisjZW5k
aWYKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViRXZlbnRDb252ZXJzaW9u
X2gKZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcCBi
L1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcAppbmRleCBlMWFjYjQ2Li5i
ZGQ2YTIzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5j
cHAKKysrIGIvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwCkBAIC0yNSw3
ICsyNSw2IEBACiAgKi8KIAogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0LmgiCi0KICNpbmNs
dWRlIDxxZ3JhcGhpY3NzY2VuZWV2ZW50Lmg+CiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgogI2lu
Y2x1ZGUgPFFLZXlFdmVudD4KQEAgLTY0LDYgKzYzLDE0IEBAIHN0YXRpYyBXZWJFdmVudDo6VHlw
ZSB3ZWJFdmVudFR5cGVGb3JFdmVudChRRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgcmV0dXJu
IFdlYkV2ZW50OjpLZXlEb3duOwogICAgICAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFzZToKICAg
ICAgICAgICAgIHJldHVybiBXZWJFdmVudDo6S2V5VXA7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgICAgICAgICByZXR1cm4g
V2ViRXZlbnQ6OlRvdWNoU3RhcnQ7CisgICAgICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0ZToK
KyAgICAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOworICAgICAgICBjYXNlIFFF
dmVudDo6VG91Y2hFbmQ6CisgICAgICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5kOwor
I2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBhc3NlcnQKICAgICAgICAg
ICAgIHJldHVybiBXZWJFdmVudDo6TW91c2VNb3ZlOwpAQCAtMTYxLDQgKzE2OCw0OSBAQCBXZWJL
ZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChRS2V5
RXZlbnQqIGV2ZW50KQogICAgIHJldHVybiBXZWJLZXlib2FyZEV2ZW50KHR5cGUsIHRleHQsIHVu
bW9kaWZpZWRUZXh0LCBrZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5hdGl2
ZVZpcnR1YWxLZXlDb2RlLCBpc0F1dG9SZXBlYXQsIGlzS2V5cGFkLCBpc1N5c3RlbUtleSwgbW9k
aWZpZXJzLCB0aW1lc3RhbXApOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworV2Vi
VG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoUVRvdWNoRXZl
bnQqIGV2ZW50KQoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgID0gd2ViRXZlbnRUeXBlRm9y
RXZlbnQoZXZlbnQpOworICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRl
IHN0YXRlOworICAgIHVuc2lnbmVkIGludCBpZDsKKyAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1v
ZGlmaWVycyAgID0gbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycygpKTsKKyAgICBk
b3VibGUgdGltZXN0YW1wICAgICAgICAgICAgICAgID0gV1RGOjpjdXJyZW50VGltZSgpOworCisg
ICAgY29uc3QgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiBwb2ludHMgPSBldmVudC0+
dG91Y2hQb2ludHMoKTsKKyAgICAKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBt
X3RvdWNoUG9pbnRzOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRzLmNvdW50KCk7ICsr
aSkgeworICAgICAgICBpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb2ludHMuYXQoaSkuaWQo
KSk7CisgICAgICAgIHN3aXRjaCAocG9pbnRzLmF0KGkpLnN0YXRlKCkpIHsKKyAgICAgICAgY2Fz
ZSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkOiAKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZv
cm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFF0OjpUb3VjaFBvaW50TW92ZWQ6IAorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkOiAKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7IAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5OiAKKyAgICAgICAgICAgIHN0YXRlID0g
V2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7IAorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQoaWQsIHN0YXRlLCBwb2ludHMuYXQoaSkuc2NyZWVuUG9zKCkudG9Qb2ludCgp
LngoKSwKKyAgICAgICAgICAgIHBvaW50cy5hdChpKS5zY3JlZW5Qb3MoKS50b1BvaW50KCkueSgp
LAorICAgICAgICAgICAgcG9pbnRzLmF0KGkpLnBvcygpLnRvUG9pbnQoKS54KCksCisgICAgICAg
ICAgICBwb2ludHMuYXQoaSkucG9zKCkudG9Qb2ludCgpLnkoKSkpOworICAgICAgICB9CisKKyAg
ICBib29sIG1fY3RybEtleSA9IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlm
aWVyKTsKKyAgICBib29sIG1fYWx0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRN
b2RpZmllcik7CisgICAgYm9vbCBtX3NoaWZ0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0
OjpTaGlmdE1vZGlmaWVyKTsKKyAgICBib29sIG1fbWV0YUtleSA9IChldmVudC0+bW9kaWZpZXJz
KCkgJiBRdDo6TWV0YU1vZGlmaWVyKTsKKworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGUs
IG1fdG91Y2hQb2ludHMsIG1fY3RybEtleSwgbV9hbHRLZXksIG1fc2hpZnRLZXksIG1fbWV0YUtl
eSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaCBi
L1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmgKaW5kZXggYmY5YzM4Yi4uNzg2
NGIxNiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaAor
KysgYi9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5oCkBAIC0yOSw2ICsyOSwx
MCBAQAogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitjbGFzcyBRVG91Y2hFdmVudDsKKyNlbmRpZgorCiBjbGFzcyBRR3JhcGhpY3NTY2VuZU1vdXNl
RXZlbnQ7CiBjbGFzcyBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQ7CiBjbGFzcyBRS2V5RXZlbnQ7
CkBAIC00MCw2ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVh
dGVXZWJNb3VzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogZXZlbnQsIGludCBldmVu
dENsaWNrQ291bnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZl
bnQoUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBldmVudCk7CiAgICAgc3RhdGljIFdlYktleWJv
YXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNz
d2t2aWV3LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3Bw
CmluZGV4IGZkMGI4NmUuLjg3ZmJmZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
Z3JhcGhpY3N3a3ZpZXcuY3BwCkBAIC0xNDgsNiArMTQ4LDEzIEBAIFFWYXJpYW50IFFHcmFwaGlj
c1dLVmlldzo6aXRlbUNoYW5nZShHcmFwaGljc0l0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBRVmFy
aWFudCYKICovCiBib29sIFFHcmFwaGljc1dLVmlldzo6ZXZlbnQoUUV2ZW50KiBldmVudCkKIHsK
KyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoQmVnaW4gfHwgZXZlbnQtPnR5cGUoKSA9PSBRRXZl
bnQ6OlRvdWNoRW5kIHx8IGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpUb3VjaFVwZGF0ZSkgewor
ICAgICAgICB0b3VjaEV2ZW50KHN0YXRpY19jYXN0PFFUb3VjaEV2ZW50Kj4oZXZlbnQpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIAorCiAgICAgLy8gSGVyZSBzbyB0aGF0
IGl0IGNhbiBiZSByZWltcGxlbWVudGVkIHdpdGhvdXQgYnJlYWtpbmcgQUJJLgogICAgIHJldHVy
biBRR3JhcGhpY3NXaWRnZXQ6OmV2ZW50KGV2ZW50KTsKIH0KQEAgLTIzMCw2ICsyMzcsMTMgQEAg
dm9pZCBRR3JhcGhpY3NXS1ZpZXc6OndoZWVsRXZlbnQoUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50
KiBldikKICAgICAgICAgUUdyYXBoaWNzSXRlbTo6d2hlZWxFdmVudChldik7CiB9CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnRvdWNoRXZlbnQoUVRv
dWNoRXZlbnQqIGV2KQoreworICAgIHBhZ2UoKS0+ZC0+dG91Y2hFdmVudChldik7Cit9CisjZW5k
aWYKKwogUUdyYXBoaWNzV0tWaWV3UHJpdmF0ZTo6UUdyYXBoaWNzV0tWaWV3UHJpdmF0ZShRR3Jh
cGhpY3NXS1ZpZXcqIHZpZXcpCiAgICAgOiBxKHZpZXcpCiB7CmRpZmYgLS1naXQgYS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWdyYXBoaWNzd2t2aWV3LmgKaW5kZXggYmVjMjIwYi4uNGVmYzI5OSAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oCisrKyBiL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuaApAQCAtNjYsNiArNjYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG1vdXNlUmVsZWFzZUV2ZW50KFFHcmFwaGljc1Nj
ZW5lTW91c2VFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBtb3VzZURvdWJsZUNsaWNrRXZlbnQo
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnQo
UUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQo
UVRvdWNoRXZlbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBob3Zlck1vdmVFdmVudChRR3JhcGhp
Y3NTY2VuZUhvdmVyRXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2UuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCmlu
ZGV4IGI2ZDI5MTYuLmE1NzU0NjYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlLmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAK
QEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgogCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9O
X0NIRUNLKDQsIDYsIDApCisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTQsNiAr
MTk4LDE2IEBAIHZvaWQgUVdLUGFnZVByaXZhdGU6Ol9xX3dlYkFjdGlvblRyaWdnZXJlZChib29s
IGNoZWNrZWQpCiB9CiAjZW5kaWYgLy8gUVRfTk9fQUNUSU9OCiAKKyNpZiBRVF9WRVJTSU9OID49
IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKwordm9pZCBRV0tQYWdlUHJpdmF0ZTo6dG91Y2hF
dmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgV2ViVG91Y2hFdmVudCB0b3VjaEV2ZW50
ID0gV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICBwYWdl
LT50b3VjaEV2ZW50KHRvdWNoRXZlbnQpOworfQorCisjZW5kaWYKKwogUVdLUGFnZTo6UVdLUGFn
ZShXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmKQogICAgIDogZChuZXcgUVdLUGFnZVBy
aXZhdGUodGhpcywgbmFtZXNwYWNlUmVmKSkKIHsKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
X3AuaAppbmRleCAwZGVkYTM0Li4yNDQ0ZjIxIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZV9wLmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2VfcC5oCkBAIC02Nyw2ICs2NywxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIF9xX3dlYkFjdGlv
blRyaWdnZXJlZChib29sIGNoZWNrZWQpOwogCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9O
X0NIRUNLKDQsIDYsIDApCisgICAgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisjZW5k
aWYKKwogICAgIFFBY3Rpb24qIGFjdGlvbnNbUVdLUGFnZTo6V2ViQWN0aW9uQ291bnRdOwogCiAg
ICAgUVdLUGFnZSogcTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZkNWE4MDku
LmMwY2M1MzkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzMyLDYgKzMzMiwx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiAgICAgcHJvY2VzcygpLT5zZW5kKFdlYlBhZ2VNZXNzYWdlOjpLZXlFdmVudCwgbV9w
YWdlSUQsIENvcmVJUEM6OkluKGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZl
bnQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwcm9jZXNz
KCktPnNlbmQoV2ViUGFnZU1lc3NhZ2U6OlRvdWNoRXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJ
bihldmVudCkpOyAKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBm
cmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKZGlmZiAt
LWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjRlZmY0Yy4uZmVhNGNhMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTEyNiw2ICsxMjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3VzZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2Vi
V2hlZWxFdmVudCYpOwogICAgIHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYp
OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdl
YlRvdWNoRXZlbnQmKTsKKyNlbmRpZgogCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHBhZ2VUaXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IHRvb2xUaXAoKSBjb25zdCB7IHJldHVybiBtX3Rvb2xUaXA7IH0KZGlmZiAtLWdpdCBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNDA2NmI0NC4uNTg0ZGExYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQxOSw2ICs0MTksMjAgQEAgdm9pZCBXZWJQYWdl
OjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogICAgICh2
b2lkKWhhbmRsZWQ7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBXZWJQYWdl
Ojp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit7CisgICAgQ3Vy
cmVudEV2ZW50IGN1cnJlbnRFdmVudCh0b3VjaEV2ZW50KTsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkUmVjZWl2ZUV2
ZW50LCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvdWNoRXZl
bnQudHlwZSgpKSkpOworICAgICAgICAgICAgCisgICAgaWYgKCFtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGxhdGZvcm1Ub3VjaEV2ZW50
IHBsYXRmb3JtVG91Y2hFdmVudCA9IHBsYXRmb3JtKHRvdWNoRXZlbnQpOworICAgIG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZlbnQocGxhdGZv
cm1Ub3VjaEV2ZW50KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2ZShib29s
IGlzQWN0aXZlKQogewogICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEFjdGl2ZShp
c0FjdGl2ZSk7CkBAIC01ODgsNiArNjAyLDE0IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnCiAg
ICAgICAgICAgICBrZXlFdmVudChldmVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBjYXNlIFdlYlBhZ2VNZXNzYWdl
OjpUb3VjaEV2ZW50OiB7CisgICAgICAgICAgICBXZWJUb3VjaEV2ZW50IGV2ZW50OworICAgICAg
ICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShldmVudCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgdG91Y2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyNlbmRpZgog
ICAgICAgICBjYXNlIFdlYlBhZ2VNZXNzYWdlOjpMb2FkVVJMOiB7CiAgICAgICAgICAgICBTdHJp
bmcgdXJsOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZSh1cmwpKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDlkNjRlYzMuLmIxNDA3N2EgMTAwNjQ0Ci0t
LSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQwLDYgKzQwLDkgQEAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1Ub3VjaEV2ZW50Lmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIENvcmVJUEMg
ewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKQEAgLTYxLDYgKzY0LDkgQEAgY2xhc3MgV2Vi
RnJhbWU7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNs
YXNzIFdlYldoZWVsRXZlbnQ7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFdlYlRv
dWNoRXZlbnQ7CisjZW5kaWYKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBX
ZWJQYWdlIDogcHVibGljIEFQSU9iamVjdCB7CkBAIC0xNTIsNiArMTU4LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgd2hl
ZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBrZXlFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50Jik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHRv
dWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOworI2VuZGlmCiAgICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>