<?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>99705</bug_id>
          
          <creation_ts>2012-10-18 03:51:42 -0700</creation_ts>
          <short_desc>[GTK] Use custom private macros to define GObjects</short_desc>
          <delta_ts>2012-11-23 00:31:45 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>96774</dependson>
    
    <dependson>96777</dependson>
    
    <dependson>96779</dependson>
    
    <dependson>96781</dependson>
    
    <dependson>96782</dependson>
    
    <dependson>96783</dependson>
    
    <dependson>96784</dependson>
    
    <dependson>96785</dependson>
    
    <dependson>99724</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>745141</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-18 03:51:42 -0700</bug_when>
    <thetext>We can reduce the GObject boilerplate and hide the placement new syntax that causes some confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745147</commentid>
    <comment_count>1</comment_count>
      <attachid>169389</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-18 04:00:11 -0700</bug_when>
    <thetext>Created attachment 169389
Patch

This patch should be applied on top of the C API migration ones. It removes ~350 lines of GObject boilerplate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745288</commentid>
    <comment_count>2</comment_count>
      <attachid>169422</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-18 08:41:13 -0700</bug_when>
    <thetext>Created attachment 169422
Updated patch

Patch updated just to apply on top of patch attached to bug #99724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745289</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 08:46:03 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745290</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 08:46:27 -0700</bug_when>
    <thetext>Attachment 169422 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:69:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:70:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:108:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:111:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:112:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:128:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 12 in 31 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>745470</commentid>
    <comment_count>5</comment_count>
      <attachid>169422</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-18 12:31:58 -0700</bug_when>
    <thetext>Comment on attachment 169422
Updated patch

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

Nice work, but until we establish an exception for GTK code for code indenting, I think we should just follow the style rules. 

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:47
&gt;&gt; +WEBKIT_DEFINE_TYPE_WITH_CODE(WebKitGeolocationPermissionRequest, webkit_geolocation_permission_request, G_TYPE_OBJECT,
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Please follow the style rule here.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:69
&gt;&gt; +#define WEBKIT_DEFINE_TYPE(TN, t_n, T_P) _WEBKIT_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, 0, {})
&gt; 
&gt; Missing space inside { }.  [whitespace/braces] [5]

Instead of using variable names like TN, t_n and T_P they should be real words, I think.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:74
&gt; +#define _WEBKIT_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \

Instead of using TypeName, type_name, TYPE_PARENT, how about typeName, underscoredTypeName, parentType, flags?

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:106
&gt;&gt; +                                          g_intern_static_string(#TypeName), \
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Please follow the style rule here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746023</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-18 23:11:57 -0700</bug_when>
    <thetext>WebKitPrivate.h should probably just be ignored by the style checker, I can include that in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773855</commentid>
    <comment_count>7</comment_count>
      <attachid>175652</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-22 05:20:04 -0800</bug_when>
    <thetext>Created attachment 175652
Updated patch

Managed to work around all the style &quot;issues&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774271</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-23 00:31:45 -0800</bug_when>
    <thetext>Committed r135565: &lt;http://trac.webkit.org/changeset/135565&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169389</attachid>
            <date>2012-10-18 04:00:11 -0700</date>
            <delta_ts>2012-10-18 08:41:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-webkit-define-type.diff</filename>
            <type>text/plain</type>
            <size>76705</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiY2QzMTQ0Li4xMjNiNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2
IEBACisyMDEyLTEwLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBVc2UgY3VzdG9tIHByaXZhdGUgbWFjcm9zIHRvIGRlZmluZSBH
T2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgV0VCS0lUX0RFRklORV9UWVBFIG1hY3Jvcywgc2ltaWxhciBhbmQgY29tcGF0aWJsZSB3aXRo
CisgICAgICAgIEdfREVGSU5FX1RZUEUgbWFjcm9zLCB0byBkZWZpbmUgR09iamVjdCB0eXBlcy4g
VGhlc2UgbWFjcm9zIGFsc28KKyAgICAgICAgZGVmaW5lIHRoZSBpbml0IGFuZCBmaW5hbGl6ZSBm
dW5jdGlvbnMgcmVkdWNpbmcgdGhlIEdPYmplY3QKKyAgICAgICAgYm9pbGVycGxhdGUgYW5kIGhp
ZGluZyB0aGUgcGxhY2VtZW50IG5ldyBzeW50YXggdGhhdCBjYXVzZXMgc29tZQorICAgICAgICBj
b25mdXNpb24uIFRoZSBwYXRjaCByZXBsYWNlcyB0aGUgdXNlIG9mIEdfREVGSU5FX1RZUEUgbWFj
cm9zIGJ5CisgICAgICAgIFdFQktJVF9ERUZJTkVfVFlQRSBvbmVzIGFuZCByZW1vdmVzIHRoZSBp
bml0IGFuZCBmaW5hbGl6ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMsIG1vdmluZyBjdXN0b20g
Y29kZSB3aGVuIG5lZWRlZCB0byB0aGUgcHJpdmF0ZQorICAgICAgICBzdHJ1Y3QgY29uc3RydWN0
b3IvZGVzdHJ1Y3RvciBvciBjb25zdHJ1Y3RlZC9kaXNwb3NlIHZpcnR1YWwKKyAgICAgICAgbWV0
aG9kcyB3aGVuIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51RGlzcG9zZSk6Cisg
ICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgIChfV2ViS2l0
Q29udGV4dE1lbnVJdGVtUHJpdmF0ZTo6fl9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKToK
KyAgICAgICAgKF9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKToKKyAgICAgICAgKHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRDb29raWVNYW5h
Z2VyUHJpdmF0ZTo6fl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgIChfV2Vi
S2l0Q29va2llTWFuYWdlclByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdERvd25sb2FkLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb3dubG9hZF9jbGFzc19pbml0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgor
ICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfY2xhc3NfaW5pdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9maW5kX2NvbnRyb2xs
ZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1
Ym1pc3Npb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVz
dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2NsYXNz
X2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25f
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY2xhc3Nf
aW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bl9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4u
Y3BwOgorICAgICAgICAoX1dlYktpdFBsdWdpblByaXZhdGU6On5fV2ViS2l0UGx1Z2luUHJpdmF0
ZSk6CisgICAgICAgIChfV2ViS2l0UGx1Z2luUHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1
Z2luX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFBvbGljeURlY2lzaW9uRGlzcG9zZSk6Cisg
ICAgICAgICh3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lv
bl9pZ25vcmUpOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwOgorICAg
ICAgICAoX1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZTo6fl9XZWJLaXRQcmludE9wZXJhdGlv
blByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdF9yZXNw
b25zZV9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0
eV9tYW5hZ2VyX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9XZWJLaXRTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRT
ZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9u
c2UuY3BwOgorICAgICAgICAod2Via2l0X3VyaV9yZXNwb25zZV9jbGFzc19pbml0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlOjp+X1dlYktpdFdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAoX1dl
YktpdFdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9yZXNvdXJjZV9jbGFzc19pbml0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJL
aXRXZWJWaWV3UHJpdmF0ZTo6fl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChfV2Vi
S2l0V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjpfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOgor
ICAgICAgICAoX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6fl9XZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jh
c2VfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VBY2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vz
c2libGVfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2lu
ZG93UHJvcGVydGllcy5jcHA6CisgICAgICAgICh3ZWJraXRfd2luZG93X3Byb3BlcnRpZXNfY2xh
c3NfaW5pdCk6CisKIDIwMTItMTAtMTggIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtXSzJdIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9uIGZvciB0aGUgcHl0
aG9uIG1lc3NhZ2UgdGVzdCBhZnRlciByMTMxNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBk
NjAwZDc4Li5hN2U2ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTYxLDI3ICs2MSwxMCBA
QCBzdHJ1Y3QgX1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUgewogCiBzdGF0aWMgZ3VpbnQg
c2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0QmFj
a0ZvcndhcmRMaXN0LCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3QsIEdfVFlQRV9PQkpFQ1QpCi0K
LXN0YXRpYyB2b2lkIHdlYmtpdEJhY2tGb3J3YXJkTGlzdEZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKLXsKLSAgICBXRUJLSVRfQkFDS19GT1JXQVJEX0xJU1Qob2JqZWN0KS0+cHJpdi0+fldlYktp
dEJhY2tGb3J3YXJkTGlzdFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfYmFj
a19mb3J3YXJkX2xpc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3Rh
dGljIHZvaWQgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2luaXQoV2ViS2l0QmFja0ZvcndhcmRM
aXN0KiBsaXN0KQotewotICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUqIHByaXYgPSBH
X1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUobGlzdCwgV0VCS0lUX1RZUEVfQkFDS19GT1JXQVJE
X0xJU1QsIFdlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUpOwotICAgIGxpc3QtPnByaXYgPSBw
cml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZSgpOwotfQor
V0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEJhY2tGb3J3YXJkTGlzdCwgd2Via2l0X2JhY2tfZm9y
d2FyZF9saXN0LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfY2xhc3NfaW5pdChXZWJLaXRCYWNrRm9yd2FyZExpc3RDbGFzcyogbGlzdENsYXNz
KQogewotICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MobGlz
dENsYXNzKTsKLQotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRCYWNrRm9yd2Fy
ZExpc3RGaW5hbGl6ZTsKLQogICAgIC8qKgogICAgICAqIFdlYktpdEJhY2tGb3J3YXJkTGlzdDo6
Y2hhbmdlZDoKICAgICAgKiBAYmFja19mb3J3YXJkX2xpc3Q6IHRoZSAjV2ViS2l0QmFja0Zvcndh
cmRMaXN0IG9uIHdoaWNoIHRoZSBzaWduYWwgd2FzIGVtaXR0ZWQKQEAgLTEwMyw4ICs4Niw2IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9jbGFzc19pbml0KFdlYktpdEJh
Y2tGb3J3YXJkTGlzdENsYXNzKiBsaXN0CiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9O
RSwgMiwKICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0JBQ0tfRk9SV0FSRF9MSVNU
X0lURU0sCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7Ci0KLSAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlzdENsYXNzLCBzaXplb2YoV2ViS2l0QmFja0ZvcndhcmRM
aXN0UHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSogd2Vi
a2l0QmFja0ZvcndhcmRMaXN0R2V0T3JDcmVhdGVJdGVtKFdlYktpdEJhY2tGb3J3YXJkTGlzdCog
bGlzdCwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViTGlzdEl0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwCmluZGV4IDhiMjJhZmMuLjUzZmQxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCkBAIC0zNSwyOCArMzUsMTAgQEAgc3RydWN0IF9XZWJLaXRCYWNrRm9yd2FyZExp
c3RJdGVtUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbFVSSTsKIH07CiAKLUdfREVGSU5F
X1RZUEUoV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSwgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2l0ZW0sIEdfVFlQRV9JTklUSUFMTFlfVU5PV05FRCkKLQotc3RhdGljIHZvaWQgd2Via2l0QmFj
a0ZvcndhcmRMaXN0SXRlbUZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRf
QkFDS19GT1JXQVJEX0xJU1RfSVRFTShvYmplY3QpLT5wcml2LT5+V2ViS2l0QmFja0ZvcndhcmRM
aXN0SXRlbVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfaXRlbV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9pbml0KFdlYktpdEJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGxpc3RJdGVtKQotewotICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2
YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGxpc3RJdGVtLCBXRUJLSVRf
VFlQRV9CQUNLX0ZPUldBUkRfTElTVF9JVEVNLCBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtUHJp
dmF0ZSk7Ci0gICAgbGlzdEl0ZW0tPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0
QmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUoKTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtLCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbSwgR19U
WVBFX0lOSVRJQUxMWV9VTk9XTkVEKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfaXRlbV9jbGFzc19pbml0KFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW1DbGFzcyogbGlz
dEl0ZW1DbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGxpc3RJdGVtQ2xhc3MpOwotCi0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdl
YmtpdEJhY2tGb3J3YXJkTGlzdEl0ZW1GaW5hbGl6ZTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRf
cHJpdmF0ZShsaXN0SXRlbUNsYXNzLCBzaXplb2YoV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbVBy
aXZhdGUpKTsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBX
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKj4gSGlzdG9yeUl0ZW1zTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCmlu
ZGV4IDUxMGMyNWQuLjVhM2Q3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5jcHAKQEAgLTMyLDI5ICszMiwxOCBAQCBz
dHJ1Y3QgX1dlYktpdENvbnRleHRNZW51UHJpdmF0ZSB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiBwYXJlbnRJdGVtOwogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRDb250ZXh0TWVudSwg
d2Via2l0X2NvbnRleHRfbWVudSwgR19UWVBFX09CSkVDVCkKK1dFQktJVF9ERUZJTkVfVFlQRShX
ZWJLaXRDb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRfbWVudSwgR19UWVBFX09CSkVDVCkKIAot
c3RhdGljIHZvaWQgd2Via2l0Q29udGV4dE1lbnVGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCitz
dGF0aWMgdm9pZCB3ZWJraXRDb250ZXh0TWVudURpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewot
ICAgIFdlYktpdENvbnRleHRNZW51KiBtZW51ID0gV0VCS0lUX0NPTlRFWFRfTUVOVShvYmplY3Qp
OwotICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3ZlX2FsbChtZW51KTsKLSAgICBtZW51LT5w
cml2LT5+V2ViS2l0Q29udGV4dE1lbnVQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X2NvbnRleHRfbWVudV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfY29udGV4dF9tZW51X2luaXQoV2ViS2l0Q29udGV4dE1lbnUqIG1l
bnUpCi17Ci0gICAgV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKG1lbnUsIFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVSwgV2ViS2l0Q29u
dGV4dE1lbnVQcml2YXRlKTsKLSAgICBtZW51LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYp
IFdlYktpdENvbnRleHRNZW51UHJpdmF0ZSgpOworICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVt
b3ZlX2FsbChXRUJLSVRfQ09OVEVYVF9NRU5VKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF9jb250ZXh0X21lbnVfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfY29udGV4dF9tZW51X2NsYXNzX2luaXQoV2ViS2l0Q29udGV4
dE1lbnVDbGFzcyogbGlzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1MobGlzdENsYXNzKTsKLSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0Q29udGV4dE1lbnVGaW5hbGl6ZTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJp
dmF0ZShsaXN0Q2xhc3MsIHNpemVvZihXZWJLaXRDb250ZXh0TWVudVByaXZhdGUpKTsKKyAgICBn
T2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRDb250ZXh0TWVudURpc3Bvc2U7CiB9CiAKIHZv
aWQgd2Via2l0Q29udGV4dE1lbnVQb3B1bGF0ZShXZWJLaXRDb250ZXh0TWVudSogbWVudSwgVmVj
dG9yPENvbnRleHRNZW51SXRlbT4mIGNvbnRleHRNZW51SXRlbXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNw
cAppbmRleCAwODg3Zjc3Li4zZmRiZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTM3LDMz
ICszNywyMCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0cnVjdCBfV2ViS2l0Q29u
dGV4dE1lbnVJdGVtUHJpdmF0ZSB7CisgICAgfl9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRl
KCkKKyAgICB7CisgICAgICAgIGlmIChzdWJNZW51KQorICAgICAgICAgICAgd2Via2l0Q29udGV4
dE1lbnVTZXRQYXJlbnRJdGVtKHN1Yk1lbnUuZ2V0KCksIDApOworICAgIH0KKwogICAgIE93blB0
cjxDb250ZXh0TWVudUl0ZW0+IG1lbnVJdGVtOwogICAgIEdSZWZQdHI8V2ViS2l0Q29udGV4dE1l
bnU+IHN1Yk1lbnU7CiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdENvbnRleHRNZW51SXRlbSwg
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtLCBHX1RZUEVfSU5JVElBTExZX1VOT1dORUQpCi0KLXN0
YXRpYyB2b2lkIHdlYmtpdENvbnRleHRNZW51SXRlbUZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
LXsKLSAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0NPTlRF
WFRfTUVOVV9JVEVNKG9iamVjdCktPnByaXY7Ci0gICAgaWYgKHByaXYtPnN1Yk1lbnUpCi0gICAg
ICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRlbShwcml2LT5zdWJNZW51LmdldCgpLCAw
KTsKLSAgICBwcml2LT5+V2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSgpOwotICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6
ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1faW5p
dChXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCi17Ci0gICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShpdGVtLCBXRUJL
SVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgV2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSk7
Ci0gICAgaXRlbS0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRDb250ZXh0TWVu
dUl0ZW1Qcml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29udGV4dE1lbnVJ
dGVtLCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW0sIEdfVFlQRV9JTklUSUFMTFlfVU5PV05FRCkK
IAogc3RhdGljIHZvaWQgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2NsYXNzX2luaXQoV2ViS2l0
Q29udGV4dE1lbnVJdGVtQ2xhc3MqIGl0ZW1DbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MqIGdP
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGl0ZW1DbGFzcyk7Ci0gICAgZ09iamVjdENsYXNz
LT5maW5hbGl6ZSA9IHdlYmtpdENvbnRleHRNZW51SXRlbUZpbmFsaXplOwotICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShpdGVtQ2xhc3MsIHNpemVvZihXZWJLaXRDb250ZXh0TWVudUl0ZW1Q
cml2YXRlKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrQW5kV2FybklmTWVudUhhc1BhcmVudEl0
ZW0oV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDAzN2I2OTEu
LjU0NmVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zNCwxMiArMzQsMTcgQEAgZW51bSB7CiB9
OwogCiBzdHJ1Y3QgX1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlIHsKKyAgICB+X1dlYktpdENv
b2tpZU1hbmFnZXJQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHdlYkNvb2tpZU1hbmFnZXItPnN0
b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CisgICAgfQorCiAgICAgUmVmUHRyPFdlYkNvb2tp
ZU1hbmFnZXJQcm94eT4gd2ViQ29va2llTWFuYWdlcjsKIH07CiAKIHN0YXRpYyBndWludCBzaWdu
YWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRDb29raWVN
YW5hZ2VyLCB3ZWJraXRfY29va2llX21hbmFnZXIsIEdfVFlQRV9PQkpFQ1QpCitXRUJLSVRfREVG
SU5FX1RZUEUoV2ViS2l0Q29va2llTWFuYWdlciwgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyLCBHX1RZ
UEVfT0JKRUNUKQogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9DT09LSUVf
UEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVRleHQp
OwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRf
U1RPUkFHRV9TUUxJVEUsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNRTGl0ZSk7CkBAIC00
OCwyNyArNTMsOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9DT09LSUVf
UE9MSUNZX0FDQ0VQVF9BTFdBWVMsIEhUVFBDb29raWVBY2NlcAogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVIsIEhUVFBDb29raWVB
Y2NlcHRQb2xpY3lOZXZlcik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9D
T09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWSwgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKIAotc3RhdGljIHZvaWQgd2Via2l0X2Nvb2tp
ZV9tYW5hZ2VyX2luaXQoV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlcikKLXsKLSAgICBXZWJL
aXRDb29raWVNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RShtYW5hZ2VyLCBXRUJLSVRfVFlQRV9DT09LSUVfTUFOQUdFUiwgV2ViS2l0Q29va2llTWFuYWdl
clByaXZhdGUpOwotICAgIG1hbmFnZXItPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2Vi
S2l0Q29va2llTWFuYWdlclByaXZhdGUoKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0Q29va2ll
TWFuYWdlckZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRDb29raWVNYW5h
Z2VyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9DT09LSUVfTUFOQUdFUihvYmplY3QpLT5wcml2Owot
ICAgIHByaXYtPndlYkNvb2tpZU1hbmFnZXItPnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7
Ci0gICAgcHJpdi0+fldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9jbGFzc19pbml0KFdl
YktpdENvb2tpZU1hbmFnZXJDbGFzcyogZmluZENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyog
Z09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKLSAgICBnT2JqZWN0Q2xh
c3MtPmZpbmFsaXplID0gd2Via2l0Q29va2llTWFuYWdlckZpbmFsaXplOwotCi0gICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKGZpbmRDbGFzcywgc2l6ZW9mKFdlYktpdENvb2tpZU1hbmFnZXJQ
cml2YXRlKSk7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRDb29raWVNYW5hZ2VyOjpjaGFuZ2Vk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93
bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxv
YWQuY3BwCmluZGV4IDYyMGFjOTYuLmUxMzVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKQEAgLTY2LDEzICs2Niw3IEBA
IHN0cnVjdCBfV2ViS2l0RG93bmxvYWRQcml2YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNb
TEFTVF9TSUdOQUxdID0geyAwLCB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdERvd25sb2FkLCB3
ZWJraXRfZG93bmxvYWQsIEdfVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdERvd25s
b2FkRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9ET1dOTE9BRChvYmpl
Y3QpLT5wcml2LT5+V2ViS2l0RG93bmxvYWRQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2Rvd25sb2FkX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19CitXRUJL
SVRfREVGSU5FX1RZUEUoV2ViS2l0RG93bmxvYWQsIHdlYmtpdF9kb3dubG9hZCwgR19UWVBFX09C
SkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0RG93bmxvYWRHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVj
KQogewpAQCAtMTA2LDE4ICsxMDAsMTAgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdERvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb24oV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdAogICAgIHJl
dHVybiBUUlVFOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG93bmxvYWRfaW5pdChXZWJLaXRE
b3dubG9hZCogZG93bmxvYWQpCi17Ci0gICAgV2ViS2l0RG93bmxvYWRQcml2YXRlKiBwcml2ID0g
R19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGRvd25sb2FkLCBXRUJLSVRfVFlQRV9ET1dOTE9B
RCwgV2ViS2l0RG93bmxvYWRQcml2YXRlKTsKLSAgICBkb3dubG9hZC0+cHJpdiA9IHByaXY7Ci0g
ICAgbmV3IChwcml2KSBXZWJLaXREb3dubG9hZFByaXZhdGUoKTsKLX0KLQogc3RhdGljIHZvaWQg
d2Via2l0X2Rvd25sb2FkX2NsYXNzX2luaXQoV2ViS2l0RG93bmxvYWRDbGFzcyogZG93bmxvYWRD
bGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
ZG93bmxvYWRDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdERv
d25sb2FkR2V0UHJvcGVydHk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0RG93
bmxvYWRGaW5hbGl6ZTsKIAogICAgIGRvd25sb2FkQ2xhc3MtPmRlY2lkZV9kZXN0aW5hdGlvbiA9
IHdlYmtpdERvd25sb2FkRGVjaWRlRGVzdGluYXRpb247CiAKQEAgLTI1OSw4ICsyNDUsNiBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfZG93bmxvYWRfY2xhc3NfaW5pdChXZWJLaXREb3dubG9hZENsYXNz
KiBkb3dubG9hZENsYXNzKQogICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFs
X1ZPSURfX1NUUklORywKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAog
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORyk7Ci0KLSAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoZG93bmxvYWRDbGFzcywgc2l6ZW9mKFdlYktpdERvd25sb2FkUHJpdmF0ZSkp
OwogfQogCiBXZWJLaXREb3dubG9hZCogd2Via2l0RG93bmxvYWRDcmVhdGUoRG93bmxvYWRQcm94
eSogZG93bmxvYWRQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IGRjMzIwYmIuLmQ5MDNm
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtNTAsMTQgKzUwLDcgQEAgc3RydWN0IF9XZWJL
aXRGYXZpY29uRGF0YWJhc2VQcml2YXRlIHsKICAgICBQZW5kaW5nSWNvblJlcXVlc3RNYXAgcGVu
ZGluZ0ljb25SZXF1ZXN0czsKIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZSwgR19UWVBFX09CSkVDVCkKLQotc3RhdGljIHZv
aWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfaW5pdChXZWJLaXRGYXZpY29uRGF0YWJhc2UqIG1h
bmFnZXIpCi17Ci0gICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IEdfVFlQ
RV9JTlNUQU5DRV9HRVRfUFJJVkFURShtYW5hZ2VyLCBXRUJLSVRfVFlQRV9GQVZJQ09OX0RBVEFC
QVNFLCBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKTsKLSAgICBtYW5hZ2VyLT5wcml2ID0g
cHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUoKTsKLX0K
K1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRGYXZpY29uRGF0YWJhc2UsIHdlYmtpdF9mYXZpY29u
X2RhdGFiYXNlLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRGYXZpY29uRGF0
YWJhc2VEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKQEAgLTcwLDE4ICs2MywxMCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAg
ICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9wYXJlbnRfY2xhc3MpLT5k
aXNwb3NlKG9iamVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZUZp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRh
dGFiYXNlID0gV0VCS0lUX0ZBVklDT05fREFUQUJBU0Uob2JqZWN0KTsKLSAgICBkYXRhYmFzZS0+
cHJpdi0+fldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9jbGFzc19pbml0KFdl
YktpdEZhdmljb25EYXRhYmFzZUNsYXNzKiBmYXZpY29uRGF0YWJhc2VDbGFzcykKIHsKICAgICBH
T2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGZhdmljb25EYXRhYmFz
ZUNsYXNzKTsKICAgICBnT2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRGYXZpY29uRGF0YWJh
c2VEaXNwb3NlOwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRGYXZpY29uRGF0
YWJhc2VGaW5hbGl6ZTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdEZhdmljb25EYXRhYmFzZTo6
ZmF2aWNvbi1yZWFkeToKQEAgLTEwMiw4ICs4Nyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9mYXZp
Y29uX2RhdGFiYXNlX2NsYXNzX2luaXQoV2ViS2l0RmF2aWNvbkRhdGFiYXNlQ2xhc3MqIGZhdmlj
CiAgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fU1RSSU5HLAog
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAgICAgICAgICAg
ICBHX1RZUEVfU1RSSU5HKTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShmYXZpY29u
RGF0YWJhc2VDbGFzcywgc2l6ZW9mKFdlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUpKTsKIH0K
IAogc3RydWN0IEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QuY3BwCmluZGV4IGEyZGU0MjUuLmE4MzY3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNw
cApAQCAtNTUsNyArNTUsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAqIFdlYktpdCB3
aWxsIHByb3ZpZGUgYSBkZWZhdWx0IGhhbmRsZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBy
dW4KICAqIGEgcmVndWxhciAjR3RrRmlsZUNob29zZXJEaWFsb2cgZm9yIHRoZSB1c2VyIHRvIGlu
dGVyYWN0IHdpdGguCiAgKi8KLUdfREVGSU5FX1RZUEUoV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0
LCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0cnVjdCBf
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPFdlYk9wZW5QYW5l
bFBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CkBAIC02Niw2ICs2NSw4IEBAIHN0cnVjdCBfV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsKIH07
CiAKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QsIHdlYmtpdF9m
aWxlX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKwogZW51bSB7CiAgICAgUFJPUF8w
LAogICAgIFBST1BfRklMVEVSLApAQCAtNzQsMTMgKzc1LDcgQEAgZW51bSB7CiAgICAgUFJPUF9T
RUxFQ1RFRF9GSUxFUywKIH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9maWxlX2Nob29zZXJfcmVx
dWVzdF9pbml0KFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICByZXF1
ZXN0LT5wcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9U
WVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRl
KTsKLSAgICBuZXcgKHJlcXVlc3QtPnByaXYpIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZh
dGUoKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RmluYWxpemUo
R09iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RGlz
cG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiBy
ZXF1ZXN0ID0gV0VCS0lUX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CiAKQEAgLTg4LDgg
KzgzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RmluYWxpemUoR09i
amVjdCogb2JqZWN0KQogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QpCiAg
ICAgICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwocmVxdWVzdCk7CiAKLSAg
ICByZXF1ZXN0LT5wcml2LT5+V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSgpOwotICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maWxlX2Nob29z
ZXJfcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2
b2lkIHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCkBAIC0x
MTcsOSArMTExLDggQEAgc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0R2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEcKIHN0YXRpYyB2b2lkIHdlYmtp
dF9maWxlX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdEZpbGVDaG9vc2VyUmVxdWVz
dENsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RmluYWxpemU7CisgICAgb2JqZWN0Q2xhc3MtPmRp
c3Bvc2UgPSB3ZWJraXRGaWxlQ2hvb3NlclJlcXVlc3REaXNwb3NlOwogICAgIG9iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSB3ZWJraXRGaWxlQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eTsKLSAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSkpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0OmZpbHRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAppbmRleCAzZTc2YjIzLi43ZTM0
ODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRG
aW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBfV2ViS2l0
RmluZENvbnRyb2xsZXJQcml2YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdO
QUxdID0geyAwLCB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdEZpbmRDb250cm9sbGVyLCB3ZWJr
aXRfZmluZF9jb250cm9sbGVyLCBHX1RZUEVfT0JKRUNUKQorV0VCS0lUX0RFRklORV9UWVBFKFdl
YktpdEZpbmRDb250cm9sbGVyLCB3ZWJraXRfZmluZF9jb250cm9sbGVyLCBHX1RZUEVfT0JKRUNU
KQogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9GSU5EX09QVElPTlNfQ0FT
RV9JTlNFTlNJVElWRSwgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTLCBGaW5k
T3B0aW9uc0F0V29yZFN0YXJ0cyk7CkBAIC04NCwxMyArODQsNiBAQCBzdGF0aWMgdm9pZCBkaWRD
b3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgdW5z
aWduZWQgbQogICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX0ZJTkRfQ09OVFJPTExFUihjbGllbnRJ
bmZvKSwgc2lnbmFsc1tDT1VOVEVEX01BVENIRVNdLCAwLCBtYXRjaENvdW50KTsKIH0KIAotc3Rh
dGljIHZvaWQgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9pbml0KFdlYktpdEZpbmRDb250cm9sbGVy
KiBmaW5kQ29udHJvbGxlcikKLXsKLSAgICBXZWJLaXRGaW5kQ29udHJvbGxlclByaXZhdGUqIHBy
aXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoZmluZENvbnRyb2xsZXIsIFdFQktJVF9U
WVBFX0ZJTkRfQ09OVFJPTExFUiwgV2ViS2l0RmluZENvbnRyb2xsZXJQcml2YXRlKTsKLSAgICBm
aW5kQ29udHJvbGxlci0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRGaW5kQ29u
dHJvbGxlclByaXZhdGUoKTsKLX0KLQogc3RhdGljIGlubGluZSBXZWJQYWdlUHJveHkqIGdldFBh
Z2UoV2ViS2l0RmluZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVyKQogewogICAgIHJldHVybiB3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFz
ZSo+KGZpbmRDb250cm9sbGVyLT5wcml2LT53ZWJWaWV3KSk7CkBAIC0xNDUsMjIgKzEzOCwxMiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxlclNldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0
RmluZENvbnRyb2xsZXJGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX0ZJ
TkRfQ09OVFJPTExFUihvYmplY3QpLT5wcml2LT5+V2ViS2l0RmluZENvbnRyb2xsZXJQcml2YXRl
KCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2ZpbmRfY29udHJvbGxlcl9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfZmluZF9jb250
cm9sbGVyX2NsYXNzX2luaXQoV2ViS2l0RmluZENvbnRyb2xsZXJDbGFzcyogZmluZENsYXNzKQog
ewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENs
YXNzKTsKLQogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJraXRGaW5kQ29udHJv
bGxlckNvbnN0cnVjdGVkOwogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0
RmluZENvbnRyb2xsZXJHZXRQcm9wZXJ0eTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9IHdlYmtpdEZpbmRDb250cm9sbGVyU2V0UHJvcGVydHk7Ci0gICAgZ09iamVjdENsYXNzLT5m
aW5hbGl6ZSA9IHdlYmtpdEZpbmRDb250cm9sbGVyRmluYWxpemU7Ci0KLSAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoZmluZENsYXNzLCBzaXplb2YoV2ViS2l0RmluZENvbnRyb2xsZXJQcml2
YXRlKSk7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRGaW5kQ29udHJvbGxlcjp0ZXh0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1Ym1p
c3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5jcHAKaW5kZXggODJlN2UzNi4uOWM1NWIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRGb3JtU3VibWlzc2lvblJlcXVlc3QuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAot
R19ERUZJTkVfVFlQRShXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QsIHdlYmtpdF9mb3JtX3N1
Ym1pc3Npb25fcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKLQogc3RydWN0IF9XZWJLaXRGb3JtU3Vi
bWlzc2lvblJlcXVlc3RQcml2YXRlIHsKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4g
d2ViVmFsdWVzOwogICAgIFJlZlB0cjxXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk+IGxp
c3RlbmVyOwpAQCAtMzUsMTQgKzMzLDkgQEAgc3RydWN0IF9XZWJLaXRGb3JtU3VibWlzc2lvblJl
cXVlc3RQcml2YXRlIHsKICAgICBib29sIGhhbmRsZWRSZXF1ZXN0OwogfTsKIAotc3RhdGljIHZv
aWQgd2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2luaXQoV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdFBy
aXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lU
X1RZUEVfRk9STV9TVUJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVz
dFByaXZhdGUpOwotICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2Vi
S2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0ZSgpOwotfQorV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCwgd2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1
ZXN0LCBHX1RZUEVfT0JKRUNUKQogCi1zdGF0aWMgdm9pZCB3ZWJraXRGb3JtU3VibWlzc2lvblJl
cXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgdm9pZCB3ZWJraXRGb3JtU3Vi
bWlzc2lvblJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRGb3Jt
U3VibWlzc2lvblJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfRk9STV9TVUJNSVNTSU9OX1JFUVVF
U1Qob2JqZWN0KTsKIApAQCAtNTAsMTUgKzQzLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZvcm1T
dWJtaXNzaW9uUmVxdWVzdEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIXJlcXVl
c3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KQogICAgICAgICB3ZWJraXRfZm9ybV9zdWJtaXNzaW9u
X3JlcXVlc3Rfc3VibWl0KHJlcXVlc3QpOwogCi0gICAgcmVxdWVzdC0+cHJpdi0+fldlYktpdEZv
cm1TdWJtaXNzaW9uUmVxdWVzdFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
Zm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsK
KyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcGFyZW50
X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZm9ybV9z
dWJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3RD
bGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdEZpbmFsaXplOwotICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVl
c3RQcml2YXRlKSk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRGb3JtU3VibWlz
c2lvblJlcXVlc3REaXNwb3NlOwogfQogCiBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QqIHdl
YmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdENyZWF0ZShJbW11dGFibGVEaWN0aW9uYXJ5KiB2YWx1
ZXMsIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCmluZGV4IDEwNzlhZjcuLjg2ZjQyNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zNCwx
NiArMzQsMTggQEAKICAqIHBlcm1pc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgV2ViS2l0IHNob3Vs
ZCBwcm92aWRlIHRoZSB1c2VyJ3MKICAqIGxvY2F0aW9uIHRvIGEgd2Vic2l0ZSB3aGVuIHJlcXVl
c3RlZCB0aHJvdWdodCB0aGUgR2VvbG9jYXRpb24gQVBJLgogICovCisKIHN0YXRpYyB2b2lkIHdl
YmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJl
cXVlc3RJZmFjZSopOwotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCwgd2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdCwg
R19UWVBFX09CSkVDVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVS
RkFDRShXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRl
cmZhY2VfaW5pdCkpCiAKIHN0cnVjdCBfV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUgewogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+
IHJlcXVlc3Q7CiAgICAgYm9vbCBtYWRlRGVjaXNpb247CiB9OwogCitXRUJLSVRfREVGSU5FX1RZ
UEVfV0lUSF9DT0RFKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsIHdlYmtpdF9n
ZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfVFlQRV9QRVJN
SVNTSU9OX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KSkKKwog
c3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KFdlYktp
dFBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEFTU0VSVChXRUJLSVRfSVNfR0VP
TE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKQEAgLTc4LDI5ICs4MCwxNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdl
YktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhYwogICAgIGlmYWNlLT5kZW55ID0gd2Via2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdERlbnk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9nZW9s
b2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfaW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewotICAgIHJlcXVlc3QtPnByaXYg
PSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfR0VPTE9D
QVRJT05fUEVSTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJpdmF0ZSk7Ci0gICAgbmV3IChyZXF1ZXN0LT5wcml2KSBXZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSgpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0RmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdl
YktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0dF
T0xPQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChvYmplY3QpLT5wcml2OwotCiAgICAgLy8gRGVm
YXVsdCBiZWhhdmlvdXIgd2hlbiBubyBkZWNpc2lvbiBoYXMgYmVlbiBtYWRlIGlzIGRlbnlpbmcg
dGhlIHJlcXVlc3QuCi0gICAgaWYgKCFwcml2LT5tYWRlRGVjaXNpb24pCi0gICAgICAgIHByaXYt
PnJlcXVlc3QtPmRlbnkoKTsKLQotICAgIHByaXYtPn5XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9nZW9sb2NhdGlv
bl9wZXJtaXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKKyAg
ICB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueShXRUJLSVRfUEVSTUlTU0lP
Tl9SRVFVRVNUKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9nZW9sb2NhdGlv
bl9wZXJtaXNzaW9uX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0X2NsYXNz
X2luaXQoV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENsYXNzKiBrbGFzcykKIHsK
ICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwot
ICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RGaW5hbGl6ZTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVv
ZihXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZSkpOworICAgIG9iamVj
dENsYXNzLT5kaXNwb3NlID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdERpc3Bv
c2U7CiB9CiAKIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHdlYmtpdEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUoR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFByb3h5KiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAppbmRleCAzZjMxZWIzLi45Mjg1MDg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmNwcApAQCAtNzIsMTMgKzcyLDcgQEAgc3RydWN0IF9XZWJLaXRIaXRUZXN0
UmVzdWx0UHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBtZWRpYVVSSTsKIH07CiAKLUdfREVGSU5FX1RZ
UEUoV2ViS2l0SGl0VGVzdFJlc3VsdCwgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdCwgR19UWVBFX09C
SkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0SGl0VGVzdFJlc3VsdEZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKG9iamVjdCktPnByaXYtPn5X
ZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KK1dFQktJ
VF9ERUZJTkVfVFlQRShXZWJLaXRIaXRUZXN0UmVzdWx0LCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRIaXRUZXN0UmVzdWx0R2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBhcmFtU3BlYykKIHsKQEAgLTEzNiwxOSArMTMwLDExIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEhpdFRlc3RSZXN1bHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
ZCwgY29uc3QKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
aW5pdChXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQotewotICAgIFdlYktpdEhp
dFRlc3RSZXN1bHRQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGhp
dFRlc3RSZXN1bHQsIFdFQktJVF9UWVBFX0hJVF9URVNUX1JFU1VMVCwgV2ViS2l0SGl0VGVzdFJl
c3VsdFByaXZhdGUpOwotICAgIGhpdFRlc3RSZXN1bHQtPnByaXYgPSBwcml2OwotICAgIG5ldyAo
cHJpdikgV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUoKTsKLX0KLQogc3RhdGljIHZvaWQgd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1bHRDbGFzcyog
aGl0VGVzdFJlc3VsdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhoaXRUZXN0UmVzdWx0Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJraXRIaXRUZXN0UmVzdWx0R2V0UHJvcGVydHk7CiAgICAgb2JqZWN0Q2xh
c3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdEhpdFRlc3RSZXN1bHRTZXRQcm9wZXJ0eTsKLSAgICBv
YmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRIaXRUZXN0UmVzdWx0RmluYWxpemU7CiAKICAg
ICBHUGFyYW1GbGFncyBwYXJhbUZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKTsKIApAQCAtMjMxLDgg
KzIxNyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY2xhc3NfaW5pdChX
ZWJLaXRIaXRUZXN0UmVzdWx0Q2xhc3MqIGhpdFRlc3RSCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBtZWRpYSBVUkkiKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1GbGFncykpOwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGhpdFRlc3RSZXN1
bHRDbGFzcywgc2l6ZW9mKFdlYktpdEhpdFRlc3RSZXN1bHRQcml2YXRlKSk7CiB9CiAKIFdlYktp
dEhpdFRlc3RSZXN1bHQqIHdlYmtpdEhpdFRlc3RSZXN1bHRDcmVhdGUoV2ViSGl0VGVzdFJlc3Vs
dCogaGl0VGVzdFJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uY3BwCmlu
ZGV4IGMyNWYyOTAuLjE2NDRjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
LmNwcApAQCAtNDIsOCArNDIsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAqIHRoZSBu
YXZpZ2F0aW9uIHdhcyB0cmlnZ2VyZWQgYnkgYSBtb3VzZSBldmVudC4KICAqLwogCi1HX0RFRklO
RV9UWVBFKFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwgd2Via2l0X25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uLCBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT04pCi0KIHN0cnVjdCBf
V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSB7CiAgICAgV2ViS2l0TmF2aWdh
dGlvblR5cGUgbmF2aWdhdGlvblR5cGU7CiAgICAgdW5zaWduZWQgbW9kaWZpZXJzOwpAQCAtNTIs
NiArNTAsOCBAQCBzdHJ1Y3QgX1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUg
ewogICAgIENTdHJpbmcgZnJhbWVOYW1lOwogfTsKIAorV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiwgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uLCBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT04pCisKIGVudW0gewogICAgIFBST1BfMCwK
ICAgICBQUk9QX05BVklHQVRJT05fVFlQRSwKQEAgLTYxLDE4ICs2MSw2IEBAIGVudW0gewogICAg
IFBST1BfRlJBTUVfTkFNRSwKIH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9uYXZpZ2F0aW9uX3Bv
bGljeV9kZWNpc2lvbl9pbml0KFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiogZGVjaXNp
b24pCi17Ci0gICAgZGVjaXNpb24tPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
ZGVjaXNpb24sIFdFQktJVF9UWVBFX05BVklHQVRJT05fUE9MSUNZX0RFQ0lTSU9OLCBXZWJLaXRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlKTsKLSAgICBuZXcgKGRlY2lzaW9uLT5wcml2
KSBXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYmtpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKLXsKLSAgICBXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KS0+cHJp
di0+fldlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUoKTsKLSAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcGFyZW50X2NsYXNzKS0+
ZmluYWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKICAgICBXZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX05BVklHQVRJT05fUE9MSUNZX0RFQ0lT
SU9OKG9iamVjdCk7CkBAIC0xMDEsOSArODksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb25HZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBybwog
c3RhdGljIHZvaWQgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQo
V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uQ2xhc3MqIGRlY2lzaW9uQ2xhc3MpCiB7CiAg
ICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGRlY2lzaW9uQ2xh
c3MpOwotICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbkZpbmFsaXplOwogICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb25HZXRQcm9wZXJ0eTsKLSAgICBnX3R5cGVfY2xhc3NfYWRk
X3ByaXZhdGUoZGVjaXNpb25DbGFzcywgc2l6ZW9mKFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvblByaXZhdGUpKTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbjpuYXZpZ2F0aW9uLXR5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcAppbmRleCBhZmY2NTFhLi4wZGQxMTIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKQEAg
LTI3LDYgKzI3LDExIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBzdHJ1Y3QgX1dlYktp
dFBsdWdpblByaXZhdGUgeworICAgIH5fV2ViS2l0UGx1Z2luUHJpdmF0ZSgpCisgICAgeworICAg
ICAgICBnX2xpc3RfZnJlZV9mdWxsKG1pbWVJbmZvTGlzdCwgcmVpbnRlcnByZXRfY2FzdDxHRGVz
dHJveU5vdGlmeT4od2Via2l0X21pbWVfaW5mb191bnJlZikpOworICAgIH0KKwogICAgIFBsdWdp
bk1vZHVsZUluZm8gcGx1Z2luSW5mbzsKICAgICBDU3RyaW5nIG5hbWU7CiAgICAgQ1N0cmluZyBk
ZXNjcmlwdGlvbjsKQEAgLTM0LDI5ICszOSwxMCBAQCBzdHJ1Y3QgX1dlYktpdFBsdWdpblByaXZh
dGUgewogICAgIEdMaXN0KiBtaW1lSW5mb0xpc3Q7CiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktp
dFBsdWdpbiwgd2Via2l0X3BsdWdpbiwgR19UWVBFX09CSkVDVCkKLQotc3RhdGljIHZvaWQgd2Vi
a2l0UGx1Z2luRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdFBsdWdpblBy
aXZhdGUqIHByaXYgPSBXRUJLSVRfUExVR0lOKG9iamVjdCktPnByaXY7Ci0gICAgZ19saXN0X2Zy
ZWVfZnVsbChwcml2LT5taW1lSW5mb0xpc3QsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3Rp
Znk+KHdlYmtpdF9taW1lX2luZm9fdW5yZWYpKTsKLSAgICBwcml2LT5+V2ViS2l0UGx1Z2luUHJp
dmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9wbHVnaW5fcGFyZW50X2NsYXNzKS0+
ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3BsdWdpbl9pbml0KFdl
YktpdFBsdWdpbiogcGx1Z2luKQotewotICAgIFdlYktpdFBsdWdpblByaXZhdGUqIHByaXYgPSBH
X1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocGx1Z2luLCBXRUJLSVRfVFlQRV9QTFVHSU4sIFdl
YktpdFBsdWdpblByaXZhdGUpOwotICAgIHBsdWdpbi0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChw
cml2KSBXZWJLaXRQbHVnaW5Qcml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
UGx1Z2luLCB3ZWJraXRfcGx1Z2luLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfcGx1Z2luX2NsYXNzX2luaXQoV2ViS2l0UGx1Z2luQ2xhc3MqIHBsdWdpbkNsYXNzKQogewot
ICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocGx1Z2luQ2xh
c3MpOwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRQbHVnaW5GaW5hbGl6ZTsK
LQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShwbHVnaW5DbGFzcywgc2l6ZW9mKFdlYktp
dFBsdWdpblByaXZhdGUpKTsKIH0KIAogV2ViS2l0UGx1Z2luKiB3ZWJraXRQbHVnaW5DcmVhdGUo
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAppbmRl
eCBjZTM2YTU4Li42OTBiNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0zOSwzMCArMzksMTgg
QEAKICAqIGNvbXBsZXRlcy4gVG8gbWFrZSBhIHBvbGljeSBkZWNpc2lvbiBhc3luY2hyb25vdXNs
eSwgc2ltcGx5IGluY3JlbWVudAogICogdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgI1dlYktp
dFBvbGljeURlY2lzaW9uIG9iamVjdC4KICAqLwotR19ERUZJTkVfQUJTVFJBQ1RfVFlQRShXZWJL
aXRQb2xpY3lEZWNpc2lvbiwgd2Via2l0X3BvbGljeV9kZWNpc2lvbiwgR19UWVBFX09CSkVDVCkK
IAogc3RydWN0IF9XZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUgewogICAgIFJlZlB0cjxXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyOwogICAgIGJvb2wgbWFkZVBvbGljeURl
Y2lzaW9uOwogfTsKIAotc3RhdGljIHZvaWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pbml0KFdl
YktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKLXsKLSAgICBkZWNpc2lvbi0+cHJpdiA9IEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShkZWNpc2lvbiwgV0VCS0lUX1RZUEVfUE9MSUNZX0RF
Q0lTSU9OLCBXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUpOwotICAgIG5ldyAoZGVjaXNpb24t
PnByaXYpIFdlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZSgpOwotICAgIGRlY2lzaW9uLT5wcml2
LT5tYWRlUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKLX0KK1dFQktJVF9ERUZJTkVfQUJTVFJBQ1Rf
VFlQRShXZWJLaXRQb2xpY3lEZWNpc2lvbiwgd2Via2l0X3BvbGljeV9kZWNpc2lvbiwgR19UWVBF
X09CSkVDVCkKIAotc3RhdGljIHZvaWQgd2Via2l0UG9saWN5RGVjaXNpb25GaW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCitzdGF0aWMgdm9pZCB3ZWJraXRQb2xpY3lEZWNpc2lvbkRpc3Bvc2UoR09i
amVjdCogb2JqZWN0KQogewotICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYg
PSBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OKG9iamVjdCktPnByaXY7Ci0KLSAgICAvLyBUaGlzIGlz
IHRoZSBkZWZhdWx0IGNob2ljZSBmb3IgYWxsIHBvbGljeSBkZWNpc2lvbnMgaW4gV2ViUGFnZVBy
b3h5LmNwcC4KLSAgICBpZiAoIXByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbikKLSAgICAgICAgcHJp
di0+bGlzdGVuZXItPnVzZSgpOwotCi0gICAgcHJpdi0+fldlYktpdFBvbGljeURlY2lzaW9uUHJp
dmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fcGFyZW50
X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKKyAgICB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3Vz
ZShXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9wb2xpY3lfZGVjaXNpb25fcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQog
CiB2b2lkIHdlYmtpdFBvbGljeURlY2lzaW9uU2V0TGlzdGVuZXIoV2ViS2l0UG9saWN5RGVjaXNp
b24qIGRlY2lzaW9uLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQpAQCAt
NzMsOCArNjEsNyBAQCB2b2lkIHdlYmtpdFBvbGljeURlY2lzaW9uU2V0TGlzdGVuZXIoV2ViS2l0
UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uLCBXZWJGcmFtZVBvbAogc3RhdGljIHZvaWQgd2Via2l0
X3BvbGljeV9kZWNpc2lvbl9jbGFzc19pbml0KFdlYktpdFBvbGljeURlY2lzaW9uQ2xhc3MqIGRl
Y2lzaW9uQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGRlY2lzaW9uQ2xhc3MpOwotICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dFBvbGljeURlY2lzaW9uRmluYWxpemU7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGRl
Y2lzaW9uQ2xhc3MsIHNpemVvZihXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUpKTsKKyAgICBv
YmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFBvbGljeURlY2lzaW9uRGlzcG9zZTsKIH0KIAog
LyoqCkBAIC04Niw2ICs3MywxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X2NsYXNzX2luaXQoV2ViS2l0UG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpbwogdm9pZCB3ZWJr
aXRfcG9saWN5X2RlY2lzaW9uX3VzZShXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9u
KSk7CisKKyAgICBpZiAoZGVjaXNpb24tPnByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbikKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLT51c2UoKTsKICAgICBk
ZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9uID0gdHJ1ZTsKIH0KQEAgLTEwMCw2ICs5
MSwxMCBAQCB2b2lkIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlKFdlYktpdFBvbGljeURlY2lz
aW9uKiBkZWNpc2lvbikKIHZvaWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoV2ViS2l0
UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgaWYgKGRlY2lzaW9uLT5wcml2
LT5tYWRlUG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIGRlY2lzaW9uLT5w
cml2LT5saXN0ZW5lci0+aWdub3JlKCk7CiAgICAgZGVjaXNpb24tPnByaXYtPm1hZGVQb2xpY3lE
ZWNpc2lvbiA9IHRydWU7CiB9CkBAIC0xMTMsNiArMTA4LDEwIEBAIHZvaWQgd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl9pZ25vcmUoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQogdm9pZCB3
ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbikKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04o
ZGVjaXNpb24pKTsKKworICAgIGlmIChkZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9u
KQorICAgICAgICByZXR1cm47CisKICAgICBkZWNpc2lvbi0+cHJpdi0+bGlzdGVuZXItPmRvd25s
b2FkKCk7CiAgICAgZGVjaXNpb24tPnByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbiA9IHRydWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
cmludE9wZXJhdGlvbi5jcHAKaW5kZXggN2RhMGIxOS4uNmI3MmQxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3BlcmF0aW9u
LmNwcApAQCAtNTQsNiArNTQsMTEgQEAgZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFByaW50
T3BlcmF0aW9uUHJpdmF0ZSB7CisgICAgfl9XZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUoKQor
ICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHdlYlZpZXcsIHdlYlZp
ZXdEZXN0cm95ZWRJZCk7CisgICAgfQorCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKICAg
ICBndWxvbmcgd2ViVmlld0Rlc3Ryb3llZElkOwogCkBAIC02MywxNiArNjgsNyBAQCBzdHJ1Y3Qg
X1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSB7CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xB
U1RfU0lHTkFMXSA9IHsgMCwgfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRQcmludE9wZXJhdGlv
biwgd2Via2l0X3ByaW50X29wZXJhdGlvbiwgR19UWVBFX09CSkVDVCkKLQotc3RhdGljIHZvaWQg
d2Via2l0UHJpbnRPcGVyYXRpb25GaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2Vi
S2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lUX1BSSU5UX09QRVJBVElPTihv
YmplY3QpLT5wcml2OwotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT53ZWJW
aWV3LCBwcml2LT53ZWJWaWV3RGVzdHJveWVkSWQpOwotCi0gICAgcHJpdi0+fldlYktpdFByaW50
T3BlcmF0aW9uUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9wcmludF9vcGVy
YXRpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KK1dFQktJVF9ERUZJTkVf
VFlQRShXZWJLaXRQcmludE9wZXJhdGlvbiwgd2Via2l0X3ByaW50X29wZXJhdGlvbiwgR19UWVBF
X09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2ViVmlld0Rlc3Ryb3llZChHdGtXaWRnZXQqIHdlYlZp
ZXcsIEdPYmplY3QqIHByaW50T3BlcmF0aW9uKQogewpAQCAtMTI4LDE3ICsxMjQsOSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRQcmludE9wZXJhdGlvblNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElkLCBjb25zdAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X3ByaW50
X29wZXJhdGlvbl9pbml0KFdlYktpdFByaW50T3BlcmF0aW9uKiBwcmludE9wZXJhdGlvbikKLXsK
LSAgICBXZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0Vf
R0VUX1BSSVZBVEUocHJpbnRPcGVyYXRpb24sIFdFQktJVF9UWVBFX1BSSU5UX09QRVJBVElPTiwg
V2ViS2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBwcmludE9wZXJhdGlvbi0+cHJpdiA9
IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUoKTsKLX0K
LQogc3RhdGljIHZvaWQgd2Via2l0X3ByaW50X29wZXJhdGlvbl9jbGFzc19pbml0KFdlYktpdFBy
aW50T3BlcmF0aW9uQ2xhc3MqIHByaW50T3BlcmF0aW9uQ2xhc3MpCiB7CiAgICAgR09iamVjdENs
YXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhwcmludE9wZXJhdGlvbkNsYXNzKTsK
LSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0UHJpbnRPcGVyYXRpb25GaW5hbGl6
ZTsKICAgICBnT2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0UHJpbnRPcGVyYXRpb25D
b25zdHJ1Y3RlZDsKICAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFByaW50
T3BlcmF0aW9uR2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3
ZWJraXRQcmludE9wZXJhdGlvblNldFByb3BlcnR5OwpAQCAtMjEzLDggKzIwMSw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9wcmludF9vcGVyYXRpb25fY2xhc3NfaW5pdChXZWJLaXRQcmludE9wZXJh
dGlvbkNsYXNzKiBwcmludE9wCiAgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNo
YWxfVk9JRF9fUE9JTlRFUiwKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAog
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOwotCi0gICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKHByaW50T3BlcmF0aW9uQ2xhc3MsIHNpemVvZihXZWJLaXRQcmludE9wZXJh
dGlvblByaXZhdGUpKTsKIH0KIAogI2lmZGVmIEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRleCA1
YWFiY2JjLi40ZGVhNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC02Niw2ICs2Niw1NyBAQCBzdGF0aWMgdm9pZCBkZXN0cm95
IyNzdHJ1Y3ROYW1lKHN0cnVjdE5hbWUqIGRhdGEpIFwKICAgICBnX3NsaWNlX2ZyZWUoc3RydWN0
TmFtZSwgZGF0YSk7IFwKIH0KIAorI2RlZmluZSBXRUJLSVRfREVGSU5FX1RZUEUoVE4sIHRfbiwg
VF9QKSBfV0VCS0lUX0RFRklORV9UWVBFX0VYVEVOREVEKFROLCB0X24sIFRfUCwgMCwge30pCisj
ZGVmaW5lIFdFQktJVF9ERUZJTkVfQUJTVFJBQ1RfVFlQRShUTiwgdF9uLCBUX1ApIF9XRUJLSVRf
REVGSU5FX1RZUEVfRVhURU5ERUQoVE4sIHRfbiwgVF9QLCBHX1RZUEVfRkxBR19BQlNUUkFDVCwg
e30pCisjZGVmaW5lIFdFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoVE4sIHRfbiwgVF9QLCBf
Q18pIF9XRUJLSVRfREVGSU5FX1RZUEVfRVhURU5ERURfQkVHSU4oVE4sIHRfbiwgVF9QLCAwKSB7
X0NfO30gX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRF9FTkQoKQorCisjZGVmaW5lIF9XRUJL
SVRfREVGSU5FX1RZUEVfRVhURU5ERUQoVE4sIHRfbiwgVF9QLCBfZl8sIF9DXykgX1dFQktJVF9E
RUZJTkVfVFlQRV9FWFRFTkRFRF9CRUdJTihUTiwgdF9uLCBUX1AsIF9mXykge19DXzt9IF9XRUJL
SVRfREVGSU5FX1RZUEVfRVhURU5ERURfRU5EKCkKKyNkZWZpbmUgX1dFQktJVF9ERUZJTkVfVFlQ
RV9FWFRFTkRFRF9CRUdJTihUeXBlTmFtZSwgdHlwZV9uYW1lLCBUWVBFX1BBUkVOVCwgZmxhZ3Mp
IFwKK1wKK3N0YXRpYyB2b2lkIHR5cGVfbmFtZSMjX2NsYXNzX2luaXQoVHlwZU5hbWUjI0NsYXNz
KiBrbGFzcyk7IFwKK3N0YXRpYyBncG9pbnRlciB0eXBlX25hbWUjI19wYXJlbnRfY2xhc3MgPSAw
OyBcCitzdGF0aWMgdm9pZCB0eXBlX25hbWUjI19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpIFwK
K3sgXAorICAgIFR5cGVOYW1lKiBzZWxmID0gKFR5cGVOYW1lKilvYmplY3Q7IFwKKyAgICBzZWxm
LT5wcml2LT5+VHlwZU5hbWUjI1ByaXZhdGUoKTsgXAorICAgIEdfT0JKRUNUX0NMQVNTKHR5cGVf
bmFtZSMjX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7IFwKK30gXAorXAorc3RhdGlj
IHZvaWQgdHlwZV9uYW1lIyNfY2xhc3NfaW50ZXJuX2luaXQoZ3BvaW50ZXIga2xhc3MpIFwKK3sg
XAorICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3Mp
OyBcCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoVHlwZU5hbWUj
I1ByaXZhdGUpKTsgXAorICAgIHR5cGVfbmFtZSMjX3BhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFz
c19wZWVrX3BhcmVudChrbGFzcyk7IFwKKyAgICB0eXBlX25hbWUjI19jbGFzc19pbml0KChUeXBl
TmFtZSMjQ2xhc3MqKWtsYXNzKTsgXAorICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB0eXBl
X25hbWUjI19maW5hbGl6ZTsgXAorfSBcCitcCitzdGF0aWMgdm9pZCB0eXBlX25hbWUjI19pbml0
KFR5cGVOYW1lICpzZWxmKSBcCit7IFwKKyAgICBUeXBlTmFtZSMjUHJpdmF0ZSogcHJpdiA9IEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZWxmLCB0eXBlX25hbWUjI19nZXRfdHlwZSgpLCBU
eXBlTmFtZSMjUHJpdmF0ZSk7IFwKKyAgICBzZWxmLT5wcml2ID0gcHJpdjsgXAorICAgIG5ldyAo
cHJpdikgVHlwZU5hbWUjI1ByaXZhdGUoKTsgXAorfVwKK0dUeXBlIHR5cGVfbmFtZSMjX2dldF90
eXBlKHZvaWQpIFwKK3sgXAorICAgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBnX2RlZmluZV90eXBl
X2lkX192b2xhdGlsZSA9IDA7IFwKKyAgICBpZiAoZ19vbmNlX2luaXRfZW50ZXIoJmdfZGVmaW5l
X3R5cGVfaWRfX3ZvbGF0aWxlKSkgeyBcCisgICAgICAgIEdUeXBlIGdfZGVmaW5lX3R5cGVfaWQg
PSBcCisgICAgICAgICAgICBnX3R5cGVfcmVnaXN0ZXJfc3RhdGljX3NpbXBsZShUWVBFX1BBUkVO
VCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19pbnRlcm5f
c3RhdGljX3N0cmluZygjVHlwZU5hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplb2YoVHlwZU5hbWUjI0NsYXNzKSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdDbGFzc0luaXRGdW5jKXR5cGVfbmFtZSMjX2Ns
YXNzX2ludGVybl9pbml0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplb2YoVHlwZU5hbWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoR0luc3RhbmNlSW5pdEZ1bmMpdHlwZV9uYW1lIyNfaW5pdCwgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdUeXBlRmxhZ3MpZmxhZ3MpOyBc
CisgICAgICAgIHsgLy8gQ3VzdG9tIGNvZGUgZm9sbG93cy4KKyNkZWZpbmUgX1dFQktJVF9ERUZJ
TkVfVFlQRV9FWFRFTkRFRF9FTkQoKSBcCisgICAgICAgIH0gXAorICAgICAgICBnX29uY2VfaW5p
dF9sZWF2ZSgmZ19kZWZpbmVfdHlwZV9pZF9fdm9sYXRpbGUsIGdfZGVmaW5lX3R5cGVfaWQpOyBc
CisgICAgfSBcCisgICAgcmV0dXJuIGdfZGVmaW5lX3R5cGVfaWRfX3ZvbGF0aWxlOyBcCit9IC8v
IENsb3NlcyB0eXBlX25hbWUjI19nZXRfdHlwZSgpLgorCiB1bnNpZ25lZCB3a0V2ZW50TW9kaWZp
ZXJzVG9HZGtNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyk7CiB1bnNpZ25lZCB3a0V2ZW50TW91
c2VCdXR0b25Ub1dlYktpdE1vdXNlQnV0dG9uKFdLRXZlbnRNb3VzZUJ1dHRvbik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKaW5kZXggOWVhZjZiOS4uOTkyZjg5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTQyLDMxICs0MiwyMCBAQAogICogd2hl
dGhlciBvciBub3QgdG8gZG93bmxvYWQgYSBwYXJ0aWN1bGFyIHJlc291cmNlIG9yIHRvIGxvYWQg
aXQKICAqIG5vcm1hbGx5LgogICovCi1HX0RFRklORV9UWVBFKFdlYktpdFJlc3BvbnNlUG9saWN5
RGVjaXNpb24sIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb24sIFdFQktJVF9UWVBFX1BP
TElDWV9ERUNJU0lPTikKIAogc3RydWN0IF9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJp
dmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRVUklSZXF1ZXN0PiByZXF1ZXN0OwogICAgIEdSZWZQ
dHI8V2ViS2l0VVJJUmVzcG9uc2U+IHJlc3BvbnNlOwogfTsKIAorV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24sIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVj
aXNpb24sIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTikKKwogZW51bSB7CiAgICAgUFJPUF8w
LAogICAgIFBST1BfUkVRVUVTVCwKICAgICBQUk9QX1JFU1BPTlNFLAogfTsKIAotc3RhdGljIHZv
aWQgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9pbml0KFdlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb24qIGRlY2lzaW9uKQotewotICAgIGRlY2lzaW9uLT5wcml2ID0gR19UWVBFX0lO
U1RBTkNFX0dFVF9QUklWQVRFKGRlY2lzaW9uLCBXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lf
REVDSVNJT04sIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKTsKLSAgICBuZXcg
KGRlY2lzaW9uLT5wcml2KSBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSgpOwot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRSZXNwb25zZVBvbGljeURlY2lzaW9uRmluYWxpemUoR09i
amVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04ob2Jq
ZWN0KS0+cHJpdi0+fldlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Ci0gICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRSZXNwb25zZVBv
bGljeURlY2lzaW9uR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKICAgICBXZWJLaXRSZXNwb25z
ZVBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiA9IFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJ
T04ob2JqZWN0KTsKQEAgLTg2LDkgKzc1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbkdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcEkKIHN0
YXRpYyB2b2lkIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJL
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uQ2xhc3MqIGRlY2lzaW9uQ2xhc3MpCiB7CiAgICAgR09i
amVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGRlY2lzaW9uQ2xhc3MpOwot
ICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25G
aW5hbGl6ZTsKICAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0UmVzcG9uc2VQ
b2xpY3lEZWNpc2lvbkdldFByb3BlcnR5OwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShk
ZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUp
KTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb246cmVxdWVz
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
Y3VyaXR5TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZWN1cml0eU1hbmFnZXIuY3BwCmluZGV4IGQxNzBmY2YuLmNkODgwMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlN
YW5hZ2VyLmNwcApAQCAtNDAsMjggKzQwLDEwIEBAIHN0cnVjdCBfV2ViS2l0U2VjdXJpdHlNYW5h
Z2VyUHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dDsKIH07CiAKLUdf
REVGSU5FX1RZUEUoV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLCB3ZWJraXRfc2VjdXJpdHlfbWFuYWdl
ciwgR19UWVBFX09CSkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0X3NlY3VyaXR5X21hbmFnZXJf
aW5pdChXZWJLaXRTZWN1cml0eU1hbmFnZXIqIG1hbmFnZXIpCi17Ci0gICAgV2ViS2l0U2VjdXJp
dHlNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShtYW5h
Z2VyLCBXRUJLSVRfVFlQRV9TRUNVUklUWV9NQU5BR0VSLCBXZWJLaXRTZWN1cml0eU1hbmFnZXJQ
cml2YXRlKTsKLSAgICBtYW5hZ2VyLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktp
dFNlY3VyaXR5TWFuYWdlclByaXZhdGUoKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0U2VjdXJp
dHlNYW5hZ2VyRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdFNlY3VyaXR5
TWFuYWdlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfU0VDVVJJVFlfTUFOQUdFUihvYmplY3QpLT5w
cml2OwotICAgIHByaXYtPn5XZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlKCk7Ci0gICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRTZWN1cml0eU1hbmFnZXIs
IHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdFNlY3VyaXR5TWFuYWdlckNs
YXNzKiBrbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGtsYXNzKTsKLSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0U2VjdXJp
dHlNYW5hZ2VyRmluYWxpemU7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3Ms
IHNpemVvZihXZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlKSk7CiB9CiAKIFdlYktpdFNlY3Vy
aXR5TWFuYWdlciogd2Via2l0U2VjdXJpdHlNYW5hZ2VyQ3JlYXRlKFdlYktpdFdlYkNvbnRleHQq
IHdlYkNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggMjE2YTljYi4uZmZmYTI0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtNDEs
NiArNDEsMTkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHN0cnVjdCBfV2Vi
S2l0U2V0dGluZ3NQcml2YXRlIHsKKyAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKKyAgICAg
ICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKCkpCisgICAgeworICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CisgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOworICAgICAgICBzZXJpZkZvbnRGYW1pbHkgPSBwcmVmZXJlbmNl
cy0+c2VyaWZGb250RmFtaWx5KCkudXRmOCgpOworICAgICAgICBzYW5zU2VyaWZGb250RmFtaWx5
ID0gcHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgICAgIGN1
cnNpdmVGb250RmFtaWx5ID0gcHJlZmVyZW5jZXMtPmN1cnNpdmVGb250RmFtaWx5KCkudXRmOCgp
OworICAgICAgICBmYW50YXN5Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5mYW50YXN5Rm9udEZh
bWlseSgpLnV0ZjgoKTsKKyAgICAgICAgcGljdG9ncmFwaEZvbnRGYW1pbHkgPSBwcmVmZXJlbmNl
cy0+cGljdG9ncmFwaEZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgICAgIGRlZmF1bHRDaGFyc2V0
ID0gcHJlZmVyZW5jZXMtPmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgpOworICAgIH0K
KwogICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAgICAgQ1N0cmluZyBk
ZWZhdWx0Rm9udEZhbWlseTsKICAgICBDU3RyaW5nIG1vbm9zcGFjZUZvbnRGYW1pbHk7CkBAIC03
Miw4ICs4NSw3IEBAIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAqIDwvcHJvZ3Jh
bWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+CiAgKi8KIAotCi1HX0RFRklORV9UWVBFKFdlYktp
dFNldHRpbmdzLCB3ZWJraXRfc2V0dGluZ3MsIEdfVFlQRV9PQkpFQ1QpCitXRUJLSVRfREVGSU5F
X1RZUEUoV2ViS2l0U2V0dGluZ3MsIHdlYmtpdF9zZXR0aW5ncywgR19UWVBFX09CSkVDVCkKIAog
ZW51bSB7CiAgICAgUFJPUF8wLApAQCAtNDAzLDE4ICs0MTUsMTEgQEAgc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1Zh
bHVlKiB2YWwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzRmluYWxpemUo
R09iamVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9TRVRUSU5HUyhvYmplY3QpLT5wcml2LT5+
V2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NldHRp
bmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdl
YmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogewog
ICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwog
ICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0
eTsKICAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYktpdFNldHRpbmdzR2V0UHJv
cGVydHk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFNldHRpbmdzRmluYWxp
emU7CiAKICAgICBHUGFyYW1GbGFncyByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzID0gc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NP
TlNUUlVDVCk7CiAKQEAgLTEwNjAsMjYgKzEwNjUsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0
dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIg
dG8gZW5hYmxlIHNtb290aCBzY3JvbGxpbmciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0
UGFyYW1GbGFncykpOwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXpl
b2YoV2ViS2l0U2V0dGluZ3NQcml2YXRlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0
aW5nc19pbml0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKLXsKLSAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2V0dGluZ3MsIFdF
QktJVF9UWVBFX1NFVFRJTkdTLCBXZWJLaXRTZXR0aW5nc1ByaXZhdGUpOwotICAgIHNldHRpbmdz
LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFNldHRpbmdzUHJpdmF0ZSgpOwot
Ci0gICAgcHJpdi0+cHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKCk7Ci0gICAg
cHJpdi0+ZGVmYXVsdEZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+c3RhbmRhcmRGb250
RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPm1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcml2LT5w
cmVmZXJlbmNlcy0+Zml4ZWRGb250RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPnNlcmlmRm9u
dEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5zZXJpZkZvbnRGYW1pbHkoKS51dGY4KCk7Ci0g
ICAgcHJpdi0+c2Fuc1NlcmlmRm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5zYW5zU2Vy
aWZGb250RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPmN1cnNpdmVGb250RmFtaWx5ID0gcHJp
di0+cHJlZmVyZW5jZXMtPmN1cnNpdmVGb250RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPmZh
bnRhc3lGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPmZhbnRhc3lGb250RmFtaWx5KCku
dXRmOCgpOwotICAgIHByaXYtPnBpY3RvZ3JhcGhGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5j
ZXMtPnBpY3RvZ3JhcGhGb250RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPmRlZmF1bHRDaGFy
c2V0ID0gcHJpdi0+cHJlZmVyZW5jZXMtPmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgp
OwotCiB9CiAKIHZvaWQgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MsIFdlYlBhZ2VQcm94eSogcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKaW5kZXggYzg4
MmNiNy4uMTQ3ZDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKQEAgLTMzLDE4ICszMywxMiBAQCBlbnVtIHsKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0VVJJUmVxdWVz
dCwgd2Via2l0X3VyaV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQotCiBzdHJ1Y3QgX1dlYktpdFVS
SVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VS
ZXF1ZXN0OwogICAgIENTdHJpbmcgdXJpOwogfTsKIAotc3RhdGljIHZvaWQgd2Via2l0VVJJUmVx
dWVzdEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfVVJJX1JFUVVFU1Qo
b2JqZWN0KS0+cHJpdi0+fldlYktpdFVSSVJlcXVlc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3VyaV9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0VVJJUmVxdWVzdCwgd2Via2l0X3VyaV9yZXF1
ZXN0LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRVUklSZXF1ZXN0R2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBhcmFtU3BlYykKIHsKQEAgLTc1LDggKzY5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0
VVJJUmVxdWVzdFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25z
dCBHVmEKIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVS
SVJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotCi0gICAgb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0VVJJUmVxdWVzdEZpbmFsaXplOwogICAgIG9iamVjdENsYXNzLT5n
ZXRfcHJvcGVydHkgPSB3ZWJraXRVUklSZXF1ZXN0R2V0UHJvcGVydHk7CiAgICAgb2JqZWN0Q2xh
c3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFVSSVJlcXVlc3RTZXRQcm9wZXJ0eTsKIApAQCAtOTEs
MTUgKzgzLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0X2NsYXNzX2luaXQoV2Vi
S2l0VVJJUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVUkkgdG8gd2hpY2ggdGhl
IHJlcXVlc3Qgd2lsbCBiZSBtYWRlLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7Ci0KLSAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0VVJJUmVx
dWVzdFByaXZhdGUpKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0X2luaXQo
V2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRVUklSZXF1ZXN0UHJpdmF0
ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQ
RV9VUklfUkVRVUVTVCwgV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUpOwotICAgIHJlcXVlc3QtPnBy
aXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUoKTsKIH0K
IAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5jcHAKaW5kZXggZTU0ZDE4Ni4uNGE5YWVkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmNwcApA
QCAtMzksOCArMzksNiBAQCBlbnVtIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUdf
REVGSU5FX1RZUEUoV2ViS2l0VVJJUmVzcG9uc2UsIHdlYmtpdF91cmlfcmVzcG9uc2UsIEdfVFlQ
RV9PQkpFQ1QpCi0KIHN0cnVjdCBfV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlIHsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2U7CiAgICAgQ1N0cmluZyB1cmk7
CkBAIC00OCwxMSArNDYsNyBAQCBzdHJ1Y3QgX1dlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSB7CiAg
ICAgQ1N0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKIH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFVS
SVJlc3BvbnNlRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9VUklfUkVT
UE9OU0Uob2JqZWN0KS0+cHJpdi0+fldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSgpOwotICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF91cmlfcmVzcG9uc2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRVUklSZXNwb25zZSwgd2Via2l0
X3VyaV9yZXNwb25zZSwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0VVJJUmVz
cG9uc2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewpAQCAtODIsOCArNzYsNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRVUklSZXNwb25zZUdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLCBHVmFsdWUqCiBzdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3Jlc3BvbnNlX2NsYXNzX2lu
aXQoV2ViS2l0VVJJUmVzcG9uc2VDbGFzcyogcmVzcG9uc2VDbGFzcykKIHsKICAgICBHT2JqZWN0
Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVzcG9uc2VDbGFzcyk7Ci0KLSAg
ICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRVUklSZXNwb25zZUZpbmFsaXplOwogICAg
IG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRVUklSZXNwb25zZUdldFByb3BlcnR5
OwogCiAgICAgLyoqCkBAIC0xNDksMTUgKzE0MSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlf
cmVzcG9uc2VfY2xhc3NfaW5pdChXZWJLaXRVUklSZXNwb25zZUNsYXNzKiByZXNwb25zZUNsYXNz
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIlRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgZm9yIHRoZSBVUkkgcmVzcG9uc2UiKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVz
cG9uc2VDbGFzcywgc2l6ZW9mKFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSkpOwotfQotCi1zdGF0
aWMgdm9pZCB3ZWJraXRfdXJpX3Jlc3BvbnNlX2luaXQoV2ViS2l0VVJJUmVzcG9uc2UqIHJlc3Bv
bnNlKQotewotICAgIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShyZXNwb25zZSwgV0VCS0lUX1RZUEVfVVJJX1JFU1BPTlNFLCBXZWJL
aXRVUklSZXNwb25zZVByaXZhdGUpOwotICAgIHJlc3BvbnNlLT5wcml2ID0gcHJpdjsKLSAgICBu
ZXcgKHByaXYpIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSgpOwogfQogCiAvKioKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKaW5kZXggNmY0NmRiZS4uZDVjOGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKQEAgLTMzLDggKzMzLDYgQEAKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1
ZmZlclNpemUgPSA4MTkyOwogCi1HX0RFRklORV9UWVBFKFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qs
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCi0KIHN0cnVjdCBfV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUgewogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQ7CiAgICAgUmVmUHRyPFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PiB3ZWJSZXF1ZXN0
TWFuYWdlcjsKQEAgLTUxLDI0ICs0OSwxMCBAQCBzdHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVl
c3RQcml2YXRlIHsKICAgICBDU3RyaW5nIG1pbWVUeXBlOwogfTsKIAotc3RhdGljIHZvaWQgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9pbml0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVl
c3QpCi17Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVf
SU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSk7Ci0gICAgcmVxdWVzdC0+cHJpdiA9
IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSgpOwot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0RmluYWxpemUoR09iamVjdCog
b2JqZWN0KQotewotICAgIFdFQktJVF9VUklfU0NIRU1FX1JFUVVFU1Qob2JqZWN0KS0+cHJpdi0+
fldlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwot
fQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QsIHdlYmtpdF91cmlf
c2NoZW1lX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlf
c2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqIHJl
cXVlc3RDbGFzcykKIHsKLSAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0RmluYWxpemU7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJl
cXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKSk7CiB9CiAK
IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUoV2Vi
S2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCwgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHdl
YlJlcXVlc3RNYW5hZ2VyLCBXZWJVUkwqIHdlYlVSTCwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5n
UGFnZSwgdWludDY0X3QgcmVxdWVzdElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAwYzI5YjI0Li5lM2U5MDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMTEyLDI2ICsxMTIsMTAgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSB7CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRXZWJDb250ZXh0LCB3ZWJraXRfd2ViX2NvbnRleHQs
IEdfVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRGaW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCktPnByaXYt
Pn5XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfaW5pdChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0
KQotewotICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNF
X0dFVF9QUklWQVRFKHdlYkNvbnRleHQsIFdFQktJVF9UWVBFX1dFQl9DT05URVhULCBXZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSk7Ci0gICAgd2ViQ29udGV4dC0+cHJpdiA9IHByaXY7Ci0gICAgbmV3
IChwcml2KSBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSgpOwotfQorV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdFdlYkNvbnRleHQsIHdlYmtpdF93ZWJfY29udGV4dCwgR19UWVBFX09CSkVDVCkKIAog
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQoV2ViS2l0V2ViQ29udGV4
dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJDb250ZXh0Q2xhc3MpOwotICAgIGdPYmplY3RDbGFzcy0+
ZmluYWxpemUgPSB3ZWJraXRXZWJDb250ZXh0RmluYWxpemU7Ci0KICAgICAvKioKICAgICAgKiBX
ZWJLaXRXZWJDb250ZXh0Ojpkb3dubG9hZC1zdGFydGVkOgogICAgICAqIEBjb250ZXh0OiB0aGUg
I1dlYktpdFdlYkNvbnRleHQKQEAgLTE0MSwxNCArMTI1LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4
dENsYXNzCiAgICAgICovCiAgICAgc2lnbmFsc1tET1dOTE9BRF9TVEFSVEVEXSA9CiAgICAgICAg
IGdfc2lnbmFsX25ldygiZG93bmxvYWQtc3RhcnRlZCIsCi0gICAgICAgICAgICAgICAgICAgICBH
X1RZUEVfRlJPTV9DTEFTUyhnT2JqZWN0Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Mod2ViQ29udGV4dENsYXNzKSwKICAgICAgICAgICAgICAgICAgICAgIEdf
U0lHTkFMX1JVTl9MQVNULAogICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwKICAgICAgICAg
ICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19PQkpFQ1QsCiAgICAgICAgICAg
ICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX0RPV05MT0FEKTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJDb250ZXh0
Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgZ3Bv
aW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcAppbmRl
eCBkMzg0YWMwLi42NDhkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKQEAgLTQ1LDE0ICs0NSwxOSBAQCBl
bnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSB7CisgICAgfl9X
ZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKCkKKyAgICB7CisgICAgICAgIFdLSW5zcGVjdG9yU2V0
SW5zcGVjdG9yQ2xpZW50R3RrKHRvQVBJKHdlYkluc3BlY3Rvci5nZXQoKSksIDApOworICAgIH0K
KwogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JQcm94eT4gd2ViSW5zcGVjdG9yOwogICAgIENTdHJp
bmcgaW5zcGVjdGVkVVJJOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkSGVpZ2h0OwogfTsKIAotc3Rh
dGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworV0VCS0lUX0RFRklORV9U
WVBFKFdlYktpdFdlYkluc3BlY3Rvciwgd2Via2l0X3dlYl9pbnNwZWN0b3IsIEdfVFlQRV9PQkpF
Q1QpCiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0V2ViSW5zcGVjdG9yLCB3ZWJraXRfd2ViX2luc3Bl
Y3RvciwgR19UWVBFX09CSkVDVCkKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9
IHsgMCwgfTsKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViSW5zcGVjdG9yR2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBh
cmFtU3BlYykKIHsKQEAgLTcwLDI5ICs3NSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJJbnNw
ZWN0b3JHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKgog
ICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViSW5zcGVjdG9yRmluYWxpemUoR09iamVj
dCogb2JqZWN0KQotewotICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXYgPSBXRUJL
SVRfV0VCX0lOU1BFQ1RPUihvYmplY3QpLT5wcml2OwotICAgIFdLSW5zcGVjdG9yU2V0SW5zcGVj
dG9yQ2xpZW50R3RrKHRvQVBJKHByaXYtPndlYkluc3BlY3Rvci5nZXQoKSksIDApOwotICAgIHBy
aXYtPn5XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3dlYl9pbnNwZWN0b3JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcikKLXsKLSAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGluc3BlY3RvciwgV0VCS0lUX1RZUEVfV0VCX0lOU1BF
Q1RPUiwgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSk7Ci0gICAgaW5zcGVjdG9yLT5wcml2ID0g
cHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUoKTsKLX0KLQog
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdChXZWJLaXRXZWJJbnNw
ZWN0b3JDbGFzcyogZmluZENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKLSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0V2ViSW5zcGVjdG9yRmluYWxpemU7CiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRXZWJJbnNwZWN0b3JHZXRQcm9wZXJ0eTsKIAotICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShmaW5kQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRl
KSk7Ci0KICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6aW5zcGVjdGVkLXVyaToK
ICAgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViUmVzb3VyY2UuY3BwCmluZGV4IDhkZGMwNzcuLmUyNDg5MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHAK
QEAgLTUzLDE1ICs1Myw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlIHsKICAg
ICBib29sIGlzTWFpblJlc291cmNlOwogfTsKIAotc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9T
SUdOQUxdID0geyAwLCB9OwotCi1HX0RFRklORV9UWVBFKFdlYktpdFdlYlJlc291cmNlLCB3ZWJr
aXRfd2ViX3Jlc291cmNlLCBHX1RZUEVfT0JKRUNUKQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dFdlYlJlc291cmNlLCB3ZWJraXRfd2ViX3Jlc291cmNlLCBHX1RZUEVfT0JKRUNUKQogCi1zdGF0
aWMgdm9pZCB3ZWJraXRXZWJSZXNvdXJjZUZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAg
ICBXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJSZXNvdXJjZVBy
aXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3Jlc291cmNlX3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19CitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJ
R05BTF0gPSB7IDAsIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlJlc291cmNlR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBhcmFtU3BlYykKIHsKQEAgLTc5LDE4ICs3MywxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJSZXNvdXJjZUdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFs
dWUqCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Jlc291cmNlX2luaXQoV2Vi
S2l0V2ViUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIFdlYktpdFdlYlJlc291cmNlUHJpdmF0
ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXNvdXJjZSwgV0VCS0lUX1RZ
UEVfV0VCX1JFU09VUkNFLCBXZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUpOwotICAgIHJlc291cmNl
LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFdlYlJlc291cmNlUHJpdmF0ZSgp
OwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Jlc291cmNlX2NsYXNzX2luaXQoV2ViS2l0
V2ViUmVzb3VyY2VDbGFzcyogcmVzb3VyY2VDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIG9i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVzb3VyY2VDbGFzcyk7CiAgICAgb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlJlc291cmNlR2V0UHJvcGVydHk7Ci0gICAgb2Jq
ZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViUmVzb3VyY2VGaW5hbGl6ZTsKIAogICAgIC8q
KgogICAgICAqIFdlYktpdFdlYlJlc291cmNlOnVyaToKQEAgLTE5Miw4ICsxNzgsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3Jlc291cmNlX2NsYXNzX2luaXQoV2ViS2l0V2ViUmVzb3VyY2VD
bGFzcyogcmVzb3VyY2VDbGFzcwogICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJz
aGFsX1ZPSURfX1BPSU5URVIsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwK
ICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKLQotICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShyZXNvdXJjZUNsYXNzLCBzaXplb2YoV2ViS2l0V2ViUmVzb3VyY2VQcml2
YXRlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlJlc291cmNlVXBkYXRlVVJJKFdlYktp
dFdlYlJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgQ1N0cmluZyYgcmVxdWVzdFVSSSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5k
ZXggYzI3YzJmNy4uOTBiNGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTExNCw2ICsxMTQsMTYgQEAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNv
dXJjZXNNYXA7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBHUmVmUHRyPFdlYktpdFdlYlJlc291
cmNlPiA+IFJlc291cmNlc01hcDsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7Cisg
ICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCisgICAgeworICAgICAgICBpZiAoamF2YXNjcmlw
dEdsb2JhbENvbnRleHQpCisgICAgICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGphdmFz
Y3JpcHRHbG9iYWxDb250ZXh0KTsKKworICAgICAgICAvLyBGb3IgbW9kYWwgZGlhbG9ncywgbWFr
ZSBzdXJlIHRoZSBtYWluIGxvb3AgaXMgc3RvcHBlZCB3aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZp
ZXcuCisgICAgICAgIGlmIChtb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmluZyhtb2Rh
bExvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtb2RhbExvb3AuZ2V0
KCkpOworICAgIH0KKwogICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQ7CiAgICAgQ1N0cmlu
ZyB0aXRsZTsKICAgICBDU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZzsKQEAgLTE1MCw3ICsxNjAs
NyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25h
bHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXcs
IHdlYmtpdF93ZWJfdmlldywgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfQkFTRSkKK1dFQktJVF9ERUZJ
TkVfVFlQRShXZWJLaXRXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXcsIFdFQktJVF9UWVBFX1dFQl9W
SUVXX0JBU0UpCiAKIHN0YXRpYyBpbmxpbmUgV2ViUGFnZVByb3h5KiBnZXRQYWdlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiB7CkBAIC00MDksNiArNDE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBhdHRhY2hGb3JtQ2xpZW50
VG9WaWV3KHdlYlZpZXcpOwogCiAgICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0ID0gYWRvcHRHUmVm
KHdlYmtpdEJhY2tGb3J3YXJkTGlzdENyZWF0ZShnZXRQYWdlKHdlYlZpZXcpLT5iYWNrRm9yd2Fy
ZExpc3QoKSkpOworICAgIHByaXYtPndpbmRvd1Byb3BlcnRpZXMgPSBhZG9wdEdSZWYod2Via2l0
V2luZG93UHJvcGVydGllc0NyZWF0ZSgpKTsKIAogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+
IHNldHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXcoKSk7CiAgICAgd2Via2l0
V2ViVmlld1NldFNldHRpbmdzKHdlYlZpZXcsIHNldHRpbmdzLmdldCgpKTsKQEAgLTQ2MywzNCAr
NDc0LDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgfQogfQogCi1zdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKLSAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAgICBpZiAocHJpdi0+amF2YXNjcmlwdEds
b2JhbENvbnRleHQpCi0gICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UocHJpdi0+amF2YXNj
cmlwdEdsb2JhbENvbnRleHQpOwotCi0gICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ugc3Vy
ZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3Lgot
ICAgIGlmIChwcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmluZyhwcml2LT5t
b2RhbExvb3AuZ2V0KCkpKQotICAgICAgICBnX21haW5fbG9vcF9xdWl0KHByaXYtPm1vZGFsTG9v
cC5nZXQoKSk7Ci0KICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvblJlcXVlc3Qod2ViVmll
dyk7CiAgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RNYWluUmVzb3VyY2VSZXNwb25zZUNoYW5n
ZWRTaWduYWxIYW5kbGVyKHdlYlZpZXcpOwogICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0
dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKICAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVj
dEZhdmljb25EYXRhYmFzZVNpZ25hbEhhbmRsZXJzKHdlYlZpZXcpOwogCi0gICAgcHJpdi0+fldl
YktpdFdlYlZpZXdQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3
X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUod2ViVmlldywg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdQcml2YXRlKTsKLSAgICB3ZWJWaWV3
LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFdlYlZpZXdQcml2YXRlKCk7Ci0K
LSAgICB3ZWJWaWV3LT5wcml2LT53aW5kb3dQcm9wZXJ0aWVzID0gYWRvcHRHUmVmKHdlYmtpdFdp
bmRvd1Byb3BlcnRpZXNDcmVhdGUoKSk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92
aWV3X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKIH0KIAogc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdBY2N1bXVsYXRvck9iamVjdEhhbmRsZWQoR1NpZ25hbEludm9jYXRpb25I
aW50KiwgR1ZhbHVlKiByZXR1cm5WYWx1ZSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBn
cG9pbnRlcikKQEAgLTUwOSw3ICs1MDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICBnT2JqZWN0
Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkOwogICAgIGdPYmpl
Y3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViVmlld1NldFByb3BlcnR5OwogICAgIGdP
YmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViVmlld0dldFByb3BlcnR5OwotICAg
IGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXZWJWaWV3RmluYWxpemU7CisgICAgZ09i
amVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0V2ViVmlld0Rpc3Bvc2U7CiAKICAgICB3ZWJWaWV3
Q2xhc3MtPmxvYWRfZmFpbGVkID0gd2Via2l0V2ViVmlld0xvYWRGYWlsOwogICAgIHdlYlZpZXdD
bGFzcy0+Y3JlYXRlID0gd2Via2l0V2ViVmlld0NyZWF0ZTsKQEAgLTUxOCw4ICs1MTAsNiBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPnBlcm1pc3Npb25fcmVxdWVzdCA9IHdl
YmtpdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdDsKICAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9maWxl
X2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXI7CiAKLSAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUod2ViVmlld0NsYXNzLCBzaXplb2YoV2ViS2l0V2ViVmlld1ByaXZhdGUp
KTsKLQogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRleHQ6CiAgICAgICoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAppbmRleCBlNWJhYzY3Li4xZTEwMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC04MCw2
ICs4MCwxOSBAQCB2b2lkIHJlZGlyZWN0ZWRXaW5kb3dEYW1hZ2VkQ2FsbGJhY2sodm9pZCogZGF0
YSk7CiAjZW5kaWYKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgeworICAgIF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUoKQorICAgICAgICA6IGltQ29udGV4dChhZG9wdEdSZWYo
Z3RrX2ltX211bHRpY29udGV4dF9uZXcoKSkpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQor
ICAgICAgICAsIHJlZGlyZWN0ZWRXaW5kb3coUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNy
ZWF0ZShJbnRTaXplKDEsIDEpKSkKKyNlbmRpZgorICAgIHsKKyAgICB9CisKKyAgICB+X1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSgpCisgICAgeworICAgICAgICBwYWdlUHJveHktPmNsb3NlKCk7
CisgICAgfQorCiAgICAgV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNoaWxkcmVuOwogICAgIE93
blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiBwYWdlUHJveHk7CkBAIC0xMTgsNyArMTMxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUgewogI2VuZGlmCiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXdCYXNl
LCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09OVEFJTkVSKQorV0VCS0lUX0RFRklO
RV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVf
Q09OVEFJTkVSKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJT
aXplKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKQEAgLTMyMCw0MiArMzMzLDI5
IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXcsIEd0a1dpZGdldCogY2hpCiAgICAgZ3RrX3dpZGdldF9xdWV1ZV9yZXNpemVf
bm9fcmVkcmF3KEdUS19XSURHRVQod2ViVmlldykpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUZpbmFsaXplKEdPYmplY3QqIGdvYmplY3QpCitzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZURpc3Bvc2UoR09iamVjdCogZ29iamVjdCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnb2JqZWN0KTsK
LSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+
cHJpdjsKLSAgICBwcml2LT5wYWdlUHJveHktPmNsb3NlKCk7Ci0KLSAgICB3ZWJraXRXZWJWaWV3
QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2Via2l0V2ViVmlld0Jhc2UsIDApOwotCi0g
ICAgcHJpdi0+fldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKGdvYmplY3QpOwor
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyhXRUJLSVRfV0VC
X1ZJRVdfQkFTRShnb2JqZWN0KSwgMCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92
aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShnb2JqZWN0KTsKIH0KIAotc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2Vi
Vmlld0Jhc2UpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmpl
Y3QqIG9iamVjdCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUod2Via2l0V2ViVmlld0Jhc2UsIFdFQktJVF9UWVBFX1dF
Ql9WSUVXX0JBU0UsIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSk7Ci0gICAgd2Via2l0V2ViVmll
d0Jhc2UtPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlKCk7Ci0KLSAgICBwcml2LT5zaG91bGRGb3J3YXJkTmV4dEtleUV2ZW50ID0gRkFMU0U7Cisg
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+Y29u
c3RydWN0ZWQob2JqZWN0KTsKIAotICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURH
RVQod2Via2l0V2ViVmlld0Jhc2UpOworICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19X
SURHRVQob2JqZWN0KTsKICAgICBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXModmlld1dpZGdldCwg
VFJVRSk7Ci0gICAgcHJpdi0+aW1Db250ZXh0ID0gYWRvcHRHUmVmKGd0a19pbV9tdWx0aWNvbnRl
eHRfbmV3KCkpOwotCi0gICAgcHJpdi0+cGFnZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGUodmlld1dpZGdldCk7Ci0KLSAgICBwcml2LT5kcmFnQW5kRHJvcEhlbHBlci5zZXRXaWRnZXQo
dmlld1dpZGdldCk7Ci0KICAgICBndGtfZHJhZ19kZXN0X3NldCh2aWV3V2lkZ2V0LCBzdGF0aWNf
Y2FzdDxHdGtEZXN0RGVmYXVsdHM+KDApLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KEdES19BQ1RJT05fQ09QWSB8IEdES19BQ1RJT05fTU9W
RSB8IEdES19BQ1RJT05fTElOSyB8IEdES19BQ1RJT05fUFJJVkFURSkpOwogICAgIGd0a19kcmFn
X2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdXaWRnZXQsIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1
bHRQYXN0ZWJvYXJkSGVscGVyKCktPnRhcmdldExpc3QoKSk7CiAKKyAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShvYmplY3QpLT5wcml2Owor
ICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHZpZXdXaWRnZXQp
OworICAgIHByaXYtPmRyYWdBbmREcm9wSGVscGVyLnNldFdpZGdldCh2aWV3V2lkZ2V0KTsKKwog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93ID0g
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShJbnRTaXplKDEsIDEpKTsKICAgICBp
ZiAocHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKLSAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dy0+c2V0RGFtYWdlTm90aWZ5Q2FsbGJhY2socmVkaXJlY3RlZFdpbmRvd0RhbWFnZWRDYWxsYmFj
aywgd2Via2l0V2ViVmlld0Jhc2UpOworICAgICAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5z
ZXREYW1hZ2VOb3RpZnlDYWxsYmFjayhyZWRpcmVjdGVkV2luZG93RGFtYWdlZENhbGxiYWNrLCBv
YmplY3QpOwogI2VuZGlmCiB9CiAKQEAgLTc2NSwxNCArNzY1LDEzIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Vi
a2l0V2ViVmllCiAgICAgd2lkZ2V0Q2xhc3MtPnBhcmVudF9zZXQgPSB3ZWJraXRXZWJWaWV3QmFz
ZVBhcmVudFNldDsKIAogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0V2ViVmlld0Jhc2VDbGFzcyk7Ci0gICAgZ29iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdFdlYlZpZXdCYXNlRmluYWxpemU7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RlZCA9IHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQ7CisgICAgZ29iamVjdENsYXNzLT5k
aXNwb3NlID0gd2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlOwogCiAgICAgR3RrQ29udGFpbmVyQ2xh
c3MqIGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJraXRXZWJWaWV3QmFz
ZUNsYXNzKTsKICAgICBjb250YWluZXJDbGFzcy0+YWRkID0gd2Via2l0V2ViVmlld0Jhc2VDb250
YWluZXJBZGQ7CiAgICAgY29udGFpbmVyQ2xhc3MtPnJlbW92ZSA9IHdlYmtpdFdlYlZpZXdCYXNl
Q29udGFpbmVyUmVtb3ZlOwogICAgIGNvbnRhaW5lckNsYXNzLT5mb3JhbGwgPSB3ZWJraXRXZWJW
aWV3QmFzZUNvbnRhaW5lckZvcmFsbDsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3
ZWJraXRXZWJWaWV3QmFzZUNsYXNzLCBzaXplb2YoV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKSk7
CiB9CiAKIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250
ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZUFj
Y2Vzc2libGUuY3BwCmluZGV4IDA5YTExYWIuLjdiMDY5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VB
Y2Nlc3NpYmxlLmNwcApAQCAtMjAsMjAgKzIwLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlLmgiCiAKKyNpbmNsdWRlICJXZWJL
aXRQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdCYXNlQWNjZXNzaWJsZVByaXZhdGUgewogICAgIEd0a1dpZGdldCogd2lkZ2V0OwogfTsKIAot
R19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUsIHdlYmtpdF93ZWJfdmll
d19iYXNlX2FjY2Vzc2libGUsIEFUS19UWVBFX1NPQ0tFVCkKLQotc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VBY2Nlc3NpYmxlRmluYWxpemUoR09iamVjdCogZ29iamVjdCkKLXsKLSAgICBX
ZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUqIGFjY2Vzc2libGUgPSBXRUJLSVRfV0VCX1ZJRVdf
QkFTRV9BQ0NFU1NJQkxFKGdvYmplY3QpOwotICAgIGFjY2Vzc2libGUtPnByaXYtPn5XZWJLaXRX
ZWJWaWV3QmFzZUFjY2Vzc2libGVQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3dlYl92aWV3X2Jhc2VfYWNjZXNzaWJsZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShnb2JqZWN0
KTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUsIHdl
YmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGUsIEFUS19UWVBFX1NPQ0tFVCkKIAogc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlV2lkZ2V0RGVzdHJveWVkKEd0a1dpZGdl
dCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7CkBA
IC05NCwxOCArODgsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRXZWJWaWV3QmFzZUFjY2Vzc2libGVH
ZXRJbmRleEluUGFyZW50KEF0a09iamVjdCogYXRrT2JqZWN0KQogICAgIHJldHVybiAtMTsKIH0K
IAotc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfYWNjZXNzaWJsZV9pbml0KFdlYktp
dFdlYlZpZXdCYXNlQWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKLXsKLSAgICBXZWJLaXRXZWJWaWV3
QmFzZUFjY2Vzc2libGVQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF
KGFjY2Vzc2libGUsIFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0VfQUNDRVNTSUJMRSwgV2ViS2l0
V2ViVmlld0Jhc2VBY2Nlc3NpYmxlUHJpdmF0ZSk7Ci0gICAgYWNjZXNzaWJsZS0+cHJpdiA9IHBy
aXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGVQcml2YXRlKCk7
Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGVfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGVDbGFzcyoga2xhc3MpCiB7Ci0gICAgR09i
amVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Ci0gICAgZ09i
amVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZUZpbmFsaXpl
OwotCiAgICAgLy8gTm8gbmVlZCB0byBpbXBsZW1lbnQgZ2V0X25fY2hpbGRyZW4oKSBhbmQgcmVm
X2NoaWxkKCkgaGVyZQogICAgIC8vIHNpbmNlIHRoaXMgaXMgYSBzdWJjbGFzcyBvZiBBdGtTb2Nr
ZXQgYW5kIGFsbCB0aGUgbG9naWMgcmVsYXRlZAogICAgIC8vIHRvIHRob3NlIGZ1bmN0aW9ucyB3
aWxsIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBBVEsgYnJpZGdlLgpAQCAtMTEzLDggKzk3LDYgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfYWNjZXNzaWJsZV9jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdCYXNlQWNjZXNzaWIKICAgICBhdGtPYmplY3RDbGFzcy0+aW5pdGlhbGl6ZSA9
IHdlYmtpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZUluaXRpYWxpemU7CiAgICAgYXRrT2JqZWN0Q2xh
c3MtPnJlZl9zdGF0ZV9zZXQgPSB3ZWJraXRXZWJWaWV3QmFzZUFjY2Vzc2libGVSZWZTdGF0ZVNl
dDsKICAgICBhdGtPYmplY3RDbGFzcy0+Z2V0X2luZGV4X2luX3BhcmVudCA9IHdlYmtpdFdlYlZp
ZXdCYXNlQWNjZXNzaWJsZUdldEluZGV4SW5QYXJlbnQ7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRk
X3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGVQcml2YXRl
KSk7CiB9CiAKIFdlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZSogd2Via2l0V2ViVmlld0Jhc2VB
Y2Nlc3NpYmxlTmV3KEd0a1dpZGdldCogd2lkZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGllcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcAppbmRl
eCBhODNkYThmLi45N2I1YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcApAQCAtMTA1LDggKzEw
NSw2IEBAIGVudW0gewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotR19ERUZJTkVfVFlQ
RShXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLCB3ZWJraXRfd2luZG93X3Byb3BlcnRpZXMsIEdfVFlQ
RV9PQkpFQ1QpCi0KIHN0cnVjdCBfV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUgewogICAg
IEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKIApAQCAtMTIwLDExICsxMTgsNyBAQCBzdHJ1Y3QgX1dl
YktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlIHsKICAgICBib29sIGZ1bGxzY3JlZW4gOiAxOwog
fTsKIAotc3RhdGljIHZvaWQgd2Via2l0V2luZG93UHJvcGVydGllc0ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXRUJLSVRfV0lORE9XX1BST1BFUlRJRVMob2JqZWN0KS0+cHJpdi0+
fldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3dpbmRvd19wcm9wZXJ0aWVzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19
CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2luZG93UHJvcGVydGllcywgd2Via2l0X3dpbmRv
d19wcm9wZXJ0aWVzLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXaW5kb3dQ
cm9wZXJ0aWVzR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKQEAgLTE5OCw4ICsxOTIsNiBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXaW5kb3dQcm9wZXJ0aWVzU2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSWQsIGNvbgogc3RhdGljIHZvaWQgd2Via2l0X3dpbmRvd19wcm9wZXJ0
aWVzX2NsYXNzX2luaXQoV2ViS2l0V2luZG93UHJvcGVydGllc0NsYXNzKiByZXF1ZXN0Q2xhc3Mp
CiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVl
c3RDbGFzcyk7Ci0KLSAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXaW5kb3dQcm9w
ZXJ0aWVzRmluYWxpemU7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdp
bmRvd1Byb3BlcnRpZXNHZXRQcm9wZXJ0eTsKICAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2Via2l0V2luZG93UHJvcGVydGllc1NldFByb3BlcnR5OwogCkBAIC0zMDcsMTUgKzI5OSw2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19jbGFzc19pbml0KFdlYktp
dFdpbmRvd1Byb3BlcnRpZXNDbGFzcyogcmVxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRp
c3BsYXllZCBmdWxsc2NyZWVuLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUZsYWdzKSk7Ci0KLSAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0V2luZG93UHJv
cGVydGllc1ByaXZhdGUpKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3dpbmRvd19wcm9wZXJ0
aWVzX2luaXQoV2ViS2l0V2luZG93UHJvcGVydGllcyogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRX
aW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9XSU5ET1dfUFJPUEVSVElFUywgV2ViS2l0V2luZG93UHJv
cGVydGllc1ByaXZhdGUpOwotICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJp
dikgV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUoKTsKIH0KIAogV2ViS2l0V2luZG93UHJv
cGVydGllcyogd2Via2l0V2luZG93UHJvcGVydGllc0NyZWF0ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169422</attachid>
            <date>2012-10-18 08:41:13 -0700</date>
            <delta_ts>2012-11-22 05:20:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-webkit-define-type2.diff</filename>
            <type>text/plain</type>
            <size>76820</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiNDZjYzQ3Li4wMjgzOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTA4
IEBACiAyMDEyLTEwLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbR1RLXSBVc2UgY3VzdG9tIHByaXZhdGUgbWFjcm9zIHRvIGRlZmluZSBH
T2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgV0VCS0lUX0RFRklORV9UWVBFIG1hY3Jvcywgc2ltaWxhciBhbmQgY29tcGF0aWJsZSB3aXRo
CisgICAgICAgIEdfREVGSU5FX1RZUEUgbWFjcm9zLCB0byBkZWZpbmUgR09iamVjdCB0eXBlcy4g
VGhlc2UgbWFjcm9zIGFsc28KKyAgICAgICAgZGVmaW5lIHRoZSBpbml0IGFuZCBmaW5hbGl6ZSBm
dW5jdGlvbnMgcmVkdWNpbmcgdGhlIEdPYmplY3QKKyAgICAgICAgYm9pbGVycGxhdGUgYW5kIGhp
ZGluZyB0aGUgcGxhY2VtZW50IG5ldyBzeW50YXggdGhhdCBjYXVzZXMgc29tZQorICAgICAgICBj
b25mdXNpb24uIFRoZSBwYXRjaCByZXBsYWNlcyB0aGUgdXNlIG9mIEdfREVGSU5FX1RZUEUgbWFj
cm9zIGJ5CisgICAgICAgIFdFQktJVF9ERUZJTkVfVFlQRSBvbmVzIGFuZCByZW1vdmVzIHRoZSBp
bml0IGFuZCBmaW5hbGl6ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMsIG1vdmluZyBjdXN0b20g
Y29kZSB3aGVuIG5lZWRlZCB0byB0aGUgcHJpdmF0ZQorICAgICAgICBzdHJ1Y3QgY29uc3RydWN0
b3IvZGVzdHJ1Y3RvciBvciBjb25zdHJ1Y3RlZC9kaXNwb3NlIHZpcnR1YWwKKyAgICAgICAgbWV0
aG9kcyB3aGVuIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51RGlzcG9zZSk6Cisg
ICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgIChfV2ViS2l0
Q29udGV4dE1lbnVJdGVtUHJpdmF0ZTo6fl9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKToK
KyAgICAgICAgKF9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKToKKyAgICAgICAgKHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRDb29raWVNYW5h
Z2VyUHJpdmF0ZTo6fl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgIChfV2Vi
S2l0Q29va2llTWFuYWdlclByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdERvd25sb2FkLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb3dubG9hZF9jbGFzc19pbml0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgor
ICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfY2xhc3NfaW5pdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9maW5kX2NvbnRyb2xs
ZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1
Ym1pc3Npb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVz
dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2NsYXNz
X2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25f
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY2xhc3Nf
aW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bl9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4u
Y3BwOgorICAgICAgICAoX1dlYktpdFBsdWdpblByaXZhdGU6On5fV2ViS2l0UGx1Z2luUHJpdmF0
ZSk6CisgICAgICAgIChfV2ViS2l0UGx1Z2luUHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1
Z2luX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFBvbGljeURlY2lzaW9uRGlzcG9zZSk6Cisg
ICAgICAgICh3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lv
bl9pZ25vcmUpOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwOgorICAg
ICAgICAoX1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZTo6fl9XZWJLaXRQcmludE9wZXJhdGlv
blByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdF9yZXNw
b25zZV9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0
eV9tYW5hZ2VyX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9XZWJLaXRTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRT
ZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9u
c2UuY3BwOgorICAgICAgICAod2Via2l0X3VyaV9yZXNwb25zZV9jbGFzc19pbml0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlOjp+X1dlYktpdFdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAoX1dl
YktpdFdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9yZXNvdXJjZV9jbGFzc19pbml0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJL
aXRXZWJWaWV3UHJpdmF0ZTo6fl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChfV2Vi
S2l0V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjpfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOgor
ICAgICAgICAoX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6fl9XZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jh
c2VfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VBY2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vz
c2libGVfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2lu
ZG93UHJvcGVydGllcy5jcHA6CisgICAgICAgICh3ZWJraXRfd2luZG93X3Byb3BlcnRpZXNfY2xh
c3NfaW5pdCk6CisKKzIwMTItMTAtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIERvbid0IHVzZSB0aGUgQyBBUEkgaW50ZXJuYWxs
eSBpbiBXZWJLaXRTZXR0aW5ncwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY3ODQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggNjAyZDM3OS4uYzgw
YWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC02MywyNyArNjMsMTAgQEAgc3RydWN0IF9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFT
VF9TSUdOQUxdID0geyAwLCB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdEJhY2tGb3J3YXJkTGlz
dCwgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0LCBHX1RZUEVfT0JKRUNUKQotCi1zdGF0aWMgdm9p
ZCB3ZWJraXRCYWNrRm9yd2FyZExpc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAg
V0VCS0lUX0JBQ0tfRk9SV0FSRF9MSVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRCYWNrRm9yd2Fy
ZExpc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pbml0KFdlYktpdEJhY2tGb3J3YXJkTGlzdCogbGlzdCkK
LXsKLSAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKGxpc3QsIFdFQktJVF9UWVBFX0JBQ0tfRk9SV0FSRF9MSVNULCBXZWJL
aXRCYWNrRm9yd2FyZExpc3RQcml2YXRlKTsKLSAgICBsaXN0LT5wcml2ID0gcHJpdjsKLSAgICBu
ZXcgKHByaXYpIFdlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUoKTsKLX0KK1dFQktJVF9ERUZJ
TkVfVFlQRShXZWJLaXRCYWNrRm9yd2FyZExpc3QsIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdCwg
R19UWVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2Ns
YXNzX2luaXQoV2ViS2l0QmFja0ZvcndhcmRMaXN0Q2xhc3MqIGxpc3RDbGFzcykKIHsKLSAgICBH
T2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGxpc3RDbGFzcyk7Ci0K
LSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0QmFja0ZvcndhcmRMaXN0RmluYWxp
emU7Ci0KICAgICAvKioKICAgICAgKiBXZWJLaXRCYWNrRm9yd2FyZExpc3Q6OmNoYW5nZWQ6CiAg
ICAgICogQGJhY2tfZm9yd2FyZF9saXN0OiB0aGUgI1dlYktpdEJhY2tGb3J3YXJkTGlzdCBvbiB3
aGljaCB0aGUgc2lnbmFsIHdhcyBlbWl0dGVkCkBAIC0xMDUsOCArODgsNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfY2xhc3NfaW5pdChXZWJLaXRCYWNrRm9yd2FyZExp
c3RDbGFzcyogbGlzdAogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDIsCiAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9CQUNLX0ZPUldBUkRfTElTVF9JVEVNLAogICAg
ICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOwotCi0gICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKGxpc3RDbGFzcywgc2l6ZW9mKFdlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUp
KTsKIH0KIAogc3RhdGljIFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIHdlYmtpdEJhY2tGb3J3
YXJkTGlzdEdldE9yQ3JlYXRlSXRlbShXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGxpc3QsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHdlYkxpc3RJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cAppbmRleCA4YjIyYWZjLi41M2ZkMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApA
QCAtMzUsMjggKzM1LDEwIEBAIHN0cnVjdCBfV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbVByaXZh
dGUgewogICAgIENTdHJpbmcgb3JpZ2luYWxVUkk7CiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktp
dEJhY2tGb3J3YXJkTGlzdEl0ZW0sIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLCBHX1RZ
UEVfSU5JVElBTExZX1VOT1dORUQpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdEJhY2tGb3J3YXJkTGlz
dEl0ZW1GaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX0JBQ0tfRk9SV0FS
RF9MSVNUX0lURU0ob2JqZWN0KS0+cHJpdi0+fldlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2
YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1f
cGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1faW5pdChXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiBs
aXN0SXRlbSkKLXsKLSAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZSogcHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShsaXN0SXRlbSwgV0VCS0lUX1RZUEVfQkFDS19G
T1JXQVJEX0xJU1RfSVRFTSwgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUpOwotICAg
IGxpc3RJdGVtLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdEJhY2tGb3J3YXJk
TGlzdEl0ZW1Qcml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0QmFja0Zvcndh
cmRMaXN0SXRlbSwgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0sIEdfVFlQRV9JTklUSUFM
TFlfVU5PV05FRCkKIAogc3RhdGljIHZvaWQgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1f
Y2xhc3NfaW5pdChXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtQ2xhc3MqIGxpc3RJdGVtQ2xhc3Mp
CiB7Ci0gICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhsaXN0
SXRlbUNsYXNzKTsKLQotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRCYWNrRm9y
d2FyZExpc3RJdGVtRmluYWxpemU7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlz
dEl0ZW1DbGFzcywgc2l6ZW9mKFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlKSk7CiB9
CiAKIHR5cGVkZWYgSGFzaE1hcDxXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgV2ViS2l0QmFja0Zv
cndhcmRMaXN0SXRlbSo+IEhpc3RvcnlJdGVtc01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmNwcAppbmRleCBlNjU3Mjhh
Li40NmNlOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCkBAIC0zMywyOSArMzMsMTggQEAgc3RydWN0IF9XZWJL
aXRDb250ZXh0TWVudVByaXZhdGUgewogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogcGFyZW50
SXRlbTsKIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0Q29udGV4dE1lbnUsIHdlYmtpdF9jb250
ZXh0X21lbnUsIEdfVFlQRV9PQkpFQ1QpCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29udGV4
dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnUsIEdfVFlQRV9PQkpFQ1QpCiAKLXN0YXRpYyB2b2lk
IHdlYmtpdENvbnRleHRNZW51RmluYWxpemUoR09iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQg
d2Via2l0Q29udGV4dE1lbnVEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICBXZWJLaXRD
b250ZXh0TWVudSogbWVudSA9IFdFQktJVF9DT05URVhUX01FTlUob2JqZWN0KTsKLSAgICB3ZWJr
aXRfY29udGV4dF9tZW51X3JlbW92ZV9hbGwobWVudSk7Ci0gICAgbWVudS0+cHJpdi0+fldlYktp
dENvbnRleHRNZW51UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9jb250ZXh0
X21lbnVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0X2NvbnRleHRfbWVudV9pbml0KFdlYktpdENvbnRleHRNZW51KiBtZW51KQotewotICAg
IFdlYktpdENvbnRleHRNZW51UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShtZW51LCBXRUJLSVRfVFlQRV9DT05URVhUX01FTlUsIFdlYktpdENvbnRleHRNZW51UHJp
dmF0ZSk7Ci0gICAgbWVudS0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRDb250
ZXh0TWVudVByaXZhdGUoKTsKKyAgICB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZV9hbGwoV0VC
S0lUX0NPTlRFWFRfTUVOVShvYmplY3QpKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfY29u
dGV4dF9tZW51X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0X2NvbnRleHRfbWVudV9jbGFzc19pbml0KFdlYktpdENvbnRleHRNZW51Q2xhc3Mq
IGxpc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGxpc3RDbGFzcyk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdENv
bnRleHRNZW51RmluYWxpemU7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlzdENs
YXNzLCBzaXplb2YoV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlKSk7CisgICAgZ09iamVjdENsYXNz
LT5kaXNwb3NlID0gd2Via2l0Q29udGV4dE1lbnVEaXNwb3NlOwogfQogCiB2b2lkIHdlYmtpdENv
bnRleHRNZW51UG9wdWxhdGUoV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUsIFZlY3RvcjxDb250ZXh0
TWVudUl0ZW0+JiBjb250ZXh0TWVudUl0ZW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggYTcz
ZjA3NS4uYWE4OWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC0zOCwzMyArMzgsMjAgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdHJ1
Y3QgX1dlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUgeworICAgIH5fV2ViS2l0Q29udGV4dE1l
bnVJdGVtUHJpdmF0ZSgpCisgICAgeworICAgICAgICBpZiAoc3ViTWVudSkKKyAgICAgICAgICAg
IHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRlbShzdWJNZW51LmdldCgpLCAwKTsKKyAgICB9
CisKICAgICBPd25QdHI8Q29udGV4dE1lbnVJdGVtPiBtZW51SXRlbTsKICAgICBHUmVmUHRyPFdl
YktpdENvbnRleHRNZW51PiBzdWJNZW51OwogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRDb250
ZXh0TWVudUl0ZW0sIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbSwgR19UWVBFX0lOSVRJQUxMWV9V
Tk9XTkVEKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRDb250ZXh0TWVudUl0ZW1GaW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShvYmplY3QpLT5wcml2OwotICAgIGlmIChwcml2LT5z
dWJNZW51KQotICAgICAgICB3ZWJraXRDb250ZXh0TWVudVNldFBhcmVudEl0ZW0ocHJpdi0+c3Vi
TWVudS5nZXQoKSwgMCk7Ci0gICAgcHJpdi0+fldlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUo
KTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX2luaXQoV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtKQotewotICAgIFdlYktp
dENvbnRleHRNZW51SXRlbVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZB
VEUoaXRlbSwgV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIFdlYktpdENvbnRleHRNZW51
SXRlbVByaXZhdGUpOwotICAgIGl0ZW0tPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2Vi
S2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSgpOwotfQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dENvbnRleHRNZW51SXRlbSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtLCBHX1RZUEVfSU5JVElB
TExZX1VOT1dORUQpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9jbGFz
c19pbml0KFdlYktpdENvbnRleHRNZW51SXRlbUNsYXNzKiBpdGVtQ2xhc3MpCiB7Ci0gICAgR09i
amVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhpdGVtQ2xhc3MpOwotICAg
IGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRDb250ZXh0TWVudUl0ZW1GaW5hbGl6ZTsK
LSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoaXRlbUNsYXNzLCBzaXplb2YoV2ViS2l0Q29u
dGV4dE1lbnVJdGVtUHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja0FuZFdhcm5JZk1l
bnVIYXNQYXJlbnRJdGVtKFdlYktpdENvbnRleHRNZW51KiBtZW51KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcApp
bmRleCA2NmRiMWNjLi4yOWEzN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcApAQCAtMzYsMTIgKzM2LDE3
IEBAIGVudW0gewogfTsKIAogc3RydWN0IF9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSB7Cisg
ICAgfl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSgpCisgICAgeworICAgICAgICB3ZWJDb29r
aWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworICAgIH0KKwogICAgIFJl
ZlB0cjxXZWJDb29raWVNYW5hZ2VyUHJveHk+IHdlYkNvb2tpZU1hbmFnZXI7CiB9OwogCiBzdGF0
aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKLUdfREVGSU5FX1RZUEUo
V2ViS2l0Q29va2llTWFuYWdlciwgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyLCBHX1RZUEVfT0JKRUNU
KQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdENvb2tpZU1hbmFnZXIsIHdlYmtpdF9jb29raWVf
bWFuYWdlciwgR19UWVBFX09CSkVDVCkKIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
RUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhULCBTb3VwQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUZXh0KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0NPT0tJ
RV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFLCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VT
UUxpdGUpOwpAQCAtNTAsMjcgKzU1LDkgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
RUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfQUxXQVlTLCBIVFRQQ29va2llQWNjZXAKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBUX05FVkVS
LCBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTk9fVEhJUkRfUEFSVFksIEhUVFBDb29r
aWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7CiAKLXN0YXRpYyB2b2lk
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9pbml0KFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIp
Ci17Ci0gICAgV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUobWFuYWdlciwgV0VCS0lUX1RZUEVfQ09PS0lFX01BTkFHRVIsIFdlYktp
dENvb2tpZU1hbmFnZXJQcml2YXRlKTsKLSAgICBtYW5hZ2VyLT5wcml2ID0gcHJpdjsKLSAgICBu
ZXcgKHByaXYpIFdlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdENvb2tpZU1hbmFnZXJGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2Vi
S2l0Q29va2llTWFuYWdlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfQ09PS0lFX01BTkFHRVIob2Jq
ZWN0KS0+cHJpdjsKLSAgICBwcml2LT53ZWJDb29raWVNYW5hZ2VyLT5zdG9wT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcygpOwotICAgIHByaXYtPn5XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSgpOwot
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9jb29raWVfbWFuYWdlcl9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJf
Y2xhc3NfaW5pdChXZWJLaXRDb29raWVNYW5hZ2VyQ2xhc3MqIGZpbmRDbGFzcykKIHsKICAgICBH
T2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGZpbmRDbGFzcyk7Ci0g
ICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdENvb2tpZU1hbmFnZXJGaW5hbGl6ZTsK
LQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShmaW5kQ2xhc3MsIHNpemVvZihXZWJLaXRD
b29raWVNYW5hZ2VyUHJpdmF0ZSkpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0Q29va2llTWFu
YWdlcjo6Y2hhbmdlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdERvd25sb2FkLmNwcAppbmRleCBjYzNiNTFmLi5mN2I3MDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwCkBAIC02
NywxMyArNjcsNyBAQCBzdHJ1Y3QgX1dlYktpdERvd25sb2FkUHJpdmF0ZSB7CiAKIHN0YXRpYyBn
dWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAotR19ERUZJTkVfVFlQRShXZWJL
aXREb3dubG9hZCwgd2Via2l0X2Rvd25sb2FkLCBHX1RZUEVfT0JKRUNUKQotCi1zdGF0aWMgdm9p
ZCB3ZWJraXREb3dubG9hZEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRf
RE9XTkxPQUQob2JqZWN0KS0+cHJpdi0+fldlYktpdERvd25sb2FkUHJpdmF0ZSgpOwotICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb3dubG9hZF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwotfQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdERvd25sb2FkLCB3ZWJraXRfZG93bmxv
YWQsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdERvd25sb2FkR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBhcmFtU3BlYykKIHsKQEAgLTEwNywxOCArMTAxLDEwIEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwg
Y29uc3QKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2Rvd25sb2Fk
X2luaXQoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkKQotewotICAgIFdlYktpdERvd25sb2FkUHJp
dmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShkb3dubG9hZCwgV0VCS0lU
X1RZUEVfRE9XTkxPQUQsIFdlYktpdERvd25sb2FkUHJpdmF0ZSk7Ci0gICAgZG93bmxvYWQtPnBy
aXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0RG93bmxvYWRQcml2YXRlKCk7Ci19Ci0K
IHN0YXRpYyB2b2lkIHdlYmtpdF9kb3dubG9hZF9jbGFzc19pbml0KFdlYktpdERvd25sb2FkQ2xh
c3MqIGRvd25sb2FkQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKGRvd25sb2FkQ2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVy
dHkgPSB3ZWJraXREb3dubG9hZEdldFByb3BlcnR5OwotICAgIG9iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdERvd25sb2FkRmluYWxpemU7CiAKICAgICBkb3dubG9hZENsYXNzLT5kZWNpZGVf
ZGVzdGluYXRpb24gPSB3ZWJraXREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uOwogCkBAIC0yNjAs
OCArMjQ2LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2Rvd25sb2FkX2NsYXNzX2luaXQoV2ViS2l0
RG93bmxvYWRDbGFzcyogZG93bmxvYWRDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIGdfY2Ns
b3N1cmVfbWFyc2hhbF9WT0lEX19TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVf
Qk9PTEVBTiwgMSwKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcpOwotCi0gICAg
Z190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGRvd25sb2FkQ2xhc3MsIHNpemVvZihXZWJLaXREb3du
bG9hZFByaXZhdGUpKTsKIH0KIAogV2ViS2l0RG93bmxvYWQqIHdlYmtpdERvd25sb2FkQ3JlYXRl
KERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCBk
YzMyMGJiLi5kOTAzZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTUwLDE0ICs1MCw3IEBA
IHN0cnVjdCBfV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSB7CiAgICAgUGVuZGluZ0ljb25S
ZXF1ZXN0TWFwIHBlbmRpbmdJY29uUmVxdWVzdHM7CiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktp
dEZhdmljb25EYXRhYmFzZSwgd2Via2l0X2Zhdmljb25fZGF0YWJhc2UsIEdfVFlQRV9PQkpFQ1Qp
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2luaXQoV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBtYW5hZ2VyKQotewotICAgIFdlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUq
IHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUobWFuYWdlciwgV0VCS0lUX1RZUEVf
RkFWSUNPTl9EQVRBQkFTRSwgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSk7Ci0gICAgbWFu
YWdlci0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRGYXZpY29uRGF0YWJhc2VQ
cml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0RmF2aWNvbkRhdGFiYXNlLCB3
ZWJraXRfZmF2aWNvbl9kYXRhYmFzZSwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Vi
a2l0RmF2aWNvbkRhdGFiYXNlRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CkBAIC03MCwxOCAr
NjMsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlRGlzcG9zZShHT2JqZWN0
KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfcGFy
ZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRGYXZp
Y29uRGF0YWJhc2VGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSA9IFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFKG9iamVjdCk7Ci0g
ICAgZGF0YWJhc2UtPnByaXYtPn5XZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKCk7Ci0gICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfcGFyZW50X2NsYXNzKS0+Zmlu
YWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2Vf
Y2xhc3NfaW5pdChXZWJLaXRGYXZpY29uRGF0YWJhc2VDbGFzcyogZmF2aWNvbkRhdGFiYXNlQ2xh
c3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhm
YXZpY29uRGF0YWJhc2VDbGFzcyk7CiAgICAgZ09iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0
RmF2aWNvbkRhdGFiYXNlRGlzcG9zZTsKLSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Vi
a2l0RmF2aWNvbkRhdGFiYXNlRmluYWxpemU7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRGYXZp
Y29uRGF0YWJhc2U6OmZhdmljb24tcmVhZHk6CkBAIC0xMDIsOCArODcsNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9jbGFzc19pbml0KFdlYktpdEZhdmljb25EYXRhYmFz
ZUNsYXNzKiBmYXZpYwogICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZP
SURfX1NUUklORywKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX1NUUklORyk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUoZmF2aWNvbkRhdGFiYXNlQ2xhc3MsIHNpemVvZihXZWJLaXRGYXZpY29uRGF0YWJhc2VQ
cml2YXRlKSk7CiB9CiAKIHN0cnVjdCBHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCAwYTdjM2MwLi41NTEwYzdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdC5jcHAKQEAgLTU2LDcgKzU2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgKiBXZWJLaXQgd2lsbCBwcm92aWRlIGEgZGVmYXVsdCBoYW5kbGVyIHdoaWNoIHdpbGwgYXN5
bmNocm9ub3VzbHkgcnVuCiAgKiBhIHJlZ3VsYXIgI0d0a0ZpbGVDaG9vc2VyRGlhbG9nIGZvciB0
aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgogICovCi1HX0RFRklORV9UWVBFKFdlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdCwgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNU
KQogCiBzdHJ1Y3QgX1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUgewogICAgIFJlZlB0
cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwpAQCAtNjcsNiArNjYsOCBAQCBz
dHJ1Y3QgX1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUgewogICAgIGJvb2wgaGFuZGxl
ZFJlcXVlc3Q7CiB9OwogCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0LCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKIGVudW0g
ewogICAgIFBST1BfMCwKICAgICBQUk9QX0ZJTFRFUiwKQEAgLTc1LDEzICs3Niw3IEBAIGVudW0g
ewogICAgIFBST1BfU0VMRUNURURfRklMRVMsCiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZmls
ZV9jaG9vc2VyX3JlcXVlc3RfaW5pdChXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3Qp
Ci17Ci0gICAgcmVxdWVzdC0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1
ZXN0LCBXRUJLSVRfVFlQRV9GSUxFX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0UHJpdmF0ZSk7Ci0gICAgbmV3IChyZXF1ZXN0LT5wcml2KSBXZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3RQcml2YXRlKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdEZpbGVDaG9vc2VyUmVx
dWVzdEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3N0YXRpYyB2b2lkIHdlYmtpdEZpbGVDaG9v
c2VyUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9GSUxFX0NIT09TRVJfUkVRVUVTVChvYmplY3Qp
OwogCkBAIC04OSw4ICs4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVz
dEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIXJlcXVlc3QtPnByaXYtPmhhbmRs
ZWRSZXF1ZXN0KQogICAgICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKHJl
cXVlc3QpOwogCi0gICAgcmVxdWVzdC0+cHJpdi0+fldlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFBy
aXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rf
cGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRGaWxlQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFy
YW1TcGVjKQpAQCAtMTE4LDkgKzExMiw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbGVDaG9vc2Vy
UmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHCiBzdGF0
aWMgdm9pZCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyog
b2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIG9iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdEZpbmFsaXplOworICAgIG9i
amVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RGlzcG9zZTsKICAg
ICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0R2V0
UHJvcGVydHk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6
ZW9mKFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUpKTsKIAogICAgIC8qKgogICAgICAq
IFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdDpmaWx0ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXgg
YmUzZjU3MS4uN2UzNmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBz
dHJ1Y3QgX1dlYktpdEZpbmRDb250cm9sbGVyUHJpdmF0ZSB7CiAKIHN0YXRpYyBndWludCBzaWdu
YWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRGaW5kQ29u
dHJvbGxlciwgd2Via2l0X2ZpbmRfY29udHJvbGxlciwgR19UWVBFX09CSkVDVCkKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRGaW5kQ29udHJvbGxlciwgd2Via2l0X2ZpbmRfY29udHJvbGxlciwg
R19UWVBFX09CSkVDVCkKIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfRklO
RF9PUFRJT05TX0NBU0VfSU5TRU5TSVRJVkUsIEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKTsK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0ZJTkRfT1BUSU9OU19BVF9XT1JE
X1NUQVJUUywgRmluZE9wdGlvbnNBdFdvcmRTdGFydHMpOwpAQCAtODUsMTMgKzg1LDYgQEAgc3Rh
dGljIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBzdHJpbmcsIHVuc2lnbmVkIG0KICAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9GSU5EX0NPTlRS
T0xMRVIoY2xpZW50SW5mbyksIHNpZ25hbHNbQ09VTlRFRF9NQVRDSEVTXSwgMCwgbWF0Y2hDb3Vu
dCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfaW5pdChXZWJLaXRG
aW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIpCi17Ci0gICAgV2ViS2l0RmluZENvbnRyb2xs
ZXJQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGZpbmRDb250cm9s
bGVyLCBXRUJLSVRfVFlQRV9GSU5EX0NPTlRST0xMRVIsIFdlYktpdEZpbmRDb250cm9sbGVyUHJp
dmF0ZSk7Ci0gICAgZmluZENvbnRyb2xsZXItPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikg
V2ViS2l0RmluZENvbnRyb2xsZXJQcml2YXRlKCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgV2ViUGFn
ZVByb3h5KiBnZXRQYWdlKFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlcikKIHsK
ICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
S2l0V2ViVmlld0Jhc2UqPihmaW5kQ29udHJvbGxlci0+cHJpdi0+d2ViVmlldykpOwpAQCAtMTQ2
LDIyICsxMzksMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJTZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QKICAgICB9CiB9CiAKLXN0YXRp
YyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewot
ICAgIFdFQktJVF9GSU5EX0NPTlRST0xMRVIob2JqZWN0KS0+cHJpdi0+fldlYktpdEZpbmRDb250
cm9sbGVyUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2NvbnRyb2xs
ZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZvaWQgd2Vi
a2l0X2ZpbmRfY29udHJvbGxlcl9jbGFzc19pbml0KFdlYktpdEZpbmRDb250cm9sbGVyQ2xhc3Mq
IGZpbmRDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKGZpbmRDbGFzcyk7Ci0KICAgICBnT2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Vi
a2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZDsKICAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdEZpbmRDb250cm9sbGVyR2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNz
LT5zZXRfcHJvcGVydHkgPSB3ZWJraXRGaW5kQ29udHJvbGxlclNldFByb3BlcnR5OwotICAgIGdP
YmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRGaW5kQ29udHJvbGxlckZpbmFsaXplOwotCi0g
ICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGZpbmRDbGFzcywgc2l6ZW9mKFdlYktpdEZpbmRD
b250cm9sbGVyUHJpdmF0ZSkpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0RmluZENvbnRyb2xs
ZXI6dGV4dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuY3BwCmluZGV4IGY5MDFlNzMuLjgx
NmNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMjgsOCArMjgsNiBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1HX0RFRklORV9UWVBFKFdlYktpdEZvcm1T
dWJtaXNzaW9uUmVxdWVzdCwgd2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVf
T0JKRUNUKQotCiBzdHJ1Y3QgX1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdFByaXZhdGUgewog
ICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiB3ZWJWYWx1ZXM7CiAgICAgUmVmUHRyPFdl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gbGlzdGVuZXI7CkBAIC0zNywxNCArMzUsOSBA
QCBzdHJ1Y3QgX1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdFByaXZhdGUgewogICAgIGJvb2wg
aGFuZGxlZFJlcXVlc3Q7CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZm9ybV9zdWJtaXNzaW9u
X3JlcXVlc3RfaW5pdChXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCi17Ci0g
ICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9GT1JNX1NVQk1JU1NJT05fUkVR
VUVTVCwgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0ZSk7Ci0gICAgcmVxdWVzdC0+
cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3RQ
cml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0LCB3ZWJraXRfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCiAKLXN0
YXRpYyB2b2lkIHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdEZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKK3N0YXRpYyB2b2lkIHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdERpc3Bvc2UoR09i
amVjdCogb2JqZWN0KQogewogICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCogcmVxdWVz
dCA9IFdFQktJVF9GT1JNX1NVQk1JU1NJT05fUkVRVUVTVChvYmplY3QpOwogCkBAIC01MiwxNSAr
NDUsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0RmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3Qp
CiAgICAgICAgIHdlYmtpdF9mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9zdWJtaXQocmVxdWVzdCk7
CiAKLSAgICByZXF1ZXN0LT5wcml2LT5+V2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0
ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7
CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9jbGFzc19p
bml0KFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAg
ICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFz
cyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0RmluYWxpemU7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywg
c2l6ZW9mKFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdFByaXZhdGUpKTsKKyAgICBvYmplY3RD
bGFzcy0+ZGlzcG9zZSA9IHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdERpc3Bvc2U7CiB9CiAK
IFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCogd2Via2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0
Q3JlYXRlKEltbXV0YWJsZURpY3Rpb25hcnkqIHZhbHVlcywgV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5KiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5jcHAKaW5kZXggNjY0MjkzNy4uOWFiNTU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKQEAgLTM2LDE2ICszNiwxOCBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogICogcGVybWlzc2lvbiB0byBkZWNpZGUgd2hldGhlciBXZWJLaXQgc2hvdWxk
IHByb3ZpZGUgdGhlIHVzZXIncwogICogbG9jYXRpb24gdG8gYSB3ZWJzaXRlIHdoZW4gcmVxdWVz
dGVkIHRocm91Z2h0IHRoZSBHZW9sb2NhdGlvbiBBUEkuCiAgKi8KKwogc3RhdGljIHZvaWQgd2Vi
a2l0X3Blcm1pc3Npb25fcmVxdWVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdElmYWNlKik7Ci1HX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfZ2VvbG9jYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0LCBH
X1RZUEVfT0JKRUNULAotICAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJG
QUNFKFdFQktJVF9UWVBFX1BFUk1JU1NJT05fUkVRVUVTVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfcGVybWlzc2lvbl9yZXF1ZXN0X2ludGVy
ZmFjZV9pbml0KSkKIAogc3RydWN0IF9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJpdmF0ZSB7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4g
cmVxdWVzdDsKICAgICBib29sIG1hZGVEZWNpc2lvbjsKIH07CiAKK1dFQktJVF9ERUZJTkVfVFlQ
RV9XSVRIX0NPREUoV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwgd2Via2l0X2dl
b2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdCwgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFdFQktJVF9UWVBFX1BFUk1J
U1NJT05fUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCiBz
dGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0
UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKFdFQktJVF9JU19HRU9M
T0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwpAQCAtODAsMjkgKzgyLDE3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3RJZmFjCiAgICAgaWZhY2UtPmRlbnkgPSB3ZWJraXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2dlb2xv
Y2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgcmVxdWVzdC0+cHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9HRU9MT0NB
VElPTl9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlKTsKLSAgICBuZXcgKHJlcXVlc3QtPnByaXYpIFdlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcml2YXRlKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2Vi
S2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfR0VP
TE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCktPnByaXY7Ci0KICAgICAvLyBEZWZh
dWx0IGJlaGF2aW91ciB3aGVuIG5vIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0
aGUgcmVxdWVzdC4KLSAgICBpZiAoIXByaXYtPm1hZGVEZWNpc2lvbikKLSAgICAgICAgcHJpdi0+
cmVxdWVzdC0+ZGVueSgpOwotCi0gICAgcHJpdi0+fldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2dlb2xvY2F0aW9u
X3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworICAg
IHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3REZW55KFdFQktJVF9QRVJNSVNTSU9O
X1JFUVVFU1Qob2JqZWN0KSk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2dlb2xvY2F0aW9u
X3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3Nf
aW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQogewog
ICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Ci0g
ICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdEZpbmFsaXplOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9m
KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKSk7CisgICAgb2JqZWN0
Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGlzcG9z
ZTsKIH0KIAogV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJveHkqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDRjOTQ4NjcuLjhkZjI5M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RS
ZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhp
dFRlc3RSZXN1bHQuY3BwCkBAIC03NCwxMyArNzQsNyBAQCBzdHJ1Y3QgX1dlYktpdEhpdFRlc3RS
ZXN1bHRQcml2YXRlIHsKICAgICBDU3RyaW5nIG1lZGlhVVJJOwogfTsKIAotR19ERUZJTkVfVFlQ
RShXZWJLaXRIaXRUZXN0UmVzdWx0LCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0LCBHX1RZUEVfT0JK
RUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRIaXRUZXN0UmVzdWx0RmluYWxpemUoR09iamVjdCog
b2JqZWN0KQotewotICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFQob2JqZWN0KS0+cHJpdi0+fldl
YktpdEhpdFRlc3RSZXN1bHRQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQorV0VCS0lU
X0RFRklORV9UWVBFKFdlYktpdEhpdFRlc3RSZXN1bHQsIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHQs
IEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdEhpdFRlc3RSZXN1bHRHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQogewpAQCAtMTM4LDE5ICsxMzIsMTEgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0SGl0VGVzdFJlc3VsdFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElk
LCBjb25zdAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9p
bml0KFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCi17Ci0gICAgV2ViS2l0SGl0
VGVzdFJlc3VsdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoaGl0
VGVzdFJlc3VsdCwgV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULCBXZWJLaXRIaXRUZXN0UmVz
dWx0UHJpdmF0ZSk7Ci0gICAgaGl0VGVzdFJlc3VsdC0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChw
cml2KSBXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZSgpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQoV2ViS2l0SGl0VGVzdFJlc3VsdENsYXNzKiBo
aXRUZXN0UmVzdWx0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKGhpdFRlc3RSZXN1bHRDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdEhpdFRlc3RSZXN1bHRHZXRQcm9wZXJ0eTsKICAgICBvYmplY3RDbGFz
cy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0SGl0VGVzdFJlc3VsdFNldFByb3BlcnR5OwotICAgIG9i
amVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdEhpdFRlc3RSZXN1bHRGaW5hbGl6ZTsKIAogICAg
IEdQYXJhbUZsYWdzIHBhcmFtRmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lU
X1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpOwogCkBAIC0yMzMsOCAr
MjE5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdl
YktpdEhpdFRlc3RSZXN1bHRDbGFzcyogaGl0VGVzdFIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIG1lZGlhIFVSSSIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbUZsYWdzKSk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoaGl0VGVzdFJlc3Vs
dENsYXNzLCBzaXplb2YoV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUpKTsKIH0KIAogV2ViS2l0
SGl0VGVzdFJlc3VsdCogd2Via2l0SGl0VGVzdFJlc3VsdENyZWF0ZShXZWJIaXRUZXN0UmVzdWx0
KiBoaXRUZXN0UmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbi5jcHAKaW5k
ZXggMDkwMWQ4MC4uZGVlZjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24u
Y3BwCkBAIC00Myw4ICs0Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICogdGhlIG5h
dmlnYXRpb24gd2FzIHRyaWdnZXJlZCBieSBhIG1vdXNlIGV2ZW50LgogICovCiAKLUdfREVGSU5F
X1RZUEUoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCB3ZWJraXRfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24sIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTikKLQogc3RydWN0IF9X
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlIHsKICAgICBXZWJLaXROYXZpZ2F0
aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZTsKICAgICB1bnNpZ25lZCBtb2RpZmllcnM7CkBAIC01Myw2
ICs1MSw4IEBAIHN0cnVjdCBfV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSB7
CiAgICAgQ1N0cmluZyBmcmFtZU5hbWU7CiB9OwogCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b24sIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTikKKwogZW51bSB7CiAgICAgUFJPUF8wLAog
ICAgIFBST1BfTkFWSUdBVElPTl9UWVBFLApAQCAtNjIsMTggKzYyLDYgQEAgZW51bSB7CiAgICAg
UFJPUF9GUkFNRV9OQU1FLAogfTsKIAotc3RhdGljIHZvaWQgd2Via2l0X25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lv
bikKLXsKLSAgICBkZWNpc2lvbi0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShk
ZWNpc2lvbiwgV0VCS0lUX1RZUEVfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUpOwotICAgIG5ldyAoZGVjaXNpb24tPnByaXYp
IFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUoKTsKLX0KLQotc3RhdGljIHZv
aWQgd2Via2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uRmluYWxpemUoR09iamVjdCogb2JqZWN0
KQotewotICAgIFdFQktJVF9OQVZJR0FUSU9OX1BPTElDWV9ERUNJU0lPTihvYmplY3QpLT5wcml2
LT5+V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25HZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewogICAgIFdlYktpdE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24gPSBXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJ
T04ob2JqZWN0KTsKQEAgLTEwMiw5ICs5MCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbkdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvCiBz
dGF0aWMgdm9pZCB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChX
ZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25DbGFzcykKIHsKICAg
ICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZGVjaXNpb25DbGFz
cyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRmluYWxpemU7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbkdldFByb3BlcnR5OwotICAgIGdfdHlwZV9jbGFzc19hZGRf
cHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2YoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uUHJpdmF0ZSkpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uOm5hdmlnYXRpb24tdHlwZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwCmluZGV4IGFmZjY1MWEuLjBkZDExMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcApAQCAt
MjcsNiArMjcsMTEgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
UGx1Z2luUHJpdmF0ZSB7CisgICAgfl9XZWJLaXRQbHVnaW5Qcml2YXRlKCkKKyAgICB7CisgICAg
ICAgIGdfbGlzdF9mcmVlX2Z1bGwobWltZUluZm9MaXN0LCByZWludGVycHJldF9jYXN0PEdEZXN0
cm95Tm90aWZ5Pih3ZWJraXRfbWltZV9pbmZvX3VucmVmKSk7CisgICAgfQorCiAgICAgUGx1Z2lu
TW9kdWxlSW5mbyBwbHVnaW5JbmZvOwogICAgIENTdHJpbmcgbmFtZTsKICAgICBDU3RyaW5nIGRl
c2NyaXB0aW9uOwpAQCAtMzQsMjkgKzM5LDEwIEBAIHN0cnVjdCBfV2ViS2l0UGx1Z2luUHJpdmF0
ZSB7CiAgICAgR0xpc3QqIG1pbWVJbmZvTGlzdDsKIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0
UGx1Z2luLCB3ZWJraXRfcGx1Z2luLCBHX1RZUEVfT0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJr
aXRQbHVnaW5GaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0UGx1Z2luUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9QTFVHSU4ob2JqZWN0KS0+cHJpdjsKLSAgICBnX2xpc3RfZnJl
ZV9mdWxsKHByaXYtPm1pbWVJbmZvTGlzdCwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlm
eT4od2Via2l0X21pbWVfaW5mb191bnJlZikpOwotICAgIHByaXYtPn5XZWJLaXRQbHVnaW5Qcml2
YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3BsdWdpbl9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfcGx1Z2luX2luaXQoV2Vi
S2l0UGx1Z2luKiBwbHVnaW4pCi17Ci0gICAgV2ViS2l0UGx1Z2luUHJpdmF0ZSogcHJpdiA9IEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShwbHVnaW4sIFdFQktJVF9UWVBFX1BMVUdJTiwgV2Vi
S2l0UGx1Z2luUHJpdmF0ZSk7Ci0gICAgcGx1Z2luLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHBy
aXYpIFdlYktpdFBsdWdpblByaXZhdGUoKTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRQ
bHVnaW4sIHdlYmtpdF9wbHVnaW4sIEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF9wbHVnaW5fY2xhc3NfaW5pdChXZWJLaXRQbHVnaW5DbGFzcyogcGx1Z2luQ2xhc3MpCiB7Ci0g
ICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhwbHVnaW5DbGFz
cyk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFBsdWdpbkZpbmFsaXplOwot
Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHBsdWdpbkNsYXNzLCBzaXplb2YoV2ViS2l0
UGx1Z2luUHJpdmF0ZSkpOwogfQogCiBXZWJLaXRQbHVnaW4qIHdlYmtpdFBsdWdpbkNyZWF0ZShj
b25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCmluZGV4
IDNlOWVmM2YuLmVlNDRlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTQxLDMwICs0MSwxOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICogY29tcGxldGVzLiBUbyBtYWtlIGEgcG9saWN5
IGRlY2lzaW9uIGFzeW5jaHJvbm91c2x5LCBzaW1wbHkgaW5jcmVtZW50CiAgKiB0aGUgcmVmZXJl
bmNlIGNvdW50IG9mIHRoZSAjV2ViS2l0UG9saWN5RGVjaXNpb24gb2JqZWN0LgogICovCi1HX0RF
RklORV9BQlNUUkFDVF9UWVBFKFdlYktpdFBvbGljeURlY2lzaW9uLCB3ZWJraXRfcG9saWN5X2Rl
Y2lzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBzdHJ1Y3QgX1dlYktpdFBvbGljeURlY2lzaW9uUHJp
dmF0ZSB7CiAgICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXI7
CiAgICAgYm9vbCBtYWRlUG9saWN5RGVjaXNpb247CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRf
cG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQotewot
ICAgIGRlY2lzaW9uLT5wcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGRlY2lzaW9u
LCBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0
ZSk7Ci0gICAgbmV3IChkZWNpc2lvbi0+cHJpdikgV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRl
KCk7Ci0gICAgZGVjaXNpb24tPnByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwotfQor
V0VCS0lUX0RFRklORV9BQlNUUkFDVF9UWVBFKFdlYktpdFBvbGljeURlY2lzaW9uLCB3ZWJraXRf
cG9saWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JKRUNUKQogCi1zdGF0aWMgdm9pZCB3ZWJraXRQb2xp
Y3lEZWNpc2lvbkZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3N0YXRpYyB2b2lkIHdlYmtpdFBv
bGljeURlY2lzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgIFdlYktpdFBvbGlj
eURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KS0+
cHJpdjsKLQotICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2hvaWNlIGZvciBhbGwgcG9saWN5
IGRlY2lzaW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwLgotICAgIGlmICghcHJpdi0+bWFkZVBvbGlj
eURlY2lzaW9uKQotICAgICAgICBwcml2LT5saXN0ZW5lci0+dXNlKCk7Ci0KLSAgICBwcml2LT5+
V2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworICAgIHdl
YmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlKFdFQktJVF9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KSk7
CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3Mp
LT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHZvaWQgd2Via2l0UG9saWN5RGVjaXNpb25TZXRMaXN0
ZW5lcihXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24sIFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eSogbGlzdGVuZXIpCkBAIC03NSw4ICs2Myw3IEBAIHZvaWQgd2Via2l0UG9saWN5RGVj
aXNpb25TZXRMaXN0ZW5lcihXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24sIFdlYkZyYW1l
UG9sCiBzdGF0aWMgdm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQoV2ViS2l0
UG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25DbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3Mq
IG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZGVjaXNpb25DbGFzcyk7Ci0gICAgb2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0UG9saWN5RGVjaXNpb25GaW5hbGl6ZTsKLSAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUoZGVjaXNpb25DbGFzcywgc2l6ZW9mKFdlYktpdFBvbGljeURl
Y2lzaW9uUHJpdmF0ZSkpOworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0UG9saWN5
RGVjaXNpb25EaXNwb3NlOwogfQogCiAvKioKQEAgLTg4LDYgKzc1LDEwIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJLaXRQb2xpY3lEZWNpc2lvbkNs
YXNzKiBkZWNpc2lvCiB2b2lkIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlKFdlYktpdFBvbGlj
eURlY2lzaW9uKiBkZWNpc2lvbikKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19Q
T0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIGlmIChkZWNpc2lvbi0+cHJpdi0+bWFk
ZVBvbGljeURlY2lzaW9uKQorICAgICAgICByZXR1cm47CisKICAgICBkZWNpc2lvbi0+cHJpdi0+
bGlzdGVuZXItPnVzZSgpOwogICAgIGRlY2lzaW9uLT5wcml2LT5tYWRlUG9saWN5RGVjaXNpb24g
PSB0cnVlOwogfQpAQCAtMTAyLDYgKzkzLDEwIEBAIHZvaWQgd2Via2l0X3BvbGljeV9kZWNpc2lv
bl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQogdm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2lnbm9yZShXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiB7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisK
KyAgICBpZiAoZGVjaXNpb24tPnByaXYtPm1hZGVQb2xpY3lEZWNpc2lvbikKKyAgICAgICAgcmV0
dXJuOworCiAgICAgZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICBkZWNp
c2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9uID0gdHJ1ZTsKIH0KQEAgLTExNSw2ICsxMTAs
MTAgQEAgdm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShXZWJLaXRQb2xpY3lEZWNp
c2lvbiogZGVjaXNpb24pCiB2b2lkIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQoV2Vi
S2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgaWYgKGRlY2lzaW9uLT5w
cml2LT5tYWRlUG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIGRlY2lzaW9u
LT5wcml2LT5saXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICBkZWNpc2lvbi0+cHJpdi0+bWFkZVBv
bGljeURlY2lzaW9uID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3BlcmF0aW9uLmNwcAppbmRleCA3ZGEwYjE5Li42
YjcyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcmludE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBlbnVtIHsKIH07
CiAKIHN0cnVjdCBfV2ViS2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlIHsKKyAgICB+X1dlYktpdFBy
aW50T3BlcmF0aW9uUHJpdmF0ZSgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3Qod2ViVmlldywgd2ViVmlld0Rlc3Ryb3llZElkKTsKKyAgICB9CisKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3OwogICAgIGd1bG9uZyB3ZWJWaWV3RGVzdHJveWVkSWQ7CiAKQEAg
LTYzLDE2ICs2OCw3IEBAIHN0cnVjdCBfV2ViS2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlIHsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCi1HX0RFRklORV9U
WVBFKFdlYktpdFByaW50T3BlcmF0aW9uLCB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uLCBHX1RZUEVf
T0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRQcmludE9wZXJhdGlvbkZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUqIHByaXYgPSBX
RUJLSVRfUFJJTlRfT1BFUkFUSU9OKG9iamVjdCktPnByaXY7Ci0gICAgZ19zaWduYWxfaGFuZGxl
cl9kaXNjb25uZWN0KHByaXYtPndlYlZpZXcsIHByaXYtPndlYlZpZXdEZXN0cm95ZWRJZCk7Ci0K
LSAgICBwcml2LT5+V2ViS2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3ByaW50X29wZXJhdGlvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwotfQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFByaW50T3BlcmF0aW9uLCB3ZWJraXRf
cHJpbnRfb3BlcmF0aW9uLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJWaWV3RGVz
dHJveWVkKEd0a1dpZGdldCogd2ViVmlldywgR09iamVjdCogcHJpbnRPcGVyYXRpb24pCiB7CkBA
IC0xMjgsMTcgKzEyNCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFByaW50T3BlcmF0aW9uU2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2luaXQoV2ViS2l0UHJpbnRPcGVyYXRp
b24qIHByaW50T3BlcmF0aW9uKQotewotICAgIFdlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSog
cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShwcmludE9wZXJhdGlvbiwgV0VCS0lU
X1RZUEVfUFJJTlRfT1BFUkFUSU9OLCBXZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUpOwotICAg
IHByaW50T3BlcmF0aW9uLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFByaW50
T3BlcmF0aW9uUHJpdmF0ZSgpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfcHJpbnRfb3BlcmF0
aW9uX2NsYXNzX2luaXQoV2ViS2l0UHJpbnRPcGVyYXRpb25DbGFzcyogcHJpbnRPcGVyYXRpb25D
bGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KHByaW50T3BlcmF0aW9uQ2xhc3MpOwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRQcmludE9wZXJhdGlvbkZpbmFsaXplOwogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQg
PSB3ZWJraXRQcmludE9wZXJhdGlvbkNvbnN0cnVjdGVkOwogICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0UHJpbnRPcGVyYXRpb25HZXRQcm9wZXJ0eTsKICAgICBnT2JqZWN0
Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFByaW50T3BlcmF0aW9uU2V0UHJvcGVydHk7CkBA
IC0yMTMsOCArMjAxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ByaW50X29wZXJhdGlvbl9jbGFz
c19pbml0KFdlYktpdFByaW50T3BlcmF0aW9uQ2xhc3MqIHByaW50T3AKICAgICAgICAgICAgICAg
ICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19QT0lOVEVSLAogICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRF
Uik7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocHJpbnRPcGVyYXRpb25DbGFzcywg
c2l6ZW9mKFdlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSkpOwogfQogCiAjaWZkZWYgSEFWRV9H
VEtfVU5JWF9QUklOVElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UHJpdmF0ZS5oCmluZGV4IDVhYWJjYmMuLjRkZWE3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKQEAgLTY2LDYgKzY2LDU3
IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3kjI3N0cnVjdE5hbWUoc3RydWN0TmFtZSogZGF0YSkgXAog
ICAgIGdfc2xpY2VfZnJlZShzdHJ1Y3ROYW1lLCBkYXRhKTsgXAogfQogCisjZGVmaW5lIFdFQktJ
VF9ERUZJTkVfVFlQRShUTiwgdF9uLCBUX1ApIF9XRUJLSVRfREVGSU5FX1RZUEVfRVhURU5ERUQo
VE4sIHRfbiwgVF9QLCAwLCB7fSkKKyNkZWZpbmUgV0VCS0lUX0RFRklORV9BQlNUUkFDVF9UWVBF
KFROLCB0X24sIFRfUCkgX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRChUTiwgdF9uLCBUX1As
IEdfVFlQRV9GTEFHX0FCU1RSQUNULCB7fSkKKyNkZWZpbmUgV0VCS0lUX0RFRklORV9UWVBFX1dJ
VEhfQ09ERShUTiwgdF9uLCBUX1AsIF9DXykgX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRF9C
RUdJTihUTiwgdF9uLCBUX1AsIDApIHtfQ187fSBfV0VCS0lUX0RFRklORV9UWVBFX0VYVEVOREVE
X0VORCgpCisKKyNkZWZpbmUgX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRChUTiwgdF9uLCBU
X1AsIF9mXywgX0NfKSBfV0VCS0lUX0RFRklORV9UWVBFX0VYVEVOREVEX0JFR0lOKFROLCB0X24s
IFRfUCwgX2ZfKSB7X0NfO30gX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRF9FTkQoKQorI2Rl
ZmluZSBfV0VCS0lUX0RFRklORV9UWVBFX0VYVEVOREVEX0JFR0lOKFR5cGVOYW1lLCB0eXBlX25h
bWUsIFRZUEVfUEFSRU5ULCBmbGFncykgXAorXAorc3RhdGljIHZvaWQgdHlwZV9uYW1lIyNfY2xh
c3NfaW5pdChUeXBlTmFtZSMjQ2xhc3MqIGtsYXNzKTsgXAorc3RhdGljIGdwb2ludGVyIHR5cGVf
bmFtZSMjX3BhcmVudF9jbGFzcyA9IDA7IFwKK3N0YXRpYyB2b2lkIHR5cGVfbmFtZSMjX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkgXAoreyBcCisgICAgVHlwZU5hbWUqIHNlbGYgPSAoVHlwZU5h
bWUqKW9iamVjdDsgXAorICAgIHNlbGYtPnByaXYtPn5UeXBlTmFtZSMjUHJpdmF0ZSgpOyBcCisg
ICAgR19PQkpFQ1RfQ0xBU1ModHlwZV9uYW1lIyNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsgXAorfSBcCitcCitzdGF0aWMgdm9pZCB0eXBlX25hbWUjI19jbGFzc19pbnRlcm5faW5p
dChncG9pbnRlciBrbGFzcykgXAoreyBcCisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7IFwKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
a2xhc3MsIHNpemVvZihUeXBlTmFtZSMjUHJpdmF0ZSkpOyBcCisgICAgdHlwZV9uYW1lIyNfcGFy
ZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50KGtsYXNzKTsgXAorICAgIHR5cGVf
bmFtZSMjX2NsYXNzX2luaXQoKFR5cGVOYW1lIyNDbGFzcyopa2xhc3MpOyBcCisgICAgZ09iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHR5cGVfbmFtZSMjX2ZpbmFsaXplOyBcCit9IFwKK1wKK3N0YXRp
YyB2b2lkIHR5cGVfbmFtZSMjX2luaXQoVHlwZU5hbWUgKnNlbGYpIFwKK3sgXAorICAgIFR5cGVO
YW1lIyNQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNlbGYsIHR5
cGVfbmFtZSMjX2dldF90eXBlKCksIFR5cGVOYW1lIyNQcml2YXRlKTsgXAorICAgIHNlbGYtPnBy
aXYgPSBwcml2OyBcCisgICAgbmV3IChwcml2KSBUeXBlTmFtZSMjUHJpdmF0ZSgpOyBcCit9XAor
R1R5cGUgdHlwZV9uYW1lIyNfZ2V0X3R5cGUodm9pZCkgXAoreyBcCisgICAgc3RhdGljIHZvbGF0
aWxlIGdzaXplIGdfZGVmaW5lX3R5cGVfaWRfX3ZvbGF0aWxlID0gMDsgXAorICAgIGlmIChnX29u
Y2VfaW5pdF9lbnRlcigmZ19kZWZpbmVfdHlwZV9pZF9fdm9sYXRpbGUpKSB7IFwKKyAgICAgICAg
R1R5cGUgZ19kZWZpbmVfdHlwZV9pZCA9IFwKKyAgICAgICAgICAgIGdfdHlwZV9yZWdpc3Rlcl9z
dGF0aWNfc2ltcGxlKFRZUEVfUEFSRU5ULCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX2ludGVybl9zdGF0aWNfc3RyaW5nKCNUeXBlTmFtZSksIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihUeXBlTmFtZSMjQ2xh
c3MpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0NsYXNz
SW5pdEZ1bmMpdHlwZV9uYW1lIyNfY2xhc3NfaW50ZXJuX2luaXQsIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihUeXBlTmFtZSksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHSW5zdGFuY2VJbml0RnVuYyl0eXBl
X25hbWUjI19pbml0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoR1R5cGVGbGFncylmbGFncyk7IFwKKyAgICAgICAgeyAvLyBDdXN0b20gY29kZSBmb2xsb3dz
LgorI2RlZmluZSBfV0VCS0lUX0RFRklORV9UWVBFX0VYVEVOREVEX0VORCgpIFwKKyAgICAgICAg
fSBcCisgICAgICAgIGdfb25jZV9pbml0X2xlYXZlKCZnX2RlZmluZV90eXBlX2lkX192b2xhdGls
ZSwgZ19kZWZpbmVfdHlwZV9pZCk7IFwKKyAgICB9IFwKKyAgICByZXR1cm4gZ19kZWZpbmVfdHlw
ZV9pZF9fdm9sYXRpbGU7IFwKK30gLy8gQ2xvc2VzIHR5cGVfbmFtZSMjX2dldF90eXBlKCkuCisK
IHVuc2lnbmVkIHdrRXZlbnRNb2RpZmllcnNUb0dka01vZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJz
KTsKIHVuc2lnbmVkIHdrRXZlbnRNb3VzZUJ1dHRvblRvV2ViS2l0TW91c2VCdXR0b24oV0tFdmVu
dE1vdXNlQnV0dG9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcAppbmRleCBh
YjVmMzhjLi4zYTc1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcApAQCAt
NDQsMzEgKzQ0LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgKiB3aGV0aGVyIG9yIG5v
dCB0byBkb3dubG9hZCBhIHBhcnRpY3VsYXIgcmVzb3VyY2Ugb3IgdG8gbG9hZCBpdAogICogbm9y
bWFsbHkuCiAgKi8KLUdfREVGSU5FX1RZUEUoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwg
d2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbiwgV0VCS0lUX1RZUEVfUE9MSUNZX0RFQ0lT
SU9OKQogCiBzdHJ1Y3QgX1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlIHsKICAg
ICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgR1JlZlB0cjxXZWJLaXRV
UklSZXNwb25zZT4gcmVzcG9uc2U7CiB9OwogCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0UmVz
cG9uc2VQb2xpY3lEZWNpc2lvbiwgd2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbiwgV0VC
S0lUX1RZUEVfUE9MSUNZX0RFQ0lTSU9OKQorCiBlbnVtIHsKICAgICBQUk9QXzAsCiAgICAgUFJP
UF9SRVFVRVNULAogICAgIFBST1BfUkVTUE9OU0UsCiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRf
cmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lv
biogZGVjaXNpb24pCi17Ci0gICAgZGVjaXNpb24tPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoZGVjaXNpb24sIFdFQktJVF9UWVBFX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTiwg
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUpOwotICAgIG5ldyAoZGVjaXNpb24t
PnByaXYpIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25GaW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCi17Ci0gICAgV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihvYmplY3QpLT5wcml2
LT5+V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX3BhcmVudF9jbGFzcyktPmZpbmFs
aXplKG9iamVjdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNp
b25HZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewogICAgIFdlYktpdFJlc3BvbnNlUG9saWN5RGVj
aXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTihvYmplY3Qp
OwpAQCAtODgsOSArNzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRSZXNwb25zZVBvbGljeURlY2lz
aW9uR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSQogc3RhdGljIHZvaWQg
d2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9jbGFzc19pbml0KFdlYktpdFJlc3BvbnNl
UG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25DbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3Mq
IG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZGVjaXNpb25DbGFzcyk7Ci0gICAgb2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkZpbmFsaXplOwog
ICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRSZXNwb25zZVBvbGljeURlY2lz
aW9uR2V0UHJvcGVydHk7Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGRlY2lzaW9uQ2xh
c3MsIHNpemVvZihXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSkpOwogCiAgICAg
LyoqCiAgICAgICogV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbjpyZXF1ZXN0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5
TWFuYWdlci5jcHAKaW5kZXggZDE3MGZjZi4uY2Q4ODAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3Bw
CkBAIC00MCwyOCArNDAsMTAgQEAgc3RydWN0IF9XZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRl
IHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0OwogfTsKIAotR19ERUZJTkVfVFlQ
RShXZWJLaXRTZWN1cml0eU1hbmFnZXIsIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyLCBHX1RZUEVf
T0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9pbml0KFdlYktp
dFNlY3VyaXR5TWFuYWdlciogbWFuYWdlcikKLXsKLSAgICBXZWJLaXRTZWN1cml0eU1hbmFnZXJQ
cml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG1hbmFnZXIsIFdFQktJ
VF9UWVBFX1NFQ1VSSVRZX01BTkFHRVIsIFdlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUpOwot
ICAgIG1hbmFnZXItPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0U2VjdXJpdHlN
YW5hZ2VyUHJpdmF0ZSgpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRTZWN1cml0eU1hbmFnZXJG
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0U2VjdXJpdHlNYW5hZ2VyUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9TRUNVUklUWV9NQU5BR0VSKG9iamVjdCktPnByaXY7Ci0gICAg
cHJpdi0+fldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OwotfQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFNlY3VyaXR5TWFuYWdlciwgd2Via2l0X3Nl
Y3VyaXR5X21hbmFnZXIsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9zZWN1
cml0eV9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0U2VjdXJpdHlNYW5hZ2VyQ2xhc3MqIGtsYXNz
KQogewotICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRTZWN1cml0eU1hbmFnZXJG
aW5hbGl6ZTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdl
YktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUpKTsKIH0KIAogV2ViS2l0U2VjdXJpdHlNYW5hZ2Vy
KiB3ZWJraXRTZWN1cml0eU1hbmFnZXJDcmVhdGUoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
dHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmNwcAppbmRleCAwMDVhYWFlLi5iZjFlZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC00Myw2ICs0MywxOSBA
QAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RydWN0IF9XZWJLaXRTZXR0aW5nc1ByaXZh
dGUgeworICAgIF9XZWJLaXRTZXR0aW5nc1ByaXZhdGUoKQorICAgICAgICA6IHByZWZlcmVuY2Vz
KFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoKSkKKyAgICB7CisgICAgICAgIGRlZmF1bHRGb250RmFt
aWx5ID0gcHJlZmVyZW5jZXMtPnN0YW5kYXJkRm9udEZhbWlseSgpLnV0ZjgoKTsKKyAgICAgICAg
bW9ub3NwYWNlRm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5maXhlZEZvbnRGYW1pbHkoKS51dGY4
KCk7CisgICAgICAgIHNlcmlmRm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zZXJpZkZvbnRGYW1p
bHkoKS51dGY4KCk7CisgICAgICAgIHNhbnNTZXJpZkZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+
c2Fuc1NlcmlmRm9udEZhbWlseSgpLnV0ZjgoKTsKKyAgICAgICAgY3Vyc2l2ZUZvbnRGYW1pbHkg
PSBwcmVmZXJlbmNlcy0+Y3Vyc2l2ZUZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgICAgIGZhbnRh
c3lGb250RmFtaWx5ID0gcHJlZmVyZW5jZXMtPmZhbnRhc3lGb250RmFtaWx5KCkudXRmOCgpOwor
ICAgICAgICBwaWN0b2dyYXBoRm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5waWN0b2dyYXBoRm9u
dEZhbWlseSgpLnV0ZjgoKTsKKyAgICAgICAgZGVmYXVsdENoYXJzZXQgPSBwcmVmZXJlbmNlcy0+
ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4KCk7CisgICAgfQorCiAgICAgUmVmUHRyPFdl
YlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKICAgICBDU3RyaW5nIGRlZmF1bHRGb250RmFtaWx5
OwogICAgIENTdHJpbmcgbW9ub3NwYWNlRm9udEZhbWlseTsKQEAgLTc0LDggKzg3LDcgQEAgc3Ry
dWN0IF9XZWJLaXRTZXR0aW5nc1ByaXZhdGUgewogICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9y
bWFsZXhhbXBsZT4KICAqLwogCi0KLUdfREVGSU5FX1RZUEUoV2ViS2l0U2V0dGluZ3MsIHdlYmtp
dF9zZXR0aW5ncywgR19UWVBFX09CSkVDVCkKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRTZXR0
aW5ncywgd2Via2l0X3NldHRpbmdzLCBHX1RZUEVfT0JKRUNUKQogCiBlbnVtIHsKICAgICBQUk9Q
XzAsCkBAIC00MDUsMTggKzQxNywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIH0K
IH0KIAotc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
Ci17Ci0gICAgV0VCS0lUX1NFVFRJTkdTKG9iamVjdCktPnByaXYtPn5XZWJLaXRTZXR0aW5nc1By
aXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfc2V0dGluZ3NfcGFyZW50X2NsYXNz
KS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2Ns
YXNzX2luaXQoV2ViS2l0U2V0dGluZ3NDbGFzcyoga2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNz
KiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CiAgICAgZ09iamVjdENsYXNz
LT5zZXRfcHJvcGVydHkgPSB3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5OwogICAgIGdPYmplY3RD
bGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eTsKLSAgICBnT2Jq
ZWN0Q2xhc3MtPmZpbmFsaXplID0gd2ViS2l0U2V0dGluZ3NGaW5hbGl6ZTsKIAogICAgIEdQYXJh
bUZsYWdzIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MgPSBzdGF0aWNfY2FzdDxHUGFyYW1G
bGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKIApAQCAt
MTA2MiwyNiArMTA2Nyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0
KFdlYktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB0byBlbmFibGUgc21vb3Ro
IHNjcm9sbGluZyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7Ci0K
LSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRTZXR0aW5n
c1ByaXZhdGUpKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2luaXQoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzKQotewotICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZXR0aW5ncywgV0VCS0lUX1RZUEVfU0VUVElO
R1MsIFdlYktpdFNldHRpbmdzUHJpdmF0ZSk7Ci0gICAgc2V0dGluZ3MtPnByaXYgPSBwcml2Owot
ICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7Ci0KLSAgICBwcml2LT5wcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoKTsKLSAgICBwcml2LT5kZWZhdWx0Rm9u
dEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51dGY4KCk7
Ci0gICAgcHJpdi0+bW9ub3NwYWNlRm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5maXhl
ZEZvbnRGYW1pbHkoKS51dGY4KCk7Ci0gICAgcHJpdi0+c2VyaWZGb250RmFtaWx5ID0gcHJpdi0+
cHJlZmVyZW5jZXMtPnNlcmlmRm9udEZhbWlseSgpLnV0ZjgoKTsKLSAgICBwcml2LT5zYW5zU2Vy
aWZGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoKS51
dGY4KCk7Ci0gICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+
Y3Vyc2l2ZUZvbnRGYW1pbHkoKS51dGY4KCk7Ci0gICAgcHJpdi0+ZmFudGFzeUZvbnRGYW1pbHkg
PSBwcml2LT5wcmVmZXJlbmNlcy0+ZmFudGFzeUZvbnRGYW1pbHkoKS51dGY4KCk7Ci0gICAgcHJp
di0+cGljdG9ncmFwaEZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGljdG9ncmFwaEZv
bnRGYW1pbHkoKS51dGY4KCk7Ci0gICAgcHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBwcml2LT5wcmVm
ZXJlbmNlcy0+ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4KCk7Ci0KIH0KIAogdm9pZCB3
ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cywgV2ViUGFnZVByb3h5KiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCBjODgyY2I3Li4xNDdkMTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklS
ZXF1ZXN0LmNwcApAQCAtMzMsMTggKzMzLDEyIEBAIGVudW0gewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRVUklSZXF1ZXN0LCB3ZWJraXRfdXJpX3Jl
cXVlc3QsIEdfVFlQRV9PQkpFQ1QpCi0KIHN0cnVjdCBfV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUg
ewogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3Q7CiAgICAgQ1N0
cmluZyB1cmk7CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRVUklSZXF1ZXN0RmluYWxpemUoR09i
amVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9VUklfUkVRVUVTVChvYmplY3QpLT5wcml2LT5+
V2ViS2l0VVJJUmVxdWVzdFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfdXJp
X3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KK1dFQktJVF9ERUZJ
TkVfVFlQRShXZWJLaXRVUklSZXF1ZXN0LCB3ZWJraXRfdXJpX3JlcXVlc3QsIEdfVFlQRV9PQkpF
Q1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVj
KQogewpAQCAtNzUsOCArNjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklSZXF1ZXN0U2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYQogc3RhdGljIHZv
aWQgd2Via2l0X3VyaV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0VVJJUmVxdWVzdENsYXNzKiBy
ZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0KLSAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRVUklSZXF1ZXN0RmluYWxpemU7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdl
YmtpdFVSSVJlcXVlc3RHZXRQcm9wZXJ0eTsKICAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2Via2l0VVJJUmVxdWVzdFNldFByb3BlcnR5OwogCkBAIC05MSwxNSArODMsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfdXJpX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRVUklSZXF1ZXN0Q2xh
c3MqIHJlcXVlc3RDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiVGhlIFVSSSB0byB3aGljaCB0aGUgcmVxdWVzdCB3aWxsIGJl
IG1hZGUuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRf
cHJpdmF0ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZSkpOwot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3JlcXVlc3RfaW5pdChXZWJLaXRVUklSZXF1ZXN0
KiByZXF1ZXN0KQotewotICAgIFdlYktpdFVSSVJlcXVlc3RQcml2YXRlKiBwcml2ID0gR19UWVBF
X0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9UWVBFX1VSSV9SRVFVRVNULCBX
ZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZSk7Ci0gICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7Ci0gICAg
bmV3IChwcml2KSBXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZSgpOwogfQogCiAvKioKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmNw
cAppbmRleCBkNDQwNDE0Li41NzZjZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCkBAIC00MCw4ICs0MCw2IEBA
IGVudW0gewogICAgIFBST1BfU1VHR0VTVEVEX0ZJTEVOQU1FCiB9OwogCi1HX0RFRklORV9UWVBF
KFdlYktpdFVSSVJlc3BvbnNlLCB3ZWJraXRfdXJpX3Jlc3BvbnNlLCBHX1RZUEVfT0JKRUNUKQot
CiBzdHJ1Y3QgX1dlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSB7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNvdXJjZVJlc3BvbnNlOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNDksMTEgKzQ3LDcgQEAg
c3RydWN0IF9XZWJLaXRVUklSZXNwb25zZVByaXZhdGUgewogICAgIENTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWU7CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRVUklSZXNwb25zZUZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfVVJJX1JFU1BPTlNFKG9iamVjdCktPnByaXYt
Pn5XZWJLaXRVUklSZXNwb25zZVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
dXJpX3Jlc3BvbnNlX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19CitXRUJLSVRf
REVGSU5FX1RZUEUoV2ViS2l0VVJJUmVzcG9uc2UsIHdlYmtpdF91cmlfcmVzcG9uc2UsIEdfVFlQ
RV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVJlc3BvbnNlR2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBh
cmFtU3BlYykKIHsKQEAgLTgzLDggKzc3LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0VVJJUmVzcG9u
c2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKgogc3Rh
dGljIHZvaWQgd2Via2l0X3VyaV9yZXNwb25zZV9jbGFzc19pbml0KFdlYktpdFVSSVJlc3BvbnNl
Q2xhc3MqIHJlc3BvbnNlQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlc3BvbnNlQ2xhc3MpOwotCi0gICAgb2JqZWN0Q2xhc3MtPmZpbmFs
aXplID0gd2Via2l0VVJJUmVzcG9uc2VGaW5hbGl6ZTsKICAgICBvYmplY3RDbGFzcy0+Z2V0X3By
b3BlcnR5ID0gd2Via2l0VVJJUmVzcG9uc2VHZXRQcm9wZXJ0eTsKIAogICAgIC8qKgpAQCAtMTUw
LDE1ICsxNDIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3Jlc3BvbnNlX2NsYXNzX2luaXQo
V2ViS2l0VVJJUmVzcG9uc2VDbGFzcyogcmVzcG9uc2VDbGFzcwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgc3VnZ2VzdGVkIGZp
bGVuYW1lIGZvciB0aGUgVVJJIHJlc3BvbnNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlc3BvbnNlQ2xhc3MsIHNpemVvZihX
ZWJLaXRVUklSZXNwb25zZVByaXZhdGUpKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3VyaV9y
ZXNwb25zZV9pbml0KFdlYktpdFVSSVJlc3BvbnNlKiByZXNwb25zZSkKLXsKLSAgICBXZWJLaXRV
UklSZXNwb25zZVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVz
cG9uc2UsIFdFQktJVF9UWVBFX1VSSV9SRVNQT05TRSwgV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRl
KTsKLSAgICByZXNwb25zZS0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRVUklS
ZXNwb25zZVByaXZhdGUoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IGUy
NTQyZTguLmY2NTc4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0zNSw4ICszNSw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1Jl
YWRCdWZmZXJTaXplID0gODE5MjsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQotCiBzdHJ1Y3Qg
X1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3
ZWJDb250ZXh0OwogICAgIFJlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4gd2ViUmVx
dWVzdE1hbmFnZXI7CkBAIC01MywyNCArNTEsMTAgQEAgc3RydWN0IF9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0UHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBtaW1lVHlwZTsKIH07CiAKLXN0YXRpYyB2b2lk
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfaW5pdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQotewotICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUpOwotICAgIHJlcXVlc3QtPnBy
aXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUo
KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfVVJJX1NDSEVNRV9SRVFVRVNUKG9iamVjdCktPnBy
aXYtPn5XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0LCB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENsYXNz
KiByZXF1ZXN0Q2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Vi
a2l0VVJJU2NoZW1lUmVxdWVzdEZpbmFsaXplOwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0
ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSkpOwog
fQogCiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRl
KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
KiB3ZWJSZXF1ZXN0TWFuYWdlciwgV2ViVVJMKiB3ZWJVUkwsIFdlYlBhZ2VQcm94eSogaW5pdGlh
dGluZ1BhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggY2E2MGE1ZC4uYjYz
YmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKQEAgLTExNCwyNiArMTE0LDEwIEBAIHN0cnVjdCBfV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUgewogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7
IDAsIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0V2ViQ29udGV4dCwgd2Via2l0X3dlYl9jb250
ZXh0LCBHX1RZUEVfT0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0RmluYWxp
emUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3QpLT5w
cml2LT5+V2ViS2l0V2ViQ29udGV4dFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2luaXQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29u
dGV4dCkKLXsKLSAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURSh3ZWJDb250ZXh0LCBXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUpOwotICAgIHdlYkNvbnRleHQtPnByaXYgPSBwcml2OwotICAg
IG5ldyAocHJpdikgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUoKTsKLX0KK1dFQktJVF9ERUZJTkVf
VFlQRShXZWJLaXRXZWJDb250ZXh0LCB3ZWJraXRfd2ViX2NvbnRleHQsIEdfVFlQRV9PQkpFQ1Qp
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNv
bnRleHRDbGFzcyogd2ViQ29udGV4dENsYXNzKQogewotICAgIEdPYmplY3RDbGFzcyogZ09iamVj
dENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mod2ViQ29udGV4dENsYXNzKTsKLSAgICBnT2JqZWN0Q2xh
c3MtPmZpbmFsaXplID0gd2Via2l0V2ViQ29udGV4dEZpbmFsaXplOwotCiAgICAgLyoqCiAgICAg
ICogV2ViS2l0V2ViQ29udGV4dDo6ZG93bmxvYWQtc3RhcnRlZDoKICAgICAgKiBAY29udGV4dDog
dGhlICNXZWJLaXRXZWJDb250ZXh0CkBAIC0xNDMsMTQgKzEyNywxMiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNv
bnRleHRDbGFzcwogICAgICAqLwogICAgIHNpZ25hbHNbRE9XTkxPQURfU1RBUlRFRF0gPQogICAg
ICAgICBnX3NpZ25hbF9uZXcoImRvd25sb2FkLXN0YXJ0ZWQiLAotICAgICAgICAgICAgICAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYkNvbnRleHRDbGFzcyksCiAgICAgICAgICAgICAgICAgICAg
ICBHX1NJR05BTF9SVU5fTEFTVCwKICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsCiAgICAg
ICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAogICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfVFlQRV9ET1dOTE9BRCk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUod2ViQ29u
dGV4dENsYXNzLCBzaXplb2YoV2ViS2l0V2ViQ29udGV4dFByaXZhdGUpKTsKIH0KIAogc3RhdGlj
IGdwb2ludGVyIGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KGdwb2ludGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAK
aW5kZXggYjc4OGYxNy4uMzc4YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC00NywxNCArNDcsMTkg
QEAgZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGUgeworICAg
IH5fV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSgpCisgICAgeworICAgICAgICBXS0luc3BlY3Rv
clNldEluc3BlY3RvckNsaWVudEd0ayh0b0FQSSh3ZWJJbnNwZWN0b3IuZ2V0KCkpLCAwKTsKKyAg
ICB9CisKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yUHJveHk+IHdlYkluc3BlY3RvcjsKICAgICBD
U3RyaW5nIGluc3BlY3RlZFVSSTsKICAgICB1bnNpZ25lZCBhdHRhY2hlZEhlaWdodDsKIH07CiAK
LXN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKK1dFQktJVF9ERUZJ
TkVfVFlQRShXZWJLaXRXZWJJbnNwZWN0b3IsIHdlYmtpdF93ZWJfaW5zcGVjdG9yLCBHX1RZUEVf
T0JKRUNUKQogCi1HX0RFRklORV9UWVBFKFdlYktpdFdlYkluc3BlY3Rvciwgd2Via2l0X3dlYl9p
bnNwZWN0b3IsIEdfVFlQRV9PQkpFQ1QpCitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05B
TF0gPSB7IDAsIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkluc3BlY3RvckdldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbVNwZWMpCiB7CkBAIC03MiwyOSArNzcsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vi
SW5zcGVjdG9yR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1
ZSoKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYkluc3BlY3RvckZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0g
V0VCS0lUX1dFQl9JTlNQRUNUT1Iob2JqZWN0KS0+cHJpdjsKLSAgICBXS0luc3BlY3RvclNldElu
c3BlY3RvckNsaWVudEd0ayh0b0FQSShwcml2LT53ZWJJbnNwZWN0b3IuZ2V0KCkpLCAwKTsKLSAg
ICBwcml2LT5+V2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF93ZWJfaW5zcGVjdG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2luaXQoV2ViS2l0V2ViSW5zcGVj
dG9yKiBpbnNwZWN0b3IpCi17Ci0gICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShpbnNwZWN0b3IsIFdFQktJVF9UWVBFX1dFQl9J
TlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUpOwotICAgIGluc3BlY3Rvci0+cHJp
diA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKCk7Ci19
Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0V2Vi
SW5zcGVjdG9yQ2xhc3MqIGZpbmRDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKGZpbmRDbGFzcyk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdFdlYkluc3BlY3RvckZpbmFsaXplOwogICAgIGdPYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0V2ViSW5zcGVjdG9yR2V0UHJvcGVydHk7CiAKLSAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUoZmluZENsYXNzLCBzaXplb2YoV2ViS2l0V2ViSW5zcGVjdG9yUHJp
dmF0ZSkpOwotCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOmluc3BlY3RlZC11
cmk6CiAgICAgICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlJlc291cmNlLmNwcAppbmRleCA3MzczNmY2Li43YTU0MGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2Uu
Y3BwCkBAIC01NSwxNSArNTUsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlJlc291cmNlUHJpdmF0ZSB7
CiAgICAgYm9vbCBpc01haW5SZXNvdXJjZTsKIH07CiAKLXN0YXRpYyBndWludCBzaWduYWxzW0xB
U1RfU0lHTkFMXSA9IHsgMCwgfTsKLQotR19ERUZJTkVfVFlQRShXZWJLaXRXZWJSZXNvdXJjZSwg
d2Via2l0X3dlYl9yZXNvdXJjZSwgR19UWVBFX09CSkVDVCkKK1dFQktJVF9ERUZJTkVfVFlQRShX
ZWJLaXRXZWJSZXNvdXJjZSwgd2Via2l0X3dlYl9yZXNvdXJjZSwgR19UWVBFX09CSkVDVCkKIAot
c3RhdGljIHZvaWQgd2Via2l0V2ViUmVzb3VyY2VGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17
Ci0gICAgV0VCS0lUX1dFQl9SRVNPVVJDRShvYmplY3QpLT5wcml2LT5+V2ViS2l0V2ViUmVzb3Vy
Y2VQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9yZXNvdXJjZV9wYXJl
bnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQorc3RhdGljIGd1aW50IHNpZ25hbHNbTEFT
VF9TSUdOQUxdID0geyAwLCB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJSZXNvdXJjZUdldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwYXJhbVNwZWMpCiB7CkBAIC04MSwxOCArNzUsMTAgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViUmVzb3VyY2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
R1ZhbHVlKgogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X3dlYl9yZXNvdXJjZV9pbml0
KFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAgICBXZWJLaXRXZWJSZXNvdXJjZVBy
aXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVzb3VyY2UsIFdFQktJ
VF9UWVBFX1dFQl9SRVNPVVJDRSwgV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlKTsKLSAgICByZXNv
dXJjZS0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRXZWJSZXNvdXJjZVByaXZh
dGUoKTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9yZXNvdXJjZV9jbGFzc19pbml0KFdl
YktpdFdlYlJlc291cmNlQ2xhc3MqIHJlc291cmNlQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNz
KiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlc291cmNlQ2xhc3MpOwogICAgIG9iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJSZXNvdXJjZUdldFByb3BlcnR5OwotICAg
IG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlJlc291cmNlRmluYWxpemU7CiAKICAg
ICAvKioKICAgICAgKiBXZWJLaXRXZWJSZXNvdXJjZTp1cmk6CkBAIC0xOTQsOCArMTgwLDYgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9yZXNvdXJjZV9jbGFzc19pbml0KFdlYktpdFdlYlJlc291
cmNlQ2xhc3MqIHJlc291cmNlQ2xhc3MKICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVf
bWFyc2hhbF9WT0lEX19QT0lOVEVSLAogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUs
IDEsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7Ci0KLSAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUocmVzb3VyY2VDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlJlc291cmNl
UHJpdmF0ZSkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJSZXNvdXJjZVVwZGF0ZVVSSShX
ZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IENTdHJpbmcmIHJlcXVlc3RVUkkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IGRlMGYyOGQuLmFiYjBiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTUsNiArMTE1LDE2IEBAIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5n
UmVzb3VyY2VzTWFwOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgR1JlZlB0cjxXZWJLaXRXZWJS
ZXNvdXJjZT4gPiBSZXNvdXJjZXNNYXA7CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUg
eworICAgIH5fV2ViS2l0V2ViVmlld1ByaXZhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKGphdmFz
Y3JpcHRHbG9iYWxDb250ZXh0KQorICAgICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShq
YXZhc2NyaXB0R2xvYmFsQ29udGV4dCk7CisKKyAgICAgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3Ms
IG1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3
ZWJWaWV3LgorICAgICAgICBpZiAobW9kYWxMb29wICYmIGdfbWFpbl9sb29wX2lzX3J1bm5pbmco
bW9kYWxMb29wLmdldCgpKSkKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobW9kYWxMb29w
LmdldCgpKTsKKyAgICB9CisKICAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0OwogICAgIENT
dHJpbmcgdGl0bGU7CiAgICAgQ1N0cmluZyBjdXN0b21UZXh0RW5jb2Rpbmc7CkBAIC0xNTEsNyAr
MTYxLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAKIHN0YXRpYyBndWludCBz
aWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRXZWJW
aWV3LCB3ZWJraXRfd2ViX3ZpZXcsIFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UpCitXRUJLSVRf
REVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBXRUJLSVRfVFlQRV9X
RUJfVklFV19CQVNFKQogCiBzdGF0aWMgaW5saW5lIFdlYlBhZ2VQcm94eSogZ2V0UGFnZShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAtNDEwLDYgKzQyMCw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgYXR0YWNoRm9ybUNs
aWVudFRvVmlldyh3ZWJWaWV3KTsKIAogICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IGFkb3B0
R1JlZih3ZWJraXRCYWNrRm9yd2FyZExpc3RDcmVhdGUoZ2V0UGFnZSh3ZWJWaWV3KS0+YmFja0Zv
cndhcmRMaXN0KCkpKTsKKyAgICBwcml2LT53aW5kb3dQcm9wZXJ0aWVzID0gYWRvcHRHUmVmKHdl
YmtpdFdpbmRvd1Byb3BlcnRpZXNDcmVhdGUoKSk7CiAKICAgICBHUmVmUHRyPFdlYktpdFNldHRp
bmdzPiBzZXR0aW5ncyA9IGFkb3B0R1JlZih3ZWJraXRfc2V0dGluZ3NfbmV3KCkpOwogICAgIHdl
YmtpdFdlYlZpZXdTZXRTZXR0aW5ncyh3ZWJWaWV3LCBzZXR0aW5ncy5nZXQoKSk7CkBAIC00NjQs
MzQgKzQ3NSwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIH0KIH0KIAotc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3N0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7Ci0gICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotCi0gICAgaWYgKHByaXYtPmphdmFzY3Jp
cHRHbG9iYWxDb250ZXh0KQotICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKHByaXYtPmph
dmFzY3JpcHRHbG9iYWxDb250ZXh0KTsKLQotICAgIC8vIEZvciBtb2RhbCBkaWFsb2dzLCBtYWtl
IHN1cmUgdGhlIG1haW4gbG9vcCBpcyBzdG9wcGVkIHdoZW4gZmluYWxpemluZyB0aGUgd2ViVmll
dy4KLSAgICBpZiAocHJpdi0+bW9kYWxMb29wICYmIGdfbWFpbl9sb29wX2lzX3J1bm5pbmcocHJp
di0+bW9kYWxMb29wLmdldCgpKSkKLSAgICAgICAgZ19tYWluX2xvb3BfcXVpdChwcml2LT5tb2Rh
bExvb3AuZ2V0KCkpOwotCiAgICAgd2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KHdl
YlZpZXcpOwogICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VD
aGFuZ2VkU2lnbmFsSGFuZGxlcih3ZWJWaWV3KTsKICAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVj
dFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7CiAgICAgd2Via2l0V2ViVmlld0Rpc2Nv
bm5lY3RGYXZpY29uRGF0YWJhc2VTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKIAotICAgIHByaXYt
Pn5XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJf
dmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQotewotICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHdlYlZp
ZXcsIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3UHJpdmF0ZSk7Ci0gICAgd2Vi
Vmlldy0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRXZWJWaWV3UHJpdmF0ZSgp
OwotCi0gICAgd2ViVmlldy0+cHJpdi0+d2luZG93UHJvcGVydGllcyA9IGFkb3B0R1JlZih3ZWJr
aXRXaW5kb3dQcm9wZXJ0aWVzQ3JlYXRlKCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRXZWJWaWV3QWNjdW11bGF0b3JPYmplY3RIYW5kbGVkKEdTaWduYWxJbnZvY2F0
aW9uSGludCosIEdWYWx1ZSogcmV0dXJuVmFsdWUsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVy
biwgZ3BvaW50ZXIpCkBAIC01MTAsNyArNTAyLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgZ09i
amVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZDsKICAgICBn
T2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eTsKICAg
ICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eTsK
LSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVmlld0ZpbmFsaXplOworICAg
IGdPYmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFdlYlZpZXdEaXNwb3NlOwogCiAgICAgd2Vi
Vmlld0NsYXNzLT5sb2FkX2ZhaWxlZCA9IHdlYmtpdFdlYlZpZXdMb2FkRmFpbDsKICAgICB3ZWJW
aWV3Q2xhc3MtPmNyZWF0ZSA9IHdlYmtpdFdlYlZpZXdDcmVhdGU7CkBAIC01MTksOCArNTExLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Ns
YXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5wZXJtaXNzaW9uX3JlcXVlc3Qg
PSB3ZWJraXRXZWJWaWV3UGVybWlzc2lvblJlcXVlc3Q7CiAgICAgd2ViVmlld0NsYXNzLT5ydW5f
ZmlsZV9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyOwogCi0gICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQcml2
YXRlKSk7Ci0KICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1jb250ZXh0OgogICAg
ICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKaW5kZXggZTViYWM2Ny4uMWUxMDA2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
ODAsNiArODAsMTkgQEAgdm9pZCByZWRpcmVjdGVkV2luZG93RGFtYWdlZENhbGxiYWNrKHZvaWQq
IGRhdGEpOwogI2VuZGlmCiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKKyAg
ICBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCkKKyAgICAgICAgOiBpbUNvbnRleHQoYWRvcHRH
UmVmKGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCkpKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKyAgICAgICAgLCByZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpjcmVhdGUoSW50U2l6ZSgxLCAxKSkpCisjZW5kaWYKKyAgICB7CisgICAgfQorCisgICAgfl9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUoKQorICAgIHsKKyAgICAgICAgcGFnZVByb3h5LT5jbG9z
ZSgpOworICAgIH0KKwogICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcCBjaGlsZHJlbjsKICAg
ICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7CiAgICAgUmVmUHRyPFdlYlBhZ2VQ
cm94eT4gcGFnZVByb3h5OwpAQCAtMTE4LDcgKzEzMSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlIHsKICNlbmRpZgogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3
QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5FUikKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19U
WVBFX0NPTlRBSU5FUikKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNp
emVyU2l6ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7CkBAIC0zMjAsNDIgKzMz
MywyOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ2hpbGRNb3ZlUmVzaXplKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3LCBHdGtXaWRnZXQqIGNoaQogICAgIGd0a193aWRnZXRfcXVldWVfcmVz
aXplX25vX3JlZHJhdyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKIH0KIAotc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VGaW5hbGl6ZShHT2JqZWN0KiBnb2JqZWN0KQorc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VEaXNwb3NlKEdPYmplY3QqIGdvYmplY3QpCiB7Ci0gICAgV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoZ29iamVj
dCk7Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jh
c2UtPnByaXY7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5jbG9zZSgpOwotCi0gICAgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsK
LQotICAgIHByaXYtPn5XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShnb2JqZWN0
KTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coV0VCS0lU
X1dFQl9WSUVXX0JBU0UoZ29iamVjdCksIDApOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPmRpc3Bvc2UoZ29iamVjdCk7CiB9CiAKLXN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtp
dFdlYlZpZXdCYXNlKQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChH
T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
R19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHdlYmtpdFdlYlZpZXdCYXNlLCBXRUJLSVRfVFlQ
RV9XRUJfVklFV19CQVNFLCBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOwotICAgIHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSgpOwotCi0gICAgcHJpdi0+c2hvdWxkRm9yd2FyZE5leHRLZXlFdmVudCA9IEZBTFNF
OworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcykt
PmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKLSAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtf
V0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKTsKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBH
VEtfV0lER0VUKG9iamVjdCk7CiAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzKHZpZXdXaWRn
ZXQsIFRSVUUpOwotICAgIHByaXYtPmltQ29udGV4dCA9IGFkb3B0R1JlZihndGtfaW1fbXVsdGlj
b250ZXh0X25ldygpKTsKLQotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlKHZpZXdXaWRnZXQpOwotCi0gICAgcHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuc2V0V2lk
Z2V0KHZpZXdXaWRnZXQpOwotCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQodmlld1dpZGdldCwgc3Rh
dGljX2Nhc3Q8R3RrRGVzdERlZmF1bHRzPigwKSwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9O
X01PVkUgfCBHREtfQUNUSU9OX0xJTksgfCBHREtfQUNUSU9OX1BSSVZBVEUpKTsKICAgICBndGtf
ZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpk
ZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogCisgICAgV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uob2JqZWN0KS0+cHJp
djsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh2aWV3V2lk
Z2V0KTsKKyAgICBwcml2LT5kcmFnQW5kRHJvcEhlbHBlci5zZXRXaWRnZXQodmlld1dpZGdldCk7
CisKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dyA9IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUoSW50U2l6ZSgxLCAxKSk7CiAg
ICAgaWYgKHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCi0gICAgICAgIHByaXYtPnJlZGlyZWN0ZWRX
aW5kb3ctPnNldERhbWFnZU5vdGlmeUNhbGxiYWNrKHJlZGlyZWN0ZWRXaW5kb3dEYW1hZ2VkQ2Fs
bGJhY2ssIHdlYmtpdFdlYlZpZXdCYXNlKTsKKyAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dy0+c2V0RGFtYWdlTm90aWZ5Q2FsbGJhY2socmVkaXJlY3RlZFdpbmRvd0RhbWFnZWRDYWxsYmFj
aywgb2JqZWN0KTsKICNlbmRpZgogfQogCkBAIC03NjUsMTQgKzc2NSwxMyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3Mq
IHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNzLT5wYXJlbnRfc2V0ID0gd2Via2l0V2ViVmll
d0Jhc2VQYXJlbnRTZXQ7CiAKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHdlYmtpdFdlYlZpZXdCYXNlQ2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+Zmlu
YWxpemUgPSB3ZWJraXRXZWJWaWV3QmFzZUZpbmFsaXplOworICAgIGdvYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkOworICAgIGdvYmplY3RDbGFz
cy0+ZGlzcG9zZSA9IHdlYmtpdFdlYlZpZXdCYXNlRGlzcG9zZTsKIAogICAgIEd0a0NvbnRhaW5l
ckNsYXNzKiBjb250YWluZXJDbGFzcyA9IEdUS19DT05UQUlORVJfQ0xBU1Mod2Via2l0V2ViVmll
d0Jhc2VDbGFzcyk7CiAgICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9IHdlYmtpdFdlYlZpZXdCYXNl
Q29udGFpbmVyQWRkOwogICAgIGNvbnRhaW5lckNsYXNzLT5yZW1vdmUgPSB3ZWJraXRXZWJWaWV3
QmFzZUNvbnRhaW5lclJlbW92ZTsKICAgICBjb250YWluZXJDbGFzcy0+Zm9yYWxsID0gd2Via2l0
V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGw7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZh
dGUod2Via2l0V2ViVmlld0Jhc2VDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSkpOwogfQogCiBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoV2Vi
Q29udGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2li
bGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2VBY2Nlc3NpYmxlLmNwcAppbmRleCAwOWExMWFiLi43YjA2OWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlQWNjZXNzaWJsZS5jcHAKQEAgLTIwLDIwICsyMCwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZS5oIgogCisjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogc3RydWN0IF9XZWJLaXRX
ZWJWaWV3QmFzZUFjY2Vzc2libGVQcml2YXRlIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldDsKIH07
CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlLCB3ZWJraXRfd2Vi
X3ZpZXdfYmFzZV9hY2Nlc3NpYmxlLCBBVEtfVFlQRV9TT0NLRVQpCi0KLXN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZUZpbmFsaXplKEdPYmplY3QqIGdvYmplY3QpCi17Ci0g
ICAgV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0VfQUNDRVNTSUJMRShnb2JqZWN0KTsKLSAgICBhY2Nlc3NpYmxlLT5wcml2LT5+V2Vi
S2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ29i
amVjdCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxl
LCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9hY2Nlc3NpYmxlLCBBVEtfVFlQRV9TT0NLRVQpCiAKIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZVdpZGdldERlc3Ryb3llZChHdGtX
aWRnZXQqIHdpZGdldCwgV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQog
ewpAQCAtOTQsMTggKzg4LDggQEAgc3RhdGljIGdpbnQgd2Via2l0V2ViVmlld0Jhc2VBY2Nlc3Np
YmxlR2V0SW5kZXhJblBhcmVudChBdGtPYmplY3QqIGF0a09iamVjdCkKICAgICByZXR1cm4gLTE7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGVfaW5pdChX
ZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUqIGFjY2Vzc2libGUpCi17Ci0gICAgV2ViS2l0V2Vi
Vmlld0Jhc2VBY2Nlc3NpYmxlUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShhY2Nlc3NpYmxlLCBXRUJLSVRfVFlQRV9XRUJfVklFV19CQVNFX0FDQ0VTU0lCTEUsIFdl
YktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZVByaXZhdGUpOwotICAgIGFjY2Vzc2libGUtPnByaXYg
PSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlUHJpdmF0
ZSgpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9hY2Nlc3NpYmxlX2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlQ2xhc3MqIGtsYXNzKQogewotICAg
IEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwotICAg
IGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXZWJWaWV3QmFzZUFjY2Vzc2libGVGaW5h
bGl6ZTsKLQogICAgIC8vIE5vIG5lZWQgdG8gaW1wbGVtZW50IGdldF9uX2NoaWxkcmVuKCkgYW5k
IHJlZl9jaGlsZCgpIGhlcmUKICAgICAvLyBzaW5jZSB0aGlzIGlzIGEgc3ViY2xhc3Mgb2YgQXRr
U29ja2V0IGFuZCBhbGwgdGhlIGxvZ2ljIHJlbGF0ZWQKICAgICAvLyB0byB0aG9zZSBmdW5jdGlv
bnMgd2lsbCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgQVRLIGJyaWRnZS4KQEAgLTExMyw4ICs5Nyw2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGVfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2liCiAgICAgYXRrT2JqZWN0Q2xhc3MtPmluaXRpYWxp
emUgPSB3ZWJraXRXZWJWaWV3QmFzZUFjY2Vzc2libGVJbml0aWFsaXplOwogICAgIGF0a09iamVj
dENsYXNzLT5yZWZfc3RhdGVfc2V0ID0gd2Via2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlUmVmU3Rh
dGVTZXQ7CiAgICAgYXRrT2JqZWN0Q2xhc3MtPmdldF9pbmRleF9pbl9wYXJlbnQgPSB3ZWJraXRX
ZWJWaWV3QmFzZUFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50OwotCi0gICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlUHJp
dmF0ZSkpOwogfQogCiBXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUqIHdlYmtpdFdlYlZpZXdC
YXNlQWNjZXNzaWJsZU5ldyhHdGtXaWRnZXQqIHdpZGdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGllcy5jcHAK
aW5kZXggOTMwY2Y4Ni4uYmRmYzcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGllcy5jcHAKQEAgLTEwNiw4
ICsxMDYsNiBAQCBlbnVtIHsKICAgICBQUk9QX0ZVTExTQ1JFRU4KIH07CiAKLUdfREVGSU5FX1RZ
UEUoV2ViS2l0V2luZG93UHJvcGVydGllcywgd2Via2l0X3dpbmRvd19wcm9wZXJ0aWVzLCBHX1RZ
UEVfT0JKRUNUKQotCiBzdHJ1Y3QgX1dlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlIHsKICAg
ICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7CiAKQEAgLTEyMSwxMSArMTE5LDcgQEAgc3RydWN0IF9X
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZSB7CiAgICAgYm9vbCBmdWxsc2NyZWVuIDogMTsK
IH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNGaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX1dJTkRPV19QUk9QRVJUSUVTKG9iamVjdCktPnByaXYt
Pn5XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93aW5kb3dfcHJvcGVydGllc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwot
fQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdpbmRvd1Byb3BlcnRpZXMsIHdlYmtpdF93aW5k
b3dfcHJvcGVydGllcywgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0V2luZG93
UHJvcGVydGllc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCiB7CkBAIC0xOTksOCArMTkzLDYgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2luZG93UHJvcGVydGllc1NldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBjb24KIHN0YXRpYyB2b2lkIHdlYmtpdF93aW5kb3dfcHJvcGVy
dGllc19jbGFzc19pbml0KFdlYktpdFdpbmRvd1Byb3BlcnRpZXNDbGFzcyogcmVxdWVzdENsYXNz
KQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1
ZXN0Q2xhc3MpOwotCi0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2luZG93UHJv
cGVydGllc0ZpbmFsaXplOwogICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRX
aW5kb3dQcm9wZXJ0aWVzR2V0UHJvcGVydHk7CiAgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9IHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNTZXRQcm9wZXJ0eTsKIApAQCAtMzA4LDE1ICszMDAs
NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2luZG93X3Byb3BlcnRpZXNfY2xhc3NfaW5pdChXZWJL
aXRXaW5kb3dQcm9wZXJ0aWVzQ2xhc3MqIHJlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciB3aW5kb3cgd2lsbCBiZSBk
aXNwbGF5ZWQgZnVsbHNjcmVlbi4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1GbGFncykpOwotCi0gICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdpbmRvd1By
b3BlcnRpZXNQcml2YXRlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF93aW5kb3dfcHJvcGVy
dGllc19pbml0KFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHJlcXVlc3QpCi17Ci0gICAgV2ViS2l0
V2luZG93UHJvcGVydGllc1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZB
VEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfV0lORE9XX1BST1BFUlRJRVMsIFdlYktpdFdpbmRvd1By
b3BlcnRpZXNQcml2YXRlKTsKLSAgICByZXF1ZXN0LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHBy
aXYpIFdlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlKCk7CiB9CiAKIFdlYktpdFdpbmRvd1By
b3BlcnRpZXMqIHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNDcmVhdGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175652</attachid>
            <date>2012-11-22 05:20:04 -0800</date>
            <delta_ts>2012-11-22 12:01:15 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk-define-type.diff</filename>
            <type>text/plain</type>
            <size>76840</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNDExZTkxLi44ZTQ4Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2
IEBACisyMDEyLTExLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBVc2UgY3VzdG9tIHByaXZhdGUgbWFjcm9zIHRvIGRlZmluZSBH
T2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgV0VCS0lUX0RFRklORV9UWVBFIG1hY3Jvcywgc2ltaWxhciBhbmQgY29tcGF0aWJsZSB3aXRo
CisgICAgICAgIEdfREVGSU5FX1RZUEUgbWFjcm9zLCB0byBkZWZpbmUgR09iamVjdCB0eXBlcy4g
VGhlc2UgbWFjcm9zIGFsc28KKyAgICAgICAgZGVmaW5lIHRoZSBpbml0IGFuZCBmaW5hbGl6ZSBm
dW5jdGlvbnMgcmVkdWNpbmcgdGhlIEdPYmplY3QKKyAgICAgICAgYm9pbGVycGxhdGUgYW5kIGhp
ZGluZyB0aGUgcGxhY2VtZW50IG5ldyBzeW50YXggdGhhdCBjYXVzZXMgc29tZQorICAgICAgICBj
b25mdXNpb24uIFRoZSBwYXRjaCByZXBsYWNlcyB0aGUgdXNlIG9mIEdfREVGSU5FX1RZUEUgbWFj
cm9zIGJ5CisgICAgICAgIFdFQktJVF9ERUZJTkVfVFlQRSBvbmVzIGFuZCByZW1vdmVzIHRoZSBp
bml0IGFuZCBmaW5hbGl6ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMsIG1vdmluZyBjdXN0b20g
Y29kZSB3aGVuIG5lZWRlZCB0byB0aGUgcHJpdmF0ZQorICAgICAgICBzdHJ1Y3QgY29uc3RydWN0
b3IvZGVzdHJ1Y3RvciBvciBjb25zdHJ1Y3RlZC9kaXNwb3NlIHZpcnR1YWwKKyAgICAgICAgbWV0
aG9kcyB3aGVuIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51RGlzcG9zZSk6Cisg
ICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgIChfV2ViS2l0
Q29udGV4dE1lbnVJdGVtUHJpdmF0ZTo6fl9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKToK
KyAgICAgICAgKF9XZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKToKKyAgICAgICAgKHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRDb29raWVNYW5h
Z2VyUHJpdmF0ZTo6fl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgIChfV2Vi
S2l0Q29va2llTWFuYWdlclByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdERvd25sb2FkLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb3dubG9hZF9jbGFzc19pbml0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgor
ICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfY2xhc3NfaW5pdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9maW5kX2NvbnRyb2xs
ZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1
Ym1pc3Npb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdEZvcm1TdWJtaXNzaW9uUmVxdWVz
dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2NsYXNz
X2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25f
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY2xhc3Nf
aW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bl9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4u
Y3BwOgorICAgICAgICAoX1dlYktpdFBsdWdpblByaXZhdGU6On5fV2ViS2l0UGx1Z2luUHJpdmF0
ZSk6CisgICAgICAgIChfV2ViS2l0UGx1Z2luUHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1
Z2luX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFBvbGljeURlY2lzaW9uRGlzcG9zZSk6Cisg
ICAgICAgICh3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lv
bl9pZ25vcmUpOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwOgorICAg
ICAgICAoX1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZTo6fl9XZWJLaXRQcmludE9wZXJhdGlv
blByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdF9yZXNw
b25zZV9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0
eV9tYW5hZ2VyX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9XZWJLaXRTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRT
ZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZSk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9u
c2UuY3BwOgorICAgICAgICAod2Via2l0X3VyaV9yZXNwb25zZV9jbGFzc19pbml0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlOjp+X1dlYktpdFdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAoX1dl
YktpdFdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9yZXNvdXJjZV9jbGFzc19pbml0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJL
aXRXZWJWaWV3UHJpdmF0ZTo6fl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChfV2Vi
S2l0V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjpfV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOgor
ICAgICAgICAoX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZTo6fl9XZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaXNwb3NlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jh
c2VfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VBY2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vz
c2libGVfY2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2lu
ZG93UHJvcGVydGllcy5jcHA6CisgICAgICAgICh3ZWJraXRfd2luZG93X3Byb3BlcnRpZXNfY2xh
c3NfaW5pdCk6CisKIDIwMTItMTEtMjIgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQ29ycmVjdCB0aGUgcGFyYW1ldGVycyBvZiBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA1NmVhZTQ0Li5mYmYz
MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRC
YWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTYzLDI3ICs2MywxMCBAQCBzdHJ1Y3QgX1dl
YktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUgewogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNU
X1NJR05BTF0gPSB7IDAsIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0QmFja0ZvcndhcmRMaXN0
LCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3QsIEdfVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lk
IHdlYmtpdEJhY2tGb3J3YXJkTGlzdEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBX
RUJLSVRfQkFDS19GT1JXQVJEX0xJU1Qob2JqZWN0KS0+cHJpdi0+fldlYktpdEJhY2tGb3J3YXJk
TGlzdFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfYmFja19mb3J3YXJkX2xp
c3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2luaXQoV2ViS2l0QmFja0ZvcndhcmRMaXN0KiBsaXN0KQot
ewotICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUobGlzdCwgV0VCS0lUX1RZUEVfQkFDS19GT1JXQVJEX0xJU1QsIFdlYktp
dEJhY2tGb3J3YXJkTGlzdFByaXZhdGUpOwotICAgIGxpc3QtPnByaXYgPSBwcml2OwotICAgIG5l
dyAocHJpdikgV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZSgpOwotfQorV0VCS0lUX0RFRklO
RV9UWVBFKFdlYktpdEJhY2tGb3J3YXJkTGlzdCwgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0LCBH
X1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfY2xh
c3NfaW5pdChXZWJLaXRCYWNrRm9yd2FyZExpc3RDbGFzcyogbGlzdENsYXNzKQogewotICAgIEdP
YmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MobGlzdENsYXNzKTsKLQot
ICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRCYWNrRm9yd2FyZExpc3RGaW5hbGl6
ZTsKLQogICAgIC8qKgogICAgICAqIFdlYktpdEJhY2tGb3J3YXJkTGlzdDo6Y2hhbmdlZDoKICAg
ICAgKiBAYmFja19mb3J3YXJkX2xpc3Q6IHRoZSAjV2ViS2l0QmFja0ZvcndhcmRMaXN0IG9uIHdo
aWNoIHRoZSBzaWduYWwgd2FzIGVtaXR0ZWQKQEAgLTEwNSw4ICs4OCw2IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9jbGFzc19pbml0KFdlYktpdEJhY2tGb3J3YXJkTGlz
dENsYXNzKiBsaXN0CiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMiwKICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0JBQ0tfRk9SV0FSRF9MSVNUX0lURU0sCiAgICAg
ICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRk
X3ByaXZhdGUobGlzdENsYXNzLCBzaXplb2YoV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZSkp
OwogfQogCiBzdGF0aWMgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSogd2Via2l0QmFja0Zvcndh
cmRMaXN0R2V0T3JDcmVhdGVJdGVtKFdlYktpdEJhY2tGb3J3YXJkTGlzdCogbGlzdCwgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogd2ViTGlzdEl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
CmluZGV4IDhiMjJhZmMuLjUzZmQxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBA
IC0zNSwyOCArMzUsMTAgQEAgc3RydWN0IF9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0
ZSB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbFVSSTsKIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0
QmFja0ZvcndhcmRMaXN0SXRlbSwgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0sIEdfVFlQ
RV9JTklUSUFMTFlfVU5PV05FRCkKLQotc3RhdGljIHZvaWQgd2Via2l0QmFja0ZvcndhcmRMaXN0
SXRlbUZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfQkFDS19GT1JXQVJE
X0xJU1RfSVRFTShvYmplY3QpLT5wcml2LT5+V2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbVByaXZh
dGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
YmFja19mb3J3YXJkX2xpc3RfaXRlbV9pbml0KFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGxp
c3RJdGVtKQotewotICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlKiBwcml2ID0g
R19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGxpc3RJdGVtLCBXRUJLSVRfVFlQRV9CQUNLX0ZP
UldBUkRfTElTVF9JVEVNLCBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZSk7Ci0gICAg
bGlzdEl0ZW0tPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0QmFja0ZvcndhcmRM
aXN0SXRlbVByaXZhdGUoKTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRCYWNrRm9yd2Fy
ZExpc3RJdGVtLCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbSwgR19UWVBFX0lOSVRJQUxM
WV9VTk9XTkVEKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9j
bGFzc19pbml0KFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW1DbGFzcyogbGlzdEl0ZW1DbGFzcykK
IHsKLSAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGxpc3RJ
dGVtQ2xhc3MpOwotCi0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdEJhY2tGb3J3
YXJkTGlzdEl0ZW1GaW5hbGl6ZTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShsaXN0
SXRlbUNsYXNzLCBzaXplb2YoV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUpKTsKIH0K
IAogdHlwZWRlZiBIYXNoTWFwPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBXZWJLaXRCYWNrRm9y
d2FyZExpc3RJdGVtKj4gSGlzdG9yeUl0ZW1zTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCmluZGV4IGU2NTcyOGEu
LjQ2Y2U5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb250ZXh0TWVudS5jcHAKQEAgLTMzLDI5ICszMywxOCBAQCBzdHJ1Y3QgX1dlYktp
dENvbnRleHRNZW51UHJpdmF0ZSB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBwYXJlbnRJ
dGVtOwogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRDb250ZXh0TWVudSwgd2Via2l0X2NvbnRl
eHRfbWVudSwgR19UWVBFX09CSkVDVCkKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRDb250ZXh0
TWVudSwgd2Via2l0X2NvbnRleHRfbWVudSwgR19UWVBFX09CSkVDVCkKIAotc3RhdGljIHZvaWQg
d2Via2l0Q29udGV4dE1lbnVGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgdm9pZCB3
ZWJraXRDb250ZXh0TWVudURpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewotICAgIFdlYktpdENv
bnRleHRNZW51KiBtZW51ID0gV0VCS0lUX0NPTlRFWFRfTUVOVShvYmplY3QpOwotICAgIHdlYmtp
dF9jb250ZXh0X21lbnVfcmVtb3ZlX2FsbChtZW51KTsKLSAgICBtZW51LT5wcml2LT5+V2ViS2l0
Q29udGV4dE1lbnVQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2NvbnRleHRf
bWVudV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3
ZWJraXRfY29udGV4dF9tZW51X2luaXQoV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUpCi17Ci0gICAg
V2ViS2l0Q29udGV4dE1lbnVQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW
QVRFKG1lbnUsIFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVSwgV2ViS2l0Q29udGV4dE1lbnVQcml2
YXRlKTsKLSAgICBtZW51LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdENvbnRl
eHRNZW51UHJpdmF0ZSgpOworICAgIHdlYmtpdF9jb250ZXh0X21lbnVfcmVtb3ZlX2FsbChXRUJL
SVRfQ09OVEVYVF9NRU5VKG9iamVjdCkpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9jb250
ZXh0X21lbnVfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfY29udGV4dF9tZW51X2NsYXNzX2luaXQoV2ViS2l0Q29udGV4dE1lbnVDbGFzcyog
bGlzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1MobGlzdENsYXNzKTsKLSAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0Q29u
dGV4dE1lbnVGaW5hbGl6ZTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShsaXN0Q2xh
c3MsIHNpemVvZihXZWJLaXRDb250ZXh0TWVudVByaXZhdGUpKTsKKyAgICBnT2JqZWN0Q2xhc3Mt
PmRpc3Bvc2UgPSB3ZWJraXRDb250ZXh0TWVudURpc3Bvc2U7CiB9CiAKIHZvaWQgd2Via2l0Q29u
dGV4dE1lbnVQb3B1bGF0ZShXZWJLaXRDb250ZXh0TWVudSogbWVudSwgVmVjdG9yPENvbnRleHRN
ZW51SXRlbT4mIGNvbnRleHRNZW51SXRlbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCBhNzNm
MDc1Li5hYTg5Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTM4LDMzICszOCwyMCBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0cnVj
dCBfV2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSB7CisgICAgfl9XZWJLaXRDb250ZXh0TWVu
dUl0ZW1Qcml2YXRlKCkKKyAgICB7CisgICAgICAgIGlmIChzdWJNZW51KQorICAgICAgICAgICAg
d2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Yk1lbnUuZ2V0KCksIDApOworICAgIH0K
KwogICAgIE93blB0cjxDb250ZXh0TWVudUl0ZW0+IG1lbnVJdGVtOwogICAgIEdSZWZQdHI8V2Vi
S2l0Q29udGV4dE1lbnU+IHN1Yk1lbnU7CiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdENvbnRl
eHRNZW51SXRlbSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtLCBHX1RZUEVfSU5JVElBTExZX1VO
T1dORUQpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdENvbnRleHRNZW51SXRlbUZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKiBwcml2ID0g
V0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKG9iamVjdCktPnByaXY7Ci0gICAgaWYgKHByaXYtPnN1
Yk1lbnUpCi0gICAgICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRlbShwcml2LT5zdWJN
ZW51LmdldCgpLCAwKTsKLSAgICBwcml2LT5+V2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSgp
OwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1faW5pdChXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCi17Ci0gICAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RShpdGVtLCBXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtUHJpdmF0ZSk7Ci0gICAgaXRlbS0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJL
aXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
Q29udGV4dE1lbnVJdGVtLCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW0sIEdfVFlQRV9JTklUSUFM
TFlfVU5PV05FRCkKIAogc3RhdGljIHZvaWQgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2NsYXNz
X2luaXQoV2ViS2l0Q29udGV4dE1lbnVJdGVtQ2xhc3MqIGl0ZW1DbGFzcykKIHsKLSAgICBHT2Jq
ZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGl0ZW1DbGFzcyk7Ci0gICAg
Z09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdENvbnRleHRNZW51SXRlbUZpbmFsaXplOwot
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShpdGVtQ2xhc3MsIHNpemVvZihXZWJLaXRDb250
ZXh0TWVudUl0ZW1Qcml2YXRlKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrQW5kV2FybklmTWVu
dUhhc1BhcmVudEl0ZW0oV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCmlu
ZGV4IDY2ZGIxY2MuLjI5YTM3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zNiwxMiArMzYsMTcg
QEAgZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlIHsKKyAg
ICB+X1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKCkKKyAgICB7CisgICAgICAgIHdlYkNvb2tp
ZU1hbmFnZXItPnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CisgICAgfQorCiAgICAgUmVm
UHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gd2ViQ29va2llTWFuYWdlcjsKIH07CiAKIHN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAotR19ERUZJTkVfVFlQRShX
ZWJLaXRDb29raWVNYW5hZ2VyLCB3ZWJraXRfY29va2llX21hbmFnZXIsIEdfVFlQRV9PQkpFQ1Qp
CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29va2llTWFuYWdlciwgd2Via2l0X2Nvb2tpZV9t
YW5hZ2VyLCBHX1RZUEVfT0JKRUNUKQogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdF
QktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsIFNvdXBDb29raWVQZXJzaXN0ZW50
U3RvcmFnZVRleHQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lF
X1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNR
TGl0ZSk7CkBAIC01MCwyNyArNTUsOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdF
QktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9BTFdBWVMsIEhUVFBDb29raWVBY2NlcAogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVIs
IEhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWSwgSFRUUENvb2tp
ZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKIAotc3RhdGljIHZvaWQg
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2luaXQoV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlcikK
LXsKLSAgICBXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURShtYW5hZ2VyLCBXRUJLSVRfVFlQRV9DT09LSUVfTUFOQUdFUiwgV2ViS2l0
Q29va2llTWFuYWdlclByaXZhdGUpOwotICAgIG1hbmFnZXItPnByaXYgPSBwcml2OwotICAgIG5l
dyAocHJpdikgV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKTsKLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0Q29va2llTWFuYWdlckZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJL
aXRDb29raWVNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9DT09LSUVfTUFOQUdFUihvYmpl
Y3QpLT5wcml2OwotICAgIHByaXYtPndlYkNvb2tpZU1hbmFnZXItPnN0b3BPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKCk7Ci0gICAgcHJpdi0+fldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9j
bGFzc19pbml0KFdlYktpdENvb2tpZU1hbmFnZXJDbGFzcyogZmluZENsYXNzKQogewogICAgIEdP
YmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKLSAg
ICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0Q29va2llTWFuYWdlckZpbmFsaXplOwot
Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGZpbmRDbGFzcywgc2l6ZW9mKFdlYktpdENv
b2tpZU1hbmFnZXJQcml2YXRlKSk7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRDb29raWVNYW5h
Z2VyOjpjaGFuZ2VkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RG93bmxvYWQuY3BwCmluZGV4IGE2NzU0ZGUuLjI0NWYxYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKQEAgLTUz
LDYgKzUzLDEyIEBAIGVudW0gewogfTsKIAogc3RydWN0IF9XZWJLaXREb3dubG9hZFByaXZhdGUg
eworICAgIH5fV2ViS2l0RG93bmxvYWRQcml2YXRlKCkKKyAgICB7CisgICAgICAgIGlmICh3ZWJW
aWV3KQorICAgICAgICAgICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihHX09CSkVDVCh3
ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3ZWJWaWV3KSk7CisgICAgfQorCiAg
ICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRvd25sb2FkOwogCiAgICAgR1JlZlB0cjxXZWJLaXRV
UklSZXF1ZXN0PiByZXF1ZXN0OwpAQCAtNjgsMTYgKzc0LDcgQEAgc3RydWN0IF9XZWJLaXREb3du
bG9hZFByaXZhdGUgewogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAs
IH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0RG93bmxvYWQsIHdlYmtpdF9kb3dubG9hZCwgR19U
WVBFX09CSkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0RG93bmxvYWRGaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0RG93bmxvYWRQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RP
V05MT0FEKG9iamVjdCktPnByaXY7Ci0gICAgaWYgKHByaXYtPndlYlZpZXcpCi0gICAgICAgIGdf
b2JqZWN0X3JlbW92ZV93ZWFrX3BvaW50ZXIoR19PQkpFQ1QocHJpdi0+d2ViVmlldyksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmcHJpdi0+d2ViVmlldykpOwotICAgIHByaXYtPn5XZWJLaXRE
b3dubG9hZFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG93bmxvYWRfcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJL
aXREb3dubG9hZCwgd2Via2l0X2Rvd25sb2FkLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9p
ZCB3ZWJraXREb3dubG9hZEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElk
LCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCiB7CkBAIC0xMTEsMTggKzEw
OCwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbihX
ZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0
YXRpYyB2b2lkIHdlYmtpdF9kb3dubG9hZF9pbml0KFdlYktpdERvd25sb2FkKiBkb3dubG9hZCkK
LXsKLSAgICBXZWJLaXREb3dubG9hZFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoZG93bmxvYWQsIFdFQktJVF9UWVBFX0RPV05MT0FELCBXZWJLaXREb3dubG9hZFBy
aXZhdGUpOwotICAgIGRvd25sb2FkLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktp
dERvd25sb2FkUHJpdmF0ZSgpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG93bmxvYWRfY2xh
c3NfaW5pdChXZWJLaXREb3dubG9hZENsYXNzKiBkb3dubG9hZENsYXNzKQogewogICAgIEdPYmpl
Y3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhkb3dubG9hZENsYXNzKTsKICAg
ICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0RG93bmxvYWRHZXRQcm9wZXJ0eTsK
LSAgICBvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXREb3dubG9hZEZpbmFsaXplOwogCiAg
ICAgZG93bmxvYWRDbGFzcy0+ZGVjaWRlX2Rlc3RpbmF0aW9uID0gd2Via2l0RG93bmxvYWREZWNp
ZGVEZXN0aW5hdGlvbjsKIApAQCAtMjY0LDggKzI1Myw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b3dubG9hZF9jbGFzc19pbml0KFdlYktpdERvd25sb2FkQ2xhc3MqIGRvd25sb2FkQ2xhc3MpCiAg
ICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fU1RSSU5HLAogICAg
ICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCiAgICAgICAgICAgICAgICAgICAg
ICBHX1RZUEVfU1RSSU5HKTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShkb3dubG9h
ZENsYXNzLCBzaXplb2YoV2ViS2l0RG93bmxvYWRQcml2YXRlKSk7CiB9CiAKIFdlYktpdERvd25s
b2FkKiB3ZWJraXREb3dubG9hZENyZWF0ZShEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAKaW5kZXggMTg0N2I5Ni4uZDUwNTMzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCkBAIC01MiwxNCArNTIsNyBAQCBzdHJ1Y3QgX1dlYktpdEZhdmljb25EYXRhYmFzZVBy
aXZhdGUgewogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhZ2VVUkxUb0ljb25VUkxNYXA7
CiB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdEZhdmljb25EYXRhYmFzZSwgd2Via2l0X2Zhdmlj
b25fZGF0YWJhc2UsIEdfVFlQRV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdF9mYXZpY29u
X2RhdGFiYXNlX2luaXQoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBtYW5hZ2VyKQotewotICAgIFdl
YktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUobWFuYWdlciwgV0VCS0lUX1RZUEVfRkFWSUNPTl9EQVRBQkFTRSwgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlUHJpdmF0ZSk7Ci0gICAgbWFuYWdlci0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChw
cml2KSBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZ
UEUoV2ViS2l0RmF2aWNvbkRhdGFiYXNlLCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZSwgR19UWVBF
X09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlRGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCiB7CkBAIC03MiwxOCArNjUsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0RmF2
aWNvbkRhdGFiYXNlRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2Zhdmljb25fZGF0YWJhc2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwog
fQogCi1zdGF0aWMgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VGaW5hbGl6ZShHT2JqZWN0KiBv
YmplY3QpCi17Ci0gICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IFdFQktJVF9G
QVZJQ09OX0RBVEFCQVNFKG9iamVjdCk7Ci0gICAgZGF0YWJhc2UtPnByaXYtPn5XZWJLaXRGYXZp
Y29uRGF0YWJhc2VQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Zhdmljb25f
ZGF0YWJhc2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZv
aWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfY2xhc3NfaW5pdChXZWJLaXRGYXZpY29uRGF0YWJh
c2VDbGFzcyogZmF2aWNvbkRhdGFiYXNlQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnT2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhmYXZpY29uRGF0YWJhc2VDbGFzcyk7CiAgICAgZ09i
amVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0RmF2aWNvbkRhdGFiYXNlRGlzcG9zZTsKLSAgICBn
T2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0RmF2aWNvbkRhdGFiYXNlRmluYWxpemU7CiAK
ICAgICAvKioKICAgICAgKiBXZWJLaXRGYXZpY29uRGF0YWJhc2U6OmZhdmljb24tY2hhbmdlZDoK
QEAgLTEwOCw4ICs5Myw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2Ns
YXNzX2luaXQoV2ViS2l0RmF2aWNvbkRhdGFiYXNlQ2xhc3MqIGZhdmljCiAgICAgICAgICAgICBH
X1RZUEVfTk9ORSwgMiwKICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsCiAgICAgICAgICAgICBH
X1RZUEVfU1RSSU5HKTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShmYXZpY29uRGF0
YWJhc2VDbGFzcywgc2l6ZW9mKFdlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUpKTsKIH0KIAog
c3RydWN0IEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qu
Y3BwCmluZGV4IDI2YWI5OWIuLjg1YWUwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcApA
QCAtNTYsNyArNTYsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAqIFdlYktpdCB3aWxs
IHByb3ZpZGUgYSBkZWZhdWx0IGhhbmRsZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBydW4K
ICAqIGEgcmVndWxhciAjR3RrRmlsZUNob29zZXJEaWFsb2cgZm9yIHRoZSB1c2VyIHRvIGludGVy
YWN0IHdpdGguCiAgKi8KLUdfREVGSU5FX1RZUEUoV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LCB3
ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0cnVjdCBfV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPFdlYk9wZW5QYW5lbFBh
cmFtZXRlcnM+IHBhcmFtZXRlcnM7CkBAIC02Nyw2ICs2Niw4IEBAIHN0cnVjdCBfV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsKIH07CiAK
K1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QsIHdlYmtpdF9maWxl
X2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKwogZW51bSB7CiAgICAgUFJPUF8wLAog
ICAgIFBST1BfRklMVEVSLApAQCAtNzUsMTMgKzc2LDcgQEAgZW51bSB7CiAgICAgUFJPUF9TRUxF
Q1RFRF9GSUxFUywKIH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVz
dF9pbml0KFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICByZXF1ZXN0
LT5wcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9UWVBF
X0ZJTEVfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlKTsK
LSAgICBuZXcgKHJlcXVlc3QtPnByaXYpIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUo
KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RmluYWxpemUoR09i
amVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RGlzcG9z
ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1
ZXN0ID0gV0VCS0lUX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CiAKQEAgLTg5LDggKzg0
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RmluYWxpemUoR09iamVj
dCogb2JqZWN0KQogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QpCiAgICAg
ICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwocmVxdWVzdCk7CiAKLSAgICBy
ZXF1ZXN0LT5wcml2LT5+V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZSgpOwotICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maWxlX2Nob29zZXJf
cmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdEZpbGVDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCkBAIC0xMTgs
OSArMTEyLDggQEAgc3RhdGljIHZvaWQgd2Via2l0RmlsZUNob29zZXJSZXF1ZXN0R2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEcKIHN0YXRpYyB2b2lkIHdlYmtpdF9m
aWxlX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdENs
YXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0g
d2Via2l0RmlsZUNob29zZXJSZXF1ZXN0RmluYWxpemU7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bv
c2UgPSB3ZWJraXRGaWxlQ2hvb3NlclJlcXVlc3REaXNwb3NlOwogICAgIG9iamVjdENsYXNzLT5n
ZXRfcHJvcGVydHkgPSB3ZWJraXRGaWxlQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eTsKLSAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0UHJpdmF0ZSkpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0OmZpbHRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAppbmRleCBiZTNmNTcxLi43ZTM2YTRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaW5k
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBfV2ViS2l0Rmlu
ZENvbnRyb2xsZXJQcml2YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdEZpbmRDb250cm9sbGVyLCB3ZWJraXRf
ZmluZF9jb250cm9sbGVyLCBHX1RZUEVfT0JKRUNUKQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dEZpbmRDb250cm9sbGVyLCB3ZWJraXRfZmluZF9jb250cm9sbGVyLCBHX1RZUEVfT0JKRUNUKQog
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9J
TlNFTlNJVElWRSwgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTLCBGaW5kT3B0
aW9uc0F0V29yZFN0YXJ0cyk7CkBAIC04NSwxMyArODUsNiBAQCBzdGF0aWMgdm9pZCBkaWRDb3Vu
dFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgdW5zaWdu
ZWQgbQogICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX0ZJTkRfQ09OVFJPTExFUihjbGllbnRJbmZv
KSwgc2lnbmFsc1tDT1VOVEVEX01BVENIRVNdLCAwLCBtYXRjaENvdW50KTsKIH0KIAotc3RhdGlj
IHZvaWQgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9pbml0KFdlYktpdEZpbmRDb250cm9sbGVyKiBm
aW5kQ29udHJvbGxlcikKLXsKLSAgICBXZWJLaXRGaW5kQ29udHJvbGxlclByaXZhdGUqIHByaXYg
PSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoZmluZENvbnRyb2xsZXIsIFdFQktJVF9UWVBF
X0ZJTkRfQ09OVFJPTExFUiwgV2ViS2l0RmluZENvbnRyb2xsZXJQcml2YXRlKTsKLSAgICBmaW5k
Q29udHJvbGxlci0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRGaW5kQ29udHJv
bGxlclByaXZhdGUoKTsKLX0KLQogc3RhdGljIGlubGluZSBXZWJQYWdlUHJveHkqIGdldFBhZ2Uo
V2ViS2l0RmluZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVyKQogewogICAgIHJldHVybiB3ZWJr
aXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+
KGZpbmRDb250cm9sbGVyLT5wcml2LT53ZWJWaWV3KSk7CkBAIC0xNDYsMjIgKzEzOSwxMiBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxlclNldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElkLCBjb25zdAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0Rmlu
ZENvbnRyb2xsZXJGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV0VCS0lUX0ZJTkRf
Q09OVFJPTExFUihvYmplY3QpLT5wcml2LT5+V2ViS2l0RmluZENvbnRyb2xsZXJQcml2YXRlKCk7
Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2ZpbmRfY29udHJvbGxlcl9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfZmluZF9jb250cm9s
bGVyX2NsYXNzX2luaXQoV2ViS2l0RmluZENvbnRyb2xsZXJDbGFzcyogZmluZENsYXNzKQogewog
ICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNz
KTsKLQogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJraXRGaW5kQ29udHJvbGxl
ckNvbnN0cnVjdGVkOwogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0Rmlu
ZENvbnRyb2xsZXJHZXRQcm9wZXJ0eTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9
IHdlYmtpdEZpbmRDb250cm9sbGVyU2V0UHJvcGVydHk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdEZpbmRDb250cm9sbGVyRmluYWxpemU7Ci0KLSAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoZmluZENsYXNzLCBzaXplb2YoV2ViS2l0RmluZENvbnRyb2xsZXJQcml2YXRl
KSk7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRGaW5kQ29udHJvbGxlcjp0ZXh0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZv
cm1TdWJtaXNzaW9uUmVxdWVzdC5jcHAKaW5kZXggZjkwMWU3My4uODE2Y2VlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Rm9ybVN1Ym1pc3Npb25S
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRG
b3JtU3VibWlzc2lvblJlcXVlc3QuY3BwCkBAIC0yOCw4ICsyOCw2IEBACiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0
LCB3ZWJraXRfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCi0KIHN0cnVj
dCBfV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPEltbXV0
YWJsZURpY3Rpb25hcnk+IHdlYlZhbHVlczsKICAgICBSZWZQdHI8V2ViRm9ybVN1Ym1pc3Npb25M
aXN0ZW5lclByb3h5PiBsaXN0ZW5lcjsKQEAgLTM3LDE0ICszNSw5IEBAIHN0cnVjdCBfV2ViS2l0
Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0ZSB7CiAgICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsK
IH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9pbml0KFdl
YktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBXZWJLaXRGb3JtU3Vi
bWlzc2lvblJlcXVlc3RQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF
KHJlcXVlc3QsIFdFQktJVF9UWVBFX0ZPUk1fU1VCTUlTU0lPTl9SRVFVRVNULCBXZWJLaXRGb3Jt
U3VibWlzc2lvblJlcXVlc3RQcml2YXRlKTsKLSAgICByZXF1ZXN0LT5wcml2ID0gcHJpdjsKLSAg
ICBuZXcgKHByaXYpIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdFByaXZhdGUoKTsKLX0KK1dF
QktJVF9ERUZJTkVfVFlQRShXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QsIHdlYmtpdF9mb3Jt
X3N1Ym1pc3Npb25fcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKIAotc3RhdGljIHZvaWQgd2Via2l0
Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0RmluYWxpemUoR09iamVjdCogb2JqZWN0KQorc3RhdGljIHZv
aWQgd2Via2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0ZPUk1f
U1VCTUlTU0lPTl9SRVFVRVNUKG9iamVjdCk7CiAKQEAgLTUyLDE1ICs0NSwxMyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRGb3JtU3VibWlzc2lvblJlcXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
CiAgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkKICAgICAgICAgd2Via2l0
X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0KTsKIAotICAgIHJlcXVlc3Qt
PnByaXYtPn5XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3RQcml2YXRlKCk7Ci0gICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Zvcm1fc3VibWlzc2lv
bl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0Rm9ybVN1
Ym1pc3Npb25SZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3Mq
IG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBvYmplY3RD
bGFzcy0+ZmluYWxpemUgPSB3ZWJraXRGb3JtU3VibWlzc2lvblJlcXVlc3RGaW5hbGl6ZTsKLSAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0Rm9y
bVN1Ym1pc3Npb25SZXF1ZXN0UHJpdmF0ZSkpOworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0g
d2Via2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKIH0KIAogV2ViS2l0Rm9ybVN1Ym1p
c3Npb25SZXF1ZXN0KiB3ZWJraXRGb3JtU3VibWlzc2lvblJlcXVlc3RDcmVhdGUoSW1tdXRhYmxl
RGljdGlvbmFyeSogdmFsdWVzLCBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkqIGxpc3Rl
bmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAppbmRleCA2
NjQyOTM3Li5mNzgwZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmNwcApAQCAtMzYsMTYgKzM2LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgKiBw
ZXJtaXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIFdlYktpdCBzaG91bGQgcHJvdmlkZSB0aGUgdXNl
cidzCiAgKiBsb2NhdGlvbiB0byBhIHdlYnNpdGUgd2hlbiByZXF1ZXN0ZWQgdGhyb3VnaHQgdGhl
IEdlb2xvY2F0aW9uIEFQSS4KICAqLworCiBzdGF0aWMgdm9pZCB3ZWJraXRfcGVybWlzc2lvbl9y
ZXF1ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0SWZhY2UqKTsKLUdf
REVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qs
IHdlYmtpdF9nZW9sb2NhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVf
UEVSTUlTU0lPTl9SRVFVRVNULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9wZXJtaXNzaW9uX3JlcXVlc3RfaW50ZXJmYWNlX2luaXQpKQogCiBz
dHJ1Y3QgX1dlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlIHsKICAgICBS
ZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0OwogICAgIGJv
b2wgbWFkZURlY2lzaW9uOwogfTsKIAorV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERSgKKyAg
ICBXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LCB3ZWJraXRfZ2VvbG9jYXRpb25f
cGVybWlzc2lvbl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNULAorICAgIEdfSU1QTEVNRU5UX0lOVEVS
RkFDRShXRUJLSVRfVFlQRV9QRVJNSVNTSU9OX1JFUVVFU1QsIHdlYmtpdF9wZXJtaXNzaW9uX3Jl
cXVlc3RfaW50ZXJmYWNlX2luaXQpKQorCiBzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0QWxsb3coV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgQVNTRVJUKFdFQktJVF9JU19HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVx
dWVzdCkpOwpAQCAtODAsMjkgKzgyLDE3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9wZXJtaXNzaW9u
X3JlcXVlc3RfaW50ZXJmYWNlX2luaXQoV2ViS2l0UGVybWlzc2lvblJlcXVlc3RJZmFjCiAgICAg
aWZhY2UtPmRlbnkgPSB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGVueTsKIH0K
IAotc3RhdGljIHZvaWQgd2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9pbml0
KFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgdm9p
ZCB3ZWJraXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgcmVxdWVzdC0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShy
ZXF1ZXN0LCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QsIFdlYktp
dEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKTsKLSAgICBuZXcgKHJlcXVlc3Qt
PnByaXYpIFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKCk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGaW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCi17Ci0gICAgV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFByaXZhdGUqIHByaXYgPSBXRUJLSVRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKG9i
amVjdCktPnByaXY7Ci0KICAgICAvLyBEZWZhdWx0IGJlaGF2aW91ciB3aGVuIG5vIGRlY2lzaW9u
IGhhcyBiZWVuIG1hZGUgaXMgZGVueWluZyB0aGUgcmVxdWVzdC4KLSAgICBpZiAoIXByaXYtPm1h
ZGVEZWNpc2lvbikKLSAgICAgICAgcHJpdi0+cmVxdWVzdC0+ZGVueSgpOwotCi0gICAgcHJpdi0+
fldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlKCk7Ci0gICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworICAgIHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3REZW55KFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqZWN0KSk7CisgICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2dlb2xvY2F0aW9uX3Blcm1pc3Npb25fcmVxdWVzdF9wYXJlbnRfY2xh
c3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9nZW9sb2NhdGlv
bl9wZXJtaXNzaW9uX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Q2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Vi
a2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZpbmFsaXplOwotICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RQcml2YXRlKSk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0RGlzcG9zZTsKIH0KIAogV2ViS2l0R2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCogd2Via2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuY3Bw
CmluZGV4IDRjOTQ4NjcuLjhkZjI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwCkBAIC03NCwxMyArNzQs
NyBAQCBzdHJ1Y3QgX1dlYktpdEhpdFRlc3RSZXN1bHRQcml2YXRlIHsKICAgICBDU3RyaW5nIG1l
ZGlhVVJJOwogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRIaXRUZXN0UmVzdWx0LCB3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0LCBHX1RZUEVfT0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRIaXRU
ZXN0UmVzdWx0RmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9ISVRfVEVT
VF9SRVNVTFQob2JqZWN0KS0+cHJpdi0+fldlYktpdEhpdFRlc3RSZXN1bHRQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOwotfQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEhpdFRlc3RSZXN1
bHQsIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHQsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lk
IHdlYmtpdEhpdFRlc3RSZXN1bHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewpAQCAtMTM4LDE5
ICsxMzIsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0SGl0VGVzdFJlc3VsdFNldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdAogICAgIH0KIH0KIAotc3RhdGljIHZv
aWQgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pbml0KFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRl
c3RSZXN1bHQpCi17Ci0gICAgV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUqIHByaXYgPSBHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoaGl0VGVzdFJlc3VsdCwgV0VCS0lUX1RZUEVfSElUX1RF
U1RfUkVTVUxULCBXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZSk7Ci0gICAgaGl0VGVzdFJlc3Vs
dC0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0
ZSgpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQo
V2ViS2l0SGl0VGVzdFJlc3VsdENsYXNzKiBoaXRUZXN0UmVzdWx0Q2xhc3MpCiB7CiAgICAgR09i
amVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGhpdFRlc3RSZXN1bHRDbGFz
cyk7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEhpdFRlc3RSZXN1bHRH
ZXRQcm9wZXJ0eTsKICAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0SGl0VGVz
dFJlc3VsdFNldFByb3BlcnR5OwotICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdEhp
dFRlc3RSZXN1bHRGaW5hbGl6ZTsKIAogICAgIEdQYXJhbUZsYWdzIHBhcmFtRmxhZ3MgPSBzdGF0
aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpOwogCkBAIC0yMzMsOCArMjE5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1bHRDbGFzcyogaGl0VGVz
dFIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXygiVGhlIG1lZGlhIFVSSSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUZsYWdzKSk7Ci0KLSAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoaGl0VGVzdFJlc3VsdENsYXNzLCBzaXplb2YoV2ViS2l0SGl0VGVzdFJl
c3VsdFByaXZhdGUpKTsKIH0KIAogV2ViS2l0SGl0VGVzdFJlc3VsdCogd2Via2l0SGl0VGVzdFJl
c3VsdENyZWF0ZShXZWJIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbi5jcHAKaW5kZXggMDkwMWQ4MC4uZGVlZjUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24uY3BwCkBAIC00Myw4ICs0Myw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogICogdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBieSBhIG1v
dXNlIGV2ZW50LgogICovCiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uLCB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24sIFdFQktJVF9UWVBFX1BP
TElDWV9ERUNJU0lPTikKLQogc3RydWN0IF9XZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Q
cml2YXRlIHsKICAgICBXZWJLaXROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZTsKICAgICB1
bnNpZ25lZCBtb2RpZmllcnM7CkBAIC01Myw2ICs1MSw4IEBAIHN0cnVjdCBfV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBmcmFtZU5hbWU7CiB9Owog
CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCB3ZWJr
aXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24sIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lP
TikKKwogZW51bSB7CiAgICAgUFJPUF8wLAogICAgIFBST1BfTkFWSUdBVElPTl9UWVBFLApAQCAt
NjIsMTggKzYyLDYgQEAgZW51bSB7CiAgICAgUFJPUF9GUkFNRV9OQU1FLAogfTsKIAotc3RhdGlj
IHZvaWQgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKLXsKLSAgICBkZWNpc2lvbi0+cHJpdiA9IEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShkZWNpc2lvbiwgV0VCS0lUX1RZUEVfTkFWSUdBVElP
Tl9QT0xJQ1lfREVDSVNJT04sIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUp
OwotICAgIG5ldyAoZGVjaXNpb24tPnByaXYpIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
blByaXZhdGUoKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdFQktJVF9OQVZJR0FUSU9OX1BP
TElDWV9ERUNJU0lPTihvYmplY3QpLT5wcml2LT5+V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uUHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCiBzdGF0aWMg
dm9pZCB3ZWJraXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25HZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVj
KQogewogICAgIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiogZGVjaXNpb24gPSBXRUJL
SVRfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KTsKQEAgLTEwMiw5ICs5MCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkdldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvCiBzdGF0aWMgdm9pZCB3ZWJraXRfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25D
bGFzcyogZGVjaXNpb25DbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1MoZGVjaXNpb25DbGFzcyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uRmluYWxpemU7CiAgICAgb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkdldFByb3Bl
cnR5OwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2Yo
V2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uUHJpdmF0ZSkpOwogCiAgICAgLyoqCiAgICAg
ICogV2ViS2l0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uOm5hdmlnYXRpb24tdHlwZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwCmluZGV4
IGFmZjY1MWEuLjBkZDExMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UGx1Z2luLmNwcApAQCAtMjcsNiArMjcsMTEgQEAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0UGx1Z2luUHJpdmF0ZSB7CisgICAgfl9XZWJLaXRQ
bHVnaW5Qcml2YXRlKCkKKyAgICB7CisgICAgICAgIGdfbGlzdF9mcmVlX2Z1bGwobWltZUluZm9M
aXN0LCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3ZWJraXRfbWltZV9pbmZvX3Vu
cmVmKSk7CisgICAgfQorCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW5JbmZvOwogICAgIENT
dHJpbmcgbmFtZTsKICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uOwpAQCAtMzQsMjkgKzM5LDEwIEBA
IHN0cnVjdCBfV2ViS2l0UGx1Z2luUHJpdmF0ZSB7CiAgICAgR0xpc3QqIG1pbWVJbmZvTGlzdDsK
IH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0UGx1Z2luLCB3ZWJraXRfcGx1Z2luLCBHX1RZUEVf
T0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRQbHVnaW5GaW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCi17Ci0gICAgV2ViS2l0UGx1Z2luUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9QTFVHSU4ob2Jq
ZWN0KS0+cHJpdjsKLSAgICBnX2xpc3RfZnJlZV9mdWxsKHByaXYtPm1pbWVJbmZvTGlzdCwgcmVp
bnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4od2Via2l0X21pbWVfaW5mb191bnJlZikpOwot
ICAgIHByaXYtPn5XZWJLaXRQbHVnaW5Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3BsdWdpbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQotCi1zdGF0aWMg
dm9pZCB3ZWJraXRfcGx1Z2luX2luaXQoV2ViS2l0UGx1Z2luKiBwbHVnaW4pCi17Ci0gICAgV2Vi
S2l0UGx1Z2luUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShwbHVn
aW4sIFdFQktJVF9UWVBFX1BMVUdJTiwgV2ViS2l0UGx1Z2luUHJpdmF0ZSk7Ci0gICAgcGx1Z2lu
LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFBsdWdpblByaXZhdGUoKTsKLX0K
K1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRQbHVnaW4sIHdlYmtpdF9wbHVnaW4sIEdfVFlQRV9P
QkpFQ1QpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9wbHVnaW5fY2xhc3NfaW5pdChXZWJLaXRQbHVn
aW5DbGFzcyogcGx1Z2luQ2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhwbHVnaW5DbGFzcyk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdFBsdWdpbkZpbmFsaXplOwotCi0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KHBsdWdpbkNsYXNzLCBzaXplb2YoV2ViS2l0UGx1Z2luUHJpdmF0ZSkpOwogfQogCiBXZWJLaXRQ
bHVnaW4qIHdlYmtpdFBsdWdpbkNyZWF0ZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5J
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UG9saWN5RGVjaXNpb24uY3BwCmluZGV4IDNlOWVmM2YuLmVlNDRlYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNp
c2lvbi5jcHAKQEAgLTQxLDMwICs0MSwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICog
Y29tcGxldGVzLiBUbyBtYWtlIGEgcG9saWN5IGRlY2lzaW9uIGFzeW5jaHJvbm91c2x5LCBzaW1w
bHkgaW5jcmVtZW50CiAgKiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSAjV2ViS2l0UG9saWN5
RGVjaXNpb24gb2JqZWN0LgogICovCi1HX0RFRklORV9BQlNUUkFDVF9UWVBFKFdlYktpdFBvbGlj
eURlY2lzaW9uLCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBzdHJ1
Y3QgX1dlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZSB7CiAgICAgUmVmUHRyPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXI7CiAgICAgYm9vbCBtYWRlUG9saWN5RGVjaXNpb247
CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2luaXQoV2ViS2l0UG9s
aWN5RGVjaXNpb24qIGRlY2lzaW9uKQotewotICAgIGRlY2lzaW9uLT5wcml2ID0gR19UWVBFX0lO
U1RBTkNFX0dFVF9QUklWQVRFKGRlY2lzaW9uLCBXRUJLSVRfVFlQRV9QT0xJQ1lfREVDSVNJT04s
IFdlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZSk7Ci0gICAgbmV3IChkZWNpc2lvbi0+cHJpdikg
V2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Ci0gICAgZGVjaXNpb24tPnByaXYtPm1hZGVQ
b2xpY3lEZWNpc2lvbiA9IGZhbHNlOwotfQorV0VCS0lUX0RFRklORV9BQlNUUkFDVF9UWVBFKFdl
YktpdFBvbGljeURlY2lzaW9uLCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uLCBHX1RZUEVfT0JKRUNU
KQogCi1zdGF0aWMgdm9pZCB3ZWJraXRQb2xpY3lEZWNpc2lvbkZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKK3N0YXRpYyB2b2lkIHdlYmtpdFBvbGljeURlY2lzaW9uRGlzcG9zZShHT2JqZWN0KiBv
YmplY3QpCiB7Ci0gICAgIFdlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KS0+cHJpdjsKLQotICAgIC8vIFRoaXMgaXMgdGhlIGRl
ZmF1bHQgY2hvaWNlIGZvciBhbGwgcG9saWN5IGRlY2lzaW9ucyBpbiBXZWJQYWdlUHJveHkuY3Bw
LgotICAgIGlmICghcHJpdi0+bWFkZVBvbGljeURlY2lzaW9uKQotICAgICAgICBwcml2LT5saXN0
ZW5lci0+dXNlKCk7Ci0KLSAgICBwcml2LT5+V2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlKCk7
Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOworICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlKFdFQktJ
VF9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KSk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3Bv
bGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CiB9CiAKIHZvaWQg
d2Via2l0UG9saWN5RGVjaXNpb25TZXRMaXN0ZW5lcihXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVj
aXNpb24sIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCkBAIC03NSw4ICs2
Myw3IEBAIHZvaWQgd2Via2l0UG9saWN5RGVjaXNpb25TZXRMaXN0ZW5lcihXZWJLaXRQb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24sIFdlYkZyYW1lUG9sCiBzdGF0aWMgdm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2NsYXNzX2luaXQoV2ViS2l0UG9saWN5RGVjaXNpb25DbGFzcyogZGVjaXNpb25D
bGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
ZGVjaXNpb25DbGFzcyk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0UG9saWN5
RGVjaXNpb25GaW5hbGl6ZTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZGVjaXNpb25D
bGFzcywgc2l6ZW9mKFdlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZSkpOworICAgIG9iamVjdENs
YXNzLT5kaXNwb3NlID0gd2Via2l0UG9saWN5RGVjaXNpb25EaXNwb3NlOwogfQogCiAvKioKQEAg
LTg4LDYgKzc1LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fY2xhc3Nf
aW5pdChXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzKiBkZWNpc2lvCiB2b2lkIHdlYmtpdF9wb2xp
Y3lfZGVjaXNpb25fdXNlKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKIHsKICAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKwor
ICAgIGlmIChkZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9uKQorICAgICAgICByZXR1
cm47CisKICAgICBkZWNpc2lvbi0+cHJpdi0+bGlzdGVuZXItPnVzZSgpOwogICAgIGRlY2lzaW9u
LT5wcml2LT5tYWRlUG9saWN5RGVjaXNpb24gPSB0cnVlOwogfQpAQCAtMTAyLDYgKzkzLDEwIEBA
IHZvaWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRl
Y2lzaW9uKQogdm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShXZWJLaXRQb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24pCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfUE9M
SUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisKKyAgICBpZiAoZGVjaXNpb24tPnByaXYtPm1hZGVQ
b2xpY3lEZWNpc2lvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgZGVjaXNpb24tPnByaXYtPmxp
c3RlbmVyLT5pZ25vcmUoKTsKICAgICBkZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9u
ID0gdHJ1ZTsKIH0KQEAgLTExNSw2ICsxMTAsMTAgQEAgdm9pZCB3ZWJraXRfcG9saWN5X2RlY2lz
aW9uX2lnbm9yZShXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiB2b2lkIHdlYmtpdF9w
b2xpY3lfZGVjaXNpb25fZG93bmxvYWQoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1BPTElDWV9ERUNJU0lPTihkZWNpc2lv
bikpOworCisgICAgaWYgKGRlY2lzaW9uLT5wcml2LT5tYWRlUG9saWN5RGVjaXNpb24pCisgICAg
ICAgIHJldHVybjsKKwogICAgIGRlY2lzaW9uLT5wcml2LT5saXN0ZW5lci0+ZG93bmxvYWQoKTsK
ICAgICBkZWNpc2lvbi0+cHJpdi0+bWFkZVBvbGljeURlY2lzaW9uID0gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3BlcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3Bl
cmF0aW9uLmNwcAppbmRleCA3ZGEwYjE5Li42YjcyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwCkBA
IC01NCw2ICs1NCwxMSBAQCBlbnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0UHJpbnRPcGVyYXRp
b25Qcml2YXRlIHsKKyAgICB+X1dlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSgpCisgICAgewor
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qod2ViVmlldywgd2ViVmlld0Rlc3Ry
b3llZElkKTsKKyAgICB9CisKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OwogICAgIGd1bG9u
ZyB3ZWJWaWV3RGVzdHJveWVkSWQ7CiAKQEAgLTYzLDE2ICs2OCw3IEBAIHN0cnVjdCBfV2ViS2l0
UHJpbnRPcGVyYXRpb25Qcml2YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdO
QUxdID0geyAwLCB9OwogCi1HX0RFRklORV9UWVBFKFdlYktpdFByaW50T3BlcmF0aW9uLCB3ZWJr
aXRfcHJpbnRfb3BlcmF0aW9uLCBHX1RZUEVfT0JKRUNUKQotCi1zdGF0aWMgdm9pZCB3ZWJraXRQ
cmludE9wZXJhdGlvbkZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUqIHByaXYgPSBXRUJLSVRfUFJJTlRfT1BFUkFUSU9OKG9iamVjdCkt
PnByaXY7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYtPndlYlZpZXcsIHBy
aXYtPndlYlZpZXdEZXN0cm95ZWRJZCk7Ci0KLSAgICBwcml2LT5+V2ViS2l0UHJpbnRPcGVyYXRp
b25Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3ByaW50X29wZXJhdGlvbl9w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQorV0VCS0lUX0RFRklORV9UWVBFKFdl
YktpdFByaW50T3BlcmF0aW9uLCB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uLCBHX1RZUEVfT0JKRUNU
KQogCiBzdGF0aWMgdm9pZCB3ZWJWaWV3RGVzdHJveWVkKEd0a1dpZGdldCogd2ViVmlldywgR09i
amVjdCogcHJpbnRPcGVyYXRpb24pCiB7CkBAIC0xMjgsMTcgKzEyNCw5IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFByaW50T3BlcmF0aW9uU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wSWQsIGNvbnN0CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfcHJpbnRfb3BlcmF0
aW9uX2luaXQoV2ViS2l0UHJpbnRPcGVyYXRpb24qIHByaW50T3BlcmF0aW9uKQotewotICAgIFdl
YktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShwcmludE9wZXJhdGlvbiwgV0VCS0lUX1RZUEVfUFJJTlRfT1BFUkFUSU9OLCBXZWJLaXRQ
cmludE9wZXJhdGlvblByaXZhdGUpOwotICAgIHByaW50T3BlcmF0aW9uLT5wcml2ID0gcHJpdjsK
LSAgICBuZXcgKHByaXYpIFdlYktpdFByaW50T3BlcmF0aW9uUHJpdmF0ZSgpOwotfQotCiBzdGF0
aWMgdm9pZCB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2NsYXNzX2luaXQoV2ViS2l0UHJpbnRPcGVy
YXRpb25DbGFzcyogcHJpbnRPcGVyYXRpb25DbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdP
YmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHByaW50T3BlcmF0aW9uQ2xhc3MpOwotICAgIGdP
YmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRQcmludE9wZXJhdGlvbkZpbmFsaXplOwogICAg
IGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJraXRQcmludE9wZXJhdGlvbkNvbnN0cnVj
dGVkOwogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0UHJpbnRPcGVyYXRp
b25HZXRQcm9wZXJ0eTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFBy
aW50T3BlcmF0aW9uU2V0UHJvcGVydHk7CkBAIC0yMTMsOCArMjAxLDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3ByaW50X29wZXJhdGlvbl9jbGFzc19pbml0KFdlYktpdFByaW50T3BlcmF0aW9uQ2xh
c3MqIHByaW50T3AKICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lE
X19QT0lOVEVSLAogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAg
ICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUocHJpbnRPcGVyYXRpb25DbGFzcywgc2l6ZW9mKFdlYktpdFByaW50T3BlcmF0aW9uUHJp
dmF0ZSkpOwogfQogCiAjaWZkZWYgSEFWRV9HVEtfVU5JWF9QUklOVElORwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDVhYWJjYmMu
LmJlMzllODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcml2YXRlLmgKQEAgLTY2LDYgKzY2LDU3IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3kjI3N0cnVj
dE5hbWUoc3RydWN0TmFtZSogZGF0YSkgXAogICAgIGdfc2xpY2VfZnJlZShzdHJ1Y3ROYW1lLCBk
YXRhKTsgXAogfQogCisjZGVmaW5lIFdFQktJVF9ERUZJTkVfVFlQRShUeXBlTmFtZSwgdHlwZV9u
YW1lLCBUWVBFX1BBUkVOVCkgX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRChUeXBlTmFtZSwg
dHlwZV9uYW1lLCBUWVBFX1BBUkVOVCwgMCwgeyB9KQorI2RlZmluZSBXRUJLSVRfREVGSU5FX0FC
U1RSQUNUX1RZUEUoVHlwZU5hbWUsIHR5cGVfbmFtZSwgVFlQRV9QQVJFTlQpIF9XRUJLSVRfREVG
SU5FX1RZUEVfRVhURU5ERUQoVHlwZU5hbWUsIHR5cGVfbmFtZSwgVFlQRV9QQVJFTlQsIEdfVFlQ
RV9GTEFHX0FCU1RSQUNULCB7IH0pCisjZGVmaW5lIFdFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NP
REUoVHlwZU5hbWUsIHR5cGVfbmFtZSwgVFlQRV9QQVJFTlQsIENvZGUpIF9XRUJLSVRfREVGSU5F
X1RZUEVfRVhURU5ERURfQkVHSU4oVHlwZU5hbWUsIHR5cGVfbmFtZSwgVFlQRV9QQVJFTlQsIDAp
IHtDb2RlO30gX1dFQktJVF9ERUZJTkVfVFlQRV9FWFRFTkRFRF9FTkQoKQorCisjZGVmaW5lIF9X
RUJLSVRfREVGSU5FX1RZUEVfRVhURU5ERUQoVHlwZU5hbWUsIHR5cGVfbmFtZSwgVFlQRV9QQVJF
TlQsIGZsYWdzLCBDb2RlKSBfV0VCS0lUX0RFRklORV9UWVBFX0VYVEVOREVEX0JFR0lOKFR5cGVO
YW1lLCB0eXBlX25hbWUsIFRZUEVfUEFSRU5ULCBmbGFncykge0NvZGU7fSBfV0VCS0lUX0RFRklO
RV9UWVBFX0VYVEVOREVEX0VORCgpCisjZGVmaW5lIF9XRUJLSVRfREVGSU5FX1RZUEVfRVhURU5E
RURfQkVHSU4oVHlwZU5hbWUsIHR5cGVfbmFtZSwgVFlQRV9QQVJFTlQsIGZsYWdzKSBcCitcCitz
dGF0aWMgdm9pZCB0eXBlX25hbWUjI19jbGFzc19pbml0KFR5cGVOYW1lIyNDbGFzcyoga2xhc3Mp
OyBcCitzdGF0aWMgZ3BvaW50ZXIgdHlwZV9uYW1lIyNfcGFyZW50X2NsYXNzID0gMDsgXAorc3Rh
dGljIHZvaWQgdHlwZV9uYW1lIyNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KSBcCit7IFwKKyAg
ICBUeXBlTmFtZSogc2VsZiA9IChUeXBlTmFtZSopb2JqZWN0OyBcCisgICAgc2VsZi0+cHJpdi0+
flR5cGVOYW1lIyNQcml2YXRlKCk7IFwKKyAgICBHX09CSkVDVF9DTEFTUyh0eXBlX25hbWUjI19w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOyBcCit9IFwKK1wKK3N0YXRpYyB2b2lkIHR5
cGVfbmFtZSMjX2NsYXNzX2ludGVybl9pbml0KGdwb2ludGVyIGtsYXNzKSBcCit7IFwKKyAgICBH
T2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsgXAorICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFR5cGVOYW1lIyNQcml2YXRl
KSk7IFwKKyAgICB0eXBlX25hbWUjI19wYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVla19w
YXJlbnQoa2xhc3MpOyBcCisgICAgdHlwZV9uYW1lIyNfY2xhc3NfaW5pdCgoVHlwZU5hbWUjI0Ns
YXNzKilrbGFzcyk7IFwKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gdHlwZV9uYW1lIyNf
ZmluYWxpemU7IFwKK30gXAorXAorc3RhdGljIHZvaWQgdHlwZV9uYW1lIyNfaW5pdChUeXBlTmFt
ZSogc2VsZikgXAoreyBcCisgICAgVHlwZU5hbWUjI1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5T
VEFOQ0VfR0VUX1BSSVZBVEUoc2VsZiwgdHlwZV9uYW1lIyNfZ2V0X3R5cGUoKSwgVHlwZU5hbWUj
I1ByaXZhdGUpOyBcCisgICAgc2VsZi0+cHJpdiA9IHByaXY7IFwKKyAgICBuZXcgKHByaXYpIFR5
cGVOYW1lIyNQcml2YXRlKCk7IFwKK31cCitHVHlwZSB0eXBlX25hbWUjI19nZXRfdHlwZSh2b2lk
KSBcCit7IFwKKyAgICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgZ19kZWZpbmVfdHlwZV9pZF9fdm9s
YXRpbGUgPSAwOyBcCisgICAgaWYgKGdfb25jZV9pbml0X2VudGVyKCZnX2RlZmluZV90eXBlX2lk
X192b2xhdGlsZSkpIHsgXAorICAgICAgICBHVHlwZSBnX2RlZmluZV90eXBlX2lkID0gXAorICAg
ICAgICAgICAgZ190eXBlX3JlZ2lzdGVyX3N0YXRpY19zaW1wbGUoIFwKKyAgICAgICAgICAgICAg
ICBUWVBFX1BBUkVOVCwgXAorICAgICAgICAgICAgICAgIGdfaW50ZXJuX3N0YXRpY19zdHJpbmco
I1R5cGVOYW1lKSwgXAorICAgICAgICAgICAgICAgIHNpemVvZihUeXBlTmFtZSMjQ2xhc3MpLCBc
CisgICAgICAgICAgICAgICAgKEdDbGFzc0luaXRGdW5jKXR5cGVfbmFtZSMjX2NsYXNzX2ludGVy
bl9pbml0LCBcCisgICAgICAgICAgICAgICAgc2l6ZW9mKFR5cGVOYW1lKSwgXAorICAgICAgICAg
ICAgICAgIChHSW5zdGFuY2VJbml0RnVuYyl0eXBlX25hbWUjI19pbml0LCBcCisgICAgICAgICAg
ICAgICAgKEdUeXBlRmxhZ3MpZmxhZ3MpOyBcCisgICAgICAgIC8vIEN1c3RvbSBjb2RlIGZvbGxv
d3MuCisjZGVmaW5lIF9XRUJLSVRfREVGSU5FX1RZUEVfRVhURU5ERURfRU5EKCkgXAorICAgICAg
ICBnX29uY2VfaW5pdF9sZWF2ZSgmZ19kZWZpbmVfdHlwZV9pZF9fdm9sYXRpbGUsIGdfZGVmaW5l
X3R5cGVfaWQpOyBcCisgICAgfSBcCisgICAgcmV0dXJuIGdfZGVmaW5lX3R5cGVfaWRfX3ZvbGF0
aWxlOyBcCit9IC8vIENsb3NlcyB0eXBlX25hbWUjI19nZXRfdHlwZSgpLgorCiB1bnNpZ25lZCB3
a0V2ZW50TW9kaWZpZXJzVG9HZGtNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyk7CiB1bnNpZ25l
ZCB3a0V2ZW50TW91c2VCdXR0b25Ub1dlYktpdE1vdXNlQnV0dG9uKFdLRXZlbnRNb3VzZUJ1dHRv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKaW5kZXggYWI1ZjM4Yy4uM2E3
NWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTQ0LDMxICs0NCwy
MCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICogd2hldGhlciBvciBub3QgdG8gZG93bmxv
YWQgYSBwYXJ0aWN1bGFyIHJlc291cmNlIG9yIHRvIGxvYWQgaXQKICAqIG5vcm1hbGx5LgogICov
Ci1HX0RFRklORV9UWVBFKFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24sIHdlYmtpdF9yZXNw
b25zZV9wb2xpY3lfZGVjaXNpb24sIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJU0lPTikKIAogc3Ry
dWN0IF9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxX
ZWJLaXRVUklSZXF1ZXN0PiByZXF1ZXN0OwogICAgIEdSZWZQdHI8V2ViS2l0VVJJUmVzcG9uc2U+
IHJlc3BvbnNlOwogfTsKIAorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFJlc3BvbnNlUG9saWN5
RGVjaXNpb24sIHdlYmtpdF9yZXNwb25zZV9wb2xpY3lfZGVjaXNpb24sIFdFQktJVF9UWVBFX1BP
TElDWV9ERUNJU0lPTikKKwogZW51bSB7CiAgICAgUFJPUF8wLAogICAgIFBST1BfUkVRVUVTVCwK
ICAgICBQUk9QX1JFU1BPTlNFLAogfTsKIAotc3RhdGljIHZvaWQgd2Via2l0X3Jlc3BvbnNlX3Bv
bGljeV9kZWNpc2lvbl9pbml0KFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24qIGRlY2lzaW9u
KQotewotICAgIGRlY2lzaW9uLT5wcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGRl
Y2lzaW9uLCBXRUJLSVRfVFlQRV9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04sIFdlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKTsKLSAgICBuZXcgKGRlY2lzaW9uLT5wcml2KSBXZWJL
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uUHJpdmF0ZSgpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJr
aXRSZXNwb25zZVBvbGljeURlY2lzaW9uRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAg
IFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KS0+cHJpdi0+fldlYktpdFJl
c3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRSZXNwb25zZVBvbGljeURlY2lzaW9uR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBhcmFtU3BlYykKIHsKICAgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbiA9IFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04ob2JqZWN0KTsKQEAgLTg4LDkg
Kzc3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkdldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcEkKIHN0YXRpYyB2b2lkIHdlYmtpdF9yZXNw
b25zZV9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChXZWJLaXRSZXNwb25zZVBvbGljeURlY2lz
aW9uQ2xhc3MqIGRlY2lzaW9uQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGRlY2lzaW9uQ2xhc3MpOwotICAgIG9iamVjdENsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25GaW5hbGl6ZTsKICAgICBvYmplY3RD
bGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbkdldFByb3Bl
cnR5OwotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShkZWNpc2lvbkNsYXNzLCBzaXplb2Yo
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUpKTsKIAogICAgIC8qKgogICAgICAq
IFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb246cmVxdWVzdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5TWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3Bw
CmluZGV4IGQxNzBmY2YuLmNkODgwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcApAQCAtNDAsMjgg
KzQwLDEwIEBAIHN0cnVjdCBfV2ViS2l0U2VjdXJpdHlNYW5hZ2VyUHJpdmF0ZSB7CiAgICAgV2Vi
S2l0V2ViQ29udGV4dCogd2ViQ29udGV4dDsKIH07CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0U2Vj
dXJpdHlNYW5hZ2VyLCB3ZWJraXRfc2VjdXJpdHlfbWFuYWdlciwgR19UWVBFX09CSkVDVCkKLQot
c3RhdGljIHZvaWQgd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfaW5pdChXZWJLaXRTZWN1cml0eU1h
bmFnZXIqIG1hbmFnZXIpCi17Ci0gICAgV2ViS2l0U2VjdXJpdHlNYW5hZ2VyUHJpdmF0ZSogcHJp
diA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShtYW5hZ2VyLCBXRUJLSVRfVFlQRV9TRUNV
UklUWV9NQU5BR0VSLCBXZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlKTsKLSAgICBtYW5hZ2Vy
LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFNlY3VyaXR5TWFuYWdlclByaXZh
dGUoKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0U2VjdXJpdHlNYW5hZ2VyRmluYWxpemUoR09i
amVjdCogb2JqZWN0KQotewotICAgIFdlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUqIHByaXYg
PSBXRUJLSVRfU0VDVVJJVFlfTUFOQUdFUihvYmplY3QpLT5wcml2OwotICAgIHByaXYtPn5XZWJL
aXRTZWN1cml0eU1hbmFnZXJQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3Nl
Y3VyaXR5X21hbmFnZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KK1dFQktJ
VF9ERUZJTkVfVFlQRShXZWJLaXRTZWN1cml0eU1hbmFnZXIsIHdlYmtpdF9zZWN1cml0eV9tYW5h
Z2VyLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfc2VjdXJpdHlfbWFuYWdl
cl9jbGFzc19pbml0KFdlYktpdFNlY3VyaXR5TWFuYWdlckNsYXNzKiBrbGFzcykKIHsKLSAgICBH
T2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKLSAgICBn
T2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0U2VjdXJpdHlNYW5hZ2VyRmluYWxpemU7Ci0K
LSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRTZWN1cml0
eU1hbmFnZXJQcml2YXRlKSk7CiB9CiAKIFdlYktpdFNlY3VyaXR5TWFuYWdlciogd2Via2l0U2Vj
dXJpdHlNYW5hZ2VyQ3JlYXRlKFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5k
ZXggMDA1YWFhZS4uYmYxZWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtNDMsNiArNDMsMTkgQEAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKKyAgICBf
V2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKCkpCisgICAgeworICAgICAgICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZl
cmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgICAgIG1vbm9zcGFjZUZv
bnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRGb250RmFtaWx5KCkudXRmOCgpOworICAgICAg
ICBzZXJpZkZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+c2VyaWZGb250RmFtaWx5KCkudXRmOCgp
OworICAgICAgICBzYW5zU2VyaWZGb250RmFtaWx5ID0gcHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZv
bnRGYW1pbHkoKS51dGY4KCk7CisgICAgICAgIGN1cnNpdmVGb250RmFtaWx5ID0gcHJlZmVyZW5j
ZXMtPmN1cnNpdmVGb250RmFtaWx5KCkudXRmOCgpOworICAgICAgICBmYW50YXN5Rm9udEZhbWls
eSA9IHByZWZlcmVuY2VzLT5mYW50YXN5Rm9udEZhbWlseSgpLnV0ZjgoKTsKKyAgICAgICAgcGlj
dG9ncmFwaEZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+cGljdG9ncmFwaEZvbnRGYW1pbHkoKS51
dGY4KCk7CisgICAgICAgIGRlZmF1bHRDaGFyc2V0ID0gcHJlZmVyZW5jZXMtPmRlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lKCkudXRmOCgpOworICAgIH0KKwogICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNl
cz4gcHJlZmVyZW5jZXM7CiAgICAgQ1N0cmluZyBkZWZhdWx0Rm9udEZhbWlseTsKICAgICBDU3Ry
aW5nIG1vbm9zcGFjZUZvbnRGYW1pbHk7CkBAIC03NCw4ICs4Nyw3IEBAIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+
CiAgKi8KIAotCi1HX0RFRklORV9UWVBFKFdlYktpdFNldHRpbmdzLCB3ZWJraXRfc2V0dGluZ3Ms
IEdfVFlQRV9PQkpFQ1QpCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0U2V0dGluZ3MsIHdlYmtp
dF9zZXR0aW5ncywgR19UWVBFX09CSkVDVCkKIAogZW51bSB7CiAgICAgUFJPUF8wLApAQCAtNDA1
LDE4ICs0MTcsMTEgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWwKICAgICB9CiB9CiAKLXN0YXRp
YyB2b2lkIHdlYktpdFNldHRpbmdzRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdF
QktJVF9TRVRUSU5HUyhvYmplY3QpLT5wcml2LT5+V2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXpl
KG9iamVjdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdl
YktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwogICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3Bl
cnR5ID0gd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eTsKICAgICBnT2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYktpdFNldHRpbmdzR2V0UHJvcGVydHk7Ci0gICAgZ09iamVjdENsYXNzLT5m
aW5hbGl6ZSA9IHdlYktpdFNldHRpbmdzRmluYWxpemU7CiAKICAgICBHUGFyYW1GbGFncyByZWFk
V3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzID0gc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CiAKQEAgLTEwNjIsMjYgKzEw
NjcsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0
aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgdG8gZW5hYmxlIHNtb290aCBzY3JvbGxpbmci
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOwotCi0gICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0U2V0dGluZ3NQcml2YXRlKSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19pbml0KFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncykKLXsKLSAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5T
VEFOQ0VfR0VUX1BSSVZBVEUoc2V0dGluZ3MsIFdFQktJVF9UWVBFX1NFVFRJTkdTLCBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUpOwotICAgIHNldHRpbmdzLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHBy
aXYpIFdlYktpdFNldHRpbmdzUHJpdmF0ZSgpOwotCi0gICAgcHJpdi0+cHJlZmVyZW5jZXMgPSBX
ZWJQcmVmZXJlbmNlczo6Y3JlYXRlKCk7Ci0gICAgcHJpdi0+ZGVmYXVsdEZvbnRGYW1pbHkgPSBw
cml2LT5wcmVmZXJlbmNlcy0+c3RhbmRhcmRGb250RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYt
Pm1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+Zml4ZWRGb250RmFtaWx5
KCkudXRmOCgpOwotICAgIHByaXYtPnNlcmlmRm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2Vz
LT5zZXJpZkZvbnRGYW1pbHkoKS51dGY4KCk7Ci0gICAgcHJpdi0+c2Fuc1NlcmlmRm9udEZhbWls
eSA9IHByaXYtPnByZWZlcmVuY2VzLT5zYW5zU2VyaWZGb250RmFtaWx5KCkudXRmOCgpOwotICAg
IHByaXYtPmN1cnNpdmVGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPmN1cnNpdmVGb250
RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gcHJpdi0+cHJl
ZmVyZW5jZXMtPmZhbnRhc3lGb250RmFtaWx5KCkudXRmOCgpOwotICAgIHByaXYtPnBpY3RvZ3Jh
cGhGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPnBpY3RvZ3JhcGhGb250RmFtaWx5KCku
dXRmOCgpOwotICAgIHByaXYtPmRlZmF1bHRDaGFyc2V0ID0gcHJpdi0+cHJlZmVyZW5jZXMtPmRl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkudXRmOCgpOwotCiB9CiAKIHZvaWQgd2Via2l0U2V0dGlu
Z3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIFdlYlBhZ2VQ
cm94eSogcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VVJJUmVxdWVzdC5jcHAKaW5kZXggYzg4MmNiNy4uMTQ3ZDE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAK
QEAgLTMzLDE4ICszMywxMiBAQCBlbnVtIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LUdfREVGSU5FX1RZUEUoV2ViS2l0VVJJUmVxdWVzdCwgd2Via2l0X3VyaV9yZXF1ZXN0LCBHX1RZ
UEVfT0JKRUNUKQotCiBzdHJ1Y3QgX1dlYktpdFVSSVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0OwogICAgIENTdHJpbmcgdXJpOwog
fTsKIAotc3RhdGljIHZvaWQgd2Via2l0VVJJUmVxdWVzdEZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKLXsKLSAgICBXRUJLSVRfVVJJX1JFUVVFU1Qob2JqZWN0KS0+cHJpdi0+fldlYktpdFVSSVJl
cXVlc3RQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3VyaV9yZXF1ZXN0X3Bh
cmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2Vi
S2l0VVJJUmVxdWVzdCwgd2Via2l0X3VyaV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRVUklSZXF1ZXN0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKQEAgLTc1
LDggKzY5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0VVJJUmVxdWVzdFNldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmEKIHN0YXRpYyB2b2lkIHdlYmtpdF91
cmlfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVSSVJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNz
KQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1
ZXN0Q2xhc3MpOwotCi0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0VVJJUmVxdWVz
dEZpbmFsaXplOwogICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRVUklSZXF1
ZXN0R2V0UHJvcGVydHk7CiAgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFVS
SVJlcXVlc3RTZXRQcm9wZXJ0eTsKIApAQCAtOTEsMTUgKzgzLDYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3VyaV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0VVJJUmVxdWVzdENsYXNzKiByZXF1ZXN0
Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF8oIlRoZSBVUkkgdG8gd2hpY2ggdGhlIHJlcXVlc3Qgd2lsbCBiZSBtYWRlLiIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFS
QU1fQ09OU1RSVUNUX09OTFkpKSk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVx
dWVzdENsYXNzLCBzaXplb2YoV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUpKTsKLX0KLQotc3RhdGlj
IHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0X2luaXQoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkK
LXsKLSAgICBXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9H
RVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9VUklfUkVRVUVTVCwgV2ViS2l0VVJJUmVx
dWVzdFByaXZhdGUpOwotICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikg
V2ViS2l0VVJJUmVxdWVzdFByaXZhdGUoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5jcHAKaW5kZXggZDQ0
MDQxNC4uNTc2Y2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmNwcApAQCAtNDAsOCArNDAsNiBAQCBlbnVtIHsKICAg
ICBQUk9QX1NVR0dFU1RFRF9GSUxFTkFNRQogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRVUklS
ZXNwb25zZSwgd2Via2l0X3VyaV9yZXNwb25zZSwgR19UWVBFX09CSkVDVCkKLQogc3RydWN0IF9X
ZWJLaXRVUklSZXNwb25zZVByaXZhdGUgewogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VS
ZXNwb25zZTsKICAgICBDU3RyaW5nIHVyaTsKQEAgLTQ5LDExICs0Nyw3IEBAIHN0cnVjdCBfV2Vi
S2l0VVJJUmVzcG9uc2VQcml2YXRlIHsKICAgICBDU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwog
fTsKIAotc3RhdGljIHZvaWQgd2Via2l0VVJJUmVzcG9uc2VGaW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCi17Ci0gICAgV0VCS0lUX1VSSV9SRVNQT05TRShvYmplY3QpLT5wcml2LT5+V2ViS2l0VVJJ
UmVzcG9uc2VQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3VyaV9yZXNwb25z
ZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwotfQorV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdFVSSVJlc3BvbnNlLCB3ZWJraXRfdXJpX3Jlc3BvbnNlLCBHX1RZUEVfT0JKRUNUKQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRVUklSZXNwb25zZUdldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCiB7
CkBAIC04Myw4ICs3Nyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVJlc3BvbnNlR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSoKIHN0YXRpYyB2b2lkIHdl
YmtpdF91cmlfcmVzcG9uc2VfY2xhc3NfaW5pdChXZWJLaXRVUklSZXNwb25zZUNsYXNzKiByZXNw
b25zZUNsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhyZXNwb25zZUNsYXNzKTsKLQotICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dFVSSVJlc3BvbnNlRmluYWxpemU7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdl
YmtpdFVSSVJlc3BvbnNlR2V0UHJvcGVydHk7CiAKICAgICAvKioKQEAgLTE1MCwxNSArMTQyLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3VyaV9yZXNwb25zZV9jbGFzc19pbml0KFdlYktpdFVSSVJl
c3BvbnNlQ2xhc3MqIHJlc3BvbnNlQ2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmb3Ig
dGhlIFVSSSByZXNwb25zZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXNwb25zZUNsYXNzLCBzaXplb2YoV2ViS2l0VVJJUmVz
cG9uc2VQcml2YXRlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF91cmlfcmVzcG9uc2VfaW5p
dChXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UpCi17Ci0gICAgV2ViS2l0VVJJUmVzcG9uc2VQ
cml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlc3BvbnNlLCBXRUJL
SVRfVFlQRV9VUklfUkVTUE9OU0UsIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSk7Ci0gICAgcmVz
cG9uc2UtPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0VVJJUmVzcG9uc2VQcml2
YXRlKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBlMjU0MmU4Li5mNjU3
ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMzUsOCArMzUsNiBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGdSZWFkQnVmZmVyU2l6
ZSA9IDgxOTI7CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCwgd2Via2l0
X3VyaV9zY2hlbWVfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKLQogc3RydWN0IF9XZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dDsK
ICAgICBSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IHdlYlJlcXVlc3RNYW5hZ2Vy
OwpAQCAtNTMsMjQgKzUxLDEwIEBAIHN0cnVjdCBfV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZh
dGUgewogICAgIENTdHJpbmcgbWltZVR5cGU7CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2luaXQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKLXsK
LSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9VUklfU0NIRU1FX1JFUVVFU1QsIFdl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKTsKLSAgICByZXF1ZXN0LT5wcml2ID0gcHJpdjsK
LSAgICBuZXcgKHByaXYpIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
Ci17Ci0gICAgV0VCS0lUX1VSSV9TQ0hFTUVfUkVRVUVTVChvYmplY3QpLT5wcml2LT5+V2ViS2l0
VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19CitXRUJL
SVRfREVGSU5FX1RZUEUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCwgd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDbGFzcyogcmVxdWVzdENs
YXNzKQogewotICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhy
ZXF1ZXN0Q2xhc3MpOwotICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFVSSVNjaGVt
ZVJlcXVlc3RGaW5hbGl6ZTsKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENs
YXNzLCBzaXplb2YoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUpKTsKIH0KIAogV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShXZWJLaXRXZWJD
b250ZXh0KiB3ZWJDb250ZXh0LCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSogd2ViUmVxdWVz
dE1hbmFnZXIsIFdlYlVSTCogd2ViVVJMLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCB1
aW50NjRfdCByZXF1ZXN0SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDc3MDdjNzAuLjNkYmNmZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwCkBAIC0xMTQsMjUgKzExNCwxMSBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2
YXRlIHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCi1H
X0RFRklORV9UWVBFKFdlYktpdFdlYkNvbnRleHQsIHdlYmtpdF93ZWJfY29udGV4dCwgR19UWVBF
X09CSkVDVCkKLQotc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dEZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKLXsKLSAgICBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KS0+cHJpdi0+fldlYktp
dFdlYkNvbnRleHRQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9jb250
ZXh0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfY29udGV4dF9pbml0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCi17Ci0g
ICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUod2ViQ29udGV4dCwgV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsIFdlYktpdFdlYkNvbnRl
eHRQcml2YXRlKTsKLSAgICB3ZWJDb250ZXh0LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYp
IFdlYktpdFdlYkNvbnRleHRQcml2YXRlKCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
V2ViQ29udGV4dCwgd2Via2l0X3dlYl9jb250ZXh0LCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3Mq
IHdlYkNvbnRleHRDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHdlYkNvbnRleHRDbGFzcyk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdFdlYkNvbnRleHRGaW5hbGl6ZTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdl
YkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQ6CkBAIC0xNDksOCArMTM1LDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQoV2ViS2l0V2ViQ29udGV4dENsYXNzKiB3
ZWJDb250ZXh0Q2xhc3MKICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9W
T0lEX19PQkpFQ1QsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPV05MT0FEKTsKLQotICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZSh3ZWJDb250ZXh0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZSkpOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3Bv
aW50ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViSW5zcGVjdG9yLmNwcAppbmRleCBiNzg4ZjE3Li4zNzhhMWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5j
cHAKQEAgLTQ3LDE0ICs0NywxOSBAQCBlbnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0V2ViSW5z
cGVjdG9yUHJpdmF0ZSB7CisgICAgfl9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKCkKKyAgICB7
CisgICAgICAgIFdLSW5zcGVjdG9yU2V0SW5zcGVjdG9yQ2xpZW50R3RrKHRvQVBJKHdlYkluc3Bl
Y3Rvci5nZXQoKSksIDApOworICAgIH0KKwogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JQcm94eT4g
d2ViSW5zcGVjdG9yOwogICAgIENTdHJpbmcgaW5zcGVjdGVkVVJJOwogICAgIHVuc2lnbmVkIGF0
dGFjaGVkSGVpZ2h0OwogfTsKIAotc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYkluc3BlY3Rvciwgd2Via2l0X3dl
Yl9pbnNwZWN0b3IsIEdfVFlQRV9PQkpFQ1QpCiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0V2ViSW5z
cGVjdG9yLCB3ZWJraXRfd2ViX2luc3BlY3RvciwgR19UWVBFX09CSkVDVCkKK3N0YXRpYyBndWlu
dCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogc3RhdGljIHZvaWQgd2Via2l0V2Vi
SW5zcGVjdG9yR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKQEAgLTcyLDI5ICs3NywxMSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJJbnNwZWN0b3JHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BJZCwgR1ZhbHVlKgogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2Vi
SW5zcGVjdG9yRmluYWxpemUoR09iamVjdCogb2JqZWN0KQotewotICAgIFdlYktpdFdlYkluc3Bl
Y3RvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihvYmplY3QpLT5wcml2Owot
ICAgIFdLSW5zcGVjdG9yU2V0SW5zcGVjdG9yQ2xpZW50R3RrKHRvQVBJKHByaXYtPndlYkluc3Bl
Y3Rvci5nZXQoKSksIDApOwotICAgIHByaXYtPn5XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKCk7
Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9pbnNwZWN0b3JfcGFyZW50X2NsYXNzKS0+
ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jf
aW5pdChXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvcikKLXsKLSAgICBXZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGluc3BlY3Rv
ciwgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSk7
Ci0gICAgaW5zcGVjdG9yLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdlYktpdFdlYklu
c3BlY3RvclByaXZhdGUoKTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jf
Y2xhc3NfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcyogZmluZENsYXNzKQogewogICAgIEdP
YmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKLSAg
ICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViSW5zcGVjdG9yRmluYWxpemU7CiAg
ICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJJbnNwZWN0b3JHZXRQcm9w
ZXJ0eTsKIAotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShmaW5kQ2xhc3MsIHNpemVvZihX
ZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKSk7Ci0KICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJJ
bnNwZWN0b3I6aW5zcGVjdGVkLXVyaToKICAgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2UuY3BwCmluZGV4IDczNzM2ZjYu
LjdhNTQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSw5IEBAIHN0cnVjdCBfV2ViS2l0
V2ViUmVzb3VyY2VQcml2YXRlIHsKICAgICBib29sIGlzTWFpblJlc291cmNlOwogfTsKIAotc3Rh
dGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwotCi1HX0RFRklORV9UWVBF
KFdlYktpdFdlYlJlc291cmNlLCB3ZWJraXRfd2ViX3Jlc291cmNlLCBHX1RZUEVfT0JKRUNUKQor
V0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlJlc291cmNlLCB3ZWJraXRfd2ViX3Jlc291cmNl
LCBHX1RZUEVfT0JKRUNUKQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJSZXNvdXJjZUZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCktPnBy
aXYtPn5XZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUoKTsKLSAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfd2ViX3Jlc291cmNlX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Ci19CitzdGF0
aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlJlc291cmNlR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsKQEAgLTgxLDE4ICs3NSwx
MCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJSZXNvdXJjZUdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3Jlc291cmNlX2luaXQoV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlKQotewotICAg
IFdlYktpdFdlYlJlc291cmNlUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShyZXNvdXJjZSwgV0VCS0lUX1RZUEVfV0VCX1JFU09VUkNFLCBXZWJLaXRXZWJSZXNvdXJj
ZVByaXZhdGUpOwotICAgIHJlc291cmNlLT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdl
YktpdFdlYlJlc291cmNlUHJpdmF0ZSgpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Jl
c291cmNlX2NsYXNzX2luaXQoV2ViS2l0V2ViUmVzb3VyY2VDbGFzcyogcmVzb3VyY2VDbGFzcykK
IHsKICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVzb3Vy
Y2VDbGFzcyk7CiAgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFdlYlJlc291
cmNlR2V0UHJvcGVydHk7Ci0gICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViUmVz
b3VyY2VGaW5hbGl6ZTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlJlc291cmNlOnVyaToK
QEAgLTE5NCw4ICsxODAsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Jlc291cmNlX2NsYXNz
X2luaXQoV2ViS2l0V2ViUmVzb3VyY2VDbGFzcyogcmVzb3VyY2VDbGFzcwogICAgICAgICAgICAg
ICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1BPSU5URVIsCiAgICAgICAgICAgICAg
ICAgICAgICBHX1RZUEVfTk9ORSwgMSwKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lO
VEVSKTsKLQotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXNvdXJjZUNsYXNzLCBzaXpl
b2YoV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlJlc291cmNlVXBkYXRlVVJJKFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgQ1N0
cmluZyYgcmVxdWVzdFVSSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMmZmNzBkOS4uNjU5OGI2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTEx
Niw2ICsxMTYsMTYgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdl
YlJlc291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IFJlc291cmNlc01hcDsKIAogc3RydWN0IF9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CisgICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCisgICAg
eworICAgICAgICBpZiAoamF2YXNjcmlwdEdsb2JhbENvbnRleHQpCisgICAgICAgICAgICBKU0ds
b2JhbENvbnRleHRSZWxlYXNlKGphdmFzY3JpcHRHbG9iYWxDb250ZXh0KTsKKworICAgICAgICAv
LyBGb3IgbW9kYWwgZGlhbG9ncywgbWFrZSBzdXJlIHRoZSBtYWluIGxvb3AgaXMgc3RvcHBlZCB3
aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZpZXcuCisgICAgICAgIGlmIChtb2RhbExvb3AgJiYgZ19t
YWluX2xvb3BfaXNfcnVubmluZyhtb2RhbExvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtb2RhbExvb3AuZ2V0KCkpOworICAgIH0KKwogICAgIFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQ7CiAgICAgQ1N0cmluZyB0aXRsZTsKICAgICBDU3RyaW5nIGN1c3RvbVRleHRF
bmNvZGluZzsKQEAgLTE1Myw3ICsxNjMsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRl
IHsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCi1HX0RF
RklORV9UWVBFKFdlYktpdFdlYlZpZXcsIHdlYmtpdF93ZWJfdmlldywgV0VCS0lUX1RZUEVfV0VC
X1ZJRVdfQkFTRSkKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3LCB3ZWJraXRfd2Vi
X3ZpZXcsIFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UpCiAKIHN0YXRpYyBpbmxpbmUgV2ViUGFn
ZVByb3h5KiBnZXRQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CkBAIC00NDEsNiArNDUx
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKICAgICBhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KHdlYlZpZXcpOwogCiAgICAgcHJpdi0+YmFj
a0ZvcndhcmRMaXN0ID0gYWRvcHRHUmVmKHdlYmtpdEJhY2tGb3J3YXJkTGlzdENyZWF0ZShnZXRQ
YWdlKHdlYlZpZXcpLT5iYWNrRm9yd2FyZExpc3QoKSkpOworICAgIHByaXYtPndpbmRvd1Byb3Bl
cnRpZXMgPSBhZG9wdEdSZWYod2Via2l0V2luZG93UHJvcGVydGllc0NyZWF0ZSgpKTsKIAogICAg
IEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0
aW5nc19uZXcoKSk7CiAgICAgd2Via2l0V2ViVmlld1NldFNldHRpbmdzKHdlYlZpZXcsIHNldHRp
bmdzLmdldCgpKTsKQEAgLTQ5NSwzNCArNTA2LDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVjdCog
b2JqZWN0KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0
KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0
KTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAg
ICBpZiAocHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQpCi0gICAgICAgIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UocHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQpOwotCi0gICAgLy8gRm9y
IG1vZGFsIGRpYWxvZ3MsIG1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBm
aW5hbGl6aW5nIHRoZSB3ZWJWaWV3LgotICAgIGlmIChwcml2LT5tb2RhbExvb3AgJiYgZ19tYWlu
X2xvb3BfaXNfcnVubmluZyhwcml2LT5tb2RhbExvb3AuZ2V0KCkpKQotICAgICAgICBnX21haW5f
bG9vcF9xdWl0KHByaXYtPm1vZGFsTG9vcC5nZXQoKSk7Ci0KICAgICB3ZWJraXRXZWJWaWV3Q2Fu
Y2VsRmF2aWNvblJlcXVlc3Qod2ViVmlldyk7CiAgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RN
YWluUmVzb3VyY2VSZXNwb25zZUNoYW5nZWRTaWduYWxIYW5kbGVyKHdlYlZpZXcpOwogICAgIHdl
YmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKICAg
ICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdEZhdmljb25EYXRhYmFzZVNpZ25hbEhhbmRsZXJzKHdl
YlZpZXcpOwogCi0gICAgcHJpdi0+fldlYktpdFdlYlZpZXdQcml2YXRlKCk7Ci0gICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCi17Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUod2ViVmlldywgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZp
ZXdQcml2YXRlKTsKLSAgICB3ZWJWaWV3LT5wcml2ID0gcHJpdjsKLSAgICBuZXcgKHByaXYpIFdl
YktpdFdlYlZpZXdQcml2YXRlKCk7Ci0KLSAgICB3ZWJWaWV3LT5wcml2LT53aW5kb3dQcm9wZXJ0
aWVzID0gYWRvcHRHUmVmKHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNDcmVhdGUoKSk7CisgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0
KTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBY2N1bXVsYXRvck9iamVjdEhh
bmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiwgR1ZhbHVlKiByZXR1cm5WYWx1ZSwgY29uc3Qg
R1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlcikKQEAgLTU0MSw3ICs1MzMsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICBnT2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2Via2l0V2ViVmll
d0NvbnN0cnVjdGVkOwogICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0V2Vi
Vmlld1NldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0
V2ViVmlld0dldFByb3BlcnR5OwotICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRX
ZWJWaWV3RmluYWxpemU7CisgICAgZ09iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0V2ViVmll
d0Rpc3Bvc2U7CiAKICAgICB3ZWJWaWV3Q2xhc3MtPmxvYWRfZmFpbGVkID0gd2Via2l0V2ViVmll
d0xvYWRGYWlsOwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlID0gd2Via2l0V2ViVmlld0NyZWF0
ZTsKQEAgLTU1MCw4ICs1NDIsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3Mt
PnBlcm1pc3Npb25fcmVxdWVzdCA9IHdlYmtpdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdDsKICAg
ICB3ZWJWaWV3Q2xhc3MtPnJ1bl9maWxlX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3UnVuRmlsZUNo
b29zZXI7CiAKLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUod2ViVmlld0NsYXNzLCBzaXpl
b2YoV2ViS2l0V2ViVmlld1ByaXZhdGUpKTsKLQogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZp
ZXc6d2ViLWNvbnRleHQ6CiAgICAgICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCAwMTVmNjY4Li5kZTc0MWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwCkBAIC04MCw2ICs4MCwxOSBAQCB2b2lkIHJlZGlyZWN0ZWRXaW5kb3dE
YW1hZ2VkQ2FsbGJhY2sodm9pZCogZGF0YSk7CiAjZW5kaWYKIAogc3RydWN0IF9XZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUgeworICAgIF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUoKQorICAgICAg
ICA6IGltQ29udGV4dChhZG9wdEdSZWYoZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKSkpCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgICAgICAsIHJlZGlyZWN0ZWRXaW5kb3coUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShJbnRTaXplKDEsIDEpKSkKKyNlbmRpZgorICAg
IHsKKyAgICB9CisKKyAgICB+X1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSgpCisgICAgeworICAg
ICAgICBwYWdlUHJveHktPmNsb3NlKCk7CisgICAgfQorCiAgICAgV2ViS2l0V2ViVmlld0NoaWxk
cmVuTWFwIGNoaWxkcmVuOwogICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsK
ICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7CkBAIC0xMjAsNyArMTMzLDcgQEAg
c3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2VuZGlmCiB9OwogCi1HX0RFRklO
RV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVf
Q09OVEFJTkVSKQorV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRf
d2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09OVEFJTkVSKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSkKIHsKQEAgLTMyMiw0MiArMzM1LDI5IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1v
dmVSZXNpemUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIEd0a1dpZGdldCogY2hpCiAgICAg
Z3RrX3dpZGdldF9xdWV1ZV9yZXNpemVfbm9fcmVkcmF3KEdUS19XSURHRVQod2ViVmlldykpOwog
fQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZpbmFsaXplKEdPYmplY3QqIGdvYmpl
Y3QpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UoR09iamVjdCogZ29iamVj
dCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRShnb2JqZWN0KTsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBwcml2LT5wYWdlUHJveHktPmNsb3Nl
KCk7Ci0KLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2Vi
a2l0V2ViVmlld0Jhc2UsIDApOwotCi0gICAgcHJpdi0+fldlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFz
cyktPmZpbmFsaXplKGdvYmplY3QpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxP
blNjcmVlbldpbmRvdyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShnb2JqZWN0KSwgMCk7CisgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShn
b2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdChXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUod2Via2l0V2Vi
Vmlld0Jhc2UsIFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UsIFdlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYgPSBwcml2OwotICAgIG5ldyAocHJp
dikgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCk7Ci0KLSAgICBwcml2LT5zaG91bGRGb3J3YXJk
TmV4dEtleUV2ZW50ID0gRkFMU0U7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3
X2Jhc2VfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAotICAgIEd0a1dpZGdl
dCogdmlld1dpZGdldCA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpOworICAgIEd0a1dp
ZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQob2JqZWN0KTsKICAgICBndGtfd2lkZ2V0X3Nl
dF9jYW5fZm9jdXModmlld1dpZGdldCwgVFJVRSk7Ci0gICAgcHJpdi0+aW1Db250ZXh0ID0gYWRv
cHRHUmVmKGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCkpOwotCi0gICAgcHJpdi0+cGFnZUNsaWVu
dCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodmlld1dpZGdldCk7Ci0KLSAgICBwcml2LT5kcmFn
QW5kRHJvcEhlbHBlci5zZXRXaWRnZXQodmlld1dpZGdldCk7Ci0KICAgICBndGtfZHJhZ19kZXN0
X3NldCh2aWV3V2lkZ2V0LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVsdHM+KDApLCAwLCAwLAog
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KEdES19BQ1RJ
T05fQ09QWSB8IEdES19BQ1RJT05fTU9WRSB8IEdES19BQ1RJT05fTElOSyB8IEdES19BQ1RJT05f
UFJJVkFURSkpOwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdXaWRnZXQs
IFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPnRhcmdldExpc3Qo
KSk7CiAKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShvYmplY3QpLT5wcml2OworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlKHZpZXdXaWRnZXQpOworICAgIHByaXYtPmRyYWdBbmREcm9wSGVscGVyLnNl
dFdpZGdldCh2aWV3V2lkZ2V0KTsKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBw
cml2LT5yZWRpcmVjdGVkV2luZG93ID0gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0
ZShJbnRTaXplKDEsIDEpKTsKICAgICBpZiAocHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKLSAgICAg
ICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+c2V0RGFtYWdlTm90aWZ5Q2FsbGJhY2socmVkaXJl
Y3RlZFdpbmRvd0RhbWFnZWRDYWxsYmFjaywgd2Via2l0V2ViVmlld0Jhc2UpOworICAgICAgICBw
cml2LT5yZWRpcmVjdGVkV2luZG93LT5zZXREYW1hZ2VOb3RpZnlDYWxsYmFjayhyZWRpcmVjdGVk
V2luZG93RGFtYWdlZENhbGxiYWNrLCBvYmplY3QpOwogI2VuZGlmCiB9CiAKQEAgLTc2NywxNCAr
NzY3LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAgICAgd2lkZ2V0Q2xhc3MtPnBhcmVu
dF9zZXQgPSB3ZWJraXRXZWJWaWV3QmFzZVBhcmVudFNldDsKIAogICAgIEdPYmplY3RDbGFzcyog
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0V2ViVmlld0Jhc2VDbGFzcyk7Ci0g
ICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlZpZXdCYXNlRmluYWxpemU7Cisg
ICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0
ZWQ7CisgICAgZ29iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0V2ViVmlld0Jhc2VEaXNwb3Nl
OwogCiAgICAgR3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5F
Ul9DTEFTUyh3ZWJraXRXZWJWaWV3QmFzZUNsYXNzKTsKICAgICBjb250YWluZXJDbGFzcy0+YWRk
ID0gd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJBZGQ7CiAgICAgY29udGFpbmVyQ2xhc3MtPnJl
bW92ZSA9IHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyUmVtb3ZlOwogICAgIGNvbnRhaW5lckNs
YXNzLT5mb3JhbGwgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbDsKLQotICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJraXRXZWJWaWV3QmFzZUNsYXNzLCBzaXplb2YoV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKSk7CiB9CiAKIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VH
cm91cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlQWNjZXNzaWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUuY3BwCmluZGV4IDA5YTExYWIuLjdiMDY5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlQWNjZXNzaWJsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlLmNwcApAQCAtMjAsMjAgKzIwLDE0IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3Np
YmxlLmgiCiAKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZVByaXZhdGUgewogICAgIEd0
a1dpZGdldCogd2lkZ2V0OwogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZUFj
Y2Vzc2libGUsIHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGUsIEFUS19UWVBFX1NPQ0tF
VCkKLQotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlRmluYWxpemUoR09i
amVjdCogZ29iamVjdCkKLXsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGUqIGFjY2Vz
c2libGUgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRV9BQ0NFU1NJQkxFKGdvYmplY3QpOwotICAgIGFj
Y2Vzc2libGUtPnByaXYtPn5XZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGVQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfYWNjZXNzaWJsZV9wYXJlbnRf
Y2xhc3MpLT5maW5hbGl6ZShnb2JqZWN0KTsKLX0KK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRX
ZWJWaWV3QmFzZUFjY2Vzc2libGUsIHdlYmtpdF93ZWJfdmlld19iYXNlX2FjY2Vzc2libGUsIEFU
S19UWVBFX1NPQ0tFVCkKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxl
V2lkZ2V0RGVzdHJveWVkKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3QmFzZUFjY2Vz
c2libGUqIGFjY2Vzc2libGUpCiB7CkBAIC05NCwxOCArODgsOCBAQCBzdGF0aWMgZ2ludCB3ZWJr
aXRXZWJWaWV3QmFzZUFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KEF0a09iamVjdCogYXRrT2Jq
ZWN0KQogICAgIHJldHVybiAtMTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jh
c2VfYWNjZXNzaWJsZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZSogYWNjZXNzaWJs
ZSkKLXsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGVQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGFjY2Vzc2libGUsIFdFQktJVF9UWVBFX1dFQl9WSUVX
X0JBU0VfQUNDRVNTSUJMRSwgV2ViS2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlUHJpdmF0ZSk7Ci0g
ICAgYWNjZXNzaWJsZS0+cHJpdiA9IHByaXY7Ci0gICAgbmV3IChwcml2KSBXZWJLaXRXZWJWaWV3
QmFzZUFjY2Vzc2libGVQcml2YXRlKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19iYXNlX2FjY2Vzc2libGVfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3QmFzZUFjY2Vzc2libGVD
bGFzcyoga2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhrbGFzcyk7Ci0gICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlZp
ZXdCYXNlQWNjZXNzaWJsZUZpbmFsaXplOwotCiAgICAgLy8gTm8gbmVlZCB0byBpbXBsZW1lbnQg
Z2V0X25fY2hpbGRyZW4oKSBhbmQgcmVmX2NoaWxkKCkgaGVyZQogICAgIC8vIHNpbmNlIHRoaXMg
aXMgYSBzdWJjbGFzcyBvZiBBdGtTb2NrZXQgYW5kIGFsbCB0aGUgbG9naWMgcmVsYXRlZAogICAg
IC8vIHRvIHRob3NlIGZ1bmN0aW9ucyB3aWxsIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBBVEsgYnJp
ZGdlLgpAQCAtMTEzLDggKzk3LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2Vf
YWNjZXNzaWJsZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWIKICAgICBhdGtP
YmplY3RDbGFzcy0+aW5pdGlhbGl6ZSA9IHdlYmtpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZUluaXRp
YWxpemU7CiAgICAgYXRrT2JqZWN0Q2xhc3MtPnJlZl9zdGF0ZV9zZXQgPSB3ZWJraXRXZWJWaWV3
QmFzZUFjY2Vzc2libGVSZWZTdGF0ZVNldDsKICAgICBhdGtPYmplY3RDbGFzcy0+Z2V0X2luZGV4
X2luX3BhcmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZUdldEluZGV4SW5QYXJlbnQ7
Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJW
aWV3QmFzZUFjY2Vzc2libGVQcml2YXRlKSk7CiB9CiAKIFdlYktpdFdlYlZpZXdCYXNlQWNjZXNz
aWJsZSogd2Via2l0V2ViVmlld0Jhc2VBY2Nlc3NpYmxlTmV3KEd0a1dpZGdldCogd2lkZ2V0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93
UHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
aW5kb3dQcm9wZXJ0aWVzLmNwcAppbmRleCA5MzBjZjg2Li5iZGZjNzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXaW5kb3dQcm9w
ZXJ0aWVzLmNwcApAQCAtMTA2LDggKzEwNiw2IEBAIGVudW0gewogICAgIFBST1BfRlVMTFNDUkVF
TgogfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLCB3ZWJraXRfd2lu
ZG93X3Byb3BlcnRpZXMsIEdfVFlQRV9PQkpFQ1QpCi0KIHN0cnVjdCBfV2ViS2l0V2luZG93UHJv
cGVydGllc1ByaXZhdGUgewogICAgIEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKIApAQCAtMTIxLDEx
ICsxMTksNyBAQCBzdHJ1Y3QgX1dlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlIHsKICAgICBi
b29sIGZ1bGxzY3JlZW4gOiAxOwogfTsKIAotc3RhdGljIHZvaWQgd2Via2l0V2luZG93UHJvcGVy
dGllc0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBXRUJLSVRfV0lORE9XX1BST1BF
UlRJRVMob2JqZWN0KS0+cHJpdi0+fldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlKCk7Ci0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dpbmRvd19wcm9wZXJ0aWVzX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7Ci19CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2luZG93UHJv
cGVydGllcywgd2Via2l0X3dpbmRvd19wcm9wZXJ0aWVzLCBHX1RZUEVfT0JKRUNUKQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRXaW5kb3dQcm9wZXJ0aWVzR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKIHsK
QEAgLTE5OSw4ICsxOTMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXaW5kb3dQcm9wZXJ0aWVzU2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbgogc3RhdGljIHZvaWQg
d2Via2l0X3dpbmRvd19wcm9wZXJ0aWVzX2NsYXNzX2luaXQoV2ViS2l0V2luZG93UHJvcGVydGll
c0NsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0KLSAgICBvYmplY3RDbGFzcy0+ZmluYWxp
emUgPSB3ZWJraXRXaW5kb3dQcm9wZXJ0aWVzRmluYWxpemU7CiAgICAgb2JqZWN0Q2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNHZXRQcm9wZXJ0eTsKICAgICBvYmpl
Y3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0V2luZG93UHJvcGVydGllc1NldFByb3BlcnR5
OwogCkBAIC0zMDgsMTUgKzMwMCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93aW5kb3dfcHJvcGVy
dGllc19jbGFzc19pbml0KFdlYktpdFdpbmRvd1Byb3BlcnRpZXNDbGFzcyogcmVxCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0
aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLiIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bUZsYWdzKSk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBz
aXplb2YoV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUpKTsKLX0KLQotc3RhdGljIHZvaWQg
d2Via2l0X3dpbmRvd19wcm9wZXJ0aWVzX2luaXQoV2ViS2l0V2luZG93UHJvcGVydGllcyogcmVx
dWVzdCkKLXsKLSAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZSogcHJpdiA9IEdfVFlQ
RV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9XSU5ET1dfUFJPUEVS
VElFUywgV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUpOwotICAgIHJlcXVlc3QtPnByaXYg
PSBwcml2OwotICAgIG5ldyAocHJpdikgV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUoKTsK
IH0KIAogV2ViS2l0V2luZG93UHJvcGVydGllcyogd2Via2l0V2luZG93UHJvcGVydGllc0NyZWF0
ZSgpCg==
</data>
<flag name="review"
          id="191157"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>