<?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>96784</bug_id>
          
          <creation_ts>2012-09-14 07:30:12 -0700</creation_ts>
          <short_desc>[GTK] Don&apos;t use the C API internally in WebKitSettings</short_desc>
          <delta_ts>2012-10-18 07:49:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>96783</dependson>
          <blocked>96766</blocked>
    
    <blocked>96785</blocked>
    
    <blocked>99705</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720750</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-14 07:30:12 -0700</bug_when>
    <thetext>Use the C++ classes instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720752</commentid>
    <comment_count>1</comment_count>
      <attachid>164149</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-14 07:31:34 -0700</bug_when>
    <thetext>Created attachment 164149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731720</commentid>
    <comment_count>2</comment_count>
      <attachid>166484</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-01 08:46:08 -0700</bug_when>
    <thetext>Created attachment 166484
Updated patch to apply on current git master

A patch in trunk broke this one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731723</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-01 08:49:55 -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>733464</commentid>
    <comment_count>4</comment_count>
      <attachid>166484</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-10-03 02:04:00 -0700</bug_when>
    <thetext>Comment on attachment 166484
Updated patch to apply on current git master

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

Looks good to me!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:956
&gt; +     * WebKitSettings:media-playback-allows-inline:

Haha... good catch, &quot;vigilante&quot;!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742964</commentid>
    <comment_count>5</comment_count>
      <attachid>168891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-16 01:45:06 -0700</bug_when>
    <thetext>Created attachment 168891
Updated patch to build on current git master

Updated after smooth-scrolling setting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745206</commentid>
    <comment_count>6</comment_count>
      <attachid>168891</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-10-18 06:25:55 -0700</bug_when>
    <thetext>Comment on attachment 168891
Updated patch to build on current git master

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:-1105
&gt; -    ASSERT(!priv-&gt;userAgent.isNull());

Shouldn&apos;t you keep the ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745213</commentid>
    <comment_count>7</comment_count>
      <attachid>168891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-18 06:32:42 -0700</bug_when>
    <thetext>Comment on attachment 168891
Updated patch to build on current git master

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:-1105
&gt;&gt; -    ASSERT(!priv-&gt;userAgent.isNull());
&gt; 
&gt; Shouldn&apos;t you keep the ASSERT?

I think it&apos;s impossible to happen, user-agent is a construct property, and when passing NULL it&apos;s initialized to the default user agent, so at this point, if we have a valid a WebKitSettings object, userAgent can&apos;t be NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745250</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-18 07:49:39 -0700</bug_when>
    <thetext>Committed r131750: &lt;http://trac.webkit.org/changeset/131750&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164149</attachid>
            <date>2012-09-14 07:31:34 -0700</date>
            <delta_ts>2012-10-01 08:46:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-no-c-api-settings.diff</filename>
            <type>text/plain</type>
            <size>51872</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmZjY2M2ZiLi5mODE5YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUg
QEAKKzIwMTItMDktMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIERvbid0IHVzZSB0aGUgQyBBUEkgaW50ZXJuYWxseSBpbiBXZWJL
aXRTZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2luZyB0aGUgQysrIGNsYXNzZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgQyBBUEkgd3Jh
cHBlcnMgd2UKKyAgICAgICAgYXZvaWQgYSBsb3Qgb2YgdG9JbXBsL3RvQVBJIGNhc3RzLCBzdHJp
bmcgY29udmVyc2lvbnMgYW5kCisgICAgICAgIGFsbG9jYXRpb25zLiBUaGUgY29kZSBpcyBhbHNv
IGEgbG90IHNpbXBsZXIgYW5kIGVhc2llciB0byByZWFkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJp
dmF0ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRp
bmdzVG9QYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3Jp
cHQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCk6Cisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMpOgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKToKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcpOgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
c2V0dGluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Bs
dWdpbnMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6Cisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKToKKyAgICAgICAgKHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVk
aXRpbmcpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfZmFtaWx5
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbW9ub3NwYWNlX2ZvbnRfZmFtaWx5KToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfc2VyaWZfZm9udF9mYW1pbHkpOgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9zYW5zX3NlcmlmX2ZvbnRfZmFtaWx5KToKKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2ZhbWlseSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2ZhbnRhc3lfZm9udF9mYW1pbHkpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFtaWx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0
aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3Nl
dF9kZWZhdWx0X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X21pbmltdW1fZm9udF9zaXplKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11
bV9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJz
ZXQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2lu
Zyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5n
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMp
OgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyk6
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9hcmVh
cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9h
cmVhcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV90YWJzX3RvX2xpbmtz
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3RhYnNfdG9fbGlua3MpOgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKToKKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Ruc19wcmVmZXRjaGluZyk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyk6CisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9jYXJldF9icm93c2luZyk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9wcmludF9iYWNrZ3JvdW5kcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X3By
aW50X2JhY2tncm91bmRzKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dl
YmF1ZGlvKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmF1ZGlvKToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKToKKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmdsKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X3pvb21fdGV4dF9vbmx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fYWNjZXNzX2NsaXBib2FyZCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2ph
dmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUpOgorICAgICAgICAod2Vi
a2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUpOgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5l
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lu
bGluZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5k
aWNhdG9ycyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRpbmdf
aW5kaWNhdG9ycyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3Nw
ZWNpZmljX3F1aXJrcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zaXRl
X3NwZWNpZmljX3F1aXJrcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9w
YWdlX2NhY2hlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BhZ2VfY2Fj
aGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld1NldFNldHRpbmdzKToKKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEyNzg3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCA1ZTBiZTdkLi40OGVkNTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC0zMywxMiArMzMsMTQgQEAKIAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7Ci0gICAgV0tSZXRhaW5QdHI8V0tQcmVm
ZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVm
ZXJlbmNlczsKICAgICBDU3RyaW5nIGRlZmF1bHRGb250RmFtaWx5OwogICAgIENTdHJpbmcgbW9u
b3NwYWNlRm9udEZhbWlseTsKICAgICBDU3RyaW5nIHNlcmlmRm9udEZhbWlseTsKQEAgLTk0Miw3
ICs5NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRT
ZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAog
ICAgIC8qKgotICAgICAqIFdlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLWFsbG93cy1pbmxp
bmUKKyAgICAgKiBXZWJLaXRTZXR0aW5nczptZWRpYS1wbGF5YmFjay1hbGxvd3MtaW5saW5lOgog
ICAgICAqCiAgICAgICogV2hldGhlciBtZWRpYSBwbGF5YmFjayBpcyBmdWxsLXNjcmVlbiBvbmx5
IG9yIGlubGluZSBwbGF5YmFjayBpcyBhbGxvd2VkLgogICAgICAqIFRoaXMgaXMgJVRSVUUgYnkg
ZGVmYXVsdCwgc28gbWVkaWEgcGxheWJhY2sgY2FuIGJlIGlubGluZS4gU2V0dGluZyBpdCB0bwpA
QCAtMTAxOSwzNyArMTAyMSwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfaW5pdChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnByaXYgPSBwcml2OwogICAg
IG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CiAKLSAgICBwcml2LT5wcmVmZXJl
bmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKKyAgICBwcml2LT5wcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoKTsKKyAgICBwcml2LT5kZWZhdWx0Rm9udEZh
bWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51dGY4KCk7Cisg
ICAgcHJpdi0+bW9ub3NwYWNlRm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5maXhlZEZv
bnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+c2VyaWZGb250RmFtaWx5ID0gcHJpdi0+cHJl
ZmVyZW5jZXMtPnNlcmlmRm9udEZhbWlseSgpLnV0ZjgoKTsKKyAgICBwcml2LT5zYW5zU2VyaWZG
b250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoKS51dGY4
KCk7CisgICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+Y3Vy
c2l2ZUZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+ZmFudGFzeUZvbnRGYW1pbHkgPSBw
cml2LT5wcmVmZXJlbmNlcy0+ZmFudGFzeUZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+
cGljdG9ncmFwaEZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGljdG9ncmFwaEZvbnRG
YW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBwcml2LT5wcmVmZXJl
bmNlcy0+ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4KCk7CiAKLSAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZGVmYXVsdEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5j
ZXNDb3B5U3RhbmRhcmRGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0gICAg
cHJpdi0+ZGVmYXVsdEZvbnRGYW1pbHkgPSAgV2ViS2l0Ojp0b0ltcGwoZGVmYXVsdEZvbnRGYW1p
bHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbW9ub3NwYWNlRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NvcHlG
aXhlZEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpKTsKLSAgICBwcml2LT5tb25v
c3BhY2VGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwobW9ub3NwYWNlRm9udEZhbWlseVJlZi5n
ZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBz
ZXJpZkZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2VyaWZGb250RmFt
aWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0gICAgcHJpdi0+c2VyaWZGb250RmFtaWx5
ID0gV2ViS2l0Ojp0b0ltcGwoc2VyaWZGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRm
OCgpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNhbnNTZXJpZkZvbnRGYW1pbHlS
ZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZhbWlseShwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSkpOwotICAgIHByaXYtPnNhbnNTZXJpZkZvbnRGYW1pbHkgPSBXZWJL
aXQ6OnRvSW1wbChzYW5zU2VyaWZGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgp
OwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGN1cnNpdmVGb250RmFtaWx5UmVmID0g
YWRvcHRXSyhXS1ByZWZlcmVuY2VzQ29weUN1cnNpdmVGb250RmFtaWx5KHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKSk7Ci0gICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBXZWJLaXQ6OnRvSW1w
bChjdXJzaXZlRm9udEZhbWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQotICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmYW50YXN5Rm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tQ
cmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9udEZhbWlseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkp
OwotICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoZmFudGFzeUZv
bnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gcGljdG9ncmFwaEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5j
ZXNDb3B5UGljdG9ncmFwaEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpKTsKLSAg
ICBwcml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHBpY3RvZ3JhcGhG
b250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOwotCi0gICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGRlZmF1bHRDaGFyc2V0UmVmID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ29w
eURlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0gICAg
cHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBXZWJLaXQ6OnRvSW1wbChkZWZhdWx0Q2hhcnNldFJlZi5n
ZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKIH0KIAotdm9pZCB3ZWJraXRTZXR0aW5nc0F0dGFjaFNl
dHRpbmdzVG9QYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgV0tQYWdlUmVmIHdrUGFnZSkK
K3ZvaWQgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsIFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBXS1BhZ2VHcm91cFNldFByZWZl
cmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cCh3a1BhZ2UpLCBzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOwotICAgIFdlYktpdDo6dG9JbXBsKHdrUGFnZSktPnNldENhblJ1bk1vZGFs
KHNldHRpbmdzLT5wcml2LT5hbGxvd01vZGFsRGlhbG9ncyk7CisgICAgcGFnZS0+cGFnZUdyb3Vw
KCktPnNldFByZWZlcmVuY2VzKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgcGFnZS0+c2V0Q2FuUnVuTW9kYWwoc2V0dGluZ3MtPnByaXYtPmFsbG93TW9kYWxEaWFsb2dz
KTsKIH0KIAogLyoqCkBAIC0xMDk4LDcgKzEwODUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2
LT5wcmVmZXJlbmNlcy0+amF2YVNjcmlwdEVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0xMTEzLDEx
ICsxMTAwLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuCiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsK
KyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5qYXZhU2NyaXB0RW5h
YmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlw
dEVuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS1qYXZhc2NyaXB0Iik7CiB9CiAKQEAgLTExMzMsNyArMTEyMCw3IEBAIGdib29s
ZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdT
KHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5sb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkoKTsKIH0KIAogLyoqCkBAIC0xMTQ4LDExICsxMTM1LDExIEBAIHZvaWQgd2Via2l0X3Nl
dHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2xlYW4gZW5hCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGlu
Z3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCk7CiAgICAg
aWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1By
ZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdl
dCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5KGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJhdXRvLWxvYWQtaW1hZ2VzIik7CiB9CiAKQEAgLTExNjgsNyArMTE1NSw3IEBAIGdib29s
ZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3Nl
dHRpbmcoV2ViS2l0U2V0dGluCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNH
ZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJl
ZmVyZW5jZXMtPmxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKCk7
CiB9CiAKIC8qKgpAQCAtMTE4MywxMSArMTE3MCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19z
ZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoV2ViS2l0U2V0dGluZ3Mq
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAog
ICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJv
b2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJ
bWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29s
IGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5sb2Fkc1NpdGVJY29uc0lnbm9yaW5n
SW1hZ2VMb2FkaW5nUHJlZmVyZW5jZSgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25z
SWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBl
bmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmlu
Z0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImxvYWQtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5n
Iik7CiB9CiAKQEAgLTEyMDMsNyArMTE5MCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFNldHRpbmdzCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwg
RkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBy
ZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5vZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0xMjE4LDExICsxMjA1LDExIEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2Vi
S2l0U2V0dGluZ3MqIHNlCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAg
Ym9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+b2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2
LT5wcmVmZXJlbmNlcy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGVuYWJs
ZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2Zm
bGluZS13ZWItYXBwbGljYXRpb24tY2FjaGUiKTsKIH0KIApAQCAtMTIzOCw3ICsxMjI1LDcgQEAg
Z2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdl
dCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5sb2NhbFN0b3Jh
Z2VFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMTI1MywxMSArMTI0MCwxMSBAQCB2b2lkIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNl
dHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+
cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1
ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CiAgICAgaWYgKGN1
cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVu
Y2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxl
ZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQoZW5hYmxl
ZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1s
NS1sb2NhbC1zdG9yYWdlIik7CiB9CiAKQEAgLTEyNzMsNyArMTI2MCw3IEBAIGdib29sZWFuIHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNl
c0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4g
c2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kYXRhYmFzZXNFbmFibGVkKCk7CiB9CiAKIC8q
KgpAQCAtMTI4OCwxMSArMTI3NSwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYQogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJL
aXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5k
YXRhYmFzZXNFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNl
dERhdGFiYXNlc0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1kYXRhYmFzZSIpOwogfQogCkBAIC0xMzA4LDcgKzEy
OTUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVy
ZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnhzc0F1ZGl0b3JF
bmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMTMyMywxMSArMTMxMCwxMSBAQCB2b2lkIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywg
Z2Jvb2xlYW4gZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRp
bmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJp
djsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBw
cml2LT5wcmVmZXJlbmNlcy0+eHNzQXVkaXRvckVuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZh
bHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRY
U1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAg
cHJpdi0+cHJlZmVyZW5jZXMtPnNldFhTU0F1ZGl0b3JFbmFibGVkKGVuYWJsZWQpOwogICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUteHNzLWF1ZGl0b3IiKTsK
IH0KIApAQCAtMTM0NCw3ICsxMzMxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfZnJhbWVfZmxhdHRlbmluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHNl
dHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpOwogfQogCiAvKioKQEAg
LTEzNTksMTEgKzEzNDYsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFt
ZV9mbGF0dGVuaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+
ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmlu
Z0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnBy
ZWZlcmVuY2VzLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIp
OwogfQogCkBAIC0xMzc5LDcgKzEzNjYsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9wbHVnaW5zKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAg
ICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzLT5wcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy0+cGx1Z2luc0VuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0xMzk0LDExICsxMzgxLDExIEBAIHZv
aWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBs
dWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRW
YWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5wbHVnaW5zRW5hYmxlZCgpOwogICAgIGlmIChjdXJy
ZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNl
c1NldFBsdWdpbnNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAg
ICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7CiB9CiAK
QEAgLTE0MTQsNyArMTQwMSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2phdmEoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdl
dCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5qYXZhRW5hYmxl
ZCgpOwogfQogCiAvKioKQEAgLTE0MjksMTEgKzE0MTYsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9qYXZhKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5h
YmxlZCkKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykp
OwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0g
ICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVy
ZW5jZXMtPmphdmFFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRK
YXZhRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLWphdmEiKTsKIH0KIApAQCAtMTQ0OSw3ICsxNDM2LDcgQEAgZ2Jvb2xlYW4g
d2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseShXZWJLaXRTZXQKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5q
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCk7CiB9CiAKIC8qKgpAQCAtMTQ2
NCwxMSArMTQ1MSwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoV2ViS2l0U2V0dGluZwogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnBy
ZWZlcmVuY2VzLT5qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCk7CiAgICAg
aWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1By
ZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoZW5hYmxlZCk7CiAgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93
cy1hdXRvbWF0aWNhbGx5Iik7CiB9CiAKQEAgLTE0ODQsNyArMTQ3MSw3IEBAIGdib29sZWFuIHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsK
KyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5oeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0xNDk5LDExICsxNDg2LDExIEBAIHZvaWQgd2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncywgZ2JvCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0
dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50
VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCk7CiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1ByZWZlcmVuY2VzU2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJlbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nIik7CiB9CiAKQEAgLTE1MzgsMTAgKzE1
MjUsOSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGdjaAogICAgIGlmICghZ19zdHJjbXAwKHByaXYt
PmRlZmF1bHRGb250RmFtaWx5LmRhdGEoKSwgZGVmYXVsdEZvbnRGYW1pbHkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RhbmRhcmRGb250RmFtaWx5
UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkZWZhdWx0Rm9udEZh
bWlseSkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRTdGFuZGFyZEZvbnRGYW1pbHkocHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCksIHN0YW5kYXJkRm9udEZhbWlseVJlZi5nZXQoKSk7Ci0gICAgcHJpdi0+
ZGVmYXVsdEZvbnRGYW1pbHkgPSBXZWJLaXQ6OnRvSW1wbChzdGFuZGFyZEZvbnRGYW1pbHlSZWYu
Z2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgc3RhbmRhcmRGb250RmFtaWx5
ID0gU3RyaW5nOjpmcm9tVVRGOChkZWZhdWx0Rm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVy
ZW5jZXMtPnNldFN0YW5kYXJkRm9udEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOworICAgIHBy
aXYtPmRlZmF1bHRGb250RmFtaWx5ID0gc3RhbmRhcmRGb250RmFtaWx5LnV0ZjgoKTsKICAgICBn
X29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LWZhbWlseSIp
OwogfQogCkBAIC0xNTc2LDEwICsxNTYyLDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21v
bm9zcGFjZV9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGcKICAg
ICBpZiAoIWdfc3RyY21wMChwcml2LT5tb25vc3BhY2VGb250RmFtaWx5LmRhdGEoKSwgbW9ub3Nw
YWNlRm9udEZhbWlseSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBmaXhlZEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKG1vbm9zcGFjZUZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0Rml4
ZWRGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBmaXhlZEZvbnRGYW1pbHlSZWYu
Z2V0KCkpOwotICAgIHByaXYtPm1vbm9zcGFjZUZvbnRGYW1pbHkgPSBXZWJLaXQ6OnRvSW1wbChm
aXhlZEZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcg
Zml4ZWRGb250RmFtaWx5ID0gU3RyaW5nOjpmcm9tVVRGOChtb25vc3BhY2VGb250RmFtaWx5KTsK
KyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0Rml4ZWRGb250RmFtaWx5KGZpeGVkRm9udEZhbWls
eSk7CisgICAgcHJpdi0+bW9ub3NwYWNlRm9udEZhbWlseSA9IGZpeGVkRm9udEZhbWlseS51dGY4
KCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgIm1vbm9zcGFjZS1m
b250LWZhbWlseSIpOwogfQogCkBAIC0xNjE0LDEwICsxNTk5LDkgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3NlcmlmX2ZvbnRfZmFtaWx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29u
c3QgZ2NoYXIKICAgICBpZiAoIWdfc3RyY21wMChwcml2LT5zZXJpZkZvbnRGYW1pbHkuZGF0YSgp
LCBzZXJpZkZvbnRGYW1pbHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gc2VyaWZGb250RmFtaWx5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhzZXJpZkZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0U2Vy
aWZGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBzZXJpZkZvbnRGYW1pbHlSZWYu
Z2V0KCkpOwotICAgIHByaXYtPnNlcmlmRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHNlcmlm
Rm9udEZhbWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQorICAgIFN0cmluZyBzZXJp
ZkZvbnRGYW1pbHlTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHNlcmlmRm9udEZhbWlseSk7Cisg
ICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFNlcmlmRm9udEZhbWlseShzZXJpZkZvbnRGYW1pbHlT
dHJpbmcpOworICAgIHByaXYtPnNlcmlmRm9udEZhbWlseSA9IHNlcmlmRm9udEZhbWlseVN0cmlu
Zy51dGY4KCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInNlcmlm
LWZvbnQtZmFtaWx5Iik7CiB9CiAKQEAgLTE2NTIsMTAgKzE2MzYsOSBAQCB2b2lkIHdlYmtpdF9z
ZXR0aW5nc19zZXRfc2Fuc19zZXJpZl9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGNvbnN0CiAgICAgaWYgKCFnX3N0cmNtcDAocHJpdi0+c2Fuc1NlcmlmRm9udEZhbWlseS5k
YXRhKCksIHNhbnNTZXJpZkZvbnRGYW1pbHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gc2Fuc1NlcmlmRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2Fuc1NlcmlmRm9udEZhbWlseSkpOwotICAgIFdL
UHJlZmVyZW5jZXNTZXRTYW5zU2VyaWZGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgp
LCBzYW5zU2VyaWZGb250RmFtaWx5UmVmLmdldCgpKTsKLSAgICBwcml2LT5zYW5zU2VyaWZGb250
RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoc2Fuc1NlcmlmRm9udEZhbWlseVJlZi5nZXQoKSktPnN0
cmluZygpLnV0ZjgoKTsKLQorICAgIFN0cmluZyBzYW5zU2VyaWZGb250RmFtaWx5U3RyaW5nID0g
U3RyaW5nOjpmcm9tVVRGOChzYW5zU2VyaWZGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVmZXJl
bmNlcy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShzYW5zU2VyaWZGb250RmFtaWx5U3RyaW5nKTsK
KyAgICBwcml2LT5zYW5zU2VyaWZGb250RmFtaWx5ID0gc2Fuc1NlcmlmRm9udEZhbWlseVN0cmlu
Zy51dGY4KCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInNhbnMt
c2VyaWYtZm9udC1mYW1pbHkiKTsKIH0KIApAQCAtMTY5MCwxMCArMTY3Myw5IEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9jdXJzaXZlX2ZvbnRfZmFtaWx5KFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgZ2NoCiAgICAgaWYgKCFnX3N0cmNtcDAocHJpdi0+Y3Vyc2l2ZUZvbnRGYW1p
bHkuZGF0YSgpLCBjdXJzaXZlRm9udEZhbWlseSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjdXJzaXZlRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY3Vyc2l2ZUZvbnRGYW1pbHkpKTsKLSAgICBXS1By
ZWZlcmVuY2VzU2V0Q3Vyc2l2ZUZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGN1
cnNpdmVGb250RmFtaWx5UmVmLmdldCgpKTsKLSAgICBwcml2LT5jdXJzaXZlRm9udEZhbWlseSA9
IFdlYktpdDo6dG9JbXBsKGN1cnNpdmVGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRm
OCgpOwotCisgICAgU3RyaW5nIGN1cnNpdmVGb250RmFtaWx5U3RyaW5nID0gU3RyaW5nOjpmcm9t
VVRGOChjdXJzaXZlRm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEN1cnNp
dmVGb250RmFtaWx5KGN1cnNpdmVGb250RmFtaWx5U3RyaW5nKTsKKyAgICBwcml2LT5jdXJzaXZl
Rm9udEZhbWlseSA9IGN1cnNpdmVGb250RmFtaWx5U3RyaW5nLnV0ZjgoKTsKICAgICBnX29iamVj
dF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiY3Vyc2l2ZS1mb250LWZhbWlseSIpOwogfQog
CkBAIC0xNzI4LDEwICsxNzEwLDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2ZhbnRhc3lf
Zm9udF9mYW1pbHkoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBnY2gKICAgICBpZiAo
IWdfc3RyY21wMChwcml2LT5mYW50YXN5Rm9udEZhbWlseS5kYXRhKCksIGZhbnRhc3lGb250RmFt
aWx5KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZh
bnRhc3lGb250RmFtaWx5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhmYW50YXN5Rm9udEZhbWlseSkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5Rm9udEZh
bWlseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZmFudGFzeUZvbnRGYW1pbHlSZWYuZ2V0KCkp
OwotICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoZmFudGFzeUZv
bnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZmFudGFz
eUZvbnRGYW1pbHlTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGZhbnRhc3lGb250RmFtaWx5KTsK
KyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFudGFzeUZvbnRG
YW1pbHlTdHJpbmcpOworICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gZmFudGFzeUZvbnRG
YW1pbHlTdHJpbmcudXRmOCgpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJmYW50YXN5LWZvbnQtZmFtaWx5Iik7CiB9CiAKQEAgLTE3NjYsMTAgKzE3NDcsOSBAQCB2
b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsIGNvbnN0CiAgICAgaWYgKCFnX3N0cmNtcDAocHJpdi0+cGljdG9ncmFw
aEZvbnRGYW1pbHkuZGF0YSgpLCBwaWN0b2dyYXBoRm9udEZhbWlseSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwaWN0b2dyYXBoRm9udEZhbWlseVJl
ZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGljdG9ncmFwaEZvbnRG
YW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0UGljdG9ncmFwaEZvbnRGYW1pbHkocHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCksIHBpY3RvZ3JhcGhGb250RmFtaWx5UmVmLmdldCgpKTsKLSAgICBw
cml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHBpY3RvZ3JhcGhGb250
RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOwotCisgICAgU3RyaW5nIHBpY3RvZ3Jh
cGhGb250RmFtaWx5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChwaWN0b2dyYXBoRm9udEZhbWls
eSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KHBpY3Rv
Z3JhcGhGb250RmFtaWx5U3RyaW5nKTsKKyAgICBwcml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9
IHBpY3RvZ3JhcGhGb250RmFtaWx5U3RyaW5nLnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1Qoc2V0dGluZ3MpLCAicGljdG9ncmFwaC1mb250LWZhbWlseSIpOwogfQogCkBAIC0x
Nzg1LDcgKzE3NjUsNyBAQCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250
X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOwogCi0gICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXREZWZhdWx0Rm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdl
dCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9u
dFNpemUoKTsKIH0KIAogLyoqCkBAIC0xODAwLDEyICsxNzgwLDExIEBAIHZvaWQgd2Via2l0X3Nl
dHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1
aW50MzIgZm9uCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGlu
Z3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2
OwotCi0gICAgdWludDMyX3QgY3VycmVudFNpemUgPSBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZv
bnRTaXplKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICB1aW50MzJfdCBjdXJyZW50U2l6
ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKICAgICBpZiAoY3VycmVu
dFNpemUgPT0gZm9udFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNT
ZXREZWZhdWx0Rm9udFNpemUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGZvbnRTaXplKTsKKyAg
ICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKGZvbnRTaXplKTsKICAgICBn
X29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LXNpemUiKTsK
IH0KIApAQCAtMTgyMSw3ICsxODAwLDcgQEAgZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsK
IAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZpeGVkRm9udFNpemUoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYt
PnByZWZlcmVuY2VzLT5kZWZhdWx0Rml4ZWRGb250U2l6ZSgpOwogfQogCiAvKioKQEAgLTE4MzYs
MTIgKzE4MTUsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGcKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQ
cml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0KLSAgICB1aW50MzJfdCBjdXJyZW50U2l6
ZSA9IFdLUHJlZmVyZW5jZXNHZXREZWZhdWx0Rml4ZWRGb250U2l6ZShwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSk7CisgICAgdWludDMyX3QgY3VycmVudFNpemUgPSBwcml2LT5wcmVmZXJlbmNlcy0+
ZGVmYXVsdEZpeGVkRm9udFNpemUoKTsKICAgICBpZiAoY3VycmVudFNpemUgPT0gZm9udFNpemUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rml4ZWRGb250
U2l6ZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZm9udFNpemUpOworICAgIHByaXYtPnByZWZl
cmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShmb250U2l6ZSk7CiAgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIp
OwogfQogCkBAIC0xODU3LDcgKzE4MzUsNyBAQCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRf
bWluaW11bV9mb250X3NpemUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOwogCi0gICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRNaW5pbXVtRm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LT5taW5pbXVtRm9udFNpemUoKTsKIH0KIAogLyoqCkBAIC0xODcyLDEyICsxODUwLDExIEBAIHZv
aWQgd2Via2l0X3NldHRpbmdzX3NldF9taW5pbXVtX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsIGd1aW50MzIgZm9uCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OwotCi0gICAgdWludDMyX3QgY3VycmVudFNpemUgPSBXS1ByZWZlcmVuY2Vz
R2V0TWluaW11bUZvbnRTaXplKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICB1aW50MzJf
dCBjdXJyZW50U2l6ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5taW5pbXVtRm9udFNpemUoKTsKICAg
ICBpZiAoY3VycmVudFNpemUgPT0gZm9udFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdL
UHJlZmVyZW5jZXNTZXRNaW5pbXVtRm9udFNpemUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGZv
bnRTaXplKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TWluaW11bUZvbnRTaXplKGZvbnRT
aXplKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibWluaW11bS1m
b250LXNpemUiKTsKIH0KIApAQCAtMTkxMiwxMCArMTg4OSw5IEBAIHZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9kZWZhdWx0X2NoYXJzZXQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBn
Y2hhcioKICAgICBpZiAoIWdfc3RyY21wMChwcml2LT5kZWZhdWx0Q2hhcnNldC5kYXRhKCksIGRl
ZmF1bHRDaGFyc2V0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGRlZmF1bHRDaGFyc2V0UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhkZWZhdWx0Q2hhcnNldCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0VGV4
dEVuY29kaW5nTmFtZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZGVmYXVsdENoYXJzZXRSZWYu
Z2V0KCkpOwotICAgIHByaXYtPmRlZmF1bHRDaGFyc2V0ID0gV2ViS2l0Ojp0b0ltcGwoZGVmYXVs
dENoYXJzZXRSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZGVmYXVs
dENoYXJzZXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRlZmF1bHRDaGFyc2V0KTsKKyAgICBw
cml2LT5wcmVmZXJlbmNlcy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZGVmYXVsdENoYXJz
ZXRTdHJpbmcpOworICAgIHByaXYtPmRlZmF1bHRDaGFyc2V0ID0gZGVmYXVsdENoYXJzZXRTdHJp
bmcudXRmOCgpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkZWZh
dWx0LWNoYXJzZXQiKTsKIH0KIApAQCAtMTkzMSw3ICsxOTA3LDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0
dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OwogfQogCiAvKioKQEAgLTE5NDYsMTEgKzE5MjIsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jv
b2wKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwog
CiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAg
Ym9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2
LT5wcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50
VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1Nl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQp
OworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJs
ZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcHJp
dmF0ZS1icm93c2luZyIpOwogfQogCkBAIC0xOTY2LDcgKzE5NDIsNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzKFdlYktpdFNldHRpbmdzKiBz
ZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBy
ZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVk
KCk7CiB9CiAKIC8qKgpAQCAtMTk4MSwxMSArMTk1NywxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBn
Ym9vbAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7
CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAg
ICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXREZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHBy
aXYtPnByZWZlcmVuY2VzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJl
bnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxl
ZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5h
YmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1k
ZXZlbG9wZXItZXh0cmFzIik7CiB9CiAKQEAgLTIwMDEsNyArMTk3Nyw3IEBAIGdib29sZWFuIHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5nCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRUZXh0
QXJlYXNBcmVSZXNpemFibGUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT50ZXh0QXJlYXNBcmVSZXNpemFi
bGUoKTsKIH0KIAogLyoqCkBAIC0yMDE2LDExICsxOTkyLDExIEBAIHZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfcmVzaXphYmxlX3RleHRfYXJlYXMoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLCBnCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owot
ICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFRleHRBcmVhc0FyZVJlc2l6
YWJsZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBw
cml2LT5wcmVmZXJlbmNlcy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCk7CiAgICAgaWYgKGN1cnJl
bnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVk
KTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKGVuYWJs
ZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcmVz
aXphYmxlLXRleHQtYXJlYXMiKTsKIH0KIApAQCAtMjAzNiw3ICsyMDEyLDcgQEAgZ2Jvb2xlYW4g
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfdGFic190b19saW5rcyhXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdT
KHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRUYWJzVG9M
aW5rcyhzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnRhYnNUb0xpbmtzKCk7CiB9CiAKIC8qKgpAQCAtMjA1
MSwxMSArMjAyNywxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3RhYnNfdG9f
bGlua3MoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbgogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRUYWJzVG9MaW5rcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+dGFic1RvTGlua3MoKTsK
ICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdLUHJlZmVyZW5jZXNTZXRUYWJzVG9MaW5rcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5h
YmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFRhYnNUb0xpbmtzKGVuYWJsZWQpOwog
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdGFicy10by1s
aW5rcyIpOwogfQogCkBAIC0yMDcxLDcgKzIwNDcsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9kbnNfcHJlZmV0Y2hpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyks
IEZBTFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RE5TUHJlZmV0Y2hpbmdFbmFi
bGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+ZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCk7CiB9CiAKIC8q
KgpAQCAtMjA4NiwxMSArMjA2MiwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2Ruc19wcmVmZXRjaGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZQogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJL
aXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5j
ZXMtPmRuc1ByZWZldGNoaW5nRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldEROU1ByZWZldGNo
aW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+
cHJlZmVyZW5jZXMtPnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIp
OwogfQogCkBAIC0yMTA2LDcgKzIwODIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9jYXJldF9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRDYXJldEJyb3dzaW5nRW5hYmxlZChzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJp
di0+cHJlZmVyZW5jZXMtPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjEy
MSwxMSArMjA5NywxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2NhcmV0X2Jy
b3dzaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYQogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXRDYXJldEJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+Y2FyZXRC
cm93c2luZ0VuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRDYXJldEJyb3dzaW5nRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMt
PnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtY2FyZXQtYnJvd3NpbmciKTsKIH0KIApAQCAtMjE0
MSw3ICsyMTE3LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnVsbHNj
cmVlbihXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRGdWxsU2NyZWVuRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmZ1bGxT
Y3JlZW5FbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjE1NiwxMSArMjEzMiwxMSBAQCB2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Z1bGxzY3JlZW4oV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLCBnYm9vbGVhbiBlbgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdT
KHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5n
cy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRGdWxsU2Ny
ZWVuRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+ZnVsbFNjcmVlbkVuYWJsZWQoKTsKICAgICBpZiAoY3Vy
cmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5j
ZXNTZXRGdWxsU2NyZWVuRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7
CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEZ1bGxTY3JlZW5FbmFibGVkKGVuYWJsZWQpOwog
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZnVsbHNjcmVl
biIpOwogfQogCkBAIC0yMTc2LDcgKzIxNTIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X3ByaW50X2JhY2tncm91bmRzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFNob3VsZFByaW50QmFja2dyb3VuZHMoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLT5zaG91bGRQcmludEJhY2tncm91bmRzKCk7CiB9CiAKIC8qKgpAQCAt
MjE5MSwxMSArMjE2NywxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfcHJpbnRfYmFja2dy
b3VuZHMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBwcgogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1
ZSA9IFdLUHJlZmVyZW5jZXNHZXRTaG91bGRQcmludEJhY2tncm91bmRzKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5z
aG91bGRQcmludEJhY2tncm91bmRzKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBwcmludEJh
Y2tncm91bmRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0U2hvdWxk
UHJpbnRCYWNrZ3JvdW5kcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgcHJpbnRCYWNrZ3JvdW5k
cyk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFNob3VsZFByaW50QmFja2dyb3VuZHMocHJp
bnRCYWNrZ3JvdW5kcyk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwg
InByaW50LWJhY2tncm91bmRzIik7CiB9CiAKQEAgLTIyMTEsNyArMjE4Nyw3IEBAIGdib29sZWFu
IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmF1ZGlvKFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0
dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFdlYkF1ZGlvRW5h
YmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPndlYkF1ZGlvRW5hYmxlZCgpOwogfQogCiAvKioKQEAg
LTIyMjYsMTEgKzIyMDIsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJh
dWRpbyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWIKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0V2ViQXVkaW9FbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdl
dCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT53ZWJBdWRp
b0VuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRXZWJBdWRpb0VuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRXZWJBdWRp
b0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS13ZWJhdWRpbyIpOwogfQogCkBAIC0yMjQ2LDcgKzIyMjIsNyBAQCBnYm9vbGVh
biB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJnbChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRXZWJHTEVuYWJsZWQo
c2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLT53ZWJHTEVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0yMjYxLDE1
ICsyMjM3LDI5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2woV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkCiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldFdlYkdMRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAg
Ym9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+d2ViR0xFbmFibGVkKCk7CiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1ByZWZlcmVuY2VzU2V0V2ViR0xFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFi
bGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0V2ViR0xFbmFibGVkKGVuYWJsZWQpOwog
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtd2ViZ2wiKTsK
IH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3M6Cisg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0
dGluZ3M6YWxsb3ctbW9kYWwtZGlhbG9ncyBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBpZiBpdCdzIGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBydW4gbW9kYWwgZGlhbG9ncyBvciAlRkFM
U0Ugb3RoZXJ3aXNlLgorICovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21v
ZGFsX2RpYWxvZ3MoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKyAgICByZXR1
cm4gc2V0dGluZ3MtPnByaXYtPmFsbG93TW9kYWxEaWFsb2dzOworfQorCisvKioKICAqIHdlYmtp
dF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlhbG9nczoKICAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKICAqIEBhbGxvd2VkOiBWYWx1ZSB0byBiZSBzZXQKQEAgLTIyODksMTcgKzIy
NzksMTkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbgogfQogCiAvKioKLSAqIHdlYmtpdF9zZXR0
aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9nczoKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfem9v
bV90ZXh0X29ubHk6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgotICogR2V0
IHRoZSAjV2ViS2l0U2V0dGluZ3M6YWxsb3ctbW9kYWwtZGlhbG9ncyBwcm9wZXJ0eS4KKyAqIEdl
dCB0aGUgI1dlYktpdFNldHRpbmdzOnpvb20tdGV4dC1vbmx5IHByb3BlcnR5LgogICoKLSAqIFJl
dHVybnM6ICVUUlVFIGlmIGl0J3MgYWxsb3dlZCB0byBjcmVhdGUgYW5kIHJ1biBtb2RhbCBkaWFs
b2dzIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKiBSZXR1cm5zOiAlVFJVRSBJZiB6b29tIGxldmVs
IG9mIHRoZSB2aWV3IHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgdGV4dAorICogICAgb3IgJUZBTFNF
IGlmIGFsbCB2aWV3IGNvbnRlbnRzIHNob3VsZCBiZSBzY2FsZWQuCiAgKi8KLWdib29sZWFuIHdl
YmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7Ci0gICAgcmV0dXJuIHNldHRpbmdzLT5wcml2
LT5hbGxvd01vZGFsRGlhbG9nczsKKworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+em9vbVRl
eHRPbmx5OwogfQogCiAvKioKQEAgLTIzMjIsMjIgKzIzMTQsNiBAQCB2b2lkIHdlYmtpdF9zZXR0
aW5nc19zZXRfem9vbV90ZXh0X29ubHkoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVh
biB6b29tVAogfQogCiAvKioKLSAqIHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHk6
Ci0gKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCi0gKgotICogR2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6em9vbS10ZXh0LW9ubHkgcHJvcGVydHkuCi0gKgotICogUmV0dXJuczogJVRSVUUg
SWYgem9vbSBsZXZlbCBvZiB0aGUgdmlldyBzaG91bGQgb25seSBhZmZlY3QgdGhlIHRleHQKLSAq
ICAgIG9yICVGQUxTRSBpZiBhbGwgdmlldyBjb250ZW50cyBzaG91bGQgYmUgc2NhbGVkLgotICov
Ci1nYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncykKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7Ci0KLSAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnpv
b21UZXh0T25seTsKLX0KLQotLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRf
Y2FuX2FjY2Vzc19jbGlwYm9hcmQ6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAg
KgpAQCAtMjM0OSw4ICsyMzI1LDggQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZh
c2NyaXB0X2Nhbl9hY2Nlc3NfY2xpcGJvYXJkKFdlYktpdFNldHRpbmdzKiBzZXQKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKQotICAgICAgICAgICAgJiYgV0tQ
cmVmZXJlbmNlc0dldERPTVBhc3RlQWxsb3dlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmQoKQorICAgICAgICAmJiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMtPmRvbVBhc3RlQWxsb3dlZCgpOwogfQogCiAvKioKQEAgLTIzNjUsMzkgKzIzNDEsMTYg
QEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9h
cmQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2
ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2Vz
R2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkK
LSAgICAgICAgICAgICYmIFdLUHJlZmVyZW5jZXNHZXRET01QYXN0ZUFsbG93ZWQocHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5j
ZXMtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBwcml2LT5wcmVmZXJlbmNlcy0+
ZG9tUGFzdGVBbGxvd2VkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAgV0tQcmVmZXJl
bmNlc1NldERPTVBhc3RlQWxsb3dlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7
Ci0KKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZChlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0RE9NUGFzdGVBbGxvd2VkKGVu
YWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJqYXZhc2Ny
aXB0LWNhbi1hY2Nlc3MtY2xpcGJvYXJkIik7CiB9CiAKIC8qKgotICogd2Via2l0X3NldHRpbmdz
X3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmU6Ci0gKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCi0gKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Ci0gKgotICog
U2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6bWVkaWEtcGxheWJhY2stcmVxdWlyZXMtdXNlci1nZXN0
dXJlIHByb3BlcnR5LgotICovCi12b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJh
Y2tfcmVxdWlyZXNfdXNlcl9nZXN0dXJlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gZW5hYmxlZCkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncykpOwotCi0gICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TWVkaWFQbGF5
YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIGlm
IChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tQcmVm
ZXJlbmNlc1NldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpLCBlbmFibGVkKTsKLQotICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJtZWRpYS1wbGF5YmFjay1yZXF1aXJlcy11c2VyLWdlc3R1cmUiKTsKLX0KLQotLyoq
CiAgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2Vz
dHVyZToKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqCkBAIC0yNDEwLDI4ICsy
MzYzLDI3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfcmVx
dWlyZXNfdXNlcl9nZXN0dXJlKFdlYktpdFNldHRpbmdzCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+
cHJlZmVyZW5jZXMtPm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCk7CiB9CiAKIC8q
KgotICogd2Via2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5lOgor
ICogd2Via2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1
cmU6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKiBAZW5hYmxlZDogVmFsdWUg
dG8gYmUgc2V0CiAgKgotICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6bWVkaWEtcGxheWJhY2st
YWxsb3dzLWlubGluZSBwcm9wZXJ0eS4KKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOm1lZGlh
LXBsYXliYWNrLXJlcXVpcmVzLXVzZXItZ2VzdHVyZSBwcm9wZXJ0eS4KICAqLwotdm9pZCB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0
X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsIGdib29sZWFuIGVuYWJsZWQpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJp
diA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNl
c0dldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOwor
ICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPm1lZGlhUGxheWJhY2tS
ZXF1aXJlc1VzZXJHZXN0dXJlKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFQbGF5YmFja0FsbG93
c0lubGluZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0KLSAgICBnX29iamVj
dF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibWVkaWEtcGxheWJhY2stYWxsb3dzLWlubGlu
ZSIpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2Vy
R2VzdHVyZShlbmFibGVkKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAibWVkaWEtcGxheWJhY2stcmVxdWlyZXMtdXNlci1nZXN0dXJlIik7CiB9CiAKIC8qKgpAQCAt
MjQ0NywyOCArMjM5OSwyNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3Bs
YXliYWNrX2FsbG93c19pbmxpbmUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbgogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIFRSVUUpOwogCi0g
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHNldHRp
bmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2
LT5wcmVmZXJlbmNlcy0+bWVkaWFQbGF5YmFja0FsbG93c0lubGluZSgpOwogfQogCiAvKioKLSAq
IHdlYmtpdF9zZXR0aW5nc19zZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzOgorICogd2Vi
a2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5lOgogICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncwogICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAogICoK
LSAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmRyYXctY29tcG9zaXRpbmctaW5kaWNhdG9ycyBw
cm9wZXJ0eS4KKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLWFsbG93
cy1pbmxpbmUgcHJvcGVydHkuCiAgKi8KLXZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2Nv
bXBvc2l0aW5nX2luZGljYXRvcnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBl
bmFibGVkKQordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19p
bmxpbmUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQogewogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBX
ZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBpZiAoV0tQ
cmVmZXJlbmNlc0dldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUocHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpID09IGVuYWJsZWQKLSAgICAgICAgJiYgV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5n
UmVwYWludENvdW50ZXJzVmlzaWJsZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkgPT0gZW5hYmxl
ZCkKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5tZWRpYVBsYXli
YWNrQWxsb3dzSW5saW5lKCk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlz
aWJsZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAgV0tQcmVmZXJlbmNl
c1NldENvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZShwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSwgZW5hYmxlZCk7Ci0gICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwg
ImRyYXctY29tcG9zaXRpbmctaW5kaWNhdG9ycyIpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5z
ZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlm
eShHX09CSkVDVChzZXR0aW5ncyksICJtZWRpYS1wbGF5YmFjay1hbGxvd3MtaW5saW5lIik7CiB9
CiAKIC8qKgpAQCAtMjQ4Miw4ICsyNDMzLDI5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9k
cmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnCiBn
Ym9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwotICAgIHJldHVybiBXS1ByZWZlcmVu
Y2VzR2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpCi0gICAgICAgICAgICYmIFdLUHJlZmVyZW5jZXNHZXRDb21wb3NpdGluZ1JlcGFp
bnRDb3VudGVyc1Zpc2libGUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5jb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKCkKKyAgICAgICAgJiYgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5jb21wb3Np
dGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9yczoKKyAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKKyAqIEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhl
ICNXZWJLaXRTZXR0aW5nczpkcmF3LWNvbXBvc2l0aW5nLWluZGljYXRvcnMgcHJvcGVydHkuCisg
Ki8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+cHJl
ZmVyZW5jZXMtPmNvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoKSA9PSBlbmFibGVkCisgICAgICAg
ICYmIHByaXYtPnByZWZlcmVuY2VzLT5jb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUo
KSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+
c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJl
bmNlcy0+c2V0Q29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlKGVuYWJsZWQpOworICAg
IGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkcmF3LWNvbXBvc2l0aW5nLWlu
ZGljYXRvcnMiKTsKIH0KIAogLyoqCkBAIC0yNDk4LDcgKzI0NzAsNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhXZWJLaXRTZXR0aW5n
cyogc2V0dGluZwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TmVlZHNT
aXRlU3BlY2lmaWNRdWlya3Moc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpOwogfQogCiAvKioKQEAgLTI1MTMsMTEgKzI0ODUsMTEgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsIGcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5n
cykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7
Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVl
ID0gcHJpdi0+cHJlZmVyZW5jZXMtPm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CiAgICAgaWYg
KGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZl
cmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCks
IGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcyhlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
ZW5hYmxlLXNpdGUtc3BlY2lmaWMtcXVpcmtzIik7CiB9CiAKQEAgLTI1MzMsNyArMjUwNSw3IEBA
IGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0
UGFnZUNhY2hlRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUoKTsKIH0K
IAogLyoqCkBAIC0yNTQ4LDEwICsyNTIwLDEwIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfcGFnZV9jYWNoZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAg
IFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wg
Y3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBhZ2VDYWNoZUVuYWJsZWQocHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5j
ZXMtPnVzZXNQYWdlQ2FjaGUoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRQYWdlQ2FjaGVFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+
c2V0VXNlc1BhZ2VDYWNoZShlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
c2V0dGluZ3MpLCAiZW5hYmxlLXBhZ2UtY2FjaGUiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKaW5kZXgg
NGU1ZDIzMi4uOWIxZmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKQEAgLTI3LDggKzI3LDkgQEAKICNk
ZWZpbmUgV2ViS2l0U2V0dGluZ3NQcml2YXRlX2gKIAogI2luY2x1ZGUgIldlYktpdFNldHRpbmdz
LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyX0MuaD4KIAotdm9pZCB3ZWJraXRTZXR0aW5n
c0F0dGFjaFNldHRpbmdzVG9QYWdlKFdlYktpdFNldHRpbmdzKiwgV0tQYWdlUmVmKTsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1Rv
UGFnZShXZWJLaXRTZXR0aW5ncyosIFdlYlBhZ2VQcm94eSopOwogCiAjZW5kaWYgLy8gV2ViS2l0
U2V0dGluZ3NQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYmIxZDUwNC4uMWJlMjllZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI1
Myw3ICsyNTMsNyBAQCBzdGF0aWMgdm9pZCB6b29tVGV4dE9ubHlDaGFuZ2VkKFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncywgR1BhcmFtU3BlYyosIFdlYktpdFdlYgogc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld1NldFNldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncykKIHsKICAgICB3ZWJWaWV3LT5wcml2LT5zZXR0aW5ncyA9IHNldHRpbmdzOwot
ICAgIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NUb1BhZ2Uod2ViVmlldy0+cHJpdi0+c2V0
dGluZ3MuZ2V0KCksIHRvQVBJKGdldFBhZ2Uod2ViVmlldykpKTsKKyAgICB3ZWJraXRTZXR0aW5n
c0F0dGFjaFNldHRpbmdzVG9QYWdlKHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpLCBnZXRQ
YWdlKHdlYlZpZXcpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5Ojph
bGxvdy1tb2RhbC1kaWFsb2dzIiwgR19DQUxMQkFDSyhhbGxvd01vZGFsRGlhbG9nc0NoYW5nZWQp
LCB3ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5Ojp6b29t
LXRleHQtb25seSIsIEdfQ0FMTEJBQ0soem9vbVRleHRPbmx5Q2hhbmdlZCksIHdlYlZpZXcpOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166484</attachid>
            <date>2012-10-01 08:46:08 -0700</date>
            <delta_ts>2012-10-16 01:45:06 -0700</delta_ts>
            <desc>Updated patch to apply on current git master</desc>
            <filename>wk2-kill-c-api-settings2.diff</filename>
            <type>text/plain</type>
            <size>52348</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZGExNzRhLi5kZjQ0M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUg
QEAKKzIwMTItMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIERvbid0IHVzZSB0aGUgQyBBUEkgaW50ZXJuYWxseSBpbiBXZWJL
aXRTZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2luZyB0aGUgQysrIGNsYXNzZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgQyBBUEkgd3Jh
cHBlcnMgd2UKKyAgICAgICAgYXZvaWQgYSBsb3Qgb2YgdG9JbXBsL3RvQVBJIGNhc3RzLCBzdHJp
bmcgY29udmVyc2lvbnMgYW5kCisgICAgICAgIGFsbG9jYXRpb25zLiBUaGUgY29kZSBpcyBhbHNv
IGEgbG90IHNpbXBsZXIgYW5kIGVhc2llciB0byByZWFkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJp
dmF0ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRp
bmdzVG9QYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3Jp
cHQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCk6Cisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMpOgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKToKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcpOgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
c2V0dGluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Bs
dWdpbnMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6Cisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKToKKyAgICAgICAgKHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVk
aXRpbmcpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfZmFtaWx5
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbW9ub3NwYWNlX2ZvbnRfZmFtaWx5KToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfc2VyaWZfZm9udF9mYW1pbHkpOgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9zYW5zX3NlcmlmX2ZvbnRfZmFtaWx5KToKKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2ZhbWlseSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2ZhbnRhc3lfZm9udF9mYW1pbHkpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFtaWx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0
aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3Nl
dF9kZWZhdWx0X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X21pbmltdW1fZm9udF9zaXplKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11
bV9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJz
ZXQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2lu
Zyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5n
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMp
OgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyk6
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9hcmVh
cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9h
cmVhcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV90YWJzX3RvX2xpbmtz
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3RhYnNfdG9fbGlua3MpOgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKToKKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Ruc19wcmVmZXRjaGluZyk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyk6CisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9jYXJldF9icm93c2luZyk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9wcmludF9iYWNrZ3JvdW5kcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X3By
aW50X2JhY2tncm91bmRzKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dl
YmF1ZGlvKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmF1ZGlvKToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKToKKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmdsKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X3pvb21fdGV4dF9vbmx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fYWNjZXNzX2NsaXBib2FyZCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2ph
dmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUpOgorICAgICAgICAod2Vi
a2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUpOgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5l
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lu
bGluZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5k
aWNhdG9ycyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRpbmdf
aW5kaWNhdG9ycyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3Nw
ZWNpZmljX3F1aXJrcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zaXRl
X3NwZWNpZmljX3F1aXJrcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9w
YWdlX2NhY2hlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BhZ2VfY2Fj
aGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld1NldFNldHRpbmdzKToKKwogMjAxMi0wOS0yNyAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IHZp
ZXdwb3J0IFFNTCBhdXRvIHRlc3RzIGFmdGVyIHRoZSB2aWV3cG9ydCBjaGFuZ2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5k
ZXggYzBhNjQxNi4uMTlmODhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMzMsMTMgKzMzLDE1IEBACiAKICNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudEd0
ay5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tQcmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdlYlByZWZlcmVu
Y2VzPiBwcmVmZXJlbmNlczsKICAgICBDU3RyaW5nIGRlZmF1bHRGb250RmFtaWx5OwogICAgIENT
dHJpbmcgbW9ub3NwYWNlRm9udEZhbWlseTsKICAgICBDU3RyaW5nIHNlcmlmRm9udEZhbWlseTsK
QEAgLTk1MSw3ICs5NTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5p
dChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxh
Z3MpKTsKIAogICAgIC8qKgotICAgICAqIFdlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLWFs
bG93cy1pbmxpbmUKKyAgICAgKiBXZWJLaXRTZXR0aW5nczptZWRpYS1wbGF5YmFjay1hbGxvd3Mt
aW5saW5lOgogICAgICAqCiAgICAgICogV2hldGhlciBtZWRpYSBwbGF5YmFjayBpcyBmdWxsLXNj
cmVlbiBvbmx5IG9yIGlubGluZSBwbGF5YmFjayBpcyBhbGxvd2VkLgogICAgICAqIFRoaXMgaXMg
JVRSVUUgYnkgZGVmYXVsdCwgc28gbWVkaWEgcGxheWJhY2sgY2FuIGJlIGlubGluZS4gU2V0dGlu
ZyBpdCB0bwpAQCAtMTA0OCw0MiArMTA1MCwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGlu
Z3NfaW5pdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnByaXYgPSBw
cml2OwogICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CiAKLSAgICBwcml2
LT5wcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKKyAgICBwcml2
LT5wcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoKTsKKyAgICBwcml2LT5kZWZh
dWx0Rm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CisgICAgcHJpdi0+bW9ub3NwYWNlRm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2Vz
LT5maXhlZEZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+c2VyaWZGb250RmFtaWx5ID0g
cHJpdi0+cHJlZmVyZW5jZXMtPnNlcmlmRm9udEZhbWlseSgpLnV0ZjgoKTsKKyAgICBwcml2LT5z
YW5zU2VyaWZGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZvbnRGYW1p
bHkoKS51dGY4KCk7CisgICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJl
bmNlcy0+Y3Vyc2l2ZUZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+ZmFudGFzeUZvbnRG
YW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+ZmFudGFzeUZvbnRGYW1pbHkoKS51dGY4KCk7Cisg
ICAgcHJpdi0+cGljdG9ncmFwaEZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGljdG9n
cmFwaEZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBwcml2
LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4KCk7CiAKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVmYXVsdEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdL
UHJlZmVyZW5jZXNDb3B5U3RhbmRhcmRGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgp
KSk7Ci0gICAgcHJpdi0+ZGVmYXVsdEZvbnRGYW1pbHkgPSAgV2ViS2l0Ojp0b0ltcGwoZGVmYXVs
dEZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KLSAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbW9ub3NwYWNlRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tQcmVmZXJl
bmNlc0NvcHlGaXhlZEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpKTsKLSAgICBw
cml2LT5tb25vc3BhY2VGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwobW9ub3NwYWNlRm9udEZh
bWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBzZXJpZkZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2Vy
aWZGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0gICAgcHJpdi0+c2VyaWZG
b250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoc2VyaWZGb250RmFtaWx5UmVmLmdldCgpKS0+c3Ry
aW5nKCkudXRmOCgpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNhbnNTZXJpZkZv
bnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZhbWls
eShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkpOwotICAgIHByaXYtPnNhbnNTZXJpZkZvbnRGYW1p
bHkgPSBXZWJLaXQ6OnRvSW1wbChzYW5zU2VyaWZGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5n
KCkudXRmOCgpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGN1cnNpdmVGb250RmFt
aWx5UmVmID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ29weUN1cnNpdmVGb250RmFtaWx5KHByaXYt
PnByZWZlcmVuY2VzLmdldCgpKSk7Ci0gICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBXZWJL
aXQ6OnRvSW1wbChjdXJzaXZlRm9udEZhbWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsK
LQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmYW50YXN5Rm9udEZhbWlseVJlZiA9IGFk
b3B0V0soV0tQcmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9udEZhbWlseShwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSkpOwotICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwo
ZmFudGFzeUZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gcGljdG9ncmFwaEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdL
UHJlZmVyZW5jZXNDb3B5UGljdG9ncmFwaEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpKTsKLSAgICBwcml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHBp
Y3RvZ3JhcGhGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOwotCi0gICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlZmF1bHRDaGFyc2V0UmVmID0gYWRvcHRXSyhXS1ByZWZl
cmVuY2VzQ29weURlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKHByaXYtPnByZWZlcmVuY2VzLmdldCgp
KSk7Ci0gICAgcHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBXZWJLaXQ6OnRvSW1wbChkZWZhdWx0Q2hh
cnNldFJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKIH0KIAotdm9pZCB3ZWJraXRTZXR0aW5n
c0F0dGFjaFNldHRpbmdzVG9QYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgV0tQYWdlUmVm
IHdrUGFnZSkKK3ZvaWQgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRT
ZXR0aW5ncyogc2V0dGluZ3MsIFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBXZWJLaXRTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBXS1BhZ2VHcm91cFNldFBy
ZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cCh3a1BhZ2UpLCBwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7Ci0gICAgV2ViS2l0Ojp0b0ltcGwod2tQYWdlKS0+c2V0Q2FuUnVuTW9kYWwocHJpdi0+
YWxsb3dNb2RhbERpYWxvZ3MpOwotCi0gICAgQVNTRVJUKCFwcml2LT51c2VyQWdlbnQuaXNOdWxs
KCkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VyQWdlbnQgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHByaXYtPnVzZXJBZ2VudC5kYXRhKCkpKTsKLSAg
ICBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQod2tQYWdlLCB1c2VyQWdlbnQuZ2V0KCkpOworICAg
IHBhZ2UtPnBhZ2VHcm91cCgpLT5zZXRQcmVmZXJlbmNlcyhzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworICAgIHBhZ2UtPnNldENhblJ1bk1vZGFsKHNldHRpbmdzLT5wcml2LT5h
bGxvd01vZGFsRGlhbG9ncyk7CisgICAgcGFnZS0+c2V0Q3VzdG9tVXNlckFnZW50KFN0cmluZzo6
ZnJvbVVURjgoc2V0dGluZ3MtPnByaXYtPnVzZXJBZ2VudC5kYXRhKCkpKTsKIH0KIAogLyoqCkBA
IC0xMTMyLDcgKzExMTUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9q
YXZhc2NyaXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+
amF2YVNjcmlwdEVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0xMTQ3LDExICsxMTMwLDExIEBAIHZv
aWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsIGdib29sZWFuIGVuCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEph
dmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJl
bnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5qYXZhU2NyaXB0RW5hYmxlZCgpOwogICAgIGlm
IChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVm
ZXJlbmNlc1NldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFi
bGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoZW5hYmxl
ZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZh
c2NyaXB0Iik7CiB9CiAKQEAgLTExNjcsNyArMTE1MCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0
aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFM
U0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKTsKIH0KIAog
LyoqCkBAIC0xMTgyLDExICsxMTY1LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9hdXRv
X2xvYWRfaW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hCiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdl
YktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3Vy
cmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVm
ZXJlbmNlcy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1
ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsK
KyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGVuYWJs
ZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJhdXRvLWxvYWQt
aW1hZ2VzIik7CiB9CiAKQEAgLTEyMDIsNyArMTE4NSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0
aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoV2ViS2l0U2V0
dGluCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29u
c0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmxvYWRz
U2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKCk7CiB9CiAKIC8qKgpAQCAt
MTIxNywxMSArMTIwMCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoV2ViS2l0U2V0dGluZ3MqCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVl
ID0gV0tQcmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVm
ZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9
IHByaXYtPnByZWZlcmVuY2VzLT5sb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJl
ZmVyZW5jZSgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxv
YWRpbmdQcmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBw
cml2LT5wcmVmZXJlbmNlcy0+c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1By
ZWZlcmVuY2UoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImxvYWQtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIik7CiB9CiAKQEAgLTEy
MzcsNyArMTIyMCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxp
bmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFNldHRpbmdzCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
c2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLT5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsK
IH0KIAogLyoqCkBAIC0xMjUyLDExICsxMjM1LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNl
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAog
ICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJv
b2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXS1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+
c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGlj
YXRpb24tY2FjaGUiKTsKIH0KIApAQCAtMTI3Miw3ICsxMjU1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3Rv
cmFnZUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1
cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CiB9
CiAKIC8qKgpAQCAtMTI4NywxMSArMTI3MCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYgog
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAg
ICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29s
IGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHByaXYt
PnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZl
cmVuY2VzLT5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBl
bmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9y
YWdlRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+
cHJlZmVyZW5jZXMtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdl
Iik7CiB9CiAKQEAgLTEzMDcsNyArMTI5MCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYt
PnByZWZlcmVuY2VzLT5kYXRhYmFzZXNFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMTMyMiwxMSAr
MTMwNSwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNl
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYQogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJl
ZmVyZW5jZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5kYXRhYmFzZXNFbmFibGVk
KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldERhdGFiYXNlc0VuYWJs
ZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1odG1sNS1kYXRhYmFzZSIpOwogfQogCkBAIC0xMzQyLDcgKzEzMjUsNyBAQCBnYm9vbGVh
biB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdT
KHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRp
dG9yRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVy
biBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnhzc0F1ZGl0b3JFbmFibGVkKCk7CiB9CiAK
IC8qKgpAQCAtMTM1NywxMSArMTM0MCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3hzc19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBX
ZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1
cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNl
cy0+eHNzQXVkaXRvckVuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRYU1NBdWRpdG9yRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5j
ZXMtPnNldFhTU0F1ZGl0b3JFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUteHNzLWF1ZGl0b3IiKTsKIH0KIApAQCAtMTM3OCw3
ICsxMzYxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxh
dHRlbmluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHNldHRpbmdzLT5wcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTEzOTMsMTEgKzEzNzYs
MTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVu
Y2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+ZnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOwogfQogCkBAIC0xNDEz
LDcgKzEzOTYsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5z
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJs
ZWQoKTsKIH0KIAogLyoqCkBAIC0xNDI4LDExICsxNDExLDExIEBAIHZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFu
IGVuYWJsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owot
ICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnBy
ZWZlcmVuY2VzLT5wbHVnaW5zRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldFBsdWdpbnNFbmFi
bGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJl
bmNlcy0+c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7CiB9CiAKQEAgLTE0NDgsNyArMTQz
MSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0
SmF2YUVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1
cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5qYXZhRW5hYmxlZCgpOwogfQogCiAvKioK
QEAgLTE0NjMsMTEgKzE0NDYsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9q
YXZhKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0
U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50
VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPmphdmFFbmFi
bGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCksIGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRKYXZhRW5hYmxlZChlbmFi
bGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWph
dmEiKTsKIH0KIApAQCAtMTQ4Myw3ICsxNDY2LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdz
X2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXQK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsK
KyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5qYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5KCk7CiB9CiAKIC8qKgpAQCAtMTQ5OCwxMSArMTQ4MSwxMSBA
QCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1
dG9tYXRpY2FsbHkoV2ViS2l0U2V0dGluZwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5qYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1
ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHNldHRpbmdzKSwgImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5
Iik7CiB9CiAKQEAgLTE1MTgsNyArMTUwMSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwg
RkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0Vu
YWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoKTsKIH0K
IAogLyoqCkBAIC0xNTMzLDExICsxNTE2LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2JvCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAg
IFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wg
Y3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5w
cmVmZXJlbmNlcy0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0
SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVk
KTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVu
YWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUt
aHlwZXJsaW5rLWF1ZGl0aW5nIik7CiB9CiAKQEAgLTE1NzIsMTAgKzE1NTUsOSBAQCB2b2lkIHdl
YmtpdF9zZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MsIGNvbnN0IGdjaAogICAgIGlmICghZ19zdHJjbXAwKHByaXYtPmRlZmF1bHRGb250RmFt
aWx5LmRhdGEoKSwgZGVmYXVsdEZvbnRGYW1pbHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RhbmRhcmRGb250RmFtaWx5UmVmID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkZWZhdWx0Rm9udEZhbWlseSkpOwotICAgIFdL
UHJlZmVyZW5jZXNTZXRTdGFuZGFyZEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCks
IHN0YW5kYXJkRm9udEZhbWlseVJlZi5nZXQoKSk7Ci0gICAgcHJpdi0+ZGVmYXVsdEZvbnRGYW1p
bHkgPSBXZWJLaXQ6OnRvSW1wbChzdGFuZGFyZEZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmco
KS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgc3RhbmRhcmRGb250RmFtaWx5ID0gU3RyaW5nOjpmcm9t
VVRGOChkZWZhdWx0Rm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFN0YW5k
YXJkRm9udEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOworICAgIHByaXYtPmRlZmF1bHRGb250
RmFtaWx5ID0gc3RhbmRhcmRGb250RmFtaWx5LnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LWZhbWlseSIpOwogfQogCkBAIC0xNjEw
LDEwICsxNTkyLDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21vbm9zcGFjZV9mb250X2Zh
bWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGcKICAgICBpZiAoIWdfc3RyY21w
MChwcml2LT5tb25vc3BhY2VGb250RmFtaWx5LmRhdGEoKSwgbW9ub3NwYWNlRm9udEZhbWlseSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmaXhlZEZv
bnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1vbm9z
cGFjZUZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0Rml4ZWRGb250RmFtaWx5KHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBmaXhlZEZvbnRGYW1pbHlSZWYuZ2V0KCkpOwotICAgIHBy
aXYtPm1vbm9zcGFjZUZvbnRGYW1pbHkgPSBXZWJLaXQ6OnRvSW1wbChmaXhlZEZvbnRGYW1pbHlS
ZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZml4ZWRGb250RmFtaWx5
ID0gU3RyaW5nOjpmcm9tVVRGOChtb25vc3BhY2VGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVm
ZXJlbmNlcy0+c2V0Rml4ZWRGb250RmFtaWx5KGZpeGVkRm9udEZhbWlseSk7CisgICAgcHJpdi0+
bW9ub3NwYWNlRm9udEZhbWlseSA9IGZpeGVkRm9udEZhbWlseS51dGY4KCk7CiAgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgIm1vbm9zcGFjZS1mb250LWZhbWlseSIpOwog
fQogCkBAIC0xNjQ4LDEwICsxNjI5LDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X3Nlcmlm
X2ZvbnRfZmFtaWx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgZ2NoYXIKICAgICBp
ZiAoIWdfc3RyY21wMChwcml2LT5zZXJpZkZvbnRGYW1pbHkuZGF0YSgpLCBzZXJpZkZvbnRGYW1p
bHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc2Vy
aWZGb250RmFtaWx5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhz
ZXJpZkZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0U2VyaWZGb250RmFtaWx5KHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBzZXJpZkZvbnRGYW1pbHlSZWYuZ2V0KCkpOwotICAgIHBy
aXYtPnNlcmlmRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHNlcmlmRm9udEZhbWlseVJlZi5n
ZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQorICAgIFN0cmluZyBzZXJpZkZvbnRGYW1pbHlTdHJp
bmcgPSBTdHJpbmc6OmZyb21VVEY4KHNlcmlmRm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVy
ZW5jZXMtPnNldFNlcmlmRm9udEZhbWlseShzZXJpZkZvbnRGYW1pbHlTdHJpbmcpOworICAgIHBy
aXYtPnNlcmlmRm9udEZhbWlseSA9IHNlcmlmRm9udEZhbWlseVN0cmluZy51dGY4KCk7CiAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInNlcmlmLWZvbnQtZmFtaWx5Iik7
CiB9CiAKQEAgLTE2ODYsMTAgKzE2NjYsOSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfc2Fu
c19zZXJpZl9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0CiAgICAg
aWYgKCFnX3N0cmNtcDAocHJpdi0+c2Fuc1NlcmlmRm9udEZhbWlseS5kYXRhKCksIHNhbnNTZXJp
ZkZvbnRGYW1pbHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gc2Fuc1NlcmlmRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoc2Fuc1NlcmlmRm9udEZhbWlseSkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRT
YW5zU2VyaWZGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBzYW5zU2VyaWZGb250
RmFtaWx5UmVmLmdldCgpKTsKLSAgICBwcml2LT5zYW5zU2VyaWZGb250RmFtaWx5ID0gV2ViS2l0
Ojp0b0ltcGwoc2Fuc1NlcmlmRm9udEZhbWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsK
LQorICAgIFN0cmluZyBzYW5zU2VyaWZGb250RmFtaWx5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OChzYW5zU2VyaWZGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShzYW5zU2VyaWZGb250RmFtaWx5U3RyaW5nKTsKKyAgICBwcml2LT5zYW5z
U2VyaWZGb250RmFtaWx5ID0gc2Fuc1NlcmlmRm9udEZhbWlseVN0cmluZy51dGY4KCk7CiAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInNhbnMtc2VyaWYtZm9udC1mYW1p
bHkiKTsKIH0KIApAQCAtMTcyNCwxMCArMTcwMyw5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3Nl
dF9jdXJzaXZlX2ZvbnRfZmFtaWx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgZ2No
CiAgICAgaWYgKCFnX3N0cmNtcDAocHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkuZGF0YSgpLCBjdXJz
aXZlRm9udEZhbWlseSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBjdXJzaXZlRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoY3Vyc2l2ZUZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0Q3Vy
c2l2ZUZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGN1cnNpdmVGb250RmFtaWx5
UmVmLmdldCgpKTsKLSAgICBwcml2LT5jdXJzaXZlRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBs
KGN1cnNpdmVGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOwotCisgICAgU3Ry
aW5nIGN1cnNpdmVGb250RmFtaWx5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChjdXJzaXZlRm9u
dEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEN1cnNpdmVGb250RmFtaWx5KGN1
cnNpdmVGb250RmFtaWx5U3RyaW5nKTsKKyAgICBwcml2LT5jdXJzaXZlRm9udEZhbWlseSA9IGN1
cnNpdmVGb250RmFtaWx5U3RyaW5nLnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qoc2V0dGluZ3MpLCAiY3Vyc2l2ZS1mb250LWZhbWlseSIpOwogfQogCkBAIC0xNzYyLDEwICsx
NzQwLDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2ZhbnRhc3lfZm9udF9mYW1pbHkoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBnY2gKICAgICBpZiAoIWdfc3RyY21wMChwcml2
LT5mYW50YXN5Rm9udEZhbWlseS5kYXRhKCksIGZhbnRhc3lGb250RmFtaWx5KSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZhbnRhc3lGb250RmFtaWx5
UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhmYW50YXN5Rm9udEZh
bWlseSkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5Rm9udEZhbWlseShwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSwgZmFudGFzeUZvbnRGYW1pbHlSZWYuZ2V0KCkpOwotICAgIHByaXYtPmZh
bnRhc3lGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoZmFudGFzeUZvbnRGYW1pbHlSZWYuZ2V0
KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZmFudGFzeUZvbnRGYW1pbHlTdHJp
bmcgPSBTdHJpbmc6OmZyb21VVEY4KGZhbnRhc3lGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVm
ZXJlbmNlcy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFudGFzeUZvbnRGYW1pbHlTdHJpbmcpOwor
ICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gZmFudGFzeUZvbnRGYW1pbHlTdHJpbmcudXRm
OCgpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJmYW50YXN5LWZv
bnQtZmFtaWx5Iik7CiB9CiAKQEAgLTE4MDAsMTAgKzE3NzcsOSBAQCB2b2lkIHdlYmtpdF9zZXR0
aW5nc19zZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGNvbnN0CiAgICAgaWYgKCFnX3N0cmNtcDAocHJpdi0+cGljdG9ncmFwaEZvbnRGYW1pbHkuZGF0
YSgpLCBwaWN0b2dyYXBoRm9udEZhbWlseSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBwaWN0b2dyYXBoRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocGljdG9ncmFwaEZvbnRGYW1pbHkpKTsKLSAgICBX
S1ByZWZlcmVuY2VzU2V0UGljdG9ncmFwaEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCksIHBpY3RvZ3JhcGhGb250RmFtaWx5UmVmLmdldCgpKTsKLSAgICBwcml2LT5waWN0b2dyYXBo
Rm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHBpY3RvZ3JhcGhGb250RmFtaWx5UmVmLmdldCgp
KS0+c3RyaW5nKCkudXRmOCgpOwotCisgICAgU3RyaW5nIHBpY3RvZ3JhcGhGb250RmFtaWx5U3Ry
aW5nID0gU3RyaW5nOjpmcm9tVVRGOChwaWN0b2dyYXBoRm9udEZhbWlseSk7CisgICAgcHJpdi0+
cHJlZmVyZW5jZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KHBpY3RvZ3JhcGhGb250RmFtaWx5
U3RyaW5nKTsKKyAgICBwcml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9IHBpY3RvZ3JhcGhGb250
RmFtaWx5U3RyaW5nLnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAicGljdG9ncmFwaC1mb250LWZhbWlseSIpOwogfQogCkBAIC0xODE5LDcgKzE3OTUsNyBA
QCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncyksIDApOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREZWZh
dWx0Rm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1
cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKIH0KIAog
LyoqCkBAIC0xODM0LDEyICsxODEwLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kZWZh
dWx0X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50MzIgZm9uCiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdl
YktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotCi0gICAgdWludDMy
X3QgY3VycmVudFNpemUgPSBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZvbnRTaXplKHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKKyAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IHByaXYtPnByZWZl
cmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKICAgICBpZiAoY3VycmVudFNpemUgPT0gZm9udFNp
emUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rm9udFNp
emUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGZvbnRTaXplKTsKKyAgICBwcml2LT5wcmVmZXJl
bmNlcy0+c2V0RGVmYXVsdEZvbnRTaXplKGZvbnRTaXplKTsKICAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LXNpemUiKTsKIH0KIApAQCAtMTg1NSw3
ICsxODMwLDcgQEAgZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNl
X2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MKIHsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsKIAotICAgIHJldHVybiBX
S1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZpeGVkRm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5k
ZWZhdWx0Rml4ZWRGb250U2l6ZSgpOwogfQogCiAvKioKQEAgLTE4NzAsMTIgKzE4NDUsMTEgQEAg
dm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsIGcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7Ci0KLSAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IFdLUHJlZmVyZW5j
ZXNHZXREZWZhdWx0Rml4ZWRGb250U2l6ZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAg
dWludDMyX3QgY3VycmVudFNpemUgPSBwcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZpeGVkRm9u
dFNpemUoKTsKICAgICBpZiAoY3VycmVudFNpemUgPT0gZm9udFNpemUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSwgZm9udFNpemUpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXREZWZh
dWx0Rml4ZWRGb250U2l6ZShmb250U2l6ZSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIpOwogfQogCkBAIC0xODkx
LDcgKzE4NjUsNyBAQCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfbWluaW11bV9mb250X3Np
emUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOwogCi0gICAgcmV0dXJuIFdLUHJlZmVy
ZW5jZXNHZXRNaW5pbXVtRm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgp
KTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5taW5pbXVtRm9udFNp
emUoKTsKIH0KIAogLyoqCkBAIC0xOTA2LDEyICsxODgwLDExIEBAIHZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9taW5pbXVtX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50
MzIgZm9uCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owot
Ci0gICAgdWludDMyX3QgY3VycmVudFNpemUgPSBXS1ByZWZlcmVuY2VzR2V0TWluaW11bUZvbnRT
aXplKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9
IHByaXYtPnByZWZlcmVuY2VzLT5taW5pbXVtRm9udFNpemUoKTsKICAgICBpZiAoY3VycmVudFNp
emUgPT0gZm9udFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRN
aW5pbXVtRm9udFNpemUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGZvbnRTaXplKTsKKyAgICBw
cml2LT5wcmVmZXJlbmNlcy0+c2V0TWluaW11bUZvbnRTaXplKGZvbnRTaXplKTsKICAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibWluaW11bS1mb250LXNpemUiKTsKIH0K
IApAQCAtMTk0NiwxMCArMTkxOSw5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0
X2NoYXJzZXQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBnY2hhcioKICAgICBpZiAo
IWdfc3RyY21wMChwcml2LT5kZWZhdWx0Q2hhcnNldC5kYXRhKCksIGRlZmF1bHRDaGFyc2V0KSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlZmF1bHRD
aGFyc2V0UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkZWZhdWx0
Q2hhcnNldCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShw
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZGVmYXVsdENoYXJzZXRSZWYuZ2V0KCkpOwotICAgIHBy
aXYtPmRlZmF1bHRDaGFyc2V0ID0gV2ViS2l0Ojp0b0ltcGwoZGVmYXVsdENoYXJzZXRSZWYuZ2V0
KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZGVmYXVsdENoYXJzZXRTdHJpbmcg
PSBTdHJpbmc6OmZyb21VVEY4KGRlZmF1bHRDaGFyc2V0KTsKKyAgICBwcml2LT5wcmVmZXJlbmNl
cy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZGVmYXVsdENoYXJzZXRTdHJpbmcpOworICAg
IHByaXYtPmRlZmF1bHRDaGFyc2V0ID0gZGVmYXVsdENoYXJzZXRTdHJpbmcudXRmOCgpOwogICAg
IGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkZWZhdWx0LWNoYXJzZXQiKTsK
IH0KIApAQCAtMTk2NSw3ICsxOTM3LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHNl
dHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAvKioKQEAg
LTE5ODAsMTEgKzE5NTIsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2
YXRlX2Jyb3dzaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnBy
ZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIp
OwogfQogCkBAIC0yMDAwLDcgKzE5NzIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
c2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiB9CiAKIC8qKgpA
QCAtMjAxNSwxMSArMTk4NywxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Rl
dmVsb3Blcl9leHRyYXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbAogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2Vz
LT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+
cHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19v
YmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFz
Iik7CiB9CiAKQEAgLTIwMzUsNyArMjAwNyw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5nCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwg
RkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRUZXh0QXJlYXNBcmVSZXNpemFi
bGUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLT50ZXh0QXJlYXNBcmVSZXNpemFibGUoKTsKIH0KIAogLyoq
CkBAIC0yMDUwLDExICsyMDIyLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
cmVzaXphYmxlX3RleHRfYXJlYXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktp
dFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVu
dFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFRleHRBcmVhc0FyZVJlc2l6YWJsZShwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNl
cy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5w
cmVmZXJlbmNlcy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKGVuYWJsZWQpOwogICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcmVzaXphYmxlLXRleHQtYXJl
YXMiKTsKIH0KIApAQCAtMjA3MCw3ICsyMDQyLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfdGFic190b19saW5rcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFM
U0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRUYWJzVG9MaW5rcyhzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJl
ZmVyZW5jZXMtPnRhYnNUb0xpbmtzKCk7CiB9CiAKIC8qKgpAQCAtMjA4NSwxMSArMjA1NywxMSBA
QCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3RhYnNfdG9fbGlua3MoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRUYWJzVG9MaW5rcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50
VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+dGFic1RvTGlua3MoKTsKICAgICBpZiAoY3VycmVu
dFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNT
ZXRUYWJzVG9MaW5rcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJp
di0+cHJlZmVyZW5jZXMtPnNldFRhYnNUb0xpbmtzKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdGFicy10by1saW5rcyIpOwogfQogCkBA
IC0yMTA1LDcgKzIwNzcsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9k
bnNfcHJlZmV0Y2hpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAg
IHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVm
ZXJlbmNlcy0+ZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjEyMCwxMSAr
MjA5MiwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Ruc19wcmVmZXRjaGlu
ZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZh
dGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJl
ZmVyZW5jZXNHZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPmRuc1ByZWZldGNo
aW5nRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldEROU1ByZWZldGNoaW5nRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNl
dEROU1ByZWZldGNoaW5nRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIpOwogfQogCkBAIC0yMTQw
LDcgKzIxMTIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9i
cm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRDYXJldEJyb3dzaW5nRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJl
ZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMt
PmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjE1NSwxMSArMjEyNywxMSBA
QCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2NhcmV0X2Jyb3dzaW5nKFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNH
ZXRDYXJldEJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+Y2FyZXRCcm93c2luZ0VuYWJsZWQo
KTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdLUHJlZmVyZW5jZXNTZXRDYXJldEJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldENhcmV0QnJvd3Np
bmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5n
cyksICJlbmFibGUtY2FyZXQtYnJvd3NpbmciKTsKIH0KIApAQCAtMjE3NSw3ICsyMTQ3LDcgQEAg
Z2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnVsbHNjcmVlbihXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NF
VFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRG
dWxsU2NyZWVuRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmZ1bGxTY3JlZW5FbmFibGVkKCk7
CiB9CiAKIC8qKgpAQCAtMjE5MCwxMSArMjE2MiwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2Z1bGxzY3JlZW4oV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBl
bgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAK
ICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBi
b29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRGdWxsU2NyZWVuRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVm
ZXJlbmNlcy0+ZnVsbFNjcmVlbkVuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRGdWxsU2NyZWVu
RW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJl
ZmVyZW5jZXMtPnNldEZ1bGxTY3JlZW5FbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZnVsbHNjcmVlbiIpOwogfQogCkBAIC0y
MjEwLDcgKzIxODIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X3ByaW50X2JhY2tn
cm91bmRzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldFNob3VsZFByaW50QmFja2dyb3VuZHMoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LT5zaG91bGRQcmludEJhY2tncm91bmRzKCk7CiB9CiAKIC8qKgpAQCAtMjIyNSwxMSArMjE5Nywx
MSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfcHJpbnRfYmFja2dyb3VuZHMoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBwcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRTaG91bGRQcmludEJhY2tncm91bmRzKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5zaG91bGRQcmludEJhY2tn
cm91bmRzKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBwcmludEJhY2tncm91bmRzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5k
cyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgcHJpbnRCYWNrZ3JvdW5kcyk7CisgICAgcHJpdi0+
cHJlZmVyZW5jZXMtPnNldFNob3VsZFByaW50QmFja2dyb3VuZHMocHJpbnRCYWNrZ3JvdW5kcyk7
CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInByaW50LWJhY2tncm91
bmRzIik7CiB9CiAKQEAgLTIyNDUsNyArMjIxNyw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3dlYmF1ZGlvKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7
CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFdlYkF1ZGlvRW5hYmxlZChzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJl
ZmVyZW5jZXMtPndlYkF1ZGlvRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTIyNjAsMTEgKzIyMzIs
MTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJhdWRpbyhXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWIKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBw
cml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVu
Y2VzR2V0V2ViQXVkaW9FbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29s
IGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT53ZWJBdWRpb0VuYWJsZWQoKTsKICAg
ICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdL
UHJlZmVyZW5jZXNTZXRXZWJBdWRpb0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVu
YWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRXZWJBdWRpb0VuYWJsZWQoZW5hYmxl
ZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS13ZWJh
dWRpbyIpOwogfQogCkBAIC0yMjgwLDcgKzIyNTIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV93ZWJnbChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwog
Ci0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRXZWJHTEVuYWJsZWQoc2V0dGluZ3MtPnByaXYt
PnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLT53ZWJHTEVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0yMjk1LDE1ICsyMjY3LDI5IEBAIHZv
aWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2woV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLCBnYm9vbGVhbiBlbmFibGVkCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFdl
YkdMRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+d2ViR0xFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRW
YWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0
V2ViR0xFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2
LT5wcmVmZXJlbmNlcy0+c2V0V2ViR0xFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtd2ViZ2wiKTsKIH0KIAogLyoqCisgKiB3
ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3M6CisgKiBAc2V0dGluZ3M6IGEg
I1dlYktpdFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6YWxsb3ctbW9k
YWwtZGlhbG9ncyBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBpdCdzIGFsbG93
ZWQgdG8gY3JlYXRlIGFuZCBydW4gbW9kYWwgZGlhbG9ncyBvciAlRkFMU0Ugb3RoZXJ3aXNlLgor
ICovCitnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3MoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnBy
aXYtPmFsbG93TW9kYWxEaWFsb2dzOworfQorCisvKioKICAqIHdlYmtpdF9zZXR0aW5nc19zZXRf
YWxsb3dfbW9kYWxfZGlhbG9nczoKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAq
IEBhbGxvd2VkOiBWYWx1ZSB0byBiZSBzZXQKQEAgLTIzMjMsMTcgKzIzMDksMTkgQEAgdm9pZCB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmdzLCBnYm9vbGVhbgogfQogCiAvKioKLSAqIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3df
bW9kYWxfZGlhbG9nczoKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHk6CiAg
KiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgotICogR2V0IHRoZSAjV2ViS2l0U2V0
dGluZ3M6YWxsb3ctbW9kYWwtZGlhbG9ncyBwcm9wZXJ0eS4KKyAqIEdldCB0aGUgI1dlYktpdFNl
dHRpbmdzOnpvb20tdGV4dC1vbmx5IHByb3BlcnR5LgogICoKLSAqIFJldHVybnM6ICVUUlVFIGlm
IGl0J3MgYWxsb3dlZCB0byBjcmVhdGUgYW5kIHJ1biBtb2RhbCBkaWFsb2dzIG9yICVGQUxTRSBv
dGhlcndpc2UuCisgKiBSZXR1cm5zOiAlVFJVRSBJZiB6b29tIGxldmVsIG9mIHRoZSB2aWV3IHNo
b3VsZCBvbmx5IGFmZmVjdCB0aGUgdGV4dAorICogICAgb3IgJUZBTFNFIGlmIGFsbCB2aWV3IGNv
bnRlbnRzIHNob3VsZCBiZSBzY2FsZWQuCiAgKi8KLWdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCitnYm9vbGVh
biB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KFdlYktpdFNldHRpbmdzKiBzZXR0
aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0
dGluZ3MpLCBGQUxTRSk7Ci0gICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5hbGxvd01vZGFsRGlh
bG9nczsKKworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+em9vbVRleHRPbmx5OwogfQogCiAv
KioKQEAgLTIzNTYsMjIgKzIzNDQsNiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90
ZXh0X29ubHkoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiB6b29tVAogfQogCiAv
KioKLSAqIHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHk6Ci0gKiBAc2V0dGluZ3M6
IGEgI1dlYktpdFNldHRpbmdzCi0gKgotICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6em9vbS10
ZXh0LW9ubHkgcHJvcGVydHkuCi0gKgotICogUmV0dXJuczogJVRSVUUgSWYgem9vbSBsZXZlbCBv
ZiB0aGUgdmlldyBzaG91bGQgb25seSBhZmZlY3QgdGhlIHRleHQKLSAqICAgIG9yICVGQUxTRSBp
ZiBhbGwgdmlldyBjb250ZW50cyBzaG91bGQgYmUgc2NhbGVkLgotICovCi1nYm9vbGVhbiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykK
LXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7Ci0KLSAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnpvb21UZXh0T25seTsKLX0K
LQotLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlw
Ym9hcmQ6CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgpAQCAtMjM4Myw4ICsy
MzU1LDggQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9hY2Nl
c3NfY2xpcGJvYXJkKFdlYktpdFNldHRpbmdzKiBzZXQKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4g
V0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLmdldCgpKQotICAgICAgICAgICAgJiYgV0tQcmVmZXJlbmNlc0dldERP
TVBhc3RlQWxsb3dlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJl
dHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmQoKQorICAgICAgICAmJiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRvbVBhc3Rl
QWxsb3dlZCgpOwogfQogCiAvKioKQEAgLTIzOTksMzkgKzIzNzEsMTYgQEAgdm9pZCB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0
aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnBy
aXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENh
bkFjY2Vzc0NsaXBib2FyZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkKLSAgICAgICAgICAgICYm
IFdLUHJlZmVyZW5jZXNHZXRET01QYXN0ZUFsbG93ZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPmphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBwcml2LT5wcmVmZXJlbmNlcy0+ZG9tUGFzdGVBbGxvd2Vk
KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldERPTVBhc3Rl
QWxsb3dlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0KKyAgICBwcml2LT5w
cmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChlbmFibGVkKTsKKyAg
ICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0RE9NUGFzdGVBbGxvd2VkKGVuYWJsZWQpOwogICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJqYXZhc2NyaXB0LWNhbi1hY2Nlc3Mt
Y2xpcGJvYXJkIik7CiB9CiAKIC8qKgotICogd2Via2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5
YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmU6Ci0gKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRp
bmdzCi0gKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Ci0gKgotICogU2V0IHRoZSAjV2ViS2l0
U2V0dGluZ3M6bWVkaWEtcGxheWJhY2stcmVxdWlyZXMtdXNlci1nZXN0dXJlIHByb3BlcnR5Lgot
ICovCi12b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfcmVxdWlyZXNfdXNl
cl9nZXN0dXJlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKLXsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwotCi0g
ICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNl
ckdlc3R1cmUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIGlmIChjdXJyZW50VmFsdWUg
PT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlh
UGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFi
bGVkKTsKLQotICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJtZWRpYS1w
bGF5YmFjay1yZXF1aXJlcy11c2VyLWdlc3R1cmUiKTsKLX0KLQotLyoqCiAgKiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZToKICAqIEBzZXR0
aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqCkBAIC0yNDQ0LDI4ICsyMzkzLDI3IEBAIGdib29s
ZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0
dXJlKFdlYktpdFNldHRpbmdzCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNH
ZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPm1l
ZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCk7CiB9CiAKIC8qKgotICogd2Via2l0X3Nl
dHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5lOgorICogd2Via2l0X3NldHRp
bmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmU6CiAgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CiAgKgot
ICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6bWVkaWEtcGxheWJhY2stYWxsb3dzLWlubGluZSBw
cm9wZXJ0eS4KKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLXJlcXVp
cmVzLXVzZXItZ2VzdHVyZSBwcm9wZXJ0eS4KICAqLwotdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0
X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBn
Ym9vbGVhbiBlbmFibGVkKQordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNr
X3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFu
IGVuYWJsZWQpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0
dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5w
cml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldE1lZGlhUGxheWJh
Y2tBbGxvd3NJbmxpbmUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVu
dFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0
dXJlKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZShwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0KLSAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qoc2V0dGluZ3MpLCAibWVkaWEtcGxheWJhY2stYWxsb3dzLWlubGluZSIpOworICAgIHByaXYt
PnByZWZlcmVuY2VzLT5zZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShlbmFibGVk
KTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibWVkaWEtcGxheWJh
Y2stcmVxdWlyZXMtdXNlci1nZXN0dXJlIik7CiB9CiAKIC8qKgpAQCAtMjQ4MSwyOCArMjQyOSwy
NyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19p
bmxpbmUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIFRSVUUpOwogCi0gICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHNldHRpbmdzLT5wcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+
bWVkaWFQbGF5YmFja0FsbG93c0lubGluZSgpOwogfQogCiAvKioKLSAqIHdlYmtpdF9zZXR0aW5n
c19zZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzOgorICogd2Via2l0X3NldHRpbmdzX3Nl
dF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5lOgogICogQHNldHRpbmdzOiBhICNXZWJLaXRT
ZXR0aW5ncwogICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAogICoKLSAqIFNldCB0aGUgI1dl
YktpdFNldHRpbmdzOmRyYXctY29tcG9zaXRpbmctaW5kaWNhdG9ycyBwcm9wZXJ0eS4KKyAqIFNl
dCB0aGUgI1dlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLWFsbG93cy1pbmxpbmUgcHJvcGVy
dHkuCiAgKi8KLXZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGlj
YXRvcnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQordm9pZCB3
ZWJraXRfc2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQogewogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBpZiAoV0tQcmVmZXJlbmNlc0dldENv
bXBvc2l0aW5nQm9yZGVyc1Zpc2libGUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpID09IGVuYWJs
ZWQKLSAgICAgICAgJiYgV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nUmVwYWludENvdW50ZXJz
VmlzaWJsZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkgPT0gZW5hYmxlZCkKKyAgICBib29sIGN1
cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5l
KCk7CisgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldENvbXBvc2l0aW5n
UmVwYWludENvdW50ZXJzVmlzaWJsZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7
Ci0gICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImRyYXctY29tcG9zaXRp
bmctaW5kaWNhdG9ycyIpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRNZWRpYVBsYXliYWNr
QWxsb3dzSW5saW5lKGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJtZWRpYS1wbGF5YmFjay1hbGxvd3MtaW5saW5lIik7CiB9CiAKIC8qKgpAQCAtMjUx
Niw4ICsyNDYzLDI5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5n
X2luZGljYXRvcnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnCiBnYm9vbGVhbiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdT
KHNldHRpbmdzKSwgRkFMU0UpOwotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0Q29tcG9zaXRp
bmdCb3JkZXJzVmlzaWJsZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpCi0gICAg
ICAgICAgICYmIFdLUHJlZmVyZW5jZXNHZXRDb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2li
bGUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLT5jb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKCkKKyAgICAg
ICAgJiYgc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5jb21wb3NpdGluZ1JlcGFpbnRDb3Vu
dGVyc1Zpc2libGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29t
cG9zaXRpbmdfaW5kaWNhdG9yczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAq
IEBlbmFibGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5n
czpkcmF3LWNvbXBvc2l0aW5nLWluZGljYXRvcnMgcHJvcGVydHkuCisgKi8KK3ZvaWQgd2Via2l0
X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+cHJlZmVyZW5jZXMtPmNvbXBv
c2l0aW5nQm9yZGVyc1Zpc2libGUoKSA9PSBlbmFibGVkCisgICAgICAgICYmIHByaXYtPnByZWZl
cmVuY2VzLT5jb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUoKSA9PSBlbmFibGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0Q29tcG9zaXRpbmdC
b3JkZXJzVmlzaWJsZShlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0Q29tcG9z
aXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlKGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlm
eShHX09CSkVDVChzZXR0aW5ncyksICJkcmF3LWNvbXBvc2l0aW5nLWluZGljYXRvcnMiKTsKIH0K
IAogLyoqCkBAIC0yNTMyLDcgKzI1MDAsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZwogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lmaWNRdWly
a3Moc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLT5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpOwogfQogCiAv
KioKQEAgLTI1NDcsMTEgKzI1MTUsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGcKICAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2Vi
S2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVy
ZW5jZXMtPm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAg
IHByaXYtPnByZWZlcmVuY2VzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhlbmFibGVkKTsK
ICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXNpdGUtc3Bl
Y2lmaWMtcXVpcmtzIik7CiB9CiAKQEAgLTI1NjcsNyArMjUzNSw3IEBAIGdib29sZWFuIHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdz
KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5n
cyksIEZBTFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGFnZUNhY2hlRW5hYmxl
ZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAogLyoqCkBAIC0yNTgy
LDExICsyNTUwLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGFnZV9jYWNo
ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdz
UHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0g
V0tQcmVmZXJlbmNlc0dldFBhZ2VDYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkp
OworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2Fj
aGUoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdLUHJlZmVyZW5jZXNTZXRQYWdlQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0VXNlc1BhZ2VDYWNo
ZShlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5h
YmxlLXBhZ2UtY2FjaGUiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5nc1ByaXZhdGUuaAppbmRleCA0ZTVkMjMyLi45YjFm
ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5nc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5nc1ByaXZhdGUuaApAQCAtMjcsOCArMjcsOSBAQAogI2RlZmluZSBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3MuaCIKLSNpbmNsdWRl
IDxXZWJLaXQyL1dlYktpdDJfQy5oPgogCi12b2lkIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGlu
Z3NUb1BhZ2UoV2ViS2l0U2V0dGluZ3MqLCBXS1BhZ2VSZWYpOwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKwordm9pZCB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKFdlYktpdFNl
dHRpbmdzKiwgV2ViUGFnZVByb3h5Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRTZXR0aW5nc1ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBiY2E2OTg1Li41MDM4ZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjc1LDcgKzI3NSw3IEBA
IHN0YXRpYyB2b2lkIGljb25SZWFkeUNhbGxiYWNrKFdlYktpdEZhdmljb25EYXRhYmFzZSAqZGF0
YWJhc2UsIGNvbnN0IGNoYXIgKnVyaSwKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRTZXR0
aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7
CiAgICAgd2ViVmlldy0+cHJpdi0+c2V0dGluZ3MgPSBzZXR0aW5nczsKLSAgICB3ZWJraXRTZXR0
aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpLCB0
b0FQSShnZXRQYWdlKHdlYlZpZXcpKSk7CisgICAgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5n
c1RvUGFnZSh3ZWJWaWV3LT5wcml2LT5zZXR0aW5ncy5nZXQoKSwgZ2V0UGFnZSh3ZWJWaWV3KSk7
CiAgICAgZ19zaWduYWxfY29ubmVjdChzZXR0aW5ncywgIm5vdGlmeTo6YWxsb3ctbW9kYWwtZGlh
bG9ncyIsIEdfQ0FMTEJBQ0soYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKSwgd2ViVmlldyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChzZXR0aW5ncywgIm5vdGlmeTo6em9vbS10ZXh0LW9ubHkiLCBH
X0NBTExCQUNLKHpvb21UZXh0T25seUNoYW5nZWQpLCB3ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KHNldHRpbmdzLCAibm90aWZ5Ojp1c2VyLWFnZW50IiwgR19DQUxMQkFDSyh1c2VyQWdl
bnRDaGFuZ2VkKSwgd2ViVmlldyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168891</attachid>
            <date>2012-10-16 01:45:06 -0700</date>
            <delta_ts>2012-10-18 06:32:42 -0700</delta_ts>
            <desc>Updated patch to build on current git master</desc>
            <filename>wk2-c-api-settings.diff</filename>
            <type>text/plain</type>
            <size>53426</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlYzFlMjk3Li5hZmE2NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcg
QEAKKzIwMTItMTAtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIERvbid0IHVzZSB0aGUgQyBBUEkgaW50ZXJuYWxseSBpbiBXZWJL
aXRTZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTY3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2luZyB0aGUgQysrIGNsYXNzZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgQyBBUEkgd3Jh
cHBlcnMgd2UKKyAgICAgICAgYXZvaWQgYSBsb3Qgb2YgdG9JbXBsL3RvQVBJIGNhc3RzLCBzdHJp
bmcgY29udmVyc2lvbnMgYW5kCisgICAgICAgIGFsbG9jYXRpb25zLiBUaGUgY29kZSBpcyBhbHNv
IGEgbG90IHNpbXBsZXIgYW5kIGVhc2llciB0byByZWFkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJp
dmF0ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRp
bmdzVG9QYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3Jp
cHQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdCk6Cisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMpOgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRfaW1hZ2VzKToKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcpOgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
c2V0dGluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dl
Yl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2UpOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfeHNzX2F1ZGl0b3IpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
ZnJhbWVfZmxhdHRlbmluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Bs
dWdpbnMpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyk6Cisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKToKKyAgICAgICAgKHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dl
dF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRp
dGluZyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVk
aXRpbmcpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2ZvbnRfZmFtaWx5
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbW9ub3NwYWNlX2ZvbnRfZmFtaWx5KToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfc2VyaWZfZm9udF9mYW1pbHkpOgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF9zYW5zX3NlcmlmX2ZvbnRfZmFtaWx5KToKKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19zZXRfY3Vyc2l2ZV9mb250X2ZhbWlseSk6CisgICAgICAgICh3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2ZhbnRhc3lfZm9udF9mYW1pbHkpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF9waWN0b2dyYXBoX2ZvbnRfZmFtaWx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0
aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3Nl
dF9kZWZhdWx0X2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1
bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2Rl
ZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X21pbmltdW1fZm9udF9zaXplKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbWluaW11
bV9mb250X3NpemUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJz
ZXQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2lu
Zyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5n
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMp
OgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyk6
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9hcmVh
cyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9h
cmVhcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV90YWJzX3RvX2xpbmtz
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3RhYnNfdG9fbGlua3MpOgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKToKKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Ruc19wcmVmZXRjaGluZyk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyk6CisgICAgICAg
ICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9jYXJldF9icm93c2luZyk6CisgICAgICAgICh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9wcmludF9iYWNrZ3JvdW5kcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X3By
aW50X2JhY2tncm91bmRzKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dl
YmF1ZGlvKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmF1ZGlvKToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKToKKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmdsKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5n
c19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0
X3pvb21fdGV4dF9vbmx5KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlw
dF9jYW5fYWNjZXNzX2NsaXBib2FyZCk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2ph
dmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2dldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUpOgorICAgICAgICAod2Vi
a2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUpOgor
ICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5l
KToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lu
bGluZSk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5k
aWNhdG9ycyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRpbmdf
aW5kaWNhdG9ycyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3Nw
ZWNpZmljX3F1aXJrcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zaXRl
X3NwZWNpZmljX3F1aXJrcyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9w
YWdlX2NhY2hlKToKKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BhZ2VfY2Fj
aGUpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc21vb3RoX3Njcm9sbGlu
Zyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zbW9vdGhfc2Nyb2xsaW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5nc1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyk6CisKIDIwMTItMTAtMTUgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFJl
Z3Jlc3Npb24ocjEzMTMzNyk6IE1hZGUgMyBDb29raWUgTWFuYWdlciBBUEkgdGVzdHMgZmFpbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3Mu
Y3BwCmluZGV4IDE3ZDRjODguLjIxNmE5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5nc1ByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFn
ZW50R3RrLmg+CkBAIC00MCw3ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSB7Ci0gICAgV0tSZXRhaW5QdHI8V0tQ
cmVmZXJlbmNlc1JlZj4gcHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBw
cmVmZXJlbmNlczsKICAgICBDU3RyaW5nIGRlZmF1bHRGb250RmFtaWx5OwogICAgIENTdHJpbmcg
bW9ub3NwYWNlRm9udEZhbWlseTsKICAgICBDU3RyaW5nIHNlcmlmRm9udEZhbWlseTsKQEAgLTk1
OSw3ICs5NjAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJL
aXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsK
IAogICAgIC8qKgotICAgICAqIFdlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLWFsbG93cy1p
bmxpbmUKKyAgICAgKiBXZWJLaXRTZXR0aW5nczptZWRpYS1wbGF5YmFjay1hbGxvd3MtaW5saW5l
OgogICAgICAqCiAgICAgICogV2hldGhlciBtZWRpYSBwbGF5YmFjayBpcyBmdWxsLXNjcmVlbiBv
bmx5IG9yIGlubGluZSBwbGF5YmFjayBpcyBhbGxvd2VkLgogICAgICAqIFRoaXMgaXMgJVRSVUUg
YnkgZGVmYXVsdCwgc28gbWVkaWEgcGxheWJhY2sgY2FuIGJlIGlubGluZS4gU2V0dGluZyBpdCB0
bwpAQCAtMTA2OSw0MiArMTA3MCwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfaW5p
dChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnByaXYgPSBwcml2Owog
ICAgIG5ldyAocHJpdikgV2ViS2l0U2V0dGluZ3NQcml2YXRlKCk7CiAKLSAgICBwcml2LT5wcmVm
ZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKKyAgICBwcml2LT5wcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoKTsKKyAgICBwcml2LT5kZWZhdWx0Rm9u
dEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51dGY4KCk7
CisgICAgcHJpdi0+bW9ub3NwYWNlRm9udEZhbWlseSA9IHByaXYtPnByZWZlcmVuY2VzLT5maXhl
ZEZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+c2VyaWZGb250RmFtaWx5ID0gcHJpdi0+
cHJlZmVyZW5jZXMtPnNlcmlmRm9udEZhbWlseSgpLnV0ZjgoKTsKKyAgICBwcml2LT5zYW5zU2Vy
aWZGb250RmFtaWx5ID0gcHJpdi0+cHJlZmVyZW5jZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoKS51
dGY4KCk7CisgICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+
Y3Vyc2l2ZUZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+ZmFudGFzeUZvbnRGYW1pbHkg
PSBwcml2LT5wcmVmZXJlbmNlcy0+ZmFudGFzeUZvbnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJp
di0+cGljdG9ncmFwaEZvbnRGYW1pbHkgPSBwcml2LT5wcmVmZXJlbmNlcy0+cGljdG9ncmFwaEZv
bnRGYW1pbHkoKS51dGY4KCk7CisgICAgcHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBwcml2LT5wcmVm
ZXJlbmNlcy0+ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKS51dGY4KCk7CiAKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gZGVmYXVsdEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVy
ZW5jZXNDb3B5U3RhbmRhcmRGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0g
ICAgcHJpdi0+ZGVmYXVsdEZvbnRGYW1pbHkgPSAgV2ViS2l0Ojp0b0ltcGwoZGVmYXVsdEZvbnRG
YW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbW9ub3NwYWNlRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tQcmVmZXJlbmNlc0Nv
cHlGaXhlZEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpKTsKLSAgICBwcml2LT5t
b25vc3BhY2VGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwobW9ub3NwYWNlRm9udEZhbWlseVJl
Zi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBzZXJpZkZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2VyaWZGb250
RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0gICAgcHJpdi0+c2VyaWZGb250RmFt
aWx5ID0gV2ViS2l0Ojp0b0ltcGwoc2VyaWZGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCku
dXRmOCgpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNhbnNTZXJpZkZvbnRGYW1p
bHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZhbWlseShwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSkpOwotICAgIHByaXYtPnNhbnNTZXJpZkZvbnRGYW1pbHkgPSBX
ZWJLaXQ6OnRvSW1wbChzYW5zU2VyaWZGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRm
OCgpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGN1cnNpdmVGb250RmFtaWx5UmVm
ID0gYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ29weUN1cnNpdmVGb250RmFtaWx5KHByaXYtPnByZWZl
cmVuY2VzLmdldCgpKSk7Ci0gICAgcHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBXZWJLaXQ6OnRv
SW1wbChjdXJzaXZlRm9udEZhbWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmYW50YXN5Rm9udEZhbWlseVJlZiA9IGFkb3B0V0so
V0tQcmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9udEZhbWlseShwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSkpOwotICAgIHByaXYtPmZhbnRhc3lGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoZmFudGFz
eUZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KLSAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gcGljdG9ncmFwaEZvbnRGYW1pbHlSZWYgPSBhZG9wdFdLKFdLUHJlZmVy
ZW5jZXNDb3B5UGljdG9ncmFwaEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpKTsK
LSAgICBwcml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHBpY3RvZ3Jh
cGhGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOwotCi0gICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGRlZmF1bHRDaGFyc2V0UmVmID0gYWRvcHRXSyhXS1ByZWZlcmVuY2Vz
Q29weURlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKSk7Ci0g
ICAgcHJpdi0+ZGVmYXVsdENoYXJzZXQgPSBXZWJLaXQ6OnRvSW1wbChkZWZhdWx0Q2hhcnNldFJl
Zi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKIH0KIAotdm9pZCB3ZWJraXRTZXR0aW5nc0F0dGFj
aFNldHRpbmdzVG9QYWdlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgV0tQYWdlUmVmIHdrUGFn
ZSkKK3ZvaWQgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MsIFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBXZWJLaXRTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVu
Y2VzKFdLUGFnZUdldFBhZ2VHcm91cCh3a1BhZ2UpLCBwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7
Ci0gICAgV2ViS2l0Ojp0b0ltcGwod2tQYWdlKS0+c2V0Q2FuUnVuTW9kYWwocHJpdi0+YWxsb3dN
b2RhbERpYWxvZ3MpOwotCi0gICAgQVNTRVJUKCFwcml2LT51c2VyQWdlbnQuaXNOdWxsKCkpOwot
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VyQWdlbnQgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHByaXYtPnVzZXJBZ2VudC5kYXRhKCkpKTsKLSAgICBXS1Bh
Z2VTZXRDdXN0b21Vc2VyQWdlbnQod2tQYWdlLCB1c2VyQWdlbnQuZ2V0KCkpOworICAgIHBhZ2Ut
PnBhZ2VHcm91cCgpLT5zZXRQcmVmZXJlbmNlcyhzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpOworICAgIHBhZ2UtPnNldENhblJ1bk1vZGFsKHNldHRpbmdzLT5wcml2LT5hbGxvd01v
ZGFsRGlhbG9ncyk7CisgICAgcGFnZS0+c2V0Q3VzdG9tVXNlckFnZW50KFN0cmluZzo6ZnJvbVVU
Rjgoc2V0dGluZ3MtPnByaXYtPnVzZXJBZ2VudC5kYXRhKCkpKTsKIH0KIAogLyoqCkBAIC0xMTUz
LDcgKzExMzUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2Ny
aXB0KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQ
cmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+amF2YVNj
cmlwdEVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0xMTY4LDExICsxMTUwLDExIEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIGdib29sZWFuIGVuCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEphdmFTY3Jp
cHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1
ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5qYXZhU2NyaXB0RW5hYmxlZCgpOwogICAgIGlmIChjdXJy
ZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNl
c1NldEphdmFTY3JpcHRFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsK
KyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoZW5hYmxlZCk7CiAg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1qYXZhc2NyaXB0
Iik7CiB9CiAKQEAgLTExODgsNyArMTE3MCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfYXV0b19sb2FkX2ltYWdlcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwog
Ci0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKTsKIH0KIAogLyoqCkBA
IC0xMjAzLDExICsxMTg1LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9hdXRvX2xvYWRf
aW1hZ2VzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZh
bHVlID0gV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNl
cy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBl
bmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBw
cml2LT5wcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGVuYWJsZWQpOwog
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJhdXRvLWxvYWQtaW1hZ2Vz
Iik7CiB9CiAKQEAgLTEyMjMsNyArMTIwNSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19n
ZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoV2ViS2l0U2V0dGluCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwg
RkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc1NpdGVJY29uc0lnbm9y
aW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0
KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmxvYWRzU2l0ZUlj
b25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNlKCk7CiB9CiAKIC8qKgpAQCAtMTIzOCwx
MSArMTIyMCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25vcmlu
Z19pbWFnZV9sb2FkX3NldHRpbmcoV2ViS2l0U2V0dGluZ3MqCiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJp
dmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQ
cmVmZXJlbmNlc0dldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQcmVmZXJlbmNl
KHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYt
PnByZWZlcmVuY2VzLT5sb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5j
ZSgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV0tQcmVmZXJlbmNlc1NldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdQ
cmVmZXJlbmNlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5w
cmVmZXJlbmNlcy0+c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVu
Y2UoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImxv
YWQtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIik7CiB9CiAKQEAgLTEyNTgsNyAr
MTI0MCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2Vi
X2FwcGxpY2F0aW9uX2NhY2hlKFdlYktpdFNldHRpbmdzCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYt
PnByZWZlcmVuY2VzLT5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsKIH0KIAog
LyoqCkBAIC0xMjczLDExICsxMjU1LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNlCiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdl
YktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3Vy
cmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBw
cml2LT5wcmVmZXJlbmNlcy0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7CiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1ByZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtb2ZmbGluZS13ZWItYXBwbGljYXRpb24t
Y2FjaGUiKTsKIH0KIApAQCAtMTI5Myw3ICsxMjc1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGlu
Z3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVu
YWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CiB9CiAKIC8q
KgpAQCAtMTMwOCwxMSArMTI5MCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h0bWw1X2xvY2FsX3N0b3JhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYgogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJL
aXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJl
bnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2Vz
LT5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVy
ZW5jZXMtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIik7CiB9
CiAKQEAgLTEzMjgsNyArMTMxMCw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2h0bWw1X2RhdGFiYXNlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAK
LSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERhdGFiYXNlc0VuYWJsZWQoc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLT5kYXRhYmFzZXNFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMTM0MywxMSArMTMyNSwx
MSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXREYXRhYmFzZXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29s
IGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5kYXRhYmFzZXNFbmFibGVkKCk7CiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1ByZWZlcmVuY2VzU2V0RGF0YWJhc2VzRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwg
ZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldERhdGFiYXNlc0VuYWJsZWQoZW5h
YmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1o
dG1sNS1kYXRhYmFzZSIpOwogfQogCkBAIC0xMzYzLDcgKzEzNDUsNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5h
YmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnhzc0F1ZGl0b3JFbmFibGVkKCk7CiB9CiAKIC8qKgpA
QCAtMTM3OCwxMSArMTM2MCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3hz
c19hdWRpdG9yKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRW
YWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+eHNz
QXVkaXRvckVuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRYU1NBdWRpdG9yRW5hYmxlZChwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNl
dFhTU0F1ZGl0b3JFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVD
VChzZXR0aW5ncyksICJlbmFibGUteHNzLWF1ZGl0b3IiKTsKIH0KIApAQCAtMTM5OSw3ICsxMzgx
LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVfZmxhdHRlbmlu
ZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+ZnJh
bWVGbGF0dGVuaW5nRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTE0MTQsMTEgKzEzOTYsMTEgQEAg
dm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0
RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxl
ZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRGcmFtZUZs
YXR0ZW5pbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChz
ZXR0aW5ncyksICJlbmFibGUtZnJhbWUtZmxhdHRlbmluZyIpOwogfQogCkBAIC0xNDM0LDcgKzE0
MTYsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+cGx1Z2luc0VuYWJsZWQoKTsK
IH0KIAogLyoqCkBAIC0xNDQ5LDExICsxNDMxLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfcGx1Z2lucyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAog
ICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJv
b2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVu
Y2VzLT5wbHVnaW5zRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldFBsdWdpbnNFbmFibGVkKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+
c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIik7CiB9CiAKQEAgLTE0NjksNyArMTQ1MSw3IEBA
IGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmEoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5H
UyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YUVu
YWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5qYXZhRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTE0
ODQsMTEgKzE0NjYsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhKFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUg
PSBXS1ByZWZlcmVuY2VzR2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOwor
ICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPmphdmFFbmFibGVkKCk7
CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXS1ByZWZlcmVuY2VzU2V0SmF2YUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVu
YWJsZWQpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRKYXZhRW5hYmxlZChlbmFibGVkKTsK
ICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWphdmEiKTsK
IH0KIApAQCAtMTUwNCw3ICsxNDg2LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9q
YXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShXZWJLaXRTZXQKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHkoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBy
ZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5qYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5KCk7CiB9CiAKIC8qKgpAQCAtMTUxOSwxMSArMTUwMSwxMSBAQCB2b2lk
IHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRp
Y2FsbHkoV2ViS2l0U2V0dGluZwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0
aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgp
KTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5qYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBl
bmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5h
YmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHkoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNl
dHRpbmdzKSwgImphdmFzY3JpcHQtY2FuLW9wZW4td2luZG93cy1hdXRvbWF0aWNhbGx5Iik7CiB9
CiAKQEAgLTE1MzksNyArMTUyMSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2h5cGVybGlua19hdWRpdGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQo
c2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mt
PnByaXYtPnByZWZlcmVuY2VzLT5oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoKTsKIH0KIAogLyoq
CkBAIC0xNTU0LDExICsxNTM2LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
aHlwZXJsaW5rX2F1ZGl0aW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2JvCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktp
dFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVu
dFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJl
bmNlcy0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0SHlwZXJs
aW5rQXVkaXRpbmdFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAg
ICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZWQp
OwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtaHlwZXJs
aW5rLWF1ZGl0aW5nIik7CiB9CiAKQEAgLTE1OTMsMTAgKzE1NzUsOSBAQCB2b2lkIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZGVmYXVsdF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3Ms
IGNvbnN0IGdjaAogICAgIGlmICghZ19zdHJjbXAwKHByaXYtPmRlZmF1bHRGb250RmFtaWx5LmRh
dGEoKSwgZGVmYXVsdEZvbnRGYW1pbHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3RhbmRhcmRGb250RmFtaWx5UmVmID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkZWZhdWx0Rm9udEZhbWlseSkpOwotICAgIFdLUHJlZmVy
ZW5jZXNTZXRTdGFuZGFyZEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIHN0YW5k
YXJkRm9udEZhbWlseVJlZi5nZXQoKSk7Ci0gICAgcHJpdi0+ZGVmYXVsdEZvbnRGYW1pbHkgPSBX
ZWJLaXQ6OnRvSW1wbChzdGFuZGFyZEZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5zdHJpbmcoKS51dGY4
KCk7Ci0KKyAgICBTdHJpbmcgc3RhbmRhcmRGb250RmFtaWx5ID0gU3RyaW5nOjpmcm9tVVRGOChk
ZWZhdWx0Rm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFN0YW5kYXJkRm9u
dEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOworICAgIHByaXYtPmRlZmF1bHRGb250RmFtaWx5
ID0gc3RhbmRhcmRGb250RmFtaWx5LnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LWZhbWlseSIpOwogfQogCkBAIC0xNjMxLDEwICsx
NjEyLDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21vbm9zcGFjZV9mb250X2ZhbWlseShX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IGcKICAgICBpZiAoIWdfc3RyY21wMChwcml2
LT5tb25vc3BhY2VGb250RmFtaWx5LmRhdGEoKSwgbW9ub3NwYWNlRm9udEZhbWlseSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmaXhlZEZvbnRGYW1p
bHlSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1vbm9zcGFjZUZv
bnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0Rml4ZWRGb250RmFtaWx5KHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpLCBmaXhlZEZvbnRGYW1pbHlSZWYuZ2V0KCkpOwotICAgIHByaXYtPm1v
bm9zcGFjZUZvbnRGYW1pbHkgPSBXZWJLaXQ6OnRvSW1wbChmaXhlZEZvbnRGYW1pbHlSZWYuZ2V0
KCkpLT5zdHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZml4ZWRGb250RmFtaWx5ID0gU3Ry
aW5nOjpmcm9tVVRGOChtb25vc3BhY2VGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVmZXJlbmNl
cy0+c2V0Rml4ZWRGb250RmFtaWx5KGZpeGVkRm9udEZhbWlseSk7CisgICAgcHJpdi0+bW9ub3Nw
YWNlRm9udEZhbWlseSA9IGZpeGVkRm9udEZhbWlseS51dGY4KCk7CiAgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgIm1vbm9zcGFjZS1mb250LWZhbWlseSIpOwogfQogCkBA
IC0xNjY5LDEwICsxNjQ5LDkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X3NlcmlmX2ZvbnRf
ZmFtaWx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgZ2NoYXIKICAgICBpZiAoIWdf
c3RyY21wMChwcml2LT5zZXJpZkZvbnRGYW1pbHkuZGF0YSgpLCBzZXJpZkZvbnRGYW1pbHkpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc2VyaWZGb250
RmFtaWx5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzZXJpZkZv
bnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0U2VyaWZGb250RmFtaWx5KHByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpLCBzZXJpZkZvbnRGYW1pbHlSZWYuZ2V0KCkpOwotICAgIHByaXYtPnNl
cmlmRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKHNlcmlmRm9udEZhbWlseVJlZi5nZXQoKSkt
PnN0cmluZygpLnV0ZjgoKTsKLQorICAgIFN0cmluZyBzZXJpZkZvbnRGYW1pbHlTdHJpbmcgPSBT
dHJpbmc6OmZyb21VVEY4KHNlcmlmRm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMt
PnNldFNlcmlmRm9udEZhbWlseShzZXJpZkZvbnRGYW1pbHlTdHJpbmcpOworICAgIHByaXYtPnNl
cmlmRm9udEZhbWlseSA9IHNlcmlmRm9udEZhbWlseVN0cmluZy51dGY4KCk7CiAgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInNlcmlmLWZvbnQtZmFtaWx5Iik7CiB9CiAK
QEAgLTE3MDcsMTAgKzE2ODYsOSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfc2Fuc19zZXJp
Zl9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0CiAgICAgaWYgKCFn
X3N0cmNtcDAocHJpdi0+c2Fuc1NlcmlmRm9udEZhbWlseS5kYXRhKCksIHNhbnNTZXJpZkZvbnRG
YW1pbHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
c2Fuc1NlcmlmRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoc2Fuc1NlcmlmRm9udEZhbWlseSkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRTYW5zU2Vy
aWZGb250RmFtaWx5KHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBzYW5zU2VyaWZGb250RmFtaWx5
UmVmLmdldCgpKTsKLSAgICBwcml2LT5zYW5zU2VyaWZGb250RmFtaWx5ID0gV2ViS2l0Ojp0b0lt
cGwoc2Fuc1NlcmlmRm9udEZhbWlseVJlZi5nZXQoKSktPnN0cmluZygpLnV0ZjgoKTsKLQorICAg
IFN0cmluZyBzYW5zU2VyaWZGb250RmFtaWx5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChzYW5z
U2VyaWZGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0U2Fuc1NlcmlmRm9u
dEZhbWlseShzYW5zU2VyaWZGb250RmFtaWx5U3RyaW5nKTsKKyAgICBwcml2LT5zYW5zU2VyaWZG
b250RmFtaWx5ID0gc2Fuc1NlcmlmRm9udEZhbWlseVN0cmluZy51dGY4KCk7CiAgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInNhbnMtc2VyaWYtZm9udC1mYW1pbHkiKTsK
IH0KIApAQCAtMTc0NSwxMCArMTcyMyw5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9jdXJz
aXZlX2ZvbnRfZmFtaWx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgZ2NoCiAgICAg
aWYgKCFnX3N0cmNtcDAocHJpdi0+Y3Vyc2l2ZUZvbnRGYW1pbHkuZGF0YSgpLCBjdXJzaXZlRm9u
dEZhbWlseSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBjdXJzaXZlRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoY3Vyc2l2ZUZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0Q3Vyc2l2ZUZv
bnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGN1cnNpdmVGb250RmFtaWx5UmVmLmdl
dCgpKTsKLSAgICBwcml2LT5jdXJzaXZlRm9udEZhbWlseSA9IFdlYktpdDo6dG9JbXBsKGN1cnNp
dmVGb250RmFtaWx5UmVmLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOwotCisgICAgU3RyaW5nIGN1
cnNpdmVGb250RmFtaWx5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChjdXJzaXZlRm9udEZhbWls
eSk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEN1cnNpdmVGb250RmFtaWx5KGN1cnNpdmVG
b250RmFtaWx5U3RyaW5nKTsKKyAgICBwcml2LT5jdXJzaXZlRm9udEZhbWlseSA9IGN1cnNpdmVG
b250RmFtaWx5U3RyaW5nLnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAiY3Vyc2l2ZS1mb250LWZhbWlseSIpOwogfQogCkBAIC0xNzgzLDEwICsxNzYwLDkg
QEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2ZhbnRhc3lfZm9udF9mYW1pbHkoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBjb25zdCBnY2gKICAgICBpZiAoIWdfc3RyY21wMChwcml2LT5mYW50
YXN5Rm9udEZhbWlseS5kYXRhKCksIGZhbnRhc3lGb250RmFtaWx5KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZhbnRhc3lGb250RmFtaWx5UmVmID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhmYW50YXN5Rm9udEZhbWlseSkp
OwotICAgIFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5Rm9udEZhbWlseShwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSwgZmFudGFzeUZvbnRGYW1pbHlSZWYuZ2V0KCkpOwotICAgIHByaXYtPmZhbnRhc3lG
b250RmFtaWx5ID0gV2ViS2l0Ojp0b0ltcGwoZmFudGFzeUZvbnRGYW1pbHlSZWYuZ2V0KCkpLT5z
dHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZmFudGFzeUZvbnRGYW1pbHlTdHJpbmcgPSBT
dHJpbmc6OmZyb21VVEY4KGZhbnRhc3lGb250RmFtaWx5KTsKKyAgICBwcml2LT5wcmVmZXJlbmNl
cy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFudGFzeUZvbnRGYW1pbHlTdHJpbmcpOworICAgIHBy
aXYtPmZhbnRhc3lGb250RmFtaWx5ID0gZmFudGFzeUZvbnRGYW1pbHlTdHJpbmcudXRmOCgpOwog
ICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJmYW50YXN5LWZvbnQtZmFt
aWx5Iik7CiB9CiAKQEAgLTE4MjEsMTAgKzE3OTcsOSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19z
ZXRfcGljdG9ncmFwaF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0
CiAgICAgaWYgKCFnX3N0cmNtcDAocHJpdi0+cGljdG9ncmFwaEZvbnRGYW1pbHkuZGF0YSgpLCBw
aWN0b2dyYXBoRm9udEZhbWlseSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBwaWN0b2dyYXBoRm9udEZhbWlseVJlZiA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcocGljdG9ncmFwaEZvbnRGYW1pbHkpKTsKLSAgICBXS1ByZWZl
cmVuY2VzU2V0UGljdG9ncmFwaEZvbnRGYW1pbHkocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIHBp
Y3RvZ3JhcGhGb250RmFtaWx5UmVmLmdldCgpKTsKLSAgICBwcml2LT5waWN0b2dyYXBoRm9udEZh
bWlseSA9IFdlYktpdDo6dG9JbXBsKHBpY3RvZ3JhcGhGb250RmFtaWx5UmVmLmdldCgpKS0+c3Ry
aW5nKCkudXRmOCgpOwotCisgICAgU3RyaW5nIHBpY3RvZ3JhcGhGb250RmFtaWx5U3RyaW5nID0g
U3RyaW5nOjpmcm9tVVRGOChwaWN0b2dyYXBoRm9udEZhbWlseSk7CisgICAgcHJpdi0+cHJlZmVy
ZW5jZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KHBpY3RvZ3JhcGhGb250RmFtaWx5U3RyaW5n
KTsKKyAgICBwcml2LT5waWN0b2dyYXBoRm9udEZhbWlseSA9IHBpY3RvZ3JhcGhGb250RmFtaWx5
U3RyaW5nLnV0ZjgoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAi
cGljdG9ncmFwaC1mb250LWZhbWlseSIpOwogfQogCkBAIC0xODQwLDcgKzE4MTUsNyBAQCBndWlu
dDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X3NpemUoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5H
UyhzZXR0aW5ncyksIDApOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREZWZhdWx0Rm9u
dFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0Rm9udFNpemUoKTsKIH0KIAogLyoqCkBA
IC0xODU1LDEyICsxODMwLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2Zv
bnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50MzIgZm9uCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotCi0gICAgdWludDMyX3QgY3Vy
cmVudFNpemUgPSBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZvbnRTaXplKHByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKTsKKyAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IHByaXYtPnByZWZlcmVuY2Vz
LT5kZWZhdWx0Rm9udFNpemUoKTsKICAgICBpZiAoY3VycmVudFNpemUgPT0gZm9udFNpemUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rm9udFNpemUocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCksIGZvbnRTaXplKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+
c2V0RGVmYXVsdEZvbnRTaXplKGZvbnRTaXplKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qoc2V0dGluZ3MpLCAiZGVmYXVsdC1mb250LXNpemUiKTsKIH0KIApAQCAtMTg3Niw3ICsxODUw
LDcgQEAgZ3VpbnQzMiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRf
c2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsKIAotICAgIHJldHVybiBXS1ByZWZl
cmVuY2VzR2V0RGVmYXVsdEZpeGVkRm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5kZWZhdWx0
Rml4ZWRGb250U2l6ZSgpOwogfQogCiAvKioKQEAgLTE4OTEsMTIgKzE4NjUsMTEgQEAgdm9pZCB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2RlZmF1bHRfbW9ub3NwYWNlX2ZvbnRfc2l6ZShXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsIGcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5H
UyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGlu
Z3MtPnByaXY7Ci0KLSAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IFdLUHJlZmVyZW5jZXNHZXRE
ZWZhdWx0Rml4ZWRGb250U2l6ZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgdWludDMy
X3QgY3VycmVudFNpemUgPSBwcml2LT5wcmVmZXJlbmNlcy0+ZGVmYXVsdEZpeGVkRm9udFNpemUo
KTsKICAgICBpZiAoY3VycmVudFNpemUgPT0gZm9udFNpemUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSwgZm9udFNpemUpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXREZWZhdWx0Rml4
ZWRGb250U2l6ZShmb250U2l6ZSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRp
bmdzKSwgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIpOwogfQogCkBAIC0xOTEyLDcgKzE4
ODUsNyBAQCBndWludDMyIHdlYmtpdF9zZXR0aW5nc19nZXRfbWluaW11bV9mb250X3NpemUoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNH
ZXRNaW5pbXVtRm9udFNpemUoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5taW5pbXVtRm9udFNpemUoKTsK
IH0KIAogLyoqCkBAIC0xOTI3LDEyICsxOTAwLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3Nl
dF9taW5pbXVtX2ZvbnRfc2l6ZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGd1aW50MzIgZm9u
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAog
ICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotCi0gICAg
dWludDMyX3QgY3VycmVudFNpemUgPSBXS1ByZWZlcmVuY2VzR2V0TWluaW11bUZvbnRTaXplKHBy
aXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICB1aW50MzJfdCBjdXJyZW50U2l6ZSA9IHByaXYt
PnByZWZlcmVuY2VzLT5taW5pbXVtRm9udFNpemUoKTsKICAgICBpZiAoY3VycmVudFNpemUgPT0g
Zm9udFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRNaW5pbXVt
Rm9udFNpemUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGZvbnRTaXplKTsKKyAgICBwcml2LT5w
cmVmZXJlbmNlcy0+c2V0TWluaW11bUZvbnRTaXplKGZvbnRTaXplKTsKICAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibWluaW11bS1mb250LXNpemUiKTsKIH0KIApAQCAt
MTk2NywxMCArMTkzOSw5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kZWZhdWx0X2NoYXJz
ZXQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBnY2hhcioKICAgICBpZiAoIWdfc3Ry
Y21wMChwcml2LT5kZWZhdWx0Q2hhcnNldC5kYXRhKCksIGRlZmF1bHRDaGFyc2V0KSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlZmF1bHRDaGFyc2V0
UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkZWZhdWx0Q2hhcnNl
dCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShwcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSwgZGVmYXVsdENoYXJzZXRSZWYuZ2V0KCkpOwotICAgIHByaXYtPmRl
ZmF1bHRDaGFyc2V0ID0gV2ViS2l0Ojp0b0ltcGwoZGVmYXVsdENoYXJzZXRSZWYuZ2V0KCkpLT5z
dHJpbmcoKS51dGY4KCk7Ci0KKyAgICBTdHJpbmcgZGVmYXVsdENoYXJzZXRTdHJpbmcgPSBTdHJp
bmc6OmZyb21VVEY4KGRlZmF1bHRDaGFyc2V0KTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0
RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZGVmYXVsdENoYXJzZXRTdHJpbmcpOworICAgIHByaXYt
PmRlZmF1bHRDaGFyc2V0ID0gZGVmYXVsdENoYXJzZXRTdHJpbmcudXRmOCgpOwogICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJkZWZhdWx0LWNoYXJzZXQiKTsKIH0KIApA
QCAtMTk4Niw3ICsxOTU3LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
cHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0g
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHNldHRpbmdz
LT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5w
cmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTIwMDEs
MTEgKzE5NzIsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jy
b3dzaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQ
cml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBX
S1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5n
ZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+cHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYtPnByZWZlcmVu
Y2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIpOwogfQog
CkBAIC0yMDIxLDcgKzE5OTIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9kZXZlbG9wZXJfZXh0cmFzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAK
LSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc2V0dGlu
Z3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYt
PnByZWZlcmVuY2VzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjAz
NiwxMSArMjAwNywxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbAogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9
IFdLUHJlZmVyZW5jZXNHZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHByaXYtPnByZWZlcmVuY2Vz
LmdldCgpKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVy
ZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIik7CiB9
CiAKQEAgLTIwNTYsNyArMjAyNyw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5nCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0Up
OwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLT50ZXh0QXJlYXNBcmVSZXNpemFibGUoKTsKIH0KIAogLyoqCkBAIC0y
MDcxLDExICsyMDQyLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcmVzaXph
YmxlX3RleHRfYXJlYXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRp
bmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVl
ID0gV0tQcmVmZXJlbmNlc0dldFRleHRBcmVhc0FyZVJlc2l6YWJsZShwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+dGV4
dEFyZWFzQXJlUmVzaXphYmxlKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0VGV4dEFyZWFzQXJlUmVzaXph
YmxlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJl
bmNlcy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcmVzaXphYmxlLXRleHQtYXJlYXMiKTsK
IH0KIApAQCAtMjA5MSw3ICsyMDYyLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfdGFic190b19saW5rcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwog
Ci0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRUYWJzVG9MaW5rcyhzZXR0aW5ncy0+cHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMtPnRhYnNUb0xpbmtzKCk7CiB9CiAKIC8qKgpAQCAtMjEwNiwxMSArMjA3NywxMSBAQCB2b2lk
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3RhYnNfdG9fbGlua3MoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0
aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRUYWJz
VG9MaW5rcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUg
PSBwcml2LT5wcmVmZXJlbmNlcy0+dGFic1RvTGlua3MoKTsKICAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRUYWJz
VG9MaW5rcyhwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJl
ZmVyZW5jZXMtPnNldFRhYnNUb0xpbmtzKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdGFicy10by1saW5rcyIpOwogfQogCkBAIC0yMTI2
LDcgKzIwOTcsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kbnNfcHJl
ZmV0Y2hpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKIAotICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKHNldHRpbmdzLT5wcml2LT5w
cmVmZXJlbmNlcy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy0+ZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjE0MSwxMSArMjExMiwx
MSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Ruc19wcmVmZXRjaGluZyhXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHBy
aXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5j
ZXNHZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPmRuc1ByZWZldGNoaW5nRW5h
YmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV0tQcmVmZXJlbmNlc1NldEROU1ByZWZldGNoaW5nRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldEROU1By
ZWZldGNoaW5nRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qo
c2V0dGluZ3MpLCAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIpOwogfQogCkBAIC0yMTYxLDcgKzIx
MzIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2lu
ZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRDYXJldEJyb3dzaW5nRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmNhcmV0
QnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjE3NiwxMSArMjE0NywxMSBAQCB2b2lk
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2NhcmV0X2Jyb3dzaW5nKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncywgZ2Jvb2xlYQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0
aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRDYXJl
dEJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJy
ZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAg
ICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdL
UHJlZmVyZW5jZXNTZXRDYXJldEJyb3dzaW5nRW5hYmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQo
KSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldENhcmV0QnJvd3NpbmdFbmFi
bGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJl
bmFibGUtY2FyZXQtYnJvd3NpbmciKTsKIH0KIApAQCAtMjE5Niw3ICsyMTY3LDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnVsbHNjcmVlbihXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdT
KHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGdWxsU2Ny
ZWVuRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVy
biBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmZ1bGxTY3JlZW5FbmFibGVkKCk7CiB9CiAK
IC8qKgpAQCAtMjIxMSwxMSArMjE4MiwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX2Z1bGxzY3JlZW4oV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbgogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBX
ZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1
cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRGdWxsU2NyZWVuRW5hYmxlZChwcml2LT5wcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNl
cy0+ZnVsbFNjcmVlbkVuYWJsZWQoKTsKICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVyZW5jZXNTZXRGdWxsU2NyZWVuRW5hYmxl
ZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7CisgICAgcHJpdi0+cHJlZmVyZW5j
ZXMtPnNldEZ1bGxTY3JlZW5FbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZnVsbHNjcmVlbiIpOwogfQogCkBAIC0yMjMxLDcg
KzIyMDIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X3ByaW50X2JhY2tncm91bmRz
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldFNob3VsZFByaW50QmFja2dyb3VuZHMoc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5zaG91
bGRQcmludEJhY2tncm91bmRzKCk7CiB9CiAKIC8qKgpAQCAtMjI0NiwxMSArMjIxNywxMSBAQCB2
b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfcHJpbnRfYmFja2dyb3VuZHMoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBwcgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NF
VFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IFdLUHJlZmVyZW5jZXNHZXRT
aG91bGRQcmludEJhY2tncm91bmRzKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29s
IGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5zaG91bGRQcmludEJhY2tncm91bmRz
KCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBwcmludEJhY2tncm91bmRzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhwcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSwgcHJpbnRCYWNrZ3JvdW5kcyk7CisgICAgcHJpdi0+cHJlZmVy
ZW5jZXMtPnNldFNob3VsZFByaW50QmFja2dyb3VuZHMocHJpbnRCYWNrZ3JvdW5kcyk7CiAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgInByaW50LWJhY2tncm91bmRzIik7
CiB9CiAKQEAgLTIyNjYsNyArMjIzNyw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3dlYmF1ZGlvKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAg
ICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFdlYkF1ZGlvRW5hYmxlZChzZXR0aW5ncy0+cHJpdi0+
cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5j
ZXMtPndlYkF1ZGlvRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTIyODEsMTEgKzIyNTIsMTEgQEAg
dm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJhdWRpbyhXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MsIGdib29sZWFuIGVuYWIKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0g
c2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0
V2ViQXVkaW9FbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBib29sIGN1cnJl
bnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT53ZWJBdWRpb0VuYWJsZWQoKTsKICAgICBpZiAo
Y3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUHJlZmVy
ZW5jZXNTZXRXZWJBdWRpb0VuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQp
OworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRXZWJBdWRpb0VuYWJsZWQoZW5hYmxlZCk7CiAg
ICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS13ZWJhdWRpbyIp
OwogfQogCkBAIC0yMzAxLDcgKzIyNzIsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV93ZWJnbChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRXZWJHTEVuYWJsZWQoc2V0dGluZ3MtPnByaXYtPnByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT53
ZWJHTEVuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0yMzE2LDE1ICsyMjg3LDI5IEBAIHZvaWQgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2woV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBn
Ym9vbGVhbiBlbmFibGVkCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldFdlYkdMRW5h
YmxlZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgYm9vbCBjdXJyZW50VmFsdWUgPSBw
cml2LT5wcmVmZXJlbmNlcy0+d2ViR0xFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9
PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0V2ViR0xF
bmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVm
ZXJlbmNlcy0+c2V0V2ViR0xFbmFibGVkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtd2ViZ2wiKTsKIH0KIAogLyoqCisgKiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3M6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktp
dFNldHRpbmdzCisgKgorICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6YWxsb3ctbW9kYWwtZGlh
bG9ncyBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBpdCdzIGFsbG93ZWQgdG8g
Y3JlYXRlIGFuZCBydW4gbW9kYWwgZGlhbG9ncyBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICovCitn
Ym9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3MoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19T
RVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPmFs
bG93TW9kYWxEaWFsb2dzOworfQorCisvKioKICAqIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3df
bW9kYWxfZGlhbG9nczoKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqIEBhbGxv
d2VkOiBWYWx1ZSB0byBiZSBzZXQKQEAgLTIzNDQsMTcgKzIzMjksMTkgQEAgdm9pZCB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdz
LCBnYm9vbGVhbgogfQogCiAvKioKLSAqIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxf
ZGlhbG9nczoKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHk6CiAgKiBAc2V0
dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgotICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6
YWxsb3ctbW9kYWwtZGlhbG9ncyBwcm9wZXJ0eS4KKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdz
Onpvb20tdGV4dC1vbmx5IHByb3BlcnR5LgogICoKLSAqIFJldHVybnM6ICVUUlVFIGlmIGl0J3Mg
YWxsb3dlZCB0byBjcmVhdGUgYW5kIHJ1biBtb2RhbCBkaWFsb2dzIG9yICVGQUxTRSBvdGhlcndp
c2UuCisgKiBSZXR1cm5zOiAlVFJVRSBJZiB6b29tIGxldmVsIG9mIHRoZSB2aWV3IHNob3VsZCBv
bmx5IGFmZmVjdCB0aGUgdGV4dAorICogICAgb3IgJUZBTFNFIGlmIGFsbCB2aWV3IGNvbnRlbnRz
IHNob3VsZCBiZSBzY2FsZWQuCiAgKi8KLWdib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxs
b3dfbW9kYWxfZGlhbG9ncyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCitnYm9vbGVhbiB3ZWJr
aXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
LCBGQUxTRSk7Ci0gICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5hbGxvd01vZGFsRGlhbG9nczsK
KworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+em9vbVRleHRPbmx5OwogfQogCiAvKioKQEAg
LTIzNzcsMjIgKzIzNjQsNiBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90ZXh0X29u
bHkoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiB6b29tVAogfQogCiAvKioKLSAq
IHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHk6Ci0gKiBAc2V0dGluZ3M6IGEgI1dl
YktpdFNldHRpbmdzCi0gKgotICogR2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6em9vbS10ZXh0LW9u
bHkgcHJvcGVydHkuCi0gKgotICogUmV0dXJuczogJVRSVUUgSWYgem9vbSBsZXZlbCBvZiB0aGUg
dmlldyBzaG91bGQgb25seSBhZmZlY3QgdGhlIHRleHQKLSAqICAgIG9yICVGQUxTRSBpZiBhbGwg
dmlldyBjb250ZW50cyBzaG91bGQgYmUgc2NhbGVkLgotICovCi1nYm9vbGVhbiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKLXsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxT
RSk7Ci0KLSAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnpvb21UZXh0T25seTsKLX0KLQotLyoq
CiAgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQ6
CiAgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCiAgKgpAQCAtMjQwNCw4ICsyMzc1LDgg
QEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9hY2Nlc3NfY2xp
cGJvYXJkKFdlYktpdFNldHRpbmdzKiBzZXQKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gV0tQcmVm
ZXJlbmNlc0dldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoc2V0dGluZ3MtPnByaXYtPnBy
ZWZlcmVuY2VzLmdldCgpKQotICAgICAgICAgICAgJiYgV0tQcmVmZXJlbmNlc0dldERPTVBhc3Rl
QWxsb3dlZChzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBz
ZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQo
KQorICAgICAgICAmJiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmRvbVBhc3RlQWxsb3dl
ZCgpOwogfQogCiAvKioKQEAgLTI0MjAsMzkgKzIzOTEsMTYgQEAgdm9pZCB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2phdmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQoV2ViS2l0U2V0dGluZ3MqIHNl
dHRpbmcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykp
OwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0g
ICAgYm9vbCBjdXJyZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkKLSAgICAgICAgICAgICYmIFdLUHJl
ZmVyZW5jZXNHZXRET01QYXN0ZUFsbG93ZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPmphdmFTY3JpcHRDYW5BY2Nl
c3NDbGlwYm9hcmQoKSAmJiBwcml2LT5wcmVmZXJlbmNlcy0+ZG9tUGFzdGVBbGxvd2VkKCk7CiAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldERPTVBhc3RlQWxsb3dl
ZChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0KKyAgICBwcml2LT5wcmVmZXJl
bmNlcy0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChlbmFibGVkKTsKKyAgICBwcml2
LT5wcmVmZXJlbmNlcy0+c2V0RE9NUGFzdGVBbGxvd2VkKGVuYWJsZWQpOwogICAgIGdfb2JqZWN0
X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJqYXZhc2NyaXB0LWNhbi1hY2Nlc3MtY2xpcGJv
YXJkIik7CiB9CiAKIC8qKgotICogd2Via2l0X3NldHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19y
ZXF1aXJlc191c2VyX2dlc3R1cmU6Ci0gKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCi0g
KiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0Ci0gKgotICogU2V0IHRoZSAjV2ViS2l0U2V0dGlu
Z3M6bWVkaWEtcGxheWJhY2stcmVxdWlyZXMtdXNlci1nZXN0dXJlIHByb3BlcnR5LgotICovCi12
b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0
dXJlKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZCkKLXsKLSAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwotCi0gICAgV2Vi
S2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJy
ZW50VmFsdWUgPSBXS1ByZWZlcmVuY2VzR2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1
cmUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5h
YmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKHByaXYtPnByZWZlcmVuY2VzLmdldCgpLCBlbmFibGVkKTsK
LQotICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJtZWRpYS1wbGF5YmFj
ay1yZXF1aXJlcy11c2VyLWdlc3R1cmUiKTsKLX0KLQotLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZToKICAqIEBzZXR0aW5nczog
YSAjV2ViS2l0U2V0dGluZ3MKICAqCkBAIC0yNDY1LDI4ICsyNDEzLDI3IEBAIGdib29sZWFuIHdl
YmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0dXJlKFdl
YktpdFNldHRpbmdzCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRNZWRp
YVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMu
Z2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPm1lZGlhUGxh
eWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCk7CiB9CiAKIC8qKgotICogd2Via2l0X3NldHRpbmdz
X3NldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5lOgorICogd2Via2l0X3NldHRpbmdzX3Nl
dF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmU6CiAgKiBAc2V0dGluZ3M6IGEg
I1dlYktpdFNldHRpbmdzCiAgKiBAZW5hYmxlZDogVmFsdWUgdG8gYmUgc2V0CiAgKgotICogU2V0
IHRoZSAjV2ViS2l0U2V0dGluZ3M6bWVkaWEtcGxheWJhY2stYWxsb3dzLWlubGluZSBwcm9wZXJ0
eS4KKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLXJlcXVpcmVzLXVz
ZXItZ2VzdHVyZSBwcm9wZXJ0eS4KICAqLwotdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21lZGlh
X3BsYXliYWNrX2FsbG93c19pbmxpbmUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVh
biBlbmFibGVkKQordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNrX3JlcXVp
cmVzX3VzZXJfZ2VzdHVyZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3Mp
KTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2Owot
ICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVmZXJlbmNlc0dldE1lZGlhUGxheWJhY2tBbGxv
d3NJbmxpbmUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVl
ID0gcHJpdi0+cHJlZmVyZW5jZXMtPm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCk7
CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZShwcml2LT5wcmVmZXJl
bmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0KLSAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAibWVkaWEtcGxheWJhY2stYWxsb3dzLWlubGluZSIpOworICAgIHByaXYtPnByZWZl
cmVuY2VzLT5zZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShlbmFibGVkKTsKKyAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAibWVkaWEtcGxheWJhY2stcmVx
dWlyZXMtdXNlci1nZXN0dXJlIik7CiB9CiAKIC8qKgpAQCAtMjUwMiwyOCArMjQ0OSwyNyBAQCBn
Ym9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIFRSVUUpOwogCi0gICAgcmV0dXJuIFdLUHJlZmVyZW5j
ZXNHZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+bWVkaWFQ
bGF5YmFja0FsbG93c0lubGluZSgpOwogfQogCiAvKioKLSAqIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzOgorICogd2Via2l0X3NldHRpbmdzX3NldF9tZWRp
YV9wbGF5YmFja19hbGxvd3NfaW5saW5lOgogICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5n
cwogICogQGVuYWJsZWQ6IFZhbHVlIHRvIGJlIHNldAogICoKLSAqIFNldCB0aGUgI1dlYktpdFNl
dHRpbmdzOmRyYXctY29tcG9zaXRpbmctaW5kaWNhdG9ycyBwcm9wZXJ0eS4KKyAqIFNldCB0aGUg
I1dlYktpdFNldHRpbmdzOm1lZGlhLXBsYXliYWNrLWFsbG93cy1pbmxpbmUgcHJvcGVydHkuCiAg
Ki8KLXZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMo
V2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQordm9pZCB3ZWJraXRf
c2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUq
IHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBpZiAoV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGUocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpID09IGVuYWJsZWQKLSAg
ICAgICAgJiYgV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJs
ZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkgPT0gZW5hYmxlZCkKKyAgICBib29sIGN1cnJlbnRW
YWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKCk7Cisg
ICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
S1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShwcml2LT5wcmVmZXJlbmNl
cy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldENvbXBvc2l0aW5nUmVwYWlu
dENvdW50ZXJzVmlzaWJsZShwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSwgZW5hYmxlZCk7Ci0gICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImRyYXctY29tcG9zaXRpbmctaW5k
aWNhdG9ycyIpOworICAgIHByaXYtPnByZWZlcmVuY2VzLT5zZXRNZWRpYVBsYXliYWNrQWxsb3dz
SW5saW5lKGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyks
ICJtZWRpYS1wbGF5YmFjay1hbGxvd3MtaW5saW5lIik7CiB9CiAKIC8qKgpAQCAtMjUzNyw4ICsy
NDgzLDI5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGlj
YXRvcnMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnCiBnYm9vbGVhbiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOwotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0Q29tcG9zaXRpbmdCb3Jk
ZXJzVmlzaWJsZShzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpCi0gICAgICAgICAg
ICYmIFdLUHJlZmVyZW5jZXNHZXRDb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUoc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLT5jb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKCkKKyAgICAgICAgJiYg
c2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5jb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zp
c2libGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRp
bmdfaW5kaWNhdG9yczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBlbmFi
bGVkOiBWYWx1ZSB0byBiZSBzZXQKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpkcmF3
LWNvbXBvc2l0aW5nLWluZGljYXRvcnMgcHJvcGVydHkuCisgKi8KK3ZvaWQgd2Via2l0X3NldHRp
bmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYg
PSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+cHJlZmVyZW5jZXMtPmNvbXBvc2l0aW5n
Qm9yZGVyc1Zpc2libGUoKSA9PSBlbmFibGVkCisgICAgICAgICYmIHByaXYtPnByZWZlcmVuY2Vz
LT5jb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUoKSA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0Q29tcG9zaXRpbmdCb3JkZXJz
VmlzaWJsZShlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0Q29tcG9zaXRpbmdS
ZXBhaW50Q291bnRlcnNWaXNpYmxlKGVuYWJsZWQpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09C
SkVDVChzZXR0aW5ncyksICJkcmF3LWNvbXBvc2l0aW5nLWluZGljYXRvcnMiKTsKIH0KIAogLyoq
CkBAIC0yNTUzLDcgKzI1MjAsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZwogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZBTFNFKTsK
IAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3Moc2V0
dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdldCgpKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnBy
aXYtPnByZWZlcmVuY2VzLT5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpOwogfQogCiAvKioKQEAg
LTI1NjgsMTEgKzI1MzUsMTEgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zaXRl
X3NwZWNpZmljX3F1aXJrcyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGcKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0
dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFs
dWUgPSBXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJpdi0+cHJlZmVy
ZW5jZXMuZ2V0KCkpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMt
Pm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFi
bGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCksIGVuYWJsZWQpOworICAgIHByaXYt
PnByZWZlcmVuY2VzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhlbmFibGVkKTsKICAgICBn
X29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXNpdGUtc3BlY2lmaWMt
cXVpcmtzIik7CiB9CiAKQEAgLTI1ODgsNyArMjU1NSw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIEZB
TFNFKTsKIAotICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UGFnZUNhY2hlRW5hYmxlZChzZXR0
aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJp
di0+cHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAogLyoqCkBAIC0yNjAzLDExICsy
NTcwLDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGFnZV9jYWNoZShXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0
ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gV0tQcmVm
ZXJlbmNlc0dldFBhZ2VDYWNoZUVuYWJsZWQocHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAg
IGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUoKTsK
ICAgICBpZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdLUHJlZmVyZW5jZXNTZXRQYWdlQ2FjaGVFbmFibGVkKHByaXYtPnByZWZlcmVuY2VzLmdldCgp
LCBlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0VXNlc1BhZ2VDYWNoZShlbmFi
bGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXBh
Z2UtY2FjaGUiKTsKIH0KIApAQCAtMjY3OCw3ICsyNjQ1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfc21vb3RoX3Njcm9sbGluZyhXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRp
bmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNldHRpbmdzLT5wcml2
LT5wcmVmZXJlbmNlcy5nZXQoKSktPnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOworICAgIHJldHVy
biBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwog
fQogCiAvKioKQEAgLTI2OTMsMTAgKzI2NjAsMTAgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV9zbW9vdGhfc2Nyb2xsaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAg
ICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9v
bCBjdXJyZW50VmFsdWUgPSBXZWJLaXQ6OnRvSW1wbChwcml2LT5wcmVmZXJlbmNlcy5nZXQoKSkt
PnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+
cHJlZmVyZW5jZXMtPnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwogICAgIGlmIChjdXJyZW50VmFs
dWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0Ojp0b0ltcGwocHJp
di0+cHJlZmVyZW5jZXMuZ2V0KCkpLT5zZXRTY3JvbGxBbmltYXRvckVuYWJsZWQoZW5hYmxlZCk7
CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFNjcm9sbEFuaW1hdG9yRW5hYmxlZChlbmFibGVk
KTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXNtb290
aC1zY3JvbGxpbmciKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgKaW5kZXggNGU1ZDIzMi4uOWIxZmViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3NQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2V0dGluZ3NQcml2YXRlLmgKQEAgLTI3LDggKzI3LDkgQEAKICNkZWZpbmUgV2ViS2l0U2V0dGlu
Z3NQcml2YXRlX2gKIAogI2luY2x1ZGUgIldlYktpdFNldHRpbmdzLmgiCi0jaW5jbHVkZSA8V2Vi
S2l0Mi9XZWJLaXQyX0MuaD4KIAotdm9pZCB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9Q
YWdlKFdlYktpdFNldHRpbmdzKiwgV0tQYWdlUmVmKTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK3ZvaWQgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZShXZWJLaXRTZXR0aW5n
cyosIFdlYlBhZ2VQcm94eSopOwogCiAjZW5kaWYgLy8gV2ViS2l0U2V0dGluZ3NQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggNTc5YzZmZS4uZDZhNzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTMwMSw3ICszMDEsNyBAQCBzdGF0
aWMgdm9pZCBpY29uUmVhZHlDYWxsYmFjayhXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNl
LCBjb25zdCBjaGFyKiB1cmksCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3Mo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogewogICAg
IHdlYlZpZXctPnByaXYtPnNldHRpbmdzID0gc2V0dGluZ3M7Ci0gICAgd2Via2l0U2V0dGluZ3NB
dHRhY2hTZXR0aW5nc1RvUGFnZSh3ZWJWaWV3LT5wcml2LT5zZXR0aW5ncy5nZXQoKSwgdG9BUEko
Z2V0UGFnZSh3ZWJWaWV3KSkpOworICAgIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NUb1Bh
Z2Uod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIGdldFBhZ2Uod2ViVmlldykpOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3Qoc2V0dGluZ3MsICJub3RpZnk6OmFsbG93LW1vZGFsLWRpYWxvZ3Mi
LCBHX0NBTExCQUNLKGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZCksIHdlYlZpZXcpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3Qoc2V0dGluZ3MsICJub3RpZnk6Onpvb20tdGV4dC1vbmx5IiwgR19DQUxM
QkFDSyh6b29tVGV4dE9ubHlDaGFuZ2VkKSwgd2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVj
dChzZXR0aW5ncywgIm5vdGlmeTo6dXNlci1hZ2VudCIsIEdfQ0FMTEJBQ0sodXNlckFnZW50Q2hh
bmdlZCksIHdlYlZpZXcpOwo=
</data>
<flag name="review"
          id="182002"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>