<?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>138311</bug_id>
          
          <creation_ts>2014-11-03 08:31:06 -0800</creation_ts>
          <short_desc>[GTK] Add context menu API to Web Process Extensions</short_desc>
          <delta_ts>2014-11-06 07:08:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>chavarria1991</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045736</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-03 08:31:06 -0800</bug_when>
    <thetext>Useful when the information in the UI process is not enough to build or customize the context menu, for example, when you need to access the Node of the hit test result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045786</commentid>
    <comment_count>1</comment_count>
      <attachid>240864</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-03 11:10:42 -0800</bug_when>
    <thetext>Created attachment 240864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045787</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-03 11:13:53 -0800</bug_when>
    <thetext>Attachment 240864 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.h&quot;
ERROR: Source/WebKit2/PlatformGTK.cmake:376:  Alphabetical sorting problem. &quot;&quot;        &lt;file alias=\&quot;images/missingImage@2x\&quot;&gt;missingImage@2x.png&lt;/file&gt;\n&quot;&quot; should be before &quot;&quot;        &lt;file alias=\&quot;images/missingImage\&quot;&gt;missingImage.png&lt;/file&gt;\n&quot;&quot;.  [list/order] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitForwardDeclarations.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.h&quot;
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046050</commentid>
    <comment_count>3</comment_count>
      <attachid>240864</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-11-04 05:53:21 -0800</bug_when>
    <thetext>Comment on attachment 240864
Patch

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

I like the idea and the API, the code looks correct to me as well.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:257
&gt; +    } else {
&gt; +        WKRetain(wkDefaultMenu);
&gt; +        *wkNewMenu = wkDefaultMenu;
&gt; +    }

How about making this an early return?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046057</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-04 06:17:14 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 240864 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240864&amp;action=review
&gt; 
&gt; I like the idea and the API, the code looks correct to me as well.

This is needed by Yelp, I&apos;ll try to use this in yelp asap to make sure the API is good.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:257
&gt; &gt; +    } else {
&gt; &gt; +        WKRetain(wkDefaultMenu);
&gt; &gt; +        *wkNewMenu = wkDefaultMenu;
&gt; &gt; +    }
&gt; 
&gt; How about making this an early return?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046410</commentid>
    <comment_count>5</comment_count>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2014-11-05 01:10:46 -0800</bug_when>
    <thetext>Yelp (the GNOME help viewer) needs to access the DOM tree when we generate the context menu to check if we are clicking a piece of code or to get the link title.

I have use this patch to implement this feature and it works really well!! Great work!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046778</commentid>
    <comment_count>6</comment_count>
      <attachid>241099</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-06 02:34:04 -0800</bug_when>
    <thetext>Created attachment 241099
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046779</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 02:36:34 -0800</bug_when>
    <thetext>Attachment 241099 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.h&quot;
ERROR: Source/WebKit2/PlatformGTK.cmake:376:  There should be exactly one empty line instead of 0 between &quot;&quot;        &lt;file alias=\&quot;images/panIcon\&quot;&gt;panIcon.png&lt;/file&gt;\n&quot;&quot; and &quot;&quot;        &lt;file alias=\&quot;images/textAreaResizeCorner\&quot;&gt;textAreaResizeCorner.png&lt;/file&gt;\n&quot;&quot;.  [list/emptyline] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitForwardDeclarations.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.h&quot;
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046792</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-06 07:08:08 -0800</bug_when>
    <thetext>Committed r175694: &lt;http://trac.webkit.org/changeset/175694&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240864</attachid>
            <date>2014-11-03 11:10:42 -0800</date>
            <delta_ts>2014-11-06 02:34:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-web-page-context-menu.diff</filename>
            <type>text/plain</type>
            <size>46695</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3ZThjOGJiLi5kNTg1YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTQtMTEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBjb250ZXh0IG1lbnUgQVBJIHRvIFdlYiBQcm9jZXNzIEV4
dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBXZWJLaXRXZWJQYWdlOjpjb250ZXh0LW1lbnUgc2lnbmFsLCBzaW1pbGFyIHRvIHRoZQor
ICAgICAgICBXZWJLaXRXZWJWaWV3IG9uZSwgYnV0IHRoYXQgcmVjZWl2ZXMgYSBXZWJLaXRXZWJI
aXRUZXN0UmVzdWx0LCBhCisgICAgICAgIGNsYXNzIHRoYXQgZXh0ZW5kcyBXZWJLaXRUZXN0UmVz
dWx0IHRvIHByb3ZpZGUgdGhlIFdlYktpdERPTU5vZGUKKyAgICAgICAgZnJvbSB0aGUgV2ViIFBy
b2Nlc3MgRXh0ZW5zaW9ucyBBUEkuIFRoaXMgbWFrZXMgV2ViS2l0Q29udGV4dE1lbnUsCisgICAg
ICAgIFdlYktpdENvbnRleHRNZW51SXRlbSBhbmQgV2ViS2l0VGVzdFJlc3VsdCBjbGFzc2VzIHNo
YXJlZCBiZXR3ZWVuCisgICAgICAgIFVJIGFuZCBXZWIgRXh0ZW5zaW9ucyBBUElzLiBJbiBhZGRp
dGlvbiB0byBiZSBhYmxlIHRvIGN1c3RvbWl6ZQorICAgICAgICB0aGUgY29udGV4dCBtZW51LCBp
dCBhbHNvIHByb3ZpZGVzIEFQSSB0byBzZXQgdXNlciBkYXRhLCBhcyBhCisgICAgICAgIEdWYXJp
YW50LCBpbiB0aGUgV2ViIFByb2Nlc3MgdGhhdCBpcyBzZW50IHRvIHRoZSBVSSBQcm9jZXNzLgor
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwOgorICAgICAgICAod2Via2l0
X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKTogQWRkIHVzZXIgZGF0YSB0byB0aGUgY29udGV4
dAorICAgICAgICBtZW51IGFzIGEgR1ZhcmlhbnQuCisgICAgICAgICh3ZWJraXRfY29udGV4dF9t
ZW51X2dldF91c2VyX2RhdGEpOiBHZXQgdGhlIHVzZXIgZGF0YSBwcmV2aW91c2x5CisgICAgICAg
IHNldCB3aXRoIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YSgpIGVpdGhlciBmcm9t
IHRoZSBXZWIKKyAgICAgICAgb3IgVUkgcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KTogQ29udmVydCB0aGUgcmVjZWl2ZWQgdXNlciBkYXRhCisgICAgICAgIGlu
dG8gYSBHVmFyaWFudCBhbmQgcGFzcyBpdCB0byB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0
TWVudSgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRl
bS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcndhcmREZWNsYXJhdGlv
bnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudSk6IFNldCB0aGUgdXNlciBkYXRhIHJl
Y2VpdmVkCisgICAgICAgIGZyb20gdGhlIFdlYiBQcm9jZXNzIHRvIHRoZSBXZWJLaXRDb250ZXh0
TWVudSBiZWZvcmUgZW1pdHRpbmcKKyAgICAgICAgV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogQWRk
IG5ldyBzZWN0aW9uIGZvciBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9s
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6IEFk
ZCB3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5jcHA6IEFk
ZGVkLgorICAgICAgICAod2Via2l0V2ViSGl0VGVzdFJlc3VsdEdldFByb3BlcnR5KTogQWRkIGdl
dHRlciBmb3Igbm9kZSBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYkhpdFRlc3RSZXN1bHRT
ZXRQcm9wZXJ0eSk6IEFkZCBzZXR0ZXIgZm9yIG5vZGUgcHJvcGVydHkuCisgICAgICAgICh3ZWJr
aXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KTogQWRkIG5vZGUgcHJvcGVydHkuCisg
ICAgICAgICh3ZWJraXRXZWJIaXRUZXN0UmVzdWx0Q3JlYXRlKTogQ3JlYXRlIGEgbmV3CisgICAg
ICAgIFdlYktpdFdlYkhpdFRlc3RSZXN1bHQgZm9yIHRoZSBnaXZlbiBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuCisgICAgICAgICh3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfbm9k
ZSk6IFJldHVybiB0aGUgV2ViS2l0RE9NTm9kZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAoZ2V0Q29udGV4dE1lbnVGcm9t
RGVmYXVsdE1lbnUpOiBCdWlsZCBhIFdlYktpdENvbnRleHRNZW51IGFuZAorICAgICAgICBXZWJL
aXRXZWJIaXRUZXN0UmVzdWx0IGFuZCBlbWl0IFdlYktpdFdlYlBhZ2U6OmNvbnRleHQtbWVudSBz
aWduYWwuCisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2VfY2xhc3NfaW5pdCk6IEFkZCBXZWJLaXRX
ZWJQYWdlOjpjb250ZXh0LW1lbnUgc2lnbmFsLgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0
ZSk6IEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmg6CisKIDIwMTQtMTEtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE2MzY1Nik6IFJlbW90ZSBpbnNw
ZWN0b3IgZG9lc24ndCB3b3JrIHVubGVzcyBwcmVmZXJlbmNlcyBjaGFuZ2UgYWZ0ZXIgcGFnZSBp
bml0aWFsaXphdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2Njg0MmU3Li42ZDk4
ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjc0LDYgKzI3NCw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKIAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlR3RrLmNwcApAQCAtMzcyLDYgKzM3Myw3
IEBAIHNldChXZWJLaXQyV2ViRXh0ZW5zaW9uX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmgK
ICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0U2NyaXB0V29ybGQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaAorICAgICR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0LmgK
ICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKICkKQEAgLTc5OSw2ICs4MDEsMTAgQEAg
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAgICAtSSR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0awogICAgICAgICAke0dPYmplY3RET01CaW5kaW5nc19HSVJf
SEVBREVSU30KICAgICAgICAgJHtXZWJLaXQyV2ViRXh0ZW5zaW9uX0lOU1RBTExFRF9IRUFERVJT
fQorICAgICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudS5oCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51QWN0aW9ucy5oCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAogICAgICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaAogICAgICAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvKi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
LmNwcAppbmRleCBiYmJlZDBkLi40NTA3NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29u
dGV4dE1lbnVJdGVtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsNiArNTEsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0cnVjdCBfV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlIHsK
ICAgICBHTGlzdCogaXRlbXM7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBwYXJlbnRJdGVt
OworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHVzZXJEYXRhOwogfTsKIAogV0VCS0lUX0RFRklORV9U
WVBFKFdlYktpdENvbnRleHRNZW51LCB3ZWJraXRfY29udGV4dF9tZW51LCBHX1RZUEVfT0JKRUNU
KQpAQCAtMzE2LDMgKzMxOCw0MSBAQCB2b2lkIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3ZlX2Fs
bChXZWJLaXRDb250ZXh0TWVudSogbWVudSkKICAgICBnX2xpc3RfZnJlZV9mdWxsKG1lbnUtPnBy
aXYtPml0ZW1zLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJl
ZikpOwogICAgIG1lbnUtPnByaXYtPml0ZW1zID0gMDsKIH0KKworLyoqCisgKiB3ZWJraXRfY29u
dGV4dF9tZW51X3NldF91c2VyX2RhdGE6CisgKiBAbWVudTogYSAjV2ViS2l0Q29udGV4dE1lbnUK
KyAqIEB1c2VyX2RhdGE6IGEgI0dWYXJpYW50CisgKgorICogU2V0cyB1c2VyIGRhdGEgdG8gQG1l
bnUuCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZyb20gYSBXZWIgUHJvY2VzcyBleHRl
bnNpb24gdG8gc2V0IHVzZXIgZGF0YQorICogdGhhdCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhl
IFVJIFByb2Nlc3MgdXNpbmcgd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdXNlcl9kYXRhKCkuCisg
KgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJf
ZGF0YShXZWJLaXRDb250ZXh0TWVudSogbWVudSwgR1ZhcmlhbnQqIHVzZXJEYXRhKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVShtZW51KSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbCh1c2VyRGF0YSk7CisKKyAgICBtZW51LT5wcml2LT51c2VyRGF0YSA9IHVz
ZXJEYXRhOworfQorCisvKioKKyAqIHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X3VzZXJfZGF0YToK
KyAqIEBtZW51OiBhICNXZWJLaXRDb250ZXh0TWVudQorICoKKyAqIEdldHMgdGhlIHVzZXIgZGF0
YSBvZiBAbWVudS4KKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZnJvbSB0aGUgVUkgUHJv
Y2VzcyB0byBnZXQgdXNlciBkYXRhIHByZXZpb3VzbHkgc2V0CisgKiBmcm9tIHRoZSBXZWIgUHJv
Y2VzcyB3aXRoIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YSgpLgorICoKKyAqIFJl
dHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlIHVzZXIgZGF0YSBvZiBAbWVudSwgb3IgJU5VTEwg
aWYgQG1lbnUgZG9lc24ndCBoYXZlIHVzZXIgZGF0YQorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwor
R1ZhcmlhbnQqIHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X3VzZXJfZGF0YShXZWJLaXRDb250ZXh0
TWVudSogbWVudSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQ09OVEVY
VF9NRU5VKG1lbnUpLCBudWxscHRyKTsKKworICAgIHJldHVybiBtZW51LT5wcml2LT51c2VyRGF0
YS5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb250ZXh0TWVudS5oCmluZGV4IDIyZjRiZWYuLjliNTBjNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaApAQCAt
MTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lm
ICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJ
TEFUSU9OKQorI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChX
RUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hf
SU5TSURFX18pCiAjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgogI2VuZGlmCiAKQEAgLTEwNSw2ICsxMDUsMTMgQEAgd2Via2l0X2NvbnRl
eHRfbWVudV9yZW1vdmUgICAgICAgICAgICAgICAoV2ViS2l0Q29udGV4dE1lbnUgICAgICptZW51
LAogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZV9hbGwgICAgICAg
ICAgIChXZWJLaXRDb250ZXh0TWVudSAgICAgKm1lbnUpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YSAgICAgICAgKFdlYktpdENvbnRleHRNZW51
ICAgICAqbWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdW
YXJpYW50ICAgICAgICAgICAgICAqdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBHVmFyaWFudCAq
Cit3ZWJraXRfY29udGV4dF9tZW51X2dldF91c2VyX2RhdGEgICAgICAgIChXZWJLaXRDb250ZXh0
TWVudSAgICAgKm1lbnUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rp
b25zLmgKaW5kZXggYzhjOWEwZC4uY2YxNTVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKQEAg
LTE3LDcgKzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNp
ZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01Q
SUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9I
X0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggZGZi
MGE3NC4uYzgxNGQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjYsOSArMjYsMTUg
QEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1l
bnVGcm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJlZiBwcm9wb3NlZE1lbnUsIFdL
QXJyYXlSZWYqLCBXS0hpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tUeXBlUmVmIC8q
IHVzZXJEYXRhICovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorc3RhdGljIHZvaWQgZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJlZiBwcm9wb3NlZE1l
bnUsIFdLQXJyYXlSZWYqLCBXS0hpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHdlYmtpdFdlYlZp
ZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgdG9JbXBs
KHByb3Bvc2VkTWVudSksIHRvSW1wbChoaXRUZXN0UmVzdWx0KSk7CisgICAgR1JlZlB0cjxHVmFy
aWFudD4gdmFyaWFudDsKKyAgICBpZiAodXNlckRhdGEpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKHVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgQ1N0cmlu
ZyB1c2VyRGF0YVN0cmluZyA9IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4odXNlckRh
dGEpKS0+c3RyaW5nKCkudXRmOCgpOworICAgICAgICB2YXJpYW50ID0gYWRvcHRHUmVmKGdfdmFy
aWFudF9wYXJzZShudWxscHRyLCB1c2VyRGF0YVN0cmluZy5kYXRhKCksIHVzZXJEYXRhU3RyaW5n
LmRhdGEoKSArIHVzZXJEYXRhU3RyaW5nLmxlbmd0aCgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgfQorICAgIHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdFQktJVF9XRUJfVklF
VyhjbGllbnRJbmZvKSwgdG9JbXBsKHByb3Bvc2VkTWVudSksIHRvSW1wbChoaXRUZXN0UmVzdWx0
KSwgdmFyaWFudC5nZXQoKSk7CiB9CiAKIHZvaWQgYXR0YWNoQ29udGV4dE1lbnVDbGllbnRUb1Zp
ZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKaW5kZXggNzVkNjBkNy4u
MzNlMzEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJ
REVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dF
QktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRl
ZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3
ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGb3J3YXJk
RGVjbGFyYXRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRG
b3J3YXJkRGVjbGFyYXRpb25zLmgKaW5kZXggYTk4OThkZS4uNTQzZjRiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9yd2FyZERlY2xhcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcndhcmRE
ZWNsYXJhdGlvbnMuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9J
TlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19X
RUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dl
YmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgK
aW5kZXggZWQ2ZGMyYi4uNzE4NTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaApAQCAtMTcsNyArMTcsNyBAQAog
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VC
S0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2lmICFk
ZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJy
b3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggZjYyZGU0MS4uZmE2NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTE4OTEsNyArMTg5
MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKEd0a01lbnVTaGVsbCosIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxz
W0NPTlRFWFRfTUVOVV9ESVNNSVNTRURdLCAwLCBOVUxMKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJW
aWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBBUEk6OkFycmF5
KiBwcm9wb3NlZE1lbnUsIFdlYkhpdFRlc3RSZXN1bHQqIHdlYkhpdFRlc3RSZXN1bHQpCit2b2lk
IHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IEFQSTo6QXJyYXkqIHByb3Bvc2VkTWVudSwgV2ViSGl0VGVzdFJlc3VsdCogd2ViSGl0VGVzdFJl
c3VsdCwgR1ZhcmlhbnQqIHVzZXJEYXRhKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpOwogICAgIFdlYkNvbnRleHRN
ZW51UHJveHlHdGsqIGNvbnRleHRNZW51UHJveHkgPSB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2
ZUNvbnRleHRNZW51UHJveHkod2ViVmlld0Jhc2UpOwpAQCAtMTkxNyw2ICsxOTE3LDkgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBBUEk6OkFycmF5KiBwcm9wb3MKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IGhp
dFRlc3RSZXN1bHQgPSBhZG9wdEdSZWYod2Via2l0SGl0VGVzdFJlc3VsdENyZWF0ZShkYXRhKSk7
CiAgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gY29udGV4dE1lbnVFdmVudCh3ZWJraXRXZWJWaWV3
QmFzZVRha2VDb250ZXh0TWVudUV2ZW50KHdlYlZpZXdCYXNlKSk7CiAKKyAgICBpZiAodXNlckRh
dGEpCisgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YShXRUJLSVRfQ09O
VEVYVF9NRU5VKGNvbnRleHRNZW51LmdldCgpKSwgdXNlckRhdGEpOworCiAgICAgZ2Jvb2xlYW4g
cmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NPTlRFWFRf
TUVOVV0sIDAsIGNvbnRleHRNZW51LmdldCgpLCBjb250ZXh0TWVudUV2ZW50LmdldCgpLCBoaXRU
ZXN0UmVzdWx0LmdldCgpLCAmcmV0dXJuVmFsdWUpOwogICAgIGlmIChyZXR1cm5WYWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IGM2ZGNjYWQuLmU3OTY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNTMs
NyArNTMsNyBAQCB2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2Vi
VmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdAogdm9pZCB3ZWJraXRXZWJWaWV3UmVt
b3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIpOwogYm9vbCB3ZWJraXRXZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZp
ZXcqKTsKIGJvb2wgd2Via2l0V2ViVmlld0xlYXZlRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7
Ci12b2lkIHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqLCBB
UEk6OkFycmF5KiBwcm9wb3NlZE1lbnUsIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCopOwordm9p
ZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiwgQVBJOjpB
cnJheSogcHJvcG9zZWRNZW51LCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQqLCBHVmFyaWFudCop
Owogdm9pZCB3ZWJraXRXZWJWaWV3U3VibWl0Rm9ybVJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdl
YktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3SGFuZGxlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSopOwogdm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0
ZWN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCmluZGV4IDA1NTQwMDAuLjM0OGY0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dt
bApAQCAtNTMsNiArNTMsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJQ
YWdlLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGcmFtZS54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0U2NyaXB0V29ybGQueG1sIi8+CisgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYkhpdFRlc3RSZXN1bHQueG1sIi8+CiAgIDwv
Y2hhcHRlcj4KIAogICA8aW5kZXggaWQ9ImluZGV4LWFsbCI+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dAppbmRleCA2YmU3MDM5Li4zZjliZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQK
QEAgLTk4Miw2ICs5ODIsOCBAQCB3ZWJraXRfY29udGV4dF9tZW51X2xhc3QKIHdlYmtpdF9jb250
ZXh0X21lbnVfZ2V0X2l0ZW1fYXRfcG9zaXRpb24KIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3Zl
CiB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZV9hbGwKK3dlYmtpdF9jb250ZXh0X21lbnVfc2V0
X3VzZXJfZGF0YQord2Via2l0X2NvbnRleHRfbWVudV9nZXRfdXNlcl9kYXRhCiAKIDxTVUJTRUNU
SU9OIFN0YW5kYXJkPgogV2ViS2l0Q29udGV4dE1lbnVDbGFzcwpAQCAtMTE2MCwzICsxMTYyLDIy
IEBAIFdFQktJVF9TQ1JJUFRfV09STERfR0VUX0NMQVNTCiBXZWJLaXRTY3JpcHRXb3JsZFByaXZh
dGUKIHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+
Cis8RklMRT5XZWJLaXRXZWJIaXRUZXN0UmVzdWx0PC9GSUxFPgorV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdAord2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X25vZGUKKworPFNVQlNFQ1RJT04g
U3RhbmRhcmQ+CitXZWJLaXRXZWJIaXRUZXN0UmVzdWx0Q2xhc3MKK1dFQktJVF9UWVBFX1dFQl9I
SVRfVEVTVF9SRVNVTFQKK1dFQktJVF9XRUJfSElUX1RFU1RfUkVTVUxUCitXRUJLSVRfSVNfV0VC
X0hJVF9URVNUX1JFU1VMVAorV0VCS0lUX1dFQl9ISVRfVEVTVF9SRVNVTFRfQ0xBU1MKK1dFQktJ
VF9JU19XRUJfSElUX1RFU1RfUkVTVUxUX0NMQVNTCitXRUJLSVRfV0VCX0hJVF9URVNUX1JFU1VM
VF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlCit3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZQorPC9TRUNUSU9O
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLnR5cGVzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLnR5cGVzCmluZGV4IDM3NWQxNWIuLjgxOWFmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTI4
LDMgKzI4LDQgQEAgd2Via2l0X2NyZWRlbnRpYWxfZ2V0X3R5cGUKIHdlYmtpdF9mcmFtZV9nZXRf
dHlwZQogd2Via2l0X2NlcnRpZmljYXRlX2luZm9fZ2V0X3R5cGUKIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9nZXRfdHlwZQord2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X3R5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODE2NGI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYkhpdFRlc3RSZXN1bHQuY3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
S2l0V2ViSGl0VGVzdFJlc3VsdC5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKKyNpbmNsdWRlICJX
ZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUu
aCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBX
ZWJLaXRXZWJIaXRUZXN0UmVzdWx0CisgKiBAU2hvcnRfZGVzY3JpcHRpb246IFJlc3VsdCBvZiBh
IEhpdCBUZXN0IChXZWIgUHJvY2VzcyBFeHRlbnNpb25zKQorICogQFRpdGxlOiBXZWJLaXRXZWJI
aXRUZXN0UmVzdWx0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRIaXRUZXN0UmVzdWx0LCAjV2ViS2l0
V2ViUGFnZQorICoKKyAqIFdlYktpdFdlYkhpdFRlc3RSZXN1bHQgZXh0ZW5kcyAjV2ViS2l0SGl0
VGVzdFJlc3VsdCB0byBwcm92aWRlIGluZm9ybWF0aW9uCisgKiBhYm91dCB0aGUgI1dlYktpdERP
TU5vZGUgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBIaXQgVGVzdC4KKyAqCisgKiBTaW5jZTog
Mi44CisgKi8KKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9OT0RFCit9OworCitz
dHJ1Y3QgX1dlYktpdFdlYkhpdFRlc3RSZXN1bHRQcml2YXRlIHsKKyAgICBHUmVmUHRyPFdlYktp
dERPTU5vZGU+IG5vZGU7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViSGl0VGVz
dFJlc3VsdCwgd2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHQsIFdFQktJVF9UWVBFX0hJVF9URVNU
X1JFU1VMVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViSGl0VGVzdFJlc3VsdEdldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdCogd2ViSGl0VGVzdFJl
c3VsdCA9IFdFQktJVF9XRUJfSElUX1RFU1RfUkVTVUxUKG9iamVjdCk7CisKKyAgICBzd2l0Y2gg
KHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9OT0RFOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmpl
Y3QodmFsdWUsIHdlYmtpdF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2dldF9ub2RlKHdlYkhpdFRlc3RS
ZXN1bHQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViSGl0VGVzdFJlc3VsdFNldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdCogd2ViSGl0VGVz
dFJlc3VsdCA9IFdFQktJVF9XRUJfSElUX1RFU1RfUkVTVUxUKG9iamVjdCk7CisKKyAgICBzd2l0
Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9OT0RFOiB7CisgICAgICAgIGdwb2ludGVyIG5v
ZGUgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOworICAgICAgICB3ZWJIaXRUZXN0UmVzdWx0
LT5wcml2LT5ub2RlID0gbm9kZSA/IFdFQktJVF9ET01fTk9ERShub2RlKSA6IG51bGxwdHI7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdl
YktpdFdlYkhpdFRlc3RSZXN1bHRDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBn
T2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3Mt
PmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYkhpdFRlc3RSZXN1bHRHZXRQcm9wZXJ0eTsKKyAgICBn
T2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYkhpdFRlc3RSZXN1bHRTZXRQcm9w
ZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkhpdFRlc3RSZXN1bHQ6bm9kZToKKyAg
ICAgKgorICAgICAqIFRoZSAjV2ViS2l0RE9NTm9kZQorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJP
UF9OT0RFLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgIm5vZGUi
LAorICAgICAgICAgICAgXygiTm9kZSIpLAorICAgICAgICAgICAgXygiVGhlIFdlYktpdERPTU5v
ZGUiKSwKKyAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9OT0RFLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NP
TlNUUlVDVF9PTkxZKSkpOworfQorCitXZWJLaXRXZWJIaXRUZXN0UmVzdWx0KiB3ZWJraXRXZWJI
aXRUZXN0UmVzdWx0Q3JlYXRlKGNvbnN0IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCYgaGl0
VGVzdFJlc3VsdCkKK3sKKyAgICB1bnNpZ25lZCBjb250ZXh0ID0gV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DT05URVhUX0RPQ1VNRU5UOworICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxp
bmtVUkwoKS5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DT05URVhUX0xJTks7CisgICAgaWYgKCFoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VV
UkwoKS5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DT05URVhUX0lNQUdFOworICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJM
KCkuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0IHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRf
Q09OVEVYVF9NRURJQTsKKyAgICBpZiAoaGl0VGVzdFJlc3VsdC5jb3JlSGl0VGVzdFJlc3VsdCgp
LmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNU
X1JFU1VMVF9DT05URVhUX0VESVRBQkxFOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmNvcmVIaXRU
ZXN0UmVzdWx0KCkuc2Nyb2xsYmFyKCkpCisgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9U
RVNUX1JFU1VMVF9DT05URVhUX1NDUk9MTEJBUjsKKyAgICBpZiAoaGl0VGVzdFJlc3VsdC5pc1Nl
bGVjdGVkKCkpCisgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05U
RVhUX1NFTEVDVElPTjsKKworICAgIHJldHVybiBXRUJLSVRfV0VCX0hJVF9URVNUX1JFU1VMVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VMVCwKKyAgICAgICAgImNv
bnRleHQiLCBjb250ZXh0LAorICAgICAgICAibGluay11cmkiLCBjb250ZXh0ICYgV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DT05URVhUX0xJTksgPyBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VS
TCgpLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLAorICAgICAgICAiaW1hZ2UtdXJpIiwgY29udGV4
dCAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9JTUFHRSA/IGhpdFRlc3RSZXN1bHQu
YWJzb2x1dGVJbWFnZVVSTCgpLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLAorICAgICAgICAibWVk
aWEtdXJpIiwgY29udGV4dCAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9NRURJQSA/
IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRy
LAorICAgICAgICAibGluay10aXRsZSIsICFoaXRUZXN0UmVzdWx0LmxpbmtUaXRsZSgpLmlzRW1w
dHkoKSA/IGhpdFRlc3RSZXN1bHQubGlua1RpdGxlKCkudXRmOCgpLmRhdGEoKSA6IG51bGxwdHIs
CisgICAgICAgICJsaW5rLWxhYmVsIiwgIWhpdFRlc3RSZXN1bHQubGlua0xhYmVsKCkuaXNFbXB0
eSgpID8gaGl0VGVzdFJlc3VsdC5saW5rTGFiZWwoKS51dGY4KCkuZGF0YSgpIDogbnVsbHB0ciwK
KyAgICAgICAgIm5vZGUiLCBraXQoaGl0VGVzdFJlc3VsdC5jb3JlSGl0VGVzdFJlc3VsdCgpLmlu
bmVyTm9uU2hhcmVkTm9kZSgpKSwKKyAgICAgICAgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2dldF9ub2RlOgorICogQGhpdF90ZXN0X3Jlc3VsdDog
YSAjV2ViS2l0V2ViSGl0VGVzdFJlc3VsdAorICoKKyAqIEdldCB0aGUgI1dlYktpdERPTU5vZGUg
aW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBIaXQgVGVzdC4KKyAqCisgKiBSZXR1cm5zOiAodHJh
bnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTU5vZGUKKyAqCisgKiBTaW5jZTogMi44CisgKi8KK1dl
YktpdERPTU5vZGUqIHdlYmtpdF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2dldF9ub2RlKFdlYktpdFdl
YkhpdFRlc3RSZXN1bHQqIHdlYkhpdFRlc3RSZXN1bHQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVRfVEVTVF9SRVNVTFQod2ViSGl0VGVzdFJlc3VsdCksIG51
bGxwdHIpOworCisgICAgcmV0dXJuIHdlYkhpdFRlc3RSZXN1bHQtPnByaXYtPm5vZGUuZ2V0KCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkhpdFRlc3RSZXN1bHQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2U4NDdkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYkhpdFRlc3RSZXN1bHQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5
IDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0X2gKKyNkZWZpbmUg
V2ViS2l0V2ViSGl0VGVzdFJlc3VsdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
SGl0VGVzdFJlc3VsdC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb20uaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9ISVRfVEVTVF9SRVNVTFQgICAg
ICAgICAgICAod2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X3R5cGUoKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9ISVRfVEVTVF9SRVNVTFQob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VMVCwgV2Vi
S2l0V2ViSGl0VGVzdFJlc3VsdCkpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfSElUX1RFU1RfUkVT
VUxUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9ISVRfVEVTVF9SRVNVTFQpKQorI2RlZmluZSBXRUJLSVRfV0VCX0hJVF9URVNU
X1JFU1VMVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJfSElUX1RFU1RfUkVTVUxULCBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0
Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX0hJVF9URVNUX1JFU1VMVF9DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfSElU
X1RFU1RfUkVTVUxUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9ISVRfVEVTVF9SRVNVTFRfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVf
V0VCX0hJVF9URVNUX1JFU1VMVCwgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdENsYXNzKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhpdFRlc3RSZXN1bHQgICAgICAgIFdlYktpdFdlYkhpdFRl
c3RSZXN1bHQ7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViSGl0VGVzdFJlc3VsdENsYXNzICAg
V2ViS2l0V2ViSGl0VGVzdFJlc3VsdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlIFdlYktpdFdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOworCitzdHJ1
Y3QgX1dlYktpdFdlYkhpdFRlc3RSZXN1bHQgeworICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgcGFy
ZW50OworCisgICAgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUgKnByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdFdlYkhpdFRlc3RSZXN1bHRDbGFzcyB7CisgICAgV2ViS2l0SGl0VGVzdFJl
c3VsdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkg
KHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9oaXRfdGVzdF9y
ZXN1bHRfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdERPTU5vZGUgKgord2Vi
a2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X25vZGUgKFdlYktpdFdlYkhpdFRlc3RSZXN1bHQg
KmhpdF90ZXN0X3Jlc3VsdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkhpdFRlc3RSZXN1bHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzhjMDc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkhpdFRlc3RSZXN1bHRQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYkhpdFRlc3RSZXN1bHRQcml2
YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGVfaAorCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViSGl0
VGVzdFJlc3VsdC5oIgorCitXZWJLaXRXZWJIaXRUZXN0UmVzdWx0KiB3ZWJraXRXZWJIaXRUZXN0
UmVzdWx0Q3JlYXRlKGNvbnN0IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Jik7
CisKKyNlbmRpZiAvLyBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNWE5ZDgzNC4uMmRjNjBiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApAQCAtMjAsMTIgKzIwLDE1IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZS5oIgogCisjaW5jbHVkZSAiQVBJ
QXJyYXkuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJJbW11dGFibGVE
aWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJXS0J1
bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUZyYW1lLmgiCisjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKKyNpbmNsdWRlICJXZWJL
aXRDb250ZXh0TWVudVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Eb2N1bWVudFByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRGcmFtZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRN
YXJzaGFsLmgiCkBAIC0zMyw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0V29ybGRQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJIaXRUZXN0
UmVzdWx0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KQEAgLTUw
LDYgKzU0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBlbnVtIHsKICAgICBET0NVTUVO
VF9MT0FERUQsCiAgICAgU0VORF9SRVFVRVNULAorICAgIENPTlRFWFRfTUVOVSwKIAogICAgIExB
U1RfU0lHTkFMCiB9OwpAQCAtMjIzLDYgKzIyOCwzNSBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9h
ZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50
NgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdl
KFN0cmluZzo6ZnJvbVVURjgoIldlYlBhZ2UuRGlkRmFpbExvYWRGb3JSZXNvdXJjZSIpLCBJbW11
dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIHdrSGl0VGVzdFJlc3VsdCwgV0tBcnJheVJlZiB3
a0RlZmF1bHRNZW51LCBXS0FycmF5UmVmKiB3a05ld01lbnUsIFdLVHlwZVJlZiogd2tVc2VyRGF0
YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBHUmVmUHRyPFdlYktpdENvbnRleHRN
ZW51PiBjb250ZXh0TWVudSA9IGFkb3B0R1JlZih3ZWJraXRDb250ZXh0TWVudUNyZWF0ZSh0b0lt
cGwod2tEZWZhdWx0TWVudSkpKTsKKyAgICBHUmVmUHRyPFdlYktpdFdlYkhpdFRlc3RSZXN1bHQ+
IHdlYkhpdFRlc3RSZXN1bHQgPSBhZG9wdEdSZWYod2Via2l0V2ViSGl0VGVzdFJlc3VsdENyZWF0
ZSgqdG9JbXBsKHdrSGl0VGVzdFJlc3VsdCkpKTsKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsK
KyAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfUEFHRShjbGllbnRJbmZvKSwgc2lnbmFsc1tD
T05URVhUX01FTlVdLCAwLCBjb250ZXh0TWVudS5nZXQoKSwgd2ViSGl0VGVzdFJlc3VsdC5nZXQo
KSwgJnJldHVyblZhbHVlKTsKKyAgICBpZiAoR1ZhcmlhbnQqIHVzZXJEYXRhID0gd2Via2l0X2Nv
bnRleHRfbWVudV9nZXRfdXNlcl9kYXRhKGNvbnRleHRNZW51LmdldCgpKSkgeworICAgICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBkYXRhU3RyaW5nKGdfdmFyaWFudF9wcmludCh1c2VyRGF0YSwgVFJV
RSkpOworICAgICAgICAqd2tVc2VyRGF0YSA9IHN0YXRpY19jYXN0PFdLVHlwZVJlZj4oV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YVN0cmluZy5nZXQoKSkpOworICAgIH0KKworICAg
IGlmIChyZXR1cm5WYWx1ZSkgeworICAgICAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBjb250
ZXh0TWVudUl0ZW1zOworICAgICAgICB3ZWJraXRDb250ZXh0TWVudVBvcHVsYXRlKGNvbnRleHRN
ZW51LmdldCgpLCBjb250ZXh0TWVudUl0ZW1zKTsKKworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4gbmV3TWVudUl0ZW1zOworICAgICAgICBuZXdNZW51SXRlbXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb250ZXh0TWVudUl0ZW1zLnNpemUoKSk7CisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgaXRlbSA6IGNvbnRleHRNZW51SXRlbXMpCisgICAgICAgICAgICBuZXdNZW51SXRl
bXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGl0ZW0pKTsKKwor
ICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gYXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RG
Ojptb3ZlKG5ld01lbnVJdGVtcykpOworICAgICAgICAqd2tOZXdNZW51ID0gdG9BUEkoYXJyYXku
Z2V0KCkpOworICAgICAgICBXS1JldGFpbigqd2tOZXdNZW51KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBXS1JldGFpbih3a0RlZmF1bHRNZW51KTsKKyAgICAgICAgKndrTmV3TWVudSA9IHdrRGVm
YXVsdE1lbnU7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJQYWdlR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBhcmFtU3BlYykKIHsKICAgICBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlID0gV0VCS0lUX1dF
Ql9QQUdFKG9iamVjdCk7CkBAIC0zMDUsNiArMzM5LDM2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfcGFnZV9jbGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCiAgICAgICAgIEdf
VFlQRV9CT09MRUFOLCAyLAogICAgICAgICBXRUJLSVRfVFlQRV9VUklfUkVRVUVTVCwKICAgICAg
ICAgV0VCS0lUX1RZUEVfVVJJX1JFU1BPTlNFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlBhZ2U6OmNvbnRleHQtbWVudToKKyAgICAgKiBAd2ViX3BhZ2U6IHRoZSAjV2ViS2l0V2ViUGFn
ZSBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAY29udGV4dF9tZW51OiB0
aGUgcHJvcG9zZWQgI1dlYktpdENvbnRleHRNZW51CisgICAgICogQGhpdF90ZXN0X3Jlc3VsdDog
YSAjV2ViS2l0V2ViSGl0VGVzdFJlc3VsdAorICAgICAqCisgICAgICogRW1taXRlZCBiZWZvcmUg
YSBjb250ZXh0IG1lbnUgaXMgZGlzcGxheWVkIGluIHRoZSBVSSBQcm9jZXNzIHRvCisgICAgICog
Z2l2ZSB0aGUgYXBwbGljYXRpb24gYSBjaGFuY2UgdG8gY3VzdG9taXplIHRoZSBwcm9wb3NlZCBt
ZW51LAorICAgICAqIGJ1aWxkIGl0cyBvd24gY29udGV4dCBtZW51IG9yIHBhc3MgdXNlciBkYXRh
IHRvIHRoZSBVSSBQcm9jZXNzLgorICAgICAqIFRoaXMgc2lnbmFsIGlzIHVzZWZ1bCB3aGVuIHRo
ZSBpbmZvcm1hdGlvbiBhdmFpbGFibGUgaW4gdGhlIFVJIFByb2Nlc3MKKyAgICAgKiBpcyBub3Qg
ZW5vdWdoIHRvIGJ1aWxkIG9yIGN1c3RvbWl6ZSB0aGUgY29udGV4dCBtZW51LCBmb3IgZXhhbXBs
ZSwgdG8KKyAgICAgKiBhZGQgbWVudSBlbnRyaWVzIGRlcGVuZGluZyBvbiB0aGUgI1dlYktpdERP
TU5vZGUgYXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZQorICAgICAqIEBoaXRfdGVzdF9yZXN1bHQu
IE90aGVyd2lzZSwgaXQncyByZWNvbW1lbmVkIHRvIHVzZSAjV2ViS2l0V2ViVmlldzo6Y29udGV4
dC1tZW51CisgICAgICogc2lnbmFsIGluc3RlYWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAl
VFJVRSBpZiB0aGUgcHJvcG9zZWQgQGNvbnRleHRfbWVudSBoYXMgYmVlbiBtb2RpZmllZCwgb3Ig
JUZBTFNFIG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjgKKyAgICAgKi8KKyAg
ICBzaWduYWxzW0NPTlRFWFRfTUVOVV0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJjb250ZXh0
LW1lbnUiLAorICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lH
TkFMX1JVTl9MQVNULAorICAgICAgICAwLAorICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90
cnVlX2hhbmRsZWQsIDAsCisgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9P
QkpFQ1QsCisgICAgICAgIEdfVFlQRV9CT09MRUFOLCAyLAorICAgICAgICBXRUJLSVRfVFlQRV9D
T05URVhUX01FTlUsCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9ISVRfVEVTVF9SRVNVTFQpOwog
fQogCiBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2Up
CkBAIC0zNzEsNiArNDM1LDE1IEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUo
V2ViUGFnZSogd2ViUGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9h
ZENsaWVudCh0b0FQSSh3ZWJQYWdlKSwgJnJlc291cmNlTG9hZENsaWVudC5iYXNlKTsKIAorICAg
IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50VjAgY29udGV4dE1lbnVDbGllbnQgPSB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIDAsIC8vIHZlcnNpb24KKyAgICAgICAgICAgIHBhZ2UsIC8v
IGNsaWVudEluZm8KKyAgICAgICAgfSwKKyAgICAgICAgZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVs
dE1lbnUsCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCh0b0FQ
SSh3ZWJQYWdlKSwgJmNvbnRleHRNZW51Q2xpZW50LmJhc2UpOworCiAgICAgcmV0dXJuIHBhZ2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXgg
MmEwODgxZS4uNmYxMWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0
ZW5zaW9uLmgKQEAgLTI2LDEyICsyNiwxNiBAQAogCiAjZGVmaW5lIF9fV0VCS0lUX1dFQl9FWFRF
TlNJT05fSF9JTlNJREVfXwogCisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudS5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdEZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHRXb3JsZC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkV4dGVuc2lvbi5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFn
ZS5oPgogCiAjdW5kZWYgX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmI1ZjgzNy4uNzIy
OGU0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDE0LTExLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgY29udGV4dCBtZW51IEFQSSB0byBX
ZWIgUHJvY2VzcyBFeHRlbnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzgzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdHMgY2FzZXMgZm9yIFdlYktpdFdlYlBhZ2U6OmNvbnRleHQt
bWVudSBzaWduYWwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudVdlYkV4dGVuc2lv
bk1lbnUpOgorICAgICAgICAodGVzdENvbnRleHRNZW51V2ViRXh0ZW5zaW9uTm9kZSk6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKHNlcmlhbGl6ZUNvbnRleHRNZW51KToK
KyAgICAgICAgKHNlcmlhbGl6ZU5vZGUpOgorICAgICAgICAoY29udGV4dE1lbnVDYWxsYmFjayk6
CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKwogMjAxNC0xMC0zMSAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBObyB3YXkgdG8gc3BlY2lmeSB0
YXJnZXQgb3Mgb3IgYXJjaGl0ZWN0dXJlIHdoZW4gdXNpbmcgdGhlIC0tbm8tY29weSBvcHRpb24g
d2l0aCBydW4tanNjLXN0cmVzcy10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCA0ZGY3MmJlLi41
MmRmMmUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiBjbGFzcyBDb250ZXh0TWVu
dVRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CkBAIC04ODIsOCArODgzLDE2NCBAQCBzdGF0aWMg
dm9pZCB0ZXN0Q29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnMoQ29udGV4dE1lbnVTbWFydFNlcGFy
YXRvcnNUZXN0KiB0ZXN0LAogICAgIGdfYXNzZXJ0KCFHVEtfSVNfU0VQQVJBVE9SX01FTlVfSVRF
TShpdGVtKSAmJiAhZ3RrX3dpZGdldF9nZXRfdmlzaWJsZShpdGVtKSk7CiB9CiAKK2NsYXNzIENv
bnRleHRNZW51V2ViRXh0ZW5zaW9uVGVzdDogcHVibGljIENvbnRleHRNZW51VGVzdCB7CitwdWJs
aWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShDb250ZXh0TWVudVdlYkV4dGVuc2lvblRl
c3QpOworCisgICAgdm9pZCBkZXNlcmlhbGl6ZUNvbnRleHRNZW51RnJvbVVzZXJEYXRhKEdWYXJp
YW50KiB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIG1fYWN0aW9ucy5jbGVhcigpOworICAgICAg
ICBpZiAoIXVzZXJEYXRhKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEdWYXJpYW50
SXRlciBpdGVyOworICAgICAgICBnX3ZhcmlhbnRfaXRlcl9pbml0KCZpdGVyLCB1c2VyRGF0YSk7
CisgICAgICAgIG1fYWN0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdfdmFyaWFudF9pdGVy
X25fY2hpbGRyZW4oJml0ZXIpKTsKKworICAgICAgICB1aW50MzJfdCBpdGVtOworICAgICAgICB3
aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dCgmaXRlciwgInUiLCAmaXRlbSkpCisgICAgICAgICAg
ICBtX2FjdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PFdlYktpdENvbnRleHRNZW51
QWN0aW9uPihpdGVtKSk7CisgICAgfQorCisgICAgYm9vbCBjb250ZXh0TWVudShXZWJLaXRDb250
ZXh0TWVudSogbWVudSwgR2RrRXZlbnQqLCBXZWJLaXRIaXRUZXN0UmVzdWx0KikKKyAgICB7Cisg
ICAgICAgIGRlc2VyaWFsaXplQ29udGV4dE1lbnVGcm9tVXNlckRhdGEod2Via2l0X2NvbnRleHRf
bWVudV9nZXRfdXNlcl9kYXRhKG1lbnUpKTsKKyAgICAgICAgR0xpc3QqIGl0ZW1zID0gd2Via2l0
X2NvbnRleHRfbWVudV9nZXRfaXRlbXMobWVudSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
Z19saXN0X2xlbmd0aChpdGVtcyksID09LCBtX2FjdGlvbnMuc2l6ZSgpKTsKKworICAgICAgICB1
bnNpZ25lZCBhY3Rpb25JbmRleCA9IDA7CisgICAgICAgIGZvciAoR0xpc3QqIGl0ID0gaXRlbXM7
IGl0OyBpdCA9IGdfbGlzdF9uZXh0KGl0KSkgeworICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1l
bnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGl0LT5kYXRhKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdG9j
a19hY3Rpb24oaXRlbSksID09LCBtX2FjdGlvbnNbYWN0aW9uSW5kZXgrK10pOworICAgICAgICB9
CisKKyAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgVmVjdG9yPFdlYktpdENvbnRleHRNZW51QWN0aW9uPiBtX2FjdGlvbnM7Cit9Owor
CitzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25NZW51KENvbnRleHRNZW51
V2ViRXh0ZW5zaW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+
PGJvZHk+V2ViS2l0R1RLKyBDb250ZXh0IG1lbnUgdGVzdHM8YnI+IgorICAgICAgICAiPGEgc3R5
bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDoxMCcgaHJlZj0naHR0cDovL3d3dy53
ZWJraXRndGsub3JnJz5XZWJLaXRHVEsrIFdlYnNpdGU8L2E+PC9ib2R5PjwvaHRtbD4iLAorICAg
ICAgICAiQ29udGV4dE1lbnVUZXN0RGVmYXVsdCIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworCisgICAgLy8gRGVmYXVsdCBjb250ZXh0IG1lbnUuCisgICAgdGVzdC0+c2hv
d0NvbnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDEsIDEpOworICAgIGdf
YXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zLnNpemUoKSwgPT0sIDQpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zWzBdLCA9PSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9B
Q1RJT05fR09fQkFDSyk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX2FjdGlvbnNbMV0s
ID09LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9HT19GT1JXQVJEKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KHRlc3QtPm1fYWN0aW9uc1syXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OX1NUT1ApOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zWzNdLCA9PSwg
V0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUkVMT0FEKTsKKworICAgIC8vIExpbmsgbWVudS4K
KyAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQo
MSwgMTEpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zLnNpemUoKSwgPT0s
IDQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zWzBdLCA9PSwgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9MSU5LKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPm1fYWN0aW9uc1sxXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5fTElO
S19JTl9ORVdfV0lORE9XKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fYWN0aW9uc1sy
XSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0xJTktfVE9fRElTSyk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX2FjdGlvbnNbM10sID09LCBXRUJLSVRfQ09O
VEVYVF9NRU5VX0FDVElPTl9DT1BZX0xJTktfVE9fQ0xJUEJPQVJEKTsKKworICAgIC8vIEN1c3Rv
bSBtZW51LgorICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIs
ICJDb250ZXh0TWVudVRlc3RDdXN0b20iKTsKKyAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVBbmRX
YWl0VW50aWxGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25z
LnNpemUoKSwgPT0sIDQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zWzBd
LCA9PSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fU1RPUCk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5tX2FjdGlvbnNbMV0sID09LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9S
RUxPQUQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zWzJdLCA9PSwgV0VC
S0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTk9fQUNUSU9OKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPm1fYWN0aW9uc1szXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0lOU1BF
Q1RfRUxFTUVOVCk7CisKKyAgICAvLyBNZW51IGNsZWFyZWQgYnkgdGhlIHdlYiBwcm9jZXNzLgor
ICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIsICJDb250ZXh0
TWVudVRlc3RDbGVhciIpOworICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZp
bmlzaGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX2FjdGlvbnMuc2l6ZSgpLCA9
PSwgMCk7Cit9CisKK2NsYXNzIENvbnRleHRNZW51V2ViRXh0ZW5zaW9uTm9kZVRlc3Q6IHB1Ymxp
YyBDb250ZXh0TWVudVRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
Q29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlVGVzdCk7CisKKyAgICBzdHJ1Y3QgTm9kZSB7Cisg
ICAgICAgIGVudW0geworICAgICAgICAgICAgTm9kZVVua25vd24gPSAwLAorICAgICAgICAgICAg
Tm9kZUVsZW1lbnQgPSAxLAorICAgICAgICAgICAgTm9kZVRleHQgPSAzCisgICAgICAgIH07Cisg
ICAgICAgIHR5cGVkZWYgdW5zaWduZWQgVHlwZTsKKworICAgICAgICBDU3RyaW5nIG5hbWU7Cisg
ICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgQ1N0cmluZyBjb250ZW50czsKKyAgICAgICAgQ1N0
cmluZyBwYXJlbnROYW1lOworICAgIH07CisKKyAgICB2b2lkIGRlc2VyaWFsaXplTm9kZUZyb21V
c2VyRGF0YShHVmFyaWFudCogdXNlckRhdGEpCisgICAgeworICAgICAgICBHVmFyaWFudEl0ZXIg
aXRlcjsKKyAgICAgICAgZ192YXJpYW50X2l0ZXJfaW5pdCgmaXRlciwgdXNlckRhdGEpOworCisg
ICAgICAgIGNvbnN0IGNoYXIqIGtleTsKKyAgICAgICAgR1ZhcmlhbnQqIHZhbHVlOworICAgICAg
ICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dCgmaXRlciwgInsmc3Z9IiwgJmtleSwgJnZhbHVl
KSkgeworICAgICAgICAgICAgaWYgKCFzdHJjbXAoa2V5LCAiTmFtZSIpICYmIGdfdmFyaWFudF9j
bGFzc2lmeSh2YWx1ZSkgPT0gR19WQVJJQU5UX0NMQVNTX1NUUklORykKKyAgICAgICAgICAgICAg
ICBtX25vZGUubmFtZSA9IGdfdmFyaWFudF9nZXRfc3RyaW5nKHZhbHVlLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiVHlwZSIpICYmIGdfdmFyaWFudF9jbGFz
c2lmeSh2YWx1ZSkgPT0gR19WQVJJQU5UX0NMQVNTX1VJTlQzMikKKyAgICAgICAgICAgICAgICBt
X25vZGUudHlwZSA9IGdfdmFyaWFudF9nZXRfdWludDMyKHZhbHVlKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKCFzdHJjbXAoa2V5LCAiQ29udGVudHMiKSAmJiBnX3ZhcmlhbnRfY2xhc3NpZnkodmFs
dWUpID09IEdfVkFSSUFOVF9DTEFTU19TVFJJTkcpCisgICAgICAgICAgICAgICAgbV9ub2RlLmNv
bnRlbnRzID0gZ192YXJpYW50X2dldF9zdHJpbmcodmFsdWUsIG51bGxwdHIpOworICAgICAgICAg
ICAgZWxzZSBpZiAoIXN0cmNtcChrZXksICJQYXJlbnQiKSAmJiBnX3ZhcmlhbnRfY2xhc3NpZnko
dmFsdWUpID09IEdfVkFSSUFOVF9DTEFTU19TVFJJTkcpCisgICAgICAgICAgICAgICAgbV9ub2Rl
LnBhcmVudE5hbWUgPSBnX3ZhcmlhbnRfZ2V0X3N0cmluZyh2YWx1ZSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBnX3ZhcmlhbnRfdW5yZWYodmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ym9vbCBjb250ZXh0TWVudShXZWJLaXRDb250ZXh0TWVudSogbWVudSwgR2RrRXZlbnQqLCBXZWJL
aXRIaXRUZXN0UmVzdWx0KikKKyAgICB7CisgICAgICAgIGRlc2VyaWFsaXplTm9kZUZyb21Vc2Vy
RGF0YSh3ZWJraXRfY29udGV4dF9tZW51X2dldF91c2VyX2RhdGEobWVudSkpOworICAgICAgICBx
dWl0TWFpbkxvb3AoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBOb2Rl
IG1fbm9kZTsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5v
ZGUoQ29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0
LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PHAgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0
OjE7IHRvcDoxJz5XZWJLaXRHVEsrIENvbnRleHQgbWVudSB0ZXN0czwvcD48YnI+IgorICAgICAg
ICAiPGEgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDoxMDAnIGhyZWY9J2h0
dHA6Ly93d3cud2Via2l0Z3RrLm9yZyc+V2ViS2l0R1RLKyBXZWJzaXRlPC9hPjwvYm9keT48L2h0
bWw+IiwKKyAgICAgICAgIkNvbnRleHRNZW51VGVzdE5vZGUiKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKworICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUF0UG9zaXRpb25B
bmRXYWl0VW50aWxGaW5pc2hlZCgwLCAwKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9u
b2RlLm5hbWUuZGF0YSgpLCA9PSwgIkhUTUwiKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
Pm1fbm9kZS50eXBlLCA9PSwgQ29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlVGVzdDo6Tm9kZTo6
Tm9kZUVsZW1lbnQpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX25vZGUuY29udGVudHMu
ZGF0YSgpLCA9PSwgIldlYktpdEdUSysgQ29udGV4dCBtZW51IHRlc3RzV2ViS2l0R1RLKyBXZWJz
aXRlIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fbm9kZS5wYXJlbnROYW1lLmRhdGEo
KSwgPT0sICIjZG9jdW1lbnQiKTsKKworICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUF0UG9zaXRp
b25BbmRXYWl0VW50aWxGaW5pc2hlZCgxLCAyMCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3Qt
Pm1fbm9kZS5uYW1lLmRhdGEoKSwgPT0sICIjdGV4dCIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+bV9ub2RlLnR5cGUsID09LCBDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGVUZXN0OjpO
b2RlOjpOb2RlVGV4dCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fbm9kZS5jb250ZW50
cy5kYXRhKCksID09LCAiV2ViS2l0R1RLKyBDb250ZXh0IG1lbnUgdGVzdHMiKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIodGVzdC0+bV9ub2RlLnBhcmVudE5hbWUuZGF0YSgpLCA9PSwgIlAiKTsKKwor
ICAgIC8vIExpbmsgbWVudS4KKyAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5k
V2FpdFVudGlsRmluaXNoZWQoMSwgMTAxKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9u
b2RlLm5hbWUuZGF0YSgpLCA9PSwgIiN0ZXh0Iik7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0
LT5tX25vZGUudHlwZSwgPT0sIENvbnRleHRNZW51V2ViRXh0ZW5zaW9uTm9kZVRlc3Q6Ok5vZGU6
Ok5vZGVUZXh0KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9ub2RlLmNvbnRlbnRzLmRh
dGEoKSwgPT0sICJXZWJLaXRHVEsrIFdlYnNpdGUiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVz
dC0+bV9ub2RlLnBhcmVudE5hbWUuZGF0YSgpLCA9PSwgIkEiKTsKK30KKwogdm9pZCBiZWZvcmVB
bGwoKQogeworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0
b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBXRUJLSVRfVEVTVF9XRUJfRVhU
RU5TSU9OU19ESVIpOwogICAgIENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJkZWZhdWx0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVudSk7CiAgICAg
Q29udGV4dE1lbnVDdXN0b21UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicG9wdWxhdGUtbWVu
dSIsIHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudSk7CiAgICAgQ29udGV4dE1lbnVDdXN0b21G
dWxsVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImN1c3RvbS1tZW51IiwgdGVzdENvbnRleHRN
ZW51Q3VzdG9tTWVudSk7CkBAIC04OTEsNiArMTA0OCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAg
ICBDb250ZXh0TWVudVN1Ym1lbnVUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic3VibWVudSIs
IHRlc3RDb250ZXh0TWVudVN1Yk1lbnUpOwogICAgIENvbnRleHRNZW51RGlzbWlzc2VkVGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm1lbnUtZGlzbWlzc2VkIiwgdGVzdENvbnRleHRNZW51RGlz
bWlzc2VkKTsKICAgICBDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9yc1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJzbWFydC1zZXBhcmF0b3JzIiwgdGVzdENvbnRleHRNZW51U21hcnRTZXBhcmF0
b3JzKTsKKyAgICBDb250ZXh0TWVudVdlYkV4dGVuc2lvblRlc3Q6OmFkZCgiV2ViS2l0V2ViUGFn
ZSIsICJjb250ZXh0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25NZW51KTsKKyAg
ICBDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGVUZXN0OjphZGQoIldlYktpdFdlYlBhZ2UiLCAi
Y29udGV4dC1tZW51LW5vZGUiLCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlKTsKIH0K
IAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggNzU3NTMyZi4uNTE1OTAy
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4
dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMTU5LDExICsxNTksNjcgQEAgc3RhdGljIGdib29s
ZWFuIHNlbmRSZXF1ZXN0Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVlc3Qq
IHJlcXVlc3QsIFcKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKK3N0YXRpYyBHVmFyaWFudCogc2Vy
aWFsaXplQ29udGV4dE1lbnUoV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUpCit7CisgICAgR1Zhcmlh
bnRCdWlsZGVyIGJ1aWxkZXI7CisgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwg
R19WQVJJQU5UX1RZUEVfQVJSQVkpOworICAgIEdMaXN0KiBpdGVtcyA9IHdlYmtpdF9jb250ZXh0
X21lbnVfZ2V0X2l0ZW1zKG1lbnUpOworICAgIGZvciAoR0xpc3QqIGl0ID0gaXRlbXM7IGl0OyBp
dCA9IGdfbGlzdF9uZXh0KGl0KSkKKyAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWls
ZGVyLCAidSIsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3RvY2tfYWN0aW9uKFdFQktJ
VF9DT05URVhUX01FTlVfSVRFTShpdC0+ZGF0YSkpKTsKKyAgICByZXR1cm4gZ192YXJpYW50X2J1
aWxkZXJfZW5kKCZidWlsZGVyKTsKK30KKworc3RhdGljIEdWYXJpYW50KiBzZXJpYWxpemVOb2Rl
KFdlYktpdERPTU5vZGUqIG5vZGUpCit7CisgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfQVJSQVkp
OworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAiTmFtZSIsIGdf
dmFyaWFudF9uZXdfdGFrZV9zdHJpbmcod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX25hbWUobm9k
ZSkpKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgIlR5cGUi
LCBnX3ZhcmlhbnRfbmV3X3VpbnQzMih3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfdHlwZShub2Rl
KSkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAiQ29udGVu
dHMiLCBnX3ZhcmlhbnRfbmV3X3Rha2Vfc3RyaW5nKHdlYmtpdF9kb21fbm9kZV9nZXRfdGV4dF9j
b250ZW50KG5vZGUpKSk7CisgICAgV2ViS2l0RE9NTm9kZSogcGFyZW50ID0gd2Via2l0X2RvbV9u
b2RlX2dldF9wYXJlbnRfbm9kZShub2RlKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1
aWxkZXIsICJ7c3Z9IiwgIlBhcmVudCIsIHBhcmVudCA/IGdfdmFyaWFudF9uZXdfdGFrZV9zdHJp
bmcod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX25hbWUocGFyZW50KSkgOiBnX3ZhcmlhbnRfbmV3
X3N0cmluZygiUk9PVCIpKTsKKyAgICByZXR1cm4gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWls
ZGVyKTsKK30KKworc3RhdGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2Vi
UGFnZSogcGFnZSwgV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUsIFdlYktpdFdlYkhpdFRlc3RSZXN1
bHQqIGhpdFRlc3RSZXN1bHQsIGdwb2ludGVyKQoreworICAgIGNvbnN0IGNoYXIqIHBhZ2VVUkkg
PSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaShwYWdlKTsKKyAgICBpZiAoIWdfc3RyY21wMChwYWdl
VVJJLCAiQ29udGV4dE1lbnVUZXN0RGVmYXVsdCIpKSB7CisgICAgICAgIHdlYmtpdF9jb250ZXh0
X21lbnVfc2V0X3VzZXJfZGF0YShtZW51LCBzZXJpYWxpemVDb250ZXh0TWVudShtZW51KSk7Cisg
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChwYWdlVVJJ
LCAiQ29udGV4dE1lbnVUZXN0Q3VzdG9tIikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIEJhY2sgYW5k
IEZvcndhcmQsIGFuZCBhZGQgSW5zcGVjdG9yIGFjdGlvbi4KKyAgICAgICAgd2Via2l0X2NvbnRl
eHRfbWVudV9yZW1vdmUobWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9maXJzdChtZW51KSk7Cisg
ICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3ZlKG1lbnUsIHdlYmtpdF9jb250ZXh0X21l
bnVfZmlyc3QobWVudSkpOworICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X2FwcGVuZChtZW51
LCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcigpKTsKKyAgICAgICAgd2Vi
a2l0X2NvbnRleHRfbWVudV9hcHBlbmQobWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX3N0b2NrX2FjdGlvbihXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9JTlNQRUNUX0VM
RU1FTlQpKTsKKyAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKG1lbnUs
IHNlcmlhbGl6ZUNvbnRleHRNZW51KG1lbnUpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAg
fQorCisgICAgaWYgKCFnX3N0cmNtcDAocGFnZVVSSSwgIkNvbnRleHRNZW51VGVzdENsZWFyIikp
IHsKKyAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9yZW1vdmVfYWxsKG1lbnUpOworICAgICAg
ICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoIWdfc3RyY21wMChwYWdlVVJJLCAiQ29u
dGV4dE1lbnVUZXN0Tm9kZSIpKSB7CisgICAgICAgIFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJr
aXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfbm9kZShoaXRUZXN0UmVzdWx0KTsKKyAgICAgICAg
Z19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGUpKTsKKyAgICAgICAgd2Via2l0X2NvbnRl
eHRfbWVudV9zZXRfdXNlcl9kYXRhKG1lbnUsIHNlcmlhbGl6ZU5vZGUobm9kZSkpOworICAgICAg
ICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyB2
b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGdwb2ludGVyKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2ViUGFnZSwgImRvY3VtZW50LWxvYWRlZCIsIEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxs
YmFjayksIGV4dGVuc2lvbik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAibm90aWZ5
Ojp1cmkiLCBHX0NBTExCQUNLKHVyaUNoYW5nZWRDYWxsYmFjayksIGV4dGVuc2lvbik7Ci0gICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAic2VuZC1yZXF1ZXN0IiwgR19DQUxMQkFDSyhzZW5k
UmVxdWVzdENhbGxiYWNrKSwgMCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAic2Vu
ZC1yZXF1ZXN0IiwgR19DQUxMQkFDSyhzZW5kUmVxdWVzdENhbGxiYWNrKSwgbnVsbHB0cik7Cisg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFDSyhj
b250ZXh0TWVudUNhbGxiYWNrKSwgbnVsbHB0cik7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVj
aG9DYWxsYmFjayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RS
ZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241099</attachid>
            <date>2014-11-06 02:34:04 -0800</date>
            <delta_ts>2014-11-06 06:56:56 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-web-page-context-menu.diff</filename>
            <type>text/plain</type>
            <size>46546</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhOGI2MWRhLi5kZDc2MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTQtMTEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBjb250ZXh0IG1lbnUgQVBJIHRvIFdlYiBQcm9jZXNzIEV4
dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBXZWJLaXRXZWJQYWdlOjpjb250ZXh0LW1lbnUgc2lnbmFsLCBzaW1pbGFyIHRvIHRoZQor
ICAgICAgICBXZWJLaXRXZWJWaWV3IG9uZSwgYnV0IHRoYXQgcmVjZWl2ZXMgYSBXZWJLaXRXZWJI
aXRUZXN0UmVzdWx0LCBhCisgICAgICAgIGNsYXNzIHRoYXQgZXh0ZW5kcyBXZWJLaXRUZXN0UmVz
dWx0IHRvIHByb3ZpZGUgdGhlIFdlYktpdERPTU5vZGUKKyAgICAgICAgZnJvbSB0aGUgV2ViIFBy
b2Nlc3MgRXh0ZW5zaW9ucyBBUEkuIFRoaXMgbWFrZXMgV2ViS2l0Q29udGV4dE1lbnUsCisgICAg
ICAgIFdlYktpdENvbnRleHRNZW51SXRlbSBhbmQgV2ViS2l0VGVzdFJlc3VsdCBjbGFzc2VzIHNo
YXJlZCBiZXR3ZWVuCisgICAgICAgIFVJIGFuZCBXZWIgRXh0ZW5zaW9ucyBBUElzLiBJbiBhZGRp
dGlvbiB0byBiZSBhYmxlIHRvIGN1c3RvbWl6ZQorICAgICAgICB0aGUgY29udGV4dCBtZW51LCBp
dCBhbHNvIHByb3ZpZGVzIEFQSSB0byBzZXQgdXNlciBkYXRhLCBhcyBhCisgICAgICAgIEdWYXJp
YW50LCBpbiB0aGUgV2ViIFByb2Nlc3MgdGhhdCBpcyBzZW50IHRvIHRoZSBVSSBQcm9jZXNzLgor
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwOgorICAgICAgICAod2Via2l0
X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKTogQWRkIHVzZXIgZGF0YSB0byB0aGUgY29udGV4
dAorICAgICAgICBtZW51IGFzIGEgR1ZhcmlhbnQuCisgICAgICAgICh3ZWJraXRfY29udGV4dF9t
ZW51X2dldF91c2VyX2RhdGEpOiBHZXQgdGhlIHVzZXIgZGF0YSBwcmV2aW91c2x5CisgICAgICAg
IHNldCB3aXRoIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YSgpIGVpdGhlciBmcm9t
IHRoZSBXZWIKKyAgICAgICAgb3IgVUkgcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KTogQ29udmVydCB0aGUgcmVjZWl2ZWQgdXNlciBkYXRhCisgICAgICAgIGlu
dG8gYSBHVmFyaWFudCBhbmQgcGFzcyBpdCB0byB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0
TWVudSgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRl
bS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcndhcmREZWNsYXJhdGlv
bnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudSk6IFNldCB0aGUgdXNlciBkYXRhIHJl
Y2VpdmVkCisgICAgICAgIGZyb20gdGhlIFdlYiBQcm9jZXNzIHRvIHRoZSBXZWJLaXRDb250ZXh0
TWVudSBiZWZvcmUgZW1pdHRpbmcKKyAgICAgICAgV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogQWRk
IG5ldyBzZWN0aW9uIGZvciBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9s
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6IEFk
ZCB3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5jcHA6IEFk
ZGVkLgorICAgICAgICAod2Via2l0V2ViSGl0VGVzdFJlc3VsdEdldFByb3BlcnR5KTogQWRkIGdl
dHRlciBmb3Igbm9kZSBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYkhpdFRlc3RSZXN1bHRT
ZXRQcm9wZXJ0eSk6IEFkZCBzZXR0ZXIgZm9yIG5vZGUgcHJvcGVydHkuCisgICAgICAgICh3ZWJr
aXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KTogQWRkIG5vZGUgcHJvcGVydHkuCisg
ICAgICAgICh3ZWJraXRXZWJIaXRUZXN0UmVzdWx0Q3JlYXRlKTogQ3JlYXRlIGEgbmV3CisgICAg
ICAgIFdlYktpdFdlYkhpdFRlc3RSZXN1bHQgZm9yIHRoZSBnaXZlbiBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuCisgICAgICAgICh3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfbm9k
ZSk6IFJldHVybiB0aGUgV2ViS2l0RE9NTm9kZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAoZ2V0Q29udGV4dE1lbnVGcm9t
RGVmYXVsdE1lbnUpOiBCdWlsZCBhIFdlYktpdENvbnRleHRNZW51IGFuZAorICAgICAgICBXZWJL
aXRXZWJIaXRUZXN0UmVzdWx0IGFuZCBlbWl0IFdlYktpdFdlYlBhZ2U6OmNvbnRleHQtbWVudSBz
aWduYWwuCisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2VfY2xhc3NfaW5pdCk6IEFkZCBXZWJLaXRX
ZWJQYWdlOjpjb250ZXh0LW1lbnUgc2lnbmFsLgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0
ZSk6IEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmg6CisKIDIwMTQtMTEtMDUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzU2NzIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGExM2E1MjkuLjc4ODQ0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0yNzQsNiArMjc0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1l
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRX
b3JsZC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJIaXRUZXN0UmVzdWx0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRXZWJQYWdlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9n
dGsvSW5qZWN0ZWRCdW5kbGVHdGsuY3BwCkBAIC0zNzIsNiArMzczLDcgQEAgc2V0KFdlYktpdDJX
ZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAogICAgICR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3JsZC5o
CiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYkV4dGVuc2lvbi5oCisgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkhpdFRlc3RSZXN1bHQuaAogICAgICR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKICAg
ICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0
LXdlYi1leHRlbnNpb24uaAogKQpAQCAtNzk3LDYgKzc5OSwxMCBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgICAgIC1JJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrCiAgICAgICAgICR7R09iamVjdERPTUJpbmRpbmdzX0dJUl9IRUFERVJTfQogICAgICAg
ICAke1dlYktpdDJXZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlN9CisgICAgICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmgKKyAgICAgICAg
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25z
LmgKKyAgICAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmgKKyAgICAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0SGl0VGVzdFJlc3VsdC5oCiAgICAgICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVSSVJlcXVlc3QuaAogICAgICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oCiAgICAgICAgICR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay8qLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCmluZGV4IGJiYmVk
MGQuLjQ1MDc3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb250ZXh0TWVudS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCw2ICs1MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogc3RydWN0IF9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUgewogICAgIEdMaXN0KiBpdGVt
czsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHBhcmVudEl0ZW07CisgICAgR1JlZlB0cjxH
VmFyaWFudD4gdXNlckRhdGE7CiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29udGV4
dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnUsIEdfVFlQRV9PQkpFQ1QpCkBAIC0zMTYsMyArMzE4
LDQxIEBAIHZvaWQgd2Via2l0X2NvbnRleHRfbWVudV9yZW1vdmVfYWxsKFdlYktpdENvbnRleHRN
ZW51KiBtZW51KQogICAgIGdfbGlzdF9mcmVlX2Z1bGwobWVudS0+cHJpdi0+aXRlbXMsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfb2JqZWN0X3VucmVmKSk7CiAgICAgbWVudS0+
cHJpdi0+aXRlbXMgPSAwOwogfQorCisvKioKKyAqIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3Vz
ZXJfZGF0YToKKyAqIEBtZW51OiBhICNXZWJLaXRDb250ZXh0TWVudQorICogQHVzZXJfZGF0YTog
YSAjR1ZhcmlhbnQKKyAqCisgKiBTZXRzIHVzZXIgZGF0YSB0byBAbWVudS4KKyAqIFRoaXMgZnVu
Y3Rpb24gY2FuIGJlIHVzZWQgZnJvbSBhIFdlYiBQcm9jZXNzIGV4dGVuc2lvbiB0byBzZXQgdXNl
ciBkYXRhCisgKiB0aGF0IGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgVUkgUHJvY2VzcyB1c2lu
ZyB3ZWJraXRfY29udGV4dF9tZW51X2dldF91c2VyX2RhdGEoKS4KKyAqCisgKiBTaW5jZTogMi44
CisgKi8KK3ZvaWQgd2Via2l0X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKFdlYktpdENvbnRl
eHRNZW51KiBtZW51LCBHVmFyaWFudCogdXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfQ09OVEVYVF9NRU5VKG1lbnUpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHVz
ZXJEYXRhKTsKKworICAgIG1lbnUtPnByaXYtPnVzZXJEYXRhID0gdXNlckRhdGE7Cit9CisKKy8q
KgorICogd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdXNlcl9kYXRhOgorICogQG1lbnU6IGEgI1dl
YktpdENvbnRleHRNZW51CisgKgorICogR2V0cyB0aGUgdXNlciBkYXRhIG9mIEBtZW51LgorICog
VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmcm9tIHRoZSBVSSBQcm9jZXNzIHRvIGdldCB1c2Vy
IGRhdGEgcHJldmlvdXNseSBzZXQKKyAqIGZyb20gdGhlIFdlYiBQcm9jZXNzIHdpdGggd2Via2l0
X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiB0aGUgdXNlciBkYXRhIG9mIEBtZW51LCBvciAlTlVMTCBpZiBAbWVudSBkb2Vzbid0
IGhhdmUgdXNlciBkYXRhCisgKgorICogU2luY2U6IDIuOAorICovCitHVmFyaWFudCogd2Via2l0
X2NvbnRleHRfbWVudV9nZXRfdXNlcl9kYXRhKFdlYktpdENvbnRleHRNZW51KiBtZW51KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19DT05URVhUX01FTlUobWVudSksIG51
bGxwdHIpOworCisgICAgcmV0dXJuIG1lbnUtPnByaXYtPnVzZXJEYXRhLmdldCgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
LmgKaW5kZXggMjJmNGJlZi4uOWI1MGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCkBAIC0xNyw3ICsxNyw3IEBACiAg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjaWYgIWRl
ZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJ
T04pICYmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykKICNlcnJv
ciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAj
ZW5kaWYKIApAQCAtMTA1LDYgKzEwNSwxMyBAQCB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZSAg
ICAgICAgICAgICAgIChXZWJLaXRDb250ZXh0TWVudSAgICAgKm1lbnUsCiBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3ZlX2FsbCAgICAgICAgICAgKFdlYktpdENvbnRl
eHRNZW51ICAgICAqbWVudSk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbnRleHRfbWVu
dV9zZXRfdXNlcl9kYXRhICAgICAgICAoV2ViS2l0Q29udGV4dE1lbnUgICAgICptZW51LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAg
ICAgICp1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIEdWYXJpYW50ICoKK3dlYmtpdF9jb250ZXh0
X21lbnVfZ2V0X3VzZXJfZGF0YSAgICAgICAgKFdlYktpdENvbnRleHRNZW51ICAgICAqbWVudSk7
CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAppbmRleCBjOGM5
YTBkLi5jZjE1NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaApAQCAtMTcsNyArMTcsNyBAQAog
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VC
S0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2lmICFk
ZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJy
b3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBkZmIwYTc0Li5jODE0ZDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yNiw5ICsyNiwxNSBAQAogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCi1zdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1l
bnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJlZiosIFdLSGl0
VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0LCBXS1R5cGVSZWYgLyogdXNlckRhdGEgKi8sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJlZios
IFdLSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgd2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4
dE1lbnUoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCB0b0ltcGwocHJvcG9zZWRNZW51KSwg
dG9JbXBsKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50Owor
ICAgIGlmICh1c2VyRGF0YSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQodXNlckRhdGEp
ID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAgICBDU3RyaW5nIHVzZXJEYXRhU3RyaW5n
ID0gdG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPih1c2VyRGF0YSkpLT5zdHJpbmcoKS51
dGY4KCk7CisgICAgICAgIHZhcmlhbnQgPSBhZG9wdEdSZWYoZ192YXJpYW50X3BhcnNlKG51bGxw
dHIsIHVzZXJEYXRhU3RyaW5nLmRhdGEoKSwgdXNlckRhdGFTdHJpbmcuZGF0YSgpICsgdXNlckRh
dGFTdHJpbmcubGVuZ3RoKCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICB9CisgICAgd2Via2l0
V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCB0
b0ltcGwocHJvcG9zZWRNZW51KSwgdG9JbXBsKGhpdFRlc3RSZXN1bHQpLCB2YXJpYW50LmdldCgp
KTsKIH0KIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaAppbmRleCA3NWQ2MGQ3Li4zM2UzMTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0
ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudUl0ZW0uaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5l
ZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9f
KSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9X
RUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5o
PiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcndhcmREZWNsYXJhdGlvbnMuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZvcndhcmREZWNsYXJhdGlv
bnMuaAppbmRleCBhOTg5OGRlLi41NDNmNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGb3J3YXJkRGVjbGFyYXRpb25zLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9yd2FyZERlY2xhcmF0aW9ucy5oCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQy
X0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5T
SU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUg
aW5jbHVkZWQgZGlyZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAppbmRleCBlZDZkYzJiLi43
MTg1NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SGl0VGVzdFJlc3VsdC5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18p
ICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjaWYgIWRlZmluZWQoX19XRUJLSVQy
X0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pICYmICFkZWZpbmVk
KF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykKICNlcnJvciAiT25seSA8d2Via2l0
Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRl
eCBmNjJkZTQxLi5mYTY3MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTg5MSw3ICsxODkxLDcgQEAgc3RhdGljIHZv
aWQgY29udGV4dE1lbnVEaXNtaXNzZWQoR3RrTWVudVNoZWxsKiwgV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbQ09OVEVYVF9NRU5VX0RJ
U01JU1NFRF0sIDAsIE5VTEwpOwogfQogCi12b2lkIHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRl
eHRNZW51KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEFQSTo6QXJyYXkqIHByb3Bvc2VkTWVudSwg
V2ViSGl0VGVzdFJlc3VsdCogd2ViSGl0VGVzdFJlc3VsdCkKK3ZvaWQgd2Via2l0V2ViVmlld1Bv
cHVsYXRlQ29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgQVBJOjpBcnJheSogcHJv
cG9zZWRNZW51LCBXZWJIaXRUZXN0UmVzdWx0KiB3ZWJIaXRUZXN0UmVzdWx0LCBHVmFyaWFudCog
dXNlckRhdGEpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lU
X1dFQl9WSUVXX0JBU0Uod2ViVmlldyk7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogY29u
dGV4dE1lbnVQcm94eSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0QWN0aXZlQ29udGV4dE1lbnVQcm94
eSh3ZWJWaWV3QmFzZSk7CkBAIC0xOTE3LDYgKzE5MTcsOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdQ
b3B1bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEFQSTo6QXJyYXkqIHBy
b3BvcwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IGFk
b3B0R1JlZih3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKGRhdGEpKTsKICAgICBHVW5pcXVlUHRy
PEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50KHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRN
ZW51RXZlbnQod2ViVmlld0Jhc2UpKTsKIAorICAgIGlmICh1c2VyRGF0YSkKKyAgICAgICAgd2Vi
a2l0X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKFdFQktJVF9DT05URVhUX01FTlUoY29udGV4
dE1lbnUuZ2V0KCkpLCB1c2VyRGF0YSk7CisKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbQ09OVEVYVF9NRU5VXSwgMCwgY29udGV4
dE1lbnUuZ2V0KCksIGNvbnRleHRNZW51RXZlbnQuZ2V0KCksIGhpdFRlc3RSZXN1bHQuZ2V0KCks
ICZyZXR1cm5WYWx1ZSk7CiAgICAgaWYgKHJldHVyblZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXgg
YzZkY2NhZC4uZTc5Njc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3KiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCwgV2ViS2l0CiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVz
b3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiBib29s
IHdlYmtpdFdlYlZpZXdFbnRlckZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyopOwogYm9vbCB3ZWJr
aXRXZWJWaWV3TGVhdmVGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKLXZvaWQgd2Via2l0V2Vi
Vmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyosIEFQSTo6QXJyYXkqIHByb3Bv
c2VkTWVudSwgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdQ
b3B1bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqLCBBUEk6OkFycmF5KiBwcm9wb3NlZE1l
bnUsIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosIEdWYXJpYW50Kik7CiB2b2lkIHdlYmtpdFdl
YlZpZXdTdWJtaXRGb3JtUmVxdWVzdChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5k
ZXggMDU1NDAwMC4uMzQ4ZjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC01Myw2ICs1Myw3
IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYlBhZ2UueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZyYW1lLnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRTY3JpcHRXb3JsZC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC54bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxp
bmRleCBpZD0iaW5kZXgtYWxsIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDZiZTcw
MzkuLjNmOWJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtOTgyLDYgKzk4Miw4
IEBAIHdlYmtpdF9jb250ZXh0X21lbnVfbGFzdAogd2Via2l0X2NvbnRleHRfbWVudV9nZXRfaXRl
bV9hdF9wb3NpdGlvbgogd2Via2l0X2NvbnRleHRfbWVudV9yZW1vdmUKIHdlYmtpdF9jb250ZXh0
X21lbnVfcmVtb3ZlX2FsbAord2Via2l0X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhCit3ZWJr
aXRfY29udGV4dF9tZW51X2dldF91c2VyX2RhdGEKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBX
ZWJLaXRDb250ZXh0TWVudUNsYXNzCkBAIC0xMTYwLDMgKzExNjIsMjIgQEAgV0VCS0lUX1NDUklQ
VF9XT1JMRF9HRVRfQ0xBU1MKIFdlYktpdFNjcmlwdFdvcmxkUHJpdmF0ZQogd2Via2l0X3Njcmlw
dF93b3JsZF9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdl
YkhpdFRlc3RSZXN1bHQ8L0ZJTEU+CitXZWJLaXRXZWJIaXRUZXN0UmVzdWx0Cit3ZWJraXRfd2Vi
X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbm9kZQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktp
dFdlYkhpdFRlc3RSZXN1bHRDbGFzcworV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VMVAor
V0VCS0lUX1dFQl9ISVRfVEVTVF9SRVNVTFQKK1dFQktJVF9JU19XRUJfSElUX1RFU1RfUkVTVUxU
CitXRUJLSVRfV0VCX0hJVF9URVNUX1JFU1VMVF9DTEFTUworV0VCS0lUX0lTX1dFQl9ISVRfVEVT
VF9SRVNVTFRfQ0xBU1MKK1dFQktJVF9XRUJfSElUX1RFU1RfUkVTVUxUX0dFVF9DTEFTUworCis8
U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUKK3dlYmtp
dF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5k
ZXggMzc1ZDE1Yi4uODE5YWY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjgsMyArMjgsNCBAQCB3ZWJr
aXRfY3JlZGVudGlhbF9nZXRfdHlwZQogd2Via2l0X2ZyYW1lX2dldF90eXBlCiB3ZWJraXRfY2Vy
dGlmaWNhdGVfaW5mb19nZXRfdHlwZQogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90
eXBlCit3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkhp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYkhpdFRlc3RSZXN1bHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE4MTY0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJIaXRUZXN0UmVz
dWx0LmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNs
dWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdFdlYkhpdFRlc3RS
ZXN1bHQKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogUmVzdWx0IG9mIGEgSGl0IFRlc3QgKFdlYiBQ
cm9jZXNzIEV4dGVuc2lvbnMpCisgKiBAVGl0bGU6IFdlYktpdFdlYkhpdFRlc3RSZXN1bHQKKyAq
IEBTZWVfYWxzbzogI1dlYktpdEhpdFRlc3RSZXN1bHQsICNXZWJLaXRXZWJQYWdlCisgKgorICog
V2ViS2l0V2ViSGl0VGVzdFJlc3VsdCBleHRlbmRzICNXZWJLaXRIaXRUZXN0UmVzdWx0IHRvIHBy
b3ZpZGUgaW5mb3JtYXRpb24KKyAqIGFib3V0IHRoZSAjV2ViS2l0RE9NTm9kZSBpbiB0aGUgY29v
cmRpbmF0ZXMgb2YgdGhlIEhpdCBUZXN0LgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworCitlbnVt
IHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX05PREUKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vi
SGl0VGVzdFJlc3VsdFByaXZhdGUgeworICAgIEdSZWZQdHI8V2ViS2l0RE9NTm9kZT4gbm9kZTsK
K307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJIaXRUZXN0UmVzdWx0LCB3ZWJraXRf
d2ViX2hpdF90ZXN0X3Jlc3VsdCwgV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxUKQorCitzdGF0
aWMgdm9pZCB3ZWJraXRXZWJIaXRUZXN0UmVzdWx0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sK
KyAgICBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0KiB3ZWJIaXRUZXN0UmVzdWx0ID0gV0VCS0lUX1dF
Ql9ISVRfVEVTVF9SRVNVTFQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAg
Y2FzZSBQUk9QX05PREU6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0
X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X25vZGUod2ViSGl0VGVzdFJlc3VsdCkpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRXZWJIaXRUZXN0UmVzdWx0U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykK
K3sKKyAgICBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0KiB3ZWJIaXRUZXN0UmVzdWx0ID0gV0VCS0lU
X1dFQl9ISVRfVEVTVF9SRVNVTFQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7Cisg
ICAgY2FzZSBQUk9QX05PREU6IHsKKyAgICAgICAgZ3BvaW50ZXIgbm9kZSA9IGdfdmFsdWVfZ2V0
X29iamVjdCh2YWx1ZSk7CisgICAgICAgIHdlYkhpdFRlc3RSZXN1bHQtPnByaXYtPm5vZGUgPSBu
b2RlID8gV0VCS0lUX0RPTV9OT0RFKG5vZGUpIDogbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQoV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdENsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0g
d2Via2l0V2ViSGl0VGVzdFJlc3VsdEdldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+c2V0
X3Byb3BlcnR5ID0gd2Via2l0V2ViSGl0VGVzdFJlc3VsdFNldFByb3BlcnR5OworCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViSGl0VGVzdFJlc3VsdDpub2RlOgorICAgICAqCisgICAgICogVGhl
ICNXZWJLaXRET01Ob2RlCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX05PREUsCisgICAgICAg
IGdfcGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAibm9kZSIsCisgICAgICAgICAgICBf
KCJOb2RlIiksCisgICAgICAgICAgICBfKCJUaGUgV2ViS2l0RE9NTm9kZSIpLAorICAgICAgICAg
ICAgV0VCS0lUX0RPTV9UWVBFX05PREUsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1G
bGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7
Cit9CisKK1dlYktpdFdlYkhpdFRlc3RSZXN1bHQqIHdlYmtpdFdlYkhpdFRlc3RSZXN1bHRDcmVh
dGUoY29uc3QgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQorewor
ICAgIHVuc2lnbmVkIGNvbnRleHQgPSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRE9D
VU1FTlQ7CisgICAgaWYgKCFoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHko
KSkKKyAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElO
SzsKKyAgICBpZiAoIWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLmlzRW1wdHkoKSkK
KyAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0U7
CisgICAgaWYgKCFoaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5pc0VtcHR5KCkpCisg
ICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBOwor
ICAgIGlmIChoaXRUZXN0UmVzdWx0LmNvcmVIaXRUZXN0UmVzdWx0KCkuaXNDb250ZW50RWRpdGFi
bGUoKSkKKyAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRf
RURJVEFCTEU7CisgICAgaWYgKGhpdFRlc3RSZXN1bHQuY29yZUhpdFRlc3RSZXN1bHQoKS5zY3Jv
bGxiYXIoKSkKKyAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRF
WFRfU0NST0xMQkFSOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKKyAgICAg
ICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfU0VMRUNUSU9OOwor
CisgICAgcmV0dXJuIFdFQktJVF9XRUJfSElUX1RFU1RfUkVTVUxUKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfSElUX1RFU1RfUkVTVUxULAorICAgICAgICAiY29udGV4dCIsIGNvbnRleHQs
CisgICAgICAgICJsaW5rLXVyaSIsIGNvbnRleHQgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NP
TlRFWFRfTElOSyA/IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkudXRmOCgpLmRhdGEo
KSA6IG51bGxwdHIsCisgICAgICAgICJpbWFnZS11cmkiLCBjb250ZXh0ICYgV0VCS0lUX0hJVF9U
RVNUX1JFU1VMVF9DT05URVhUX0lNQUdFID8gaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJM
KCkudXRmOCgpLmRhdGEoKSA6IG51bGxwdHIsCisgICAgICAgICJtZWRpYS11cmkiLCBjb250ZXh0
ICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBID8gaGl0VGVzdFJlc3VsdC5h
YnNvbHV0ZU1lZGlhVVJMKCkudXRmOCgpLmRhdGEoKSA6IG51bGxwdHIsCisgICAgICAgICJsaW5r
LXRpdGxlIiwgIWhpdFRlc3RSZXN1bHQubGlua1RpdGxlKCkuaXNFbXB0eSgpID8gaGl0VGVzdFJl
c3VsdC5saW5rVGl0bGUoKS51dGY4KCkuZGF0YSgpIDogbnVsbHB0ciwKKyAgICAgICAgImxpbmst
bGFiZWwiLCAhaGl0VGVzdFJlc3VsdC5saW5rTGFiZWwoKS5pc0VtcHR5KCkgPyBoaXRUZXN0UmVz
dWx0LmxpbmtMYWJlbCgpLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLAorICAgICAgICAibm9kZSIs
IGtpdChoaXRUZXN0UmVzdWx0LmNvcmVIaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2Rl
KCkpLAorICAgICAgICBudWxscHRyKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9oaXRfdGVz
dF9yZXN1bHRfZ2V0X25vZGU6CisgKiBAaGl0X3Rlc3RfcmVzdWx0OiBhICNXZWJLaXRXZWJIaXRU
ZXN0UmVzdWx0CisgKgorICogR2V0IHRoZSAjV2ViS2l0RE9NTm9kZSBpbiB0aGUgY29vcmRpbmF0
ZXMgb2YgdGhlIEhpdCBUZXN0LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSAj
V2ViS2l0RE9NTm9kZQorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworV2ViS2l0RE9NTm9kZSogd2Vi
a2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X25vZGUoV2ViS2l0V2ViSGl0VGVzdFJlc3VsdCog
d2ViSGl0VGVzdFJlc3VsdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX0hJVF9URVNUX1JFU1VMVCh3ZWJIaXRUZXN0UmVzdWx0KSwgbnVsbHB0cik7CisKKyAgICBy
ZXR1cm4gd2ViSGl0VGVzdFJlc3VsdC0+cHJpdi0+bm9kZS5nZXQoKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRX
ZWJIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhjZTg0N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3Vs
dC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pICYmICFk
ZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0
LXdlYi1leHRlbnNpb24uaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisj
aWZuZGVmIFdlYktpdFdlYkhpdFRlc3RSZXN1bHRfaAorI2RlZmluZSBXZWJLaXRXZWJIaXRUZXN0
UmVzdWx0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRIaXRUZXN0UmVzdWx0Lmg+
CisjaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VMVCAgICAgICAgICAgICh3ZWJraXRf
d2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX0hJVF9U
RVNUX1JFU1VMVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfVFlQRV9XRUJfSElUX1RFU1RfUkVTVUxULCBXZWJLaXRXZWJIaXRUZXN0UmVz
dWx0KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9ISVRfVEVTVF9SRVNVTFQob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0hJVF9U
RVNUX1JFU1VMVCkpCisjZGVmaW5lIFdFQktJVF9XRUJfSElUX1RFU1RfUkVTVUxUX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dF
Ql9ISVRfVEVTVF9SRVNVTFQsIFdlYktpdFdlYkhpdFRlc3RSZXN1bHRDbGFzcykpCisjZGVmaW5l
IFdFQktJVF9JU19XRUJfSElUX1RFU1RfUkVTVUxUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9ISVRfVEVTVF9SRVNVTFQpKQor
I2RlZmluZSBXRUJLSVRfV0VCX0hJVF9URVNUX1JFU1VMVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQ
RV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfSElUX1RFU1RfUkVT
VUxULCBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViSGl0VGVzdFJlc3VsdCAgICAgICAgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdDsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Q2xhc3MgICBXZWJLaXRXZWJIaXRUZXN0
UmVzdWx0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZh
dGUgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViSGl0
VGVzdFJlc3VsdCB7CisgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCBwYXJlbnQ7CisKKyAgICBXZWJL
aXRXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vi
SGl0VGVzdFJlc3VsdENsYXNzIHsKKyAgICBXZWJLaXRIaXRUZXN0UmVzdWx0Q2xhc3MgcGFyZW50
X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7Cit9Owor
CitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZSAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0RE9NTm9kZSAqCit3ZWJraXRfd2ViX2hpdF90ZXN0
X3Jlc3VsdF9nZXRfbm9kZSAoV2ViS2l0V2ViSGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0
KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU3OGMwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFBy
aXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGVfaAorI2RlZmluZSBX
ZWJLaXRXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJIaXRUZXN0UmVzdWx0LmgiCisK
K1dlYktpdFdlYkhpdFRlc3RSZXN1bHQqIHdlYmtpdFdlYkhpdFRlc3RSZXN1bHRDcmVhdGUoY29u
c3QgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQmKTsKKworI2VuZGlmIC8vIFdl
YktpdFdlYkhpdFRlc3RSZXN1bHRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQ
YWdlLmNwcAppbmRleCA1YTlkODM0Li43NzM5ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuY3BwCkBAIC0yMCwxMiArMjAsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCiAKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1
ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0u
aCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdEZyYW1lUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdE1hcnNoYWwuaCIKQEAgLTMz
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlc3Bv
bnNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkhpdFRlc3RSZXN1bHRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgpAQCAtNTAsNiArNTQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGVudW0gewogICAgIERPQ1VNRU5UX0xPQURFRCwKICAgICBT
RU5EX1JFUVVFU1QsCisgICAgQ09OVEVYVF9NRU5VLAogCiAgICAgTEFTVF9TSUdOQUwKIH07CkBA
IC0yMjMsNiArMjI4LDM2IEBAIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2CiAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRG
OCgiV2ViUGFnZS5EaWRGYWlsTG9hZEZvclJlc291cmNlIiksIEltbXV0YWJsZURpY3Rpb25hcnk6
OmNyZWF0ZShXVEY6Om1vdmUobWVzc2FnZSkpLmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0
Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUhpdFRl
c3RSZXN1bHRSZWYgd2tIaXRUZXN0UmVzdWx0LCBXS0FycmF5UmVmIHdrRGVmYXVsdE1lbnUsIFdL
QXJyYXlSZWYqIHdrTmV3TWVudSwgV0tUeXBlUmVmKiB3a1VzZXJEYXRhLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIEdSZWZQdHI8V2ViS2l0Q29udGV4dE1lbnU+IGNvbnRleHRNZW51
ID0gYWRvcHRHUmVmKHdlYmtpdENvbnRleHRNZW51Q3JlYXRlKHRvSW1wbCh3a0RlZmF1bHRNZW51
KSkpOworICAgIEdSZWZQdHI8V2ViS2l0V2ViSGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3Vs
dCA9IGFkb3B0R1JlZih3ZWJraXRXZWJIaXRUZXN0UmVzdWx0Q3JlYXRlKCp0b0ltcGwod2tIaXRU
ZXN0UmVzdWx0KSkpOworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2Vt
aXQoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCBzaWduYWxzW0NPTlRFWFRfTUVOVV0sIDAs
IGNvbnRleHRNZW51LmdldCgpLCB3ZWJIaXRUZXN0UmVzdWx0LmdldCgpLCAmcmV0dXJuVmFsdWUp
OworICAgIGlmIChHVmFyaWFudCogdXNlckRhdGEgPSB3ZWJraXRfY29udGV4dF9tZW51X2dldF91
c2VyX2RhdGEoY29udGV4dE1lbnUuZ2V0KCkpKSB7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGRhdGFTdHJpbmcoZ192YXJpYW50X3ByaW50KHVzZXJEYXRhLCBUUlVFKSk7CisgICAgICAgICp3
a1VzZXJEYXRhID0gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhkYXRhU3RyaW5nLmdldCgpKSk7CisgICAgfQorCisgICAgaWYgKCFyZXR1cm5WYWx1
ZSkgeworICAgICAgICBXS1JldGFpbih3a0RlZmF1bHRNZW51KTsKKyAgICAgICAgKndrTmV3TWVu
dSA9IHdrRGVmYXVsdE1lbnU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8
Q29udGV4dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW1zOworICAgIHdlYmtpdENvbnRleHRNZW51
UG9wdWxhdGUoY29udGV4dE1lbnUuZ2V0KCksIGNvbnRleHRNZW51SXRlbXMpOworCisgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IG5ld01lbnVJdGVtczsKKyAgICBuZXdNZW51SXRlbXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb250ZXh0TWVudUl0ZW1zLnNpemUoKSk7CisgICAgZm9y
IChjb25zdCBhdXRvJiBpdGVtIDogY29udGV4dE1lbnVJdGVtcykKKyAgICAgICAgbmV3TWVudUl0
ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVtKSk7CisK
KyAgICBSZWZQdHI8QVBJOjpBcnJheT4gYXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjpt
b3ZlKG5ld01lbnVJdGVtcykpOworICAgICp3a05ld01lbnUgPSB0b0FQSShhcnJheS5nZXQoKSk7
CisgICAgV0tSZXRhaW4oKndrTmV3TWVudSk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlBh
Z2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewogICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBXRUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsKQEAgLTMwNSw2ICszNDAsMzYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNsYXNzKiBrbGFzcykK
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIsCiAgICAgICAgIFdFQktJVF9UWVBFX1VSSV9SRVFV
RVNULAogICAgICAgICBXRUJLSVRfVFlQRV9VUklfUkVTUE9OU0UpOworCisgICAgLyoqCisgICAg
ICogV2ViS2l0V2ViUGFnZTo6Y29udGV4dC1tZW51OgorICAgICAqIEB3ZWJfcGFnZTogdGhlICNX
ZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBjb250
ZXh0X21lbnU6IHRoZSBwcm9wb3NlZCAjV2ViS2l0Q29udGV4dE1lbnUKKyAgICAgKiBAaGl0X3Rl
c3RfcmVzdWx0OiBhICNXZWJLaXRXZWJIaXRUZXN0UmVzdWx0CisgICAgICoKKyAgICAgKiBFbW1p
dGVkIGJlZm9yZSBhIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQgaW4gdGhlIFVJIFByb2Nlc3Mg
dG8KKyAgICAgKiBnaXZlIHRoZSBhcHBsaWNhdGlvbiBhIGNoYW5jZSB0byBjdXN0b21pemUgdGhl
IHByb3Bvc2VkIG1lbnUsCisgICAgICogYnVpbGQgaXRzIG93biBjb250ZXh0IG1lbnUgb3IgcGFz
cyB1c2VyIGRhdGEgdG8gdGhlIFVJIFByb2Nlc3MuCisgICAgICogVGhpcyBzaWduYWwgaXMgdXNl
ZnVsIHdoZW4gdGhlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBpbiB0aGUgVUkgUHJvY2VzcworICAg
ICAqIGlzIG5vdCBlbm91Z2ggdG8gYnVpbGQgb3IgY3VzdG9taXplIHRoZSBjb250ZXh0IG1lbnUs
IGZvciBleGFtcGxlLCB0bworICAgICAqIGFkZCBtZW51IGVudHJpZXMgZGVwZW5kaW5nIG9uIHRo
ZSAjV2ViS2l0RE9NTm9kZSBhdCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlCisgICAgICogQGhpdF90
ZXN0X3Jlc3VsdC4gT3RoZXJ3aXNlLCBpdCdzIHJlY29tbWVuZWQgdG8gdXNlICNXZWJLaXRXZWJW
aWV3Ojpjb250ZXh0LW1lbnUKKyAgICAgKiBzaWduYWwgaW5zdGVhZC4KKyAgICAgKgorICAgICAq
IFJldHVybnM6ICVUUlVFIGlmIHRoZSBwcm9wb3NlZCBAY29udGV4dF9tZW51IGhhcyBiZWVuIG1v
ZGlmaWVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICAgICAqCisgICAgICogU2luY2U6IDIuOAor
ICAgICAqLworICAgIHNpZ25hbHNbQ09OVEVYVF9NRU5VXSA9IGdfc2lnbmFsX25ldygKKyAgICAg
ICAgImNvbnRleHQtbWVudSIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAg
ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsCisgICAgICAgIGdfc2lnbmFsX2Fj
Y3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCwKKyAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVB
Tl9fT0JKRUNUX09CSkVDVCwKKyAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIsCisgICAgICAgIFdF
QktJVF9UWVBFX0NPTlRFWFRfTUVOVSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNU
X1JFU1VMVCk7CiB9CiAKIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFn
ZSogd2ViUGFnZSkKQEAgLTM3MSw2ICs0MzYsMTUgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2Vi
UGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0
UmVzb3VyY2VMb2FkQ2xpZW50KHRvQVBJKHdlYlBhZ2UpLCAmcmVzb3VyY2VMb2FkQ2xpZW50LmJh
c2UpOwogCisgICAgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRWMCBjb250ZXh0TWVudUNs
aWVudCA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgMCwgLy8gdmVyc2lvbgorICAgICAgICAg
ICAgcGFnZSwgLy8gY2xpZW50SW5mbworICAgICAgICB9LAorICAgICAgICBnZXRDb250ZXh0TWVu
dUZyb21EZWZhdWx0TWVudSwKKyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51
Q2xpZW50KHRvQVBJKHdlYlBhZ2UpLCAmY29udGV4dE1lbnVDbGllbnQuYmFzZSk7CisKICAgICBy
ZXR1cm4gcGFnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNp
b24uaAppbmRleCAyYTA4ODFlLi42ZjExYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaApAQCAtMjYsMTIgKzI2LDE2IEBACiAKICNkZWZpbmUgX19XRUJL
SVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fCiAKKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENv
bnRleHRNZW51Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdv
cmxkLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVy
c2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9uLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJQYWdlLmg+CiAKICN1bmRlZiBfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURF
X18KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1
ODQxNTcwLi43NjBhZTE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMTEtMDMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBjb250ZXh0IG1l
bnUgQVBJIHRvIFdlYiBQcm9jZXNzIEV4dGVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBjYXNlcyBmb3IgV2ViS2l0V2ViUGFn
ZTo6Y29udGV4dC1tZW51IHNpZ25hbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUuY3BwOgorICAgICAgICAodGVzdENvbnRleHRNZW51
V2ViRXh0ZW5zaW9uTWVudSk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25O
b2RlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoc2VyaWFsaXplQ29u
dGV4dE1lbnUpOgorICAgICAgICAoc2VyaWFsaXplTm9kZSk6CisgICAgICAgIChjb250ZXh0TWVu
dUNhbGxiYWNrKToKKyAgICAgICAgKHBhZ2VDcmVhdGVkQ2FsbGJhY2spOgorCiAyMDE0LTExLTA2
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBSdW4gbGF5b3V0IHRlc3RzIHVzaW5nIHRoZSBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVu
dS5jcHAKaW5kZXggNGRmNzJiZS4uNTJkZjJlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKQEAgLTE5LDYg
KzE5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0Lmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KIAogY2xhc3MgQ29udGV4dE1lbnVUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewpAQCAtODgy
LDggKzg4MywxNjQgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51U21hcnRTZXBhcmF0b3Jz
KENvbnRleHRNZW51U21hcnRTZXBhcmF0b3JzVGVzdCogdGVzdCwKICAgICBnX2Fzc2VydCghR1RL
X0lTX1NFUEFSQVRPUl9NRU5VX0lURU0oaXRlbSkgJiYgIWd0a193aWRnZXRfZ2V0X3Zpc2libGUo
aXRlbSkpOwogfQogCitjbGFzcyBDb250ZXh0TWVudVdlYkV4dGVuc2lvblRlc3Q6IHB1YmxpYyBD
b250ZXh0TWVudVRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29u
dGV4dE1lbnVXZWJFeHRlbnNpb25UZXN0KTsKKworICAgIHZvaWQgZGVzZXJpYWxpemVDb250ZXh0
TWVudUZyb21Vc2VyRGF0YShHVmFyaWFudCogdXNlckRhdGEpCisgICAgeworICAgICAgICBtX2Fj
dGlvbnMuY2xlYXIoKTsKKyAgICAgICAgaWYgKCF1c2VyRGF0YSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBHVmFyaWFudEl0ZXIgaXRlcjsKKyAgICAgICAgZ192YXJpYW50X2l0ZXJf
aW5pdCgmaXRlciwgdXNlckRhdGEpOworICAgICAgICBtX2FjdGlvbnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShnX3ZhcmlhbnRfaXRlcl9uX2NoaWxkcmVuKCZpdGVyKSk7CisKKyAgICAgICAgdWlu
dDMyX3QgaXRlbTsKKyAgICAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX25leHQoJml0ZXIsICJ1
IiwgJml0ZW0pKQorICAgICAgICAgICAgbV9hY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChzdGF0aWNf
Y2FzdDxXZWJLaXRDb250ZXh0TWVudUFjdGlvbj4oaXRlbSkpOworICAgIH0KKworICAgIGJvb2wg
Y29udGV4dE1lbnUoV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUsIEdka0V2ZW50KiwgV2ViS2l0SGl0
VGVzdFJlc3VsdCopCisgICAgeworICAgICAgICBkZXNlcmlhbGl6ZUNvbnRleHRNZW51RnJvbVVz
ZXJEYXRhKHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X3VzZXJfZGF0YShtZW51KSk7CisgICAgICAg
IEdMaXN0KiBpdGVtcyA9IHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X2l0ZW1zKG1lbnUpOworICAg
ICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoaXRlbXMpLCA9PSwgbV9hY3Rpb25z
LnNpemUoKSk7CisKKyAgICAgICAgdW5zaWduZWQgYWN0aW9uSW5kZXggPSAwOworICAgICAgICBm
b3IgKEdMaXN0KiBpdCA9IGl0ZW1zOyBpdDsgaXQgPSBnX2xpc3RfbmV4dChpdCkpIHsKKyAgICAg
ICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVf
SVRFTShpdC0+ZGF0YSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9nZXRfc3RvY2tfYWN0aW9uKGl0ZW0pLCA9PSwgbV9hY3Rpb25zW2FjdGlv
bkluZGV4KytdKTsKKyAgICAgICAgfQorCisgICAgICAgIHF1aXRNYWluTG9vcCgpOworCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFZlY3RvcjxXZWJLaXRDb250ZXh0TWVudUFj
dGlvbj4gbV9hY3Rpb25zOworfTsKKworc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51V2ViRXh0
ZW5zaW9uTWVudShDb250ZXh0TWVudVdlYkV4dGVuc2lvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCit7CisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAg
dGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PldlYktpdEdUSysgQ29udGV4dCBtZW51IHRlc3Rz
PGJyPiIKKyAgICAgICAgIjxhIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6
MTAnIGhyZWY9J2h0dHA6Ly93d3cud2Via2l0Z3RrLm9yZyc+V2ViS2l0R1RLKyBXZWJzaXRlPC9h
PjwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgIkNvbnRleHRNZW51VGVzdERlZmF1bHQiKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIC8vIERlZmF1bHQgY29udGV4
dCBtZW51LgorICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUF0UG9zaXRpb25BbmRXYWl0VW50aWxG
aW5pc2hlZCgxLCAxKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fYWN0aW9ucy5zaXpl
KCksID09LCA0KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fYWN0aW9uc1swXSwgPT0s
IFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0dPX0JBQ0spOworICAgIGdfYXNzZXJ0X2NtcHVp
bnQodGVzdC0+bV9hY3Rpb25zWzFdLCA9PSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fR09f
Rk9SV0FSRCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX2FjdGlvbnNbMl0sID09LCBX
RUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9TVE9QKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPm1fYWN0aW9uc1szXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1JFTE9BRCk7
CisKKyAgICAvLyBMaW5rIG1lbnUuCisgICAgdGVzdC0+c2hvd0NvbnRleHRNZW51QXRQb3NpdGlv
bkFuZFdhaXRVbnRpbEZpbmlzaGVkKDEsIDExKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
Pm1fYWN0aW9ucy5zaXplKCksID09LCA0KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1f
YWN0aW9uc1swXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5fTElOSyk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX2FjdGlvbnNbMV0sID09LCBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9PUEVOX0xJTktfSU5fTkVXX1dJTkRPVyk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5tX2FjdGlvbnNbMl0sID09LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9E
T1dOTE9BRF9MSU5LX1RPX0RJU0spOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rp
b25zWzNdLCA9PSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWV9MSU5LX1RPX0NMSVBC
T0FSRCk7CisKKyAgICAvLyBDdXN0b20gbWVudS4KKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+
PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCAiQ29udGV4dE1lbnVUZXN0Q3VzdG9tIik7CisgICAgdGVz
dC0+c2hvd0NvbnRleHRNZW51QW5kV2FpdFVudGlsRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPm1fYWN0aW9ucy5zaXplKCksID09LCA0KTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPm1fYWN0aW9uc1swXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1NU
T1ApOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9hY3Rpb25zWzFdLCA9PSwgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fUkVMT0FEKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
Pm1fYWN0aW9uc1syXSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX05PX0FDVElPTik7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX2FjdGlvbnNbM10sID09LCBXRUJLSVRfQ09O
VEVYVF9NRU5VX0FDVElPTl9JTlNQRUNUX0VMRU1FTlQpOworCisgICAgLy8gTWVudSBjbGVhcmVk
IGJ5IHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iLCAiQ29udGV4dE1lbnVUZXN0Q2xlYXIiKTsKKyAgICB0ZXN0LT5zaG93Q29u
dGV4dE1lbnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+bV9hY3Rpb25zLnNpemUoKSwgPT0sIDApOworfQorCitjbGFzcyBDb250ZXh0TWVudVdlYkV4
dGVuc2lvbk5vZGVUZXN0OiBwdWJsaWMgQ29udGV4dE1lbnVUZXN0IHsKK3B1YmxpYzoKKyAgICBN
QUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbnRleHRNZW51V2ViRXh0ZW5zaW9uTm9kZVRlc3QpOwor
CisgICAgc3RydWN0IE5vZGUgeworICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgIE5vZGVVbmtu
b3duID0gMCwKKyAgICAgICAgICAgIE5vZGVFbGVtZW50ID0gMSwKKyAgICAgICAgICAgIE5vZGVU
ZXh0ID0gMworICAgICAgICB9OworICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIFR5cGU7CisKKyAg
ICAgICAgQ1N0cmluZyBuYW1lOworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIENTdHJpbmcg
Y29udGVudHM7CisgICAgICAgIENTdHJpbmcgcGFyZW50TmFtZTsKKyAgICB9OworCisgICAgdm9p
ZCBkZXNlcmlhbGl6ZU5vZGVGcm9tVXNlckRhdGEoR1ZhcmlhbnQqIHVzZXJEYXRhKQorICAgIHsK
KyAgICAgICAgR1ZhcmlhbnRJdGVyIGl0ZXI7CisgICAgICAgIGdfdmFyaWFudF9pdGVyX2luaXQo
Jml0ZXIsIHVzZXJEYXRhKTsKKworICAgICAgICBjb25zdCBjaGFyKiBrZXk7CisgICAgICAgIEdW
YXJpYW50KiB2YWx1ZTsKKyAgICAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX25leHQoJml0ZXIs
ICJ7JnN2fSIsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKGtleSwg
Ik5hbWUiKSAmJiBnX3ZhcmlhbnRfY2xhc3NpZnkodmFsdWUpID09IEdfVkFSSUFOVF9DTEFTU19T
VFJJTkcpCisgICAgICAgICAgICAgICAgbV9ub2RlLm5hbWUgPSBnX3ZhcmlhbnRfZ2V0X3N0cmlu
Zyh2YWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGtleSwgIlR5
cGUiKSAmJiBnX3ZhcmlhbnRfY2xhc3NpZnkodmFsdWUpID09IEdfVkFSSUFOVF9DTEFTU19VSU5U
MzIpCisgICAgICAgICAgICAgICAgbV9ub2RlLnR5cGUgPSBnX3ZhcmlhbnRfZ2V0X3VpbnQzMih2
YWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGtleSwgIkNvbnRlbnRzIikgJiYg
Z192YXJpYW50X2NsYXNzaWZ5KHZhbHVlKSA9PSBHX1ZBUklBTlRfQ0xBU1NfU1RSSU5HKQorICAg
ICAgICAgICAgICAgIG1fbm9kZS5jb250ZW50cyA9IGdfdmFyaWFudF9nZXRfc3RyaW5nKHZhbHVl
LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiUGFyZW50Iikg
JiYgZ192YXJpYW50X2NsYXNzaWZ5KHZhbHVlKSA9PSBHX1ZBUklBTlRfQ0xBU1NfU1RSSU5HKQor
ICAgICAgICAgICAgICAgIG1fbm9kZS5wYXJlbnROYW1lID0gZ192YXJpYW50X2dldF9zdHJpbmco
dmFsdWUsIG51bGxwdHIpOworICAgICAgICAgICAgZ192YXJpYW50X3VucmVmKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGJvb2wgY29udGV4dE1lbnUoV2ViS2l0Q29udGV4dE1lbnUq
IG1lbnUsIEdka0V2ZW50KiwgV2ViS2l0SGl0VGVzdFJlc3VsdCopCisgICAgeworICAgICAgICBk
ZXNlcmlhbGl6ZU5vZGVGcm9tVXNlckRhdGEod2Via2l0X2NvbnRleHRfbWVudV9nZXRfdXNlcl9k
YXRhKG1lbnUpKTsKKyAgICAgICAgcXVpdE1haW5Mb29wKCk7CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgTm9kZSBtX25vZGU7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0Q29u
dGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlKENvbnRleHRNZW51V2ViRXh0ZW5zaW9uTm9kZVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVu
dGlsTWFwcGVkKCk7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PjxwIHN0eWxlPSdw
b3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6MSc+V2ViS2l0R1RLKyBDb250ZXh0IG1lbnUg
dGVzdHM8L3A+PGJyPiIKKyAgICAgICAgIjxhIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVm
dDoxOyB0b3A6MTAwJyBocmVmPSdodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcnPldlYktpdEdUSysg
V2Vic2l0ZTwvYT48L2JvZHk+PC9odG1sPiIsCisgICAgICAgICJDb250ZXh0TWVudVRlc3ROb2Rl
Iik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICB0ZXN0LT5zaG93
Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoMCwgMCk7CisgICAgZ19h
c3NlcnRfY21wc3RyKHRlc3QtPm1fbm9kZS5uYW1lLmRhdGEoKSwgPT0sICJIVE1MIik7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5tX25vZGUudHlwZSwgPT0sIENvbnRleHRNZW51V2ViRXh0
ZW5zaW9uTm9kZVRlc3Q6Ok5vZGU6Ok5vZGVFbGVtZW50KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
dGVzdC0+bV9ub2RlLmNvbnRlbnRzLmRhdGEoKSwgPT0sICJXZWJLaXRHVEsrIENvbnRleHQgbWVu
dSB0ZXN0c1dlYktpdEdUSysgV2Vic2l0ZSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5t
X25vZGUucGFyZW50TmFtZS5kYXRhKCksID09LCAiI2RvY3VtZW50Iik7CisKKyAgICB0ZXN0LT5z
aG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoMSwgMjApOworICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX25vZGUubmFtZS5kYXRhKCksID09LCAiI3RleHQiKTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbm9kZS50eXBlLCA9PSwgQ29udGV4dE1lbnVX
ZWJFeHRlbnNpb25Ob2RlVGVzdDo6Tm9kZTo6Tm9kZVRleHQpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih0ZXN0LT5tX25vZGUuY29udGVudHMuZGF0YSgpLCA9PSwgIldlYktpdEdUSysgQ29udGV4dCBt
ZW51IHRlc3RzIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fbm9kZS5wYXJlbnROYW1l
LmRhdGEoKSwgPT0sICJQIik7CisKKyAgICAvLyBMaW5rIG1lbnUuCisgICAgdGVzdC0+c2hvd0Nv
bnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDEsIDEwMSk7CisgICAgZ19h
c3NlcnRfY21wc3RyKHRlc3QtPm1fbm9kZS5uYW1lLmRhdGEoKSwgPT0sICIjdGV4dCIpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9ub2RlLnR5cGUsID09LCBDb250ZXh0TWVudVdlYkV4
dGVuc2lvbk5vZGVUZXN0OjpOb2RlOjpOb2RlVGV4dCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRl
c3QtPm1fbm9kZS5jb250ZW50cy5kYXRhKCksID09LCAiV2ViS2l0R1RLKyBXZWJzaXRlIik7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fbm9kZS5wYXJlbnROYW1lLmRhdGEoKSwgPT0sICJB
Iik7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQo
KSwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKICAgICBDb250ZXh0TWVudURlZmF1
bHRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGVmYXVsdC1tZW51IiwgdGVzdENvbnRleHRN
ZW51RGVmYXVsdE1lbnUpOwogICAgIENvbnRleHRNZW51Q3VzdG9tVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgInBvcHVsYXRlLW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVQb3B1bGF0ZU1lbnUpOwog
ICAgIENvbnRleHRNZW51Q3VzdG9tRnVsbFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjdXN0
b20tbWVudSIsIHRlc3RDb250ZXh0TWVudUN1c3RvbU1lbnUpOwpAQCAtODkxLDYgKzEwNDgsOCBA
QCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgQ29udGV4dE1lbnVTdWJtZW51VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgInN1Ym1lbnUiLCB0ZXN0Q29udGV4dE1lbnVTdWJNZW51KTsKICAgICBDb250
ZXh0TWVudURpc21pc3NlZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJtZW51LWRpc21pc3Nl
ZCIsIHRlc3RDb250ZXh0TWVudURpc21pc3NlZCk7CiAgICAgQ29udGV4dE1lbnVTbWFydFNlcGFy
YXRvcnNUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic21hcnQtc2VwYXJhdG9ycyIsIHRlc3RD
b250ZXh0TWVudVNtYXJ0U2VwYXJhdG9ycyk7CisgICAgQ29udGV4dE1lbnVXZWJFeHRlbnNpb25U
ZXN0OjphZGQoIldlYktpdFdlYlBhZ2UiLCAiY29udGV4dC1tZW51IiwgdGVzdENvbnRleHRNZW51
V2ViRXh0ZW5zaW9uTWVudSk7CisgICAgQ29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlVGVzdDo6
YWRkKCJXZWJLaXRXZWJQYWdlIiwgImNvbnRleHQtbWVudS1ub2RlIiwgdGVzdENvbnRleHRNZW51
V2ViRXh0ZW5zaW9uTm9kZSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3Bw
CmluZGV4IDc1NzUzMmYuLjUxNTkwMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTE1OSwxMSAr
MTU5LDY3IEBAIHN0YXRpYyBnYm9vbGVhbiBzZW5kUmVxdWVzdENhbGxiYWNrKFdlYktpdFdlYlBh
Z2UqLCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBXCiAgICAgcmV0dXJuIEZBTFNFOwogfQog
CitzdGF0aWMgR1ZhcmlhbnQqIHNlcmlhbGl6ZUNvbnRleHRNZW51KFdlYktpdENvbnRleHRNZW51
KiBtZW51KQoreworICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOworICAgIGdfdmFyaWFudF9i
dWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX0FSUkFZKTsKKyAgICBHTGlzdCog
aXRlbXMgPSB3ZWJraXRfY29udGV4dF9tZW51X2dldF9pdGVtcyhtZW51KTsKKyAgICBmb3IgKEdM
aXN0KiBpdCA9IGl0ZW1zOyBpdDsgaXQgPSBnX2xpc3RfbmV4dChpdCkpCisgICAgICAgIGdfdmFy
aWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgInUiLCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1f
Z2V0X3N0b2NrX2FjdGlvbihXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oaXQtPmRhdGEpKSk7Cisg
ICAgcmV0dXJuIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcik7Cit9CisKK3N0YXRpYyBH
VmFyaWFudCogc2VyaWFsaXplTm9kZShXZWJLaXRET01Ob2RlKiBub2RlKQoreworICAgIEdWYXJp
YW50QnVpbGRlciBidWlsZGVyOworICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIs
IEdfVkFSSUFOVF9UWVBFX0FSUkFZKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxk
ZXIsICJ7c3Z9IiwgIk5hbWUiLCBnX3ZhcmlhbnRfbmV3X3Rha2Vfc3RyaW5nKHdlYmtpdF9kb21f
bm9kZV9nZXRfbm9kZV9uYW1lKG5vZGUpKSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZi
dWlsZGVyLCAie3N2fSIsICJUeXBlIiwgZ192YXJpYW50X25ld191aW50MzIod2Via2l0X2RvbV9u
b2RlX2dldF9ub2RlX3R5cGUobm9kZSkpKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1
aWxkZXIsICJ7c3Z9IiwgIkNvbnRlbnRzIiwgZ192YXJpYW50X25ld190YWtlX3N0cmluZyh3ZWJr
aXRfZG9tX25vZGVfZ2V0X3RleHRfY29udGVudChub2RlKSkpOworICAgIFdlYktpdERPTU5vZGUq
IHBhcmVudCA9IHdlYmtpdF9kb21fbm9kZV9nZXRfcGFyZW50X25vZGUobm9kZSk7CisgICAgZ192
YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJQYXJlbnQiLCBwYXJlbnQgPyBn
X3ZhcmlhbnRfbmV3X3Rha2Vfc3RyaW5nKHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKHBh
cmVudCkpIDogZ192YXJpYW50X25ld19zdHJpbmcoIlJPT1QiKSk7CisgICAgcmV0dXJuIGdfdmFy
aWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBjb250ZXh0
TWVudUNhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIFdlYktpdENvbnRleHRNZW51KiBtZW51
LCBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0LCBncG9pbnRlcikKK3sKKyAg
ICBjb25zdCBjaGFyKiBwYWdlVVJJID0gd2Via2l0X3dlYl9wYWdlX2dldF91cmkocGFnZSk7Cisg
ICAgaWYgKCFnX3N0cmNtcDAocGFnZVVSSSwgIkNvbnRleHRNZW51VGVzdERlZmF1bHQiKSkgewor
ICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X3NldF91c2VyX2RhdGEobWVudSwgc2VyaWFsaXpl
Q29udGV4dE1lbnUobWVudSkpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAg
aWYgKCFnX3N0cmNtcDAocGFnZVVSSSwgIkNvbnRleHRNZW51VGVzdEN1c3RvbSIpKSB7CisgICAg
ICAgIC8vIFJlbW92ZSBCYWNrIGFuZCBGb3J3YXJkLCBhbmQgYWRkIEluc3BlY3RvciBhY3Rpb24u
CisgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3ZlKG1lbnUsIHdlYmtpdF9jb250ZXh0
X21lbnVfZmlyc3QobWVudSkpOworICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZSht
ZW51LCB3ZWJraXRfY29udGV4dF9tZW51X2ZpcnN0KG1lbnUpKTsKKyAgICAgICAgd2Via2l0X2Nv
bnRleHRfbWVudV9hcHBlbmQobWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBh
cmF0b3IoKSk7CisgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfYXBwZW5kKG1lbnUsIHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24oV0VCS0lUX0NPTlRFWFRf
TUVOVV9BQ1RJT05fSU5TUEVDVF9FTEVNRU5UKSk7CisgICAgICAgIHdlYmtpdF9jb250ZXh0X21l
bnVfc2V0X3VzZXJfZGF0YShtZW51LCBzZXJpYWxpemVDb250ZXh0TWVudShtZW51KSk7CisgICAg
ICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGlmICghZ19zdHJjbXAwKHBhZ2VVUkksICJD
b250ZXh0TWVudVRlc3RDbGVhciIpKSB7CisgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVt
b3ZlX2FsbChtZW51KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFn
X3N0cmNtcDAocGFnZVVSSSwgIkNvbnRleHRNZW51VGVzdE5vZGUiKSkgeworICAgICAgICBXZWJL
aXRET01Ob2RlKiBub2RlID0gd2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X25vZGUoaGl0
VGVzdFJlc3VsdCk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7
CisgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YShtZW51LCBzZXJpYWxp
emVOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgcmV0dXJu
IEZBTFNFOworfQorCiBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4
dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9pbnRlcikKIHsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJkb2N1bWVudC1sb2FkZWQiLCBHX0NBTExC
QUNLKGRvY3VtZW50TG9hZGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViUGFnZSwgIm5vdGlmeTo6dXJpIiwgR19DQUxMQkFDSyh1cmlDaGFuZ2VkQ2FsbGJh
Y2spLCBleHRlbnNpb24pOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgInNlbmQtcmVx
dWVzdCIsIEdfQ0FMTEJBQ0soc2VuZFJlcXVlc3RDYWxsYmFjayksIDApOworICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViUGFnZSwgInNlbmQtcmVxdWVzdCIsIEdfQ0FMTEJBQ0soc2VuZFJlcXVlc3RD
YWxsYmFjayksIG51bGxwdHIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImNvbnRl
eHQtbWVudSIsIEdfQ0FMTEJBQ0soY29udGV4dE1lbnVDYWxsYmFjayksIG51bGxwdHIpOwogfQog
CiBzdGF0aWMgSlNWYWx1ZVJlZiBlY2hvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGpzQ29udGV4dCwg
SlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopCg==
</data>
<flag name="review"
          id="265913"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>