<?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>134357</bug_id>
          
          <creation_ts>2014-06-26 12:56:52 -0700</creation_ts>
          <short_desc>[GTK] Add API to allow blocking plugins</short_desc>
          <delta_ts>2020-08-17 06:49:01 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiří Janoušek">janousek.jiri</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>agomez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>chavarria1991</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1018716</commentid>
    <comment_count>0</comment_count>
    <who name="Jiří Janoušek">janousek.jiri</who>
    <bug_when>2014-06-26 12:56:52 -0700</bug_when>
    <thetext>Hi,

the documentation of WebKitPlugin class[1] states &quot;This object can be used to get more information about a plugin, and enable/disable it, allowing fine-grained control of plugins.&quot;, but I can&apos;t see any function to disable a particular plugin. I would use such a function to disable all plugins except a preferred Flash plugin implementation (Adobe Flash, Gnash, Lightspark, Pipelight, ...) as requested by users of my app (Nuvola Player).

[1] http://webkitgtk.org/reference/webkit2gtk/unstable/WebKitPlugin.html

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042954</commentid>
    <comment_count>1</comment_count>
    <who name="Jiří Janoušek">janousek.jiri</who>
    <bug_when>2014-10-20 13:40:17 -0700</bug_when>
    <thetext>When both the NPAPI Adobe Flash plugin 11.2 and the Fresh-player-wrapped PPAPI Adobe Flash plugin 15.0 are installed, WebKit2Gtk uses the old 11.2 Flash plugin and ignores the newer version. A method webkit_plugin_set_enabled () would be really helpful to let user disable the old Flash plugin and make sure the new one is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051413</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2014-12-01 04:23:03 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; When both the NPAPI Adobe Flash plugin 11.2 and the Fresh-player-wrapped
&gt; PPAPI Adobe Flash plugin 15.0 are installed, WebKit2Gtk uses the old 11.2
&gt; Flash plugin and ignores the newer version. A method
&gt; webkit_plugin_set_enabled () would be really helpful to let user disable the
&gt; old Flash plugin and make sure the new one is used.

Please note that WebKit don&apos;t supports PPAPI plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051414</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-12-01 04:36:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; When both the NPAPI Adobe Flash plugin 11.2 and the Fresh-player-wrapped
&gt; &gt; PPAPI Adobe Flash plugin 15.0 are installed, WebKit2Gtk uses the old 11.2
&gt; &gt; Flash plugin and ignores the newer version. A method
&gt; &gt; webkit_plugin_set_enabled () would be really helpful to let user disable the
&gt; &gt; old Flash plugin and make sure the new one is used.
&gt; 
&gt; Please note that WebKit don&apos;t supports PPAPI plugins.

Fresh-player appears to be an NPAPI wrapper for PPAPI plugins: https://github.com/i-rinat/freshplayerplugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054071</commentid>
    <comment_count>4</comment_count>
      <attachid>242994</attachid>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2014-12-10 00:38:43 -0800</bug_when>
    <thetext>Created attachment 242994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054072</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-10 00:40:00 -0800</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>1054073</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-10 00:40:10 -0800</bug_when>
    <thetext>Attachment 242994 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Plugins/PluginInfoStore.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.h&quot;
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp:180:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:125:  all_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:125:  loaded_plugins is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:142:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:154:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 8 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054076</commentid>
    <comment_count>7</comment_count>
      <attachid>242994</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-10 00:56:44 -0800</bug_when>
    <thetext>Comment on attachment 242994
Patch

I don&apos;t see how this can work. To have a WebKitPlugin object, you need to the plugin to be loaded, since it&apos;s the way to have a PluginModuleInfo, so it&apos;s imposible to disable a plugin before being loaded using WebKitPlugin API. What we want is not to disable a plugin load (in most of the cases the plugin cache will be used), but to block those plugin instances so that the plugin process is not even spawned. So, maybe webkit_plugin_block/unblock or set_blocked is_blocked would be better names. Please, provide a unit test to check things are working as expected. You should implement pluginLoadPolicy loader client callback and return PluginModuleBlocked, for the blocked plugins and PluginModuleLoadNormally for the others</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054798</commentid>
    <comment_count>8</comment_count>
      <attachid>243189</attachid>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2014-12-12 02:27:45 -0800</bug_when>
    <thetext>Created attachment 243189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054820</commentid>
    <comment_count>9</comment_count>
      <attachid>243189</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-12 05:51:42 -0800</bug_when>
    <thetext>Comment on attachment 243189
Patch

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

After thinking about this again, I think we could expose this in a different way, giving more control to the application. We could expose the pluginLoadPolicy callback as a signal of WebKitWebView, where the user can connect to decide what to do about the plugin. And we should also expose the unavailablePluginButtonClicked so that the application can ask the user whether to enable the particular plugin or not and reload the page. This way, it&apos;s the application the one keeping the list of blocking plugins, and we keep the WebKitPlugin object as read-only.

&gt; Source/WebKit2/Shared/Plugins/PluginModuleInfo.h:62
&gt; +    bool isBlocked;

I don&apos;t think we need to keep this here. This is for the information that the plugin provides, not for the plugin state.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp:123
&gt; +    bool blocked = toImpl(pluginInfoDictionary)-&gt;get&lt;API::Boolean&gt;(pluginInformationIsBlockedKey())-&gt;value();
&gt; +    return blocked ? PluginModuleBlocked : PluginModuleLoadNormally;

We should provide the unavailabilityDescription, I guess. I think we should keep the list of plugins blocked in GTK specific code, and check here if the given plugin is blocked or not.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp:168
&gt;          0, // didLayout
&gt;          0, // pluginLoadPolicy_deprecatedForUseWithV2
&gt;          0, // pluginDidFail
&gt; -        0, // pluginLoadPolicy
&gt; +        pluginLoadPolicy // pluginLoadPolicy

What happens when a plugin is blocked and the user clicks on the unavailable button? I think we should also implement unavailablePluginButtonClicked in the UI client.

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp:71
&gt; +#if PLATFORM(GTK)
&gt; +        if (PluginInfoStore::m_loadedPluginListIsUpToDate)
&gt; +#endif

I don&apos;t understand why this is needed. The pluginLoadPolicy will be called every time the page is reloaded and there are plugins.

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp:96
&gt; +#if PLATFORM(GTK)
&gt; +    PluginInfoStore::m_loadedPluginListIsUpToDate = true;
&gt; +#endif

Ditto.

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.h:65
&gt; +#if PLATFORM(GTK)
&gt; +    static void setBlockedPlugin(PluginModuleInfo&amp;, bool);
&gt; +#endif

This could be handled in the GTK+ specific code.

&gt; Source/WebKit2/UIProcess/Plugins/PluginInfoStore.h:110
&gt; +#if PLATFORM(GTK)
&gt; +    static Vector&lt;String&gt; m_blockedPluginsPaths;
&gt; +    static bool m_loadedPluginListIsUpToDate;
&gt; +#endif

Ditto.

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:107
&gt; +    for (const auto&amp; blocked_plugin_path : m_blockedPluginsPaths) {

blocked_plugin_path -&gt; blockedPluginPath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054821</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-12 05:56:16 -0800</bug_when>
    <thetext>We should also consider exposing didBlockInsecurePluginVersion for plugins that don&apos;t have a representation in the web page, for example flash playing audio only, so that the app knows there&apos;s a plugin blocked and can ask the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074894</commentid>
    <comment_count>11</comment_count>
      <attachid>248056</attachid>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-03-06 02:42:06 -0800</bug_when>
    <thetext>Created attachment 248056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074900</commentid>
    <comment_count>12</comment_count>
      <attachid>248058</attachid>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-03-06 03:25:23 -0800</bug_when>
    <thetext>Created attachment 248058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077819</commentid>
    <comment_count>13</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-03-17 01:50:28 -0700</bug_when>
    <thetext>I think we could use this bug to provide an API to selectively disable plugins even per host based blocking specially after https://bugs.webkit.org/show_bug.cgi?id=142506 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078502</commentid>
    <comment_count>14</comment_count>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-03-19 02:56:30 -0700</bug_when>
    <thetext>I have just send an email to webkitgtk+ mailing list proposing a API to implement selective disable plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083907</commentid>
    <comment_count>15</comment_count>
      <attachid>250424</attachid>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-04-09 00:38:40 -0700</bug_when>
    <thetext>Created attachment 250424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083925</commentid>
    <comment_count>16</comment_count>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-04-09 02:09:14 -0700</bug_when>
    <thetext>I have beed working last weeks on modifying my patch to support declarative set of plugin load policies.

In spite of the fact that it do work know, this is a WIP still but any review/idea are really wellcome.

Appart from the previous created signals load-plugin, blocked-plugin and unavailable-plugin-activated, I have implement two methods to set and clear plugin load policies in a declarative way. So, webkit_plugin_set_client_load_policy can be used for set the load policy for a certain host and plugin and webkit_context_clear_policies could be used for clear all established policies. We have to take into account that there is no persistence at all in this policies so when we restart our application, the previous established policies will be gone. Thats why the application should store a list of policies established for plugins and the API does not provide a webkit_plugin_get_client_load_policy.

Both implemented methods expose the WebProccessPool methods created by r181562 (http://trac.webkit.org/changeset/181562). These methods update a local hashmap that contains all created policies and then they send a message to the WebProcess which also updates a local hashmap.

The problem is that these methods use BundleId and Version to identify each plugin and we dont have that in GTK+ so, I have use the filename instead of the bundleId and I have hardcoded the versionId to &quot;*&quot;.

On the other hand the solution to get the established plugin policy for a certain plugin and host in load-plugin is a litle hacky... I have implement a method getPluginLoadClientPolicy in WebProcessPool. This method gets the established policy for a plugin finding the key in the WebProccessPool local array. Mac port seems to be doing this using other ways but I have not found any alternative.

The plugin information provided to load-plugin is a dictionary created using a PluginModuleInfo data obtained from PluginInfoStore. In GTK we use a cache to store the PluginModuleInfo for each plugin and this cache is only updated when the file changed.

In addition the created test has a race condition so It it timeouts if we dont have the wait instruction on line 900 of the TestWebKitWebView.cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084269</commentid>
    <comment_count>17</comment_count>
      <attachid>250508</attachid>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-04-10 04:25:20 -0700</bug_when>
    <thetext>Created attachment 250508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084271</commentid>
    <comment_count>18</comment_count>
    <who name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</who>
    <bug_when>2015-04-10 04:29:13 -0700</bug_when>
    <thetext>After the email send by Carlos Garcia to the mailing list, we have conclude that block plugins and disable plugins are different things and they should be implemented on different bugs. So I re-upload the work I had done about blocking plugins with some tiny fixes. Any review would be really appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680797</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-17 06:49:01 -0700</bug_when>
    <thetext>Plugins are no longer supported.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242994</attachid>
            <date>2014-12-10 00:38:43 -0800</date>
            <delta_ts>2014-12-12 02:27:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134357-20141210093923.patch</filename>
            <type>text/plain</type>
            <size>11573</size>
            <attacher name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2M0OTc2NGY2OGIwNmM5
YzY0ZGIzMmE5ZjQzNmUwZGNiNTE3NTNlYi4uMzBlZjI2Mzg0NjAyYmJjM2FhZTE2ZDMzYTg3ZjM2
NDk4YWUxYjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTEyLTA5ICBNYXJj
b3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgorCisgICAg
ICAgIFtHVEtdW1dlYktpdDJdIE1pc3NpbmcgQVBJIHRvIGRpc2FibGUgV2ViS2l0UGx1Z2luCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzNTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZ2V0X2Vu
YWJsZWQgYW5kIHNldF9lbmFibGVkIG1ldGhvZHMgdG8gV2ViS2l0UGx1Z2luLiBXZSBhZGQgYW4K
KyAgICAgICAgc3RhdGljIGFycmF5IG9mIHBhdGhzIHRvIHRoZSBQbHVnaW5JbmZvU3RvcmUgY2xh
c3MgdG8gY2hlY2sgaWYgd2UKKyAgICAgICAgbmVlZCB0byBsb2FkIG9yIG5vdCBhIHBsdWdpbiwg
d2UgdmlldyBpZiB0aGUgZ2l2ZW4gcGx1Z2luIHBhdGggaXMKKyAgICAgICAgaW4gdGhhdCBhcnJh
eS4gSW4gYWRkaXRpb24gd2UgYWRkIGFuIHN0YXRpYyBib29sIHZhcmlhYmxlIHRvIGNoZWNrCisg
ICAgICAgIGlmIHdlIG5lZWQgdG8gcmVsb2FkIHBsdWdpbnMgd2hlbiBvbmUgb2YgdGhlbiBoYXMg
YmVlbiBkaXNhYmxlZC9lbmFibGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UGx1Z2luLmNwcDoKKyAgICAgICAgQWRkIG1ldGhvZHMuCisgICAgICAgICh3ZWJraXRfcGx1
Z2luX2dldF9lbmFibGVkKToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fc2V0X2VuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbkluZm9TdG9yZTo6bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSk6IEFkZCBjaGVjayBvZgorICAg
ICAgICAgICAgICAgIHN0YXRpYyBib29sZWFuIHZhcmlhYmxlLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5JbmZvU3RvcmU6OmxvYWRlZFBsdWdpbnMpOiBBZGQgbmV3IG1ldGhvZCB0byBnZXQKKyAg
ICAgICAgICAgICAgICB0aGUgcGx1Z2lucyB0aGF0IGFyZSBsb2FkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0
b3JlOjpkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
bkluZm9TdG9yZTo6c2V0RW5hYmxlZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbklu
Zm9TdG9yZTo6c2hvdWxkVXNlUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsdWdpbkluZm9TdG9yZURpZExv
YWRQbHVnaW5zKTogTG9hZCBvbmx5IHRoZQorICAgICAgICAgICAgICAgIHBsdWdpbnMgdGhhdCBh
cmUgc2V0IGFzIGVuYWJsZWQuCisKIDIwMTQtMTItMDkgIFRpbmctV2VpIExhbiAgPGxhbnR3NDRA
Z21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIExERkxBR1MgaXMgaWdub3JlZCB3aGVuIHJ1bm5p
bmcgZy1pci1zY2FubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UGx1Z2luLmNwcAppbmRleCBiNmRlYzFkM2E5ZWFlMWRjMWZmODI5NjBiOWM1MTRkZWE1
NWI4YjNlLi5iM2E4YmMyYTQ3YTE1Zjg0NTRmODViYzA2OTVhNDdhNDY3NDJlZDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKQEAg
LTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIldlYktpdE1pbWVJbmZvUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKKyNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CkBAIC0xNDksMyArMTUwLDMyIEBAIEdMaXN0KiB3ZWJraXRfcGx1Z2luX2dldF9taW1lX2lu
Zm9fbGlzdChXZWJLaXRQbHVnaW4qIHBsdWdpbikKICAgICAgICAgcGx1Z2luLT5wcml2LT5taW1l
SW5mb0xpc3QgPSBnX2xpc3RfcHJlcGVuZChwbHVnaW4tPnByaXYtPm1pbWVJbmZvTGlzdCwgd2Vi
a2l0TWltZUluZm9DcmVhdGUocGx1Z2luLT5wcml2LT5wbHVnaW5JbmZvLmluZm8ubWltZXNbaV0p
KTsKICAgICByZXR1cm4gcGx1Z2luLT5wcml2LT5taW1lSW5mb0xpc3Q7CiB9CisKKy8qKgorICog
d2Via2l0X3BsdWdpbl9nZXRfZW5hYmxlZDoKKyAqIEBwbHVnaW46IGEgI1dlYktpdFBsdWdpbgor
ICoKKyAqIEdldCB3aGV0aGVyIHRoZSBwbHVnaW4gaXMgY3VycmVudGx5IGVuYWJsZWQuCisgKgor
ICogUmV0dXJuczogJVRSVUUgSWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkLCBvciAlRkFMU0Ugb3Ro
ZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3BsdWdpbl9n
ZXRfZW5hYmxlZChXZWJLaXRQbHVnaW4qIHBsdWdpbikKK3sKKyAgICByZXR1cm4gUGx1Z2luSW5m
b1N0b3JlOjpkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihwbHVnaW4tPnByaXYtPnBsdWdpbklu
Zm8pID09IFBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1
Z2luX3NldF9lbmFibGVkOgorICogQHBsdWdpbjogYSAjV2ViS2l0UGx1Z2luCisgKiBAZW5hYmxl
ZDogVmFsdWUgdG8gYmUgc2V0CisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgY2VydGFpbiBwbHVn
aW4uCisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF9wbHVnaW5fc2V0X2VuYWJs
ZWQoV2ViS2l0UGx1Z2luKiBwbHVnaW4sIGdib29sZWFuIGVuYWJsZWQpCit7CisgICAgUGx1Z2lu
SW5mb1N0b3JlOjpzZXRFbmFibGVkUGx1Z2luIChwbHVnaW4tPnByaXYtPnBsdWdpbkluZm8sIGVu
YWJsZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
bHVnaW4uaAppbmRleCBkNzUzM2M5MjBlNGEyNjk3ZjQ4ZThlMmIzNzFmYWFmNjJhY2UzMjY1Li43
OWQyZjZjMzk5ODdkMjc5NWMyOTk1YjJmYThjYmYxMjYxMzNjZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaApAQCAtNzAsNiArNzAsMTIg
QEAgd2Via2l0X3BsdWdpbl9nZXRfcGF0aCAgICAgICAgICAgKFdlYktpdFBsdWdpbiAqcGx1Z2lu
KTsKIFdFQktJVF9BUEkgR0xpc3QgKgogd2Via2l0X3BsdWdpbl9nZXRfbWltZV9pbmZvX2xpc3Qg
KFdlYktpdFBsdWdpbiAqcGx1Z2luKTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3Bs
dWdpbl9nZXRfZW5hYmxlZCAgICAgICAgKFdlYktpdFBsdWdpbiogcGx1Z2luKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfcGx1Z2luX3NldF9lbmFibGVkICAgICAgICAoV2ViS2l0UGx1Z2lu
KiBwbHVnaW4sIGdib29sZWFuIGVuYWJsZWQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCmluZGV4IDY1ZTM4NDI0Njg4MDAzNjBkNzQ0MTViNzYwMzM2MWUwNWM1YzhhNjIuLjU5YjUy
MzBlZTRmN2Y2YmMxMzkzZGFiYTk0N2RhZGQ4OGQ5ZmY4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtNjYsNiAr
NjYsOSBAQCBzdGF0aWMgdm9pZCBhZGRGcm9tVmVjdG9yKFQmIGhhc2hTZXQsIGNvbnN0IFUmIHZl
Y3RvcikKIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCkKIHsK
ICAgICBpZiAobV9wbHVnaW5MaXN0SXNVcFRvRGF0ZSkKKyNpZiBQTEFURk9STShHVEspCisgICAg
ICAgIGlmIChQbHVnaW5JbmZvU3RvcmU6Om1fbG9hZGVkUGx1Z2luTGlzdElzVXBUb0RhdGUpCisj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiB1bmlxdWVQ
bHVnaW5QYXRoczsKQEAgLTgzLDE2ICs4NiwyNyBAQCB2b2lkIFBsdWdpbkluZm9TdG9yZTo6bG9h
ZFBsdWdpbnNJZk5lY2Vzc2FyeSgpCiAgICAgYWRkRnJvbVZlY3Rvcih1bmlxdWVQbHVnaW5QYXRo
cywgaW5kaXZpZHVhbFBsdWdpblBhdGhzKCkpOwogCiAgICAgbV9wbHVnaW5zLmNsZWFyKCk7Cisj
aWYgUExBVEZPUk0oR1RLKQorICAgIG1fbG9hZGVkUGx1Z2lucy5jbGVhcigpOworI2VuZGlmCiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBsdWdpblBhdGggOiB1bmlxdWVQbHVnaW5QYXRocykKKyNp
ZiBQTEFURk9STShHVEspCisgICAgICAgIGxvYWRQbHVnaW4obV9wbHVnaW5zLCBtX2xvYWRlZFBs
dWdpbnMsIHBsdWdpblBhdGgpOworI2Vsc2UKICAgICAgICAgbG9hZFBsdWdpbihtX3BsdWdpbnMs
IHBsdWdpblBhdGgpOworI2VuZGlmCiAKICAgICBtX3BsdWdpbkxpc3RJc1VwVG9EYXRlID0gdHJ1
ZTsKKyNpZiBQTEFURk9STShHVEspCisgICAgUGx1Z2luSW5mb1N0b3JlOjptX2xvYWRlZFBsdWdp
bkxpc3RJc1VwVG9EYXRlID0gdHJ1ZTsKKyNlbmRpZgogCiAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICBtX2NsaWVudC0+cGx1Z2luSW5mb1N0b3JlRGlkTG9hZFBsdWdpbnModGhpcyk7CiB9CiAK
KyNpZiAhIFBMQVRGT1JNKEdUSykKIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luKFZl
Y3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYgcGx1Z2lucywgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KQogewogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luOwpAQCAtMTA1LDYgKzExOSw3IEBAIHZv
aWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luKFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYg
cGx1Z2lucywgY29uc3QgU3RyaW5nCiAgICAgCiAgICAgcGx1Z2lucy5hcHBlbmQocGx1Z2luKTsK
IH0KKyNlbmRpZgogCiBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gUGx1Z2luSW5mb1N0b3JlOjpw
bHVnaW5zKCkKIHsKQEAgLTExMiw2ICsxMjcsMTQgQEAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+
IFBsdWdpbkluZm9TdG9yZTo6cGx1Z2lucygpCiAgICAgcmV0dXJuIG1fcGx1Z2luczsKIH0KIAor
I2lmIFBMQVRGT1JNKEdUSykKK1ZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBQbHVnaW5JbmZvU3Rv
cmU6OmxvYWRlZFBsdWdpbnMoKQoreworICAgIGxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKTsKKyAg
ICByZXR1cm4gbV9sb2FkZWRQbHVnaW5zOworfQorI2VuZGlmCisKIFBsdWdpbk1vZHVsZUluZm8g
UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgUGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzIGFsbG93ZWRQbHVnaW5UeXBlcykg
Y29uc3QKIHsKICAgICBBU1NFUlQoIW1pbWVUeXBlLmlzTnVsbCgpKTsKQEAgLTE2NCwxMiArMTg3
LDE0IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHBhdGhFeHRlbnNpb24oY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShHVEspCiBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5
IFBsdWdpbkluZm9TdG9yZTo6ZGVmYXVsdExvYWRQb2xpY3lGb3JQbHVnaW4oY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYpCiB7CiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKIH0K
LSAgICAKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKENPQ09BKQogUGx1Z2luTW9kdWxlSW5mbyBQ
bHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCA3YjRmNTA5YzdhZDQ2
Yjc4OWQzNDU3ZTQ2NmEzMzFlMjcwYTI3ODY1Li4xZTNmZmU0OTA0MGI3NmE4NzAzODNhZmE1N2Mz
ODllNTE0ZWQ0YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuaApAQCAtNjAsNiArNjAsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
cmVmcmVzaCgpOwogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zKCk7CiAKKyNp
ZiBQTEFURk9STShHVEspCisgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IGxvYWRlZFBsdWdp
bnMoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRFbmFibGVkUGx1Z2luIChQbHVnaW5Nb2R1bGVJbmZv
JiwgYm9vbCk7CisjZW5kaWYKKwogICAgIC8vIFJldHVybnMgdGhlIGluZm8gZm9yIGEgcGx1Zy1p
biB0aGF0IGNhbiBoYW5kbGUgdGhlIGdpdmVuIE1JTUUgdHlwZS4KICAgICAvLyBJZiB0aGUgTUlN
RSB0eXBlIGlzIG51bGwsIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiB0aGUgZ2l2ZW4gdXJsIHdpbGwg
YmUgdXNlZCB0byBpbmZlciB0aGUKICAgICAvLyBwbHVnLWluIHR5cGUuIEluIHRoYXQgY2FzZSwg
bWltZVR5cGUgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgcmlnaHQgTUlNRSB0eXBlLgpAQCAt
ODEsOCArODYsMTMgQEAgcHJpdmF0ZToKICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5G
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIFN0cmluZyYgbWltZVR5cGUsIFdl
YkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcykgY29uc3Q7CiAKICAgICB2b2lk
IGxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBzdGF0
aWMgdm9pZCBsb2FkUGx1Z2luKFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYsIFZlY3RvcjxQbHVn
aW5Nb2R1bGVJbmZvPiYsIGNvbnN0IFN0cmluZyYpOworI2Vsc2UKICAgICBzdGF0aWMgdm9pZCBs
b2FkUGx1Z2luKFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYgcGx1Z2lucywgY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKTsKLSAgICAKKyNlbmRpZgorCiAgICAgLy8gUGxhdGZvcm0tc3BlY2lmaWMg
bWVtYmVyIGZ1bmN0aW9uczoKIAogICAgIC8vIFJldHVybnMgcGF0aHMgdG8gZGlyZWN0b3JpZXMg
dGhhdCBzaG91bGQgYmUgc2VhcmNoZWQgZm9yIHBsdWctaW5zICh2aWEgcGx1Z2luUGF0aHNJbkRp
cmVjdG9yeSkuCkBAIC0xMDAsNiArMTEwLDEyIEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJuIHdo
ZXRoZXIgdGhpcyBwbHVnLWluIHNob3VsZCBiZSB1c2VkIChhZGRlZCB0byB0aGUgbGlzdCBvZiBw
bHVnLWlucykgb3Igbm90LgogICAgIHN0YXRpYyBib29sIHNob3VsZFVzZVBsdWdpbihWZWN0b3I8
UGx1Z2luTW9kdWxlSW5mbz4mIGFscmVhZHlMb2FkZWRQbHVnaW5zLCBjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJik7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+
IG1fZGlzYWJsZWRQbHVnaW5zUGF0aHM7CisgICAgc3RhdGljIGJvb2wgbV9sb2FkZWRQbHVnaW5M
aXN0SXNVcFRvRGF0ZTsKKyAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gbV9sb2FkZWRQbHVn
aW5zOworI2VuZGlmCisKICAgICBWZWN0b3I8U3RyaW5nPiBtX2FkZGl0aW9uYWxQbHVnaW5zRGly
ZWN0b3JpZXM7CiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IG1fcGx1Z2luczsKICAgICBi
b29sIG1fcGx1Z2luTGlzdElzVXBUb0RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRl
eCBhOTY4NTYxOGY0NDZkZTNhOTUwNDdiNzlhYzkwZWQxNTgzYmZjMTI2Li5hOWU5ZjZmMTQzMDcx
ZjZlNTEzY2RkYzQ4MzUzNWMzZDJlYzFlMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAK
QEAgLTExNiwxMCArMTE2LDU5IEBAIGJvb2wgUGx1Z2luSW5mb1N0b3JlOjpnZXRQbHVnaW5JbmZv
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICNlbmRpZgogfQog
Ci1ib29sIFBsdWdpbkluZm9TdG9yZTo6c2hvdWxkVXNlUGx1Z2luKFZlY3RvcjxQbHVnaW5Nb2R1
bGVJbmZvPiYgLyphbHJlYWR5TG9hZGVkUGx1Z2lucyovLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiAvKnBsdWdpbiovKQorCisjaWYgUExBVEZPUk0oR1RLKQorCitib29sIFBsdWdpbkluZm9TdG9y
ZTo6bV9sb2FkZWRQbHVnaW5MaXN0SXNVcFRvRGF0ZSA9IHRydWU7CitWZWN0b3I8U3RyaW5nPiBQ
bHVnaW5JbmZvU3RvcmU6Om1fZGlzYWJsZWRQbHVnaW5zUGF0aHM7CisKK3ZvaWQgUGx1Z2luSW5m
b1N0b3JlOjpsb2FkUGx1Z2luKFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYgYWxsX3BsdWdpbnMs
IFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYgbG9hZGVkX3BsdWdpbnMsIGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCkKK3sKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbjsKKworICAgIGlmICgh
Z2V0UGx1Z2luSW5mbyhwbHVnaW5QYXRoLCBwbHVnaW4pKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhbGxfcGx1Z2lucy5hcHBlbmQocGx1Z2luKTsKKworICAgIGlmICghc2hvdWxkVXNlUGx1Z2lu
KGxvYWRlZF9wbHVnaW5zLCBwbHVnaW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBsb2FkZWRf
cGx1Z2lucy5hcHBlbmQocGx1Z2luKTsKK30KKworUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBQbHVn
aW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbikKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc2FibGVkX3BsdWdpbl9w
YXRoIDogbV9kaXNhYmxlZFBsdWdpbnNQYXRocykKKyAgICAgICAgaWYgKGRpc2FibGVkX3BsdWdp
bl9wYXRoID09IHBsdWdpbi5wYXRoKQorICAgICAgICAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUJs
b2NrZWQ7CisgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKK30KKwordm9pZCBQ
bHVnaW5JbmZvU3RvcmU6OnNldEVuYWJsZWRQbHVnaW4gKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
biwgYm9vbCBlbmFibGVkKQoreworICAgIGludCBwb3NpdGlvbiA9IDA7CisgICAgZm9yIChjb25z
dCBhdXRvJiBkaXNhYmxlZF9wbHVnaW5fcGF0aCA6IG1fZGlzYWJsZWRQbHVnaW5zUGF0aHMpIHsK
KyAgICAgICAgaWYgKGRpc2FibGVkX3BsdWdpbl9wYXRoID09IHBsdWdpbi5wYXRoKSB7CisgICAg
ICAgICAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIG1fZGlzYWJsZWRQbHVnaW5z
UGF0aHMucmVtb3ZlIChwb3NpdGlvbik7CisgICAgICAgICAgICAgICAgbV9sb2FkZWRQbHVnaW5M
aXN0SXNVcFRvRGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHBvc2l0aW9uKys7CisgICAgfQorCisgICAgaWYgKCFlbmFi
bGVkKSB7CisgICAgICAgIG1fZGlzYWJsZWRQbHVnaW5zUGF0aHMuYXBwZW5kKHBsdWdpbi5wYXRo
KTsKKyAgICAgICAgbV9sb2FkZWRQbHVnaW5MaXN0SXNVcFRvRGF0ZSA9IGZhbHNlOworICAgIH0K
K30KKyNlbmRpZgorCitib29sIFBsdWdpbkluZm9TdG9yZTo6c2hvdWxkVXNlUGx1Z2luKFZlY3Rv
cjxQbHVnaW5Nb2R1bGVJbmZvPiYgLyphbHJlYWR5TG9hZGVkUGx1Z2lucyovLCBjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgLy8gV2UgZG8gbm90IGRvIGFueSBibGFjay1s
aXN0aW5nIHByZXNlbnRseS4KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVmYXVsdExv
YWRQb2xpY3lGb3JQbHVnaW4ocGx1Z2luKSAhPSBQbHVnaW5Nb2R1bGVCbG9ja2VkOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cAppbmRleCBjZDA4ZGNjZTIzZGQzMDJkYWQ2ODE5OGI2MzRkOGFiODE1NzY5NGVlLi4xOTQwZTU2
MmI0MDM3MTc3NDM1Njc4OTYyZmFhODIxODcwMzUzYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0xNDUwLDcgKzE0NTAsMTEgQEAgdm9pZCBXZWJDb250ZXh0
OjpwbHVnaW5JbmZvU3RvcmVEaWRMb2FkUGx1Z2lucyhQbHVnaW5JbmZvU3RvcmUqIHN0b3JlKQog
I2VuZGlmCiAgICAgQVNTRVJUKHN0b3JlID09ICZtX3BsdWdpbkluZm9TdG9yZSk7CiAKKyNpZiBQ
TEFURk9STShHVEspCisgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbk1vZHVsZXMg
PSBtX3BsdWdpbkluZm9TdG9yZS5sb2FkZWRQbHVnaW5zKCk7CisjZWxzZQogICAgIFZlY3RvcjxQ
bHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5Nb2R1bGVzID0gbV9wbHVnaW5JbmZvU3RvcmUucGx1Z2lu
cygpOworI2VuZGlmCiAKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcGx1Z2luczsK
ICAgICBwbHVnaW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGx1Z2luTW9kdWxlcy5zaXplKCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243189</attachid>
            <date>2014-12-12 02:27:45 -0800</date>
            <delta_ts>2015-03-06 02:41:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134357-20141212112827.patch</filename>
            <type>text/plain</type>
            <size>20278</size>
            <attacher name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTE2YzdkZWM1ZDMwOTRk
ZTMzNGM1YzFiYjdjNDE2ZjhkNTc5NWNiYy4uNzc2OTliNDczMTRiZTA1OTA4M2QzYWI1NmY3Njk2
ZDc0YmExNTljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTEyLTEyICBNYXJj
b3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgorCisgICAg
ICAgIFtHVEtdW1dlYktpdDJdIE1pc3NpbmcgQVBJIHRvIGRpc2FibGUgV2ViS2l0UGx1Z2luCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzNTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
bWV0aG9kcyB0byBnZXQgYW5kIHNldCBjZXJ0YWluIHBsdWdpbiBibG9ja2VkIHN0YXR1cy4gVG8g
ZG8gc28gd2UgYWRkIGEgbmV3IHN0YXRpYyBhcnJheQorICAgICAgICB3aXRoIHRoZSBwYXRocyBv
ZiB0aGUgYmxvY2tlZCBwbHVnaW5zIGluIHRoZSBQbHVnaW5JbmZvU3RvcmUgY2xhc3MuIFdlIHVw
ZGF0ZSBQbHVnaW5Nb2R1bGVJbmZvIHN0cnVjdAorICAgICAgICB0byBoYXZlIGEgaXNCbG9ja2Vk
IGZpZWxkIGFuZCB3ZSBpbXBsZW1lbnQgYSBuZXcgbG9hZGVyQ2xpZW50IGNhbGxiYWNrIHRvIGhh
dmUgaW50byBhY2NvdW50IHRoaXMgbmV3CisgICAgICAgIGZpZWxkLgorCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgZmlsZSBQbHVnaW5JbmZvcm1hdGlvbkd0ay4KKyAgICAg
ICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHA6IEFkZCBu
ZXcgbWV0aG9kIHRvIGdldCB0aGUga2V5IGZvciBpc0Jsb2NrZWQgdmFsdWUuCisgICAgICAgIChX
ZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uSXNCbG9ja2VkS2V5KToKKyAgICAgICAgKiBTaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5JbmZvcm1hdGlvbkd0ay5jcHA6IEFkZCBwbGF0Zm9y
bSBzcGVjaWZpYyBtZXRob2QgdG8gYWRkIG5ldyB2YWx1ZSBpc0Jsb2NrZWQgdG8gdGhlIGRpY3Rp
b25hcnkuCisgICAgICAgIChXZWJLaXQ6OmdldFBsYXRmb3JtUGx1Z2luTW9kdWxlSW5mb3JtYXRp
b24pOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpbk1vZHVsZUluZm8uaDogQWRkIGZp
ZWxkIHRvIHRoZSBzdHJ1Y3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9h
ZGVyQ2xpZW50LmNwcDogSW1wbGVtZW50IGNhbGxiYWNrLgorICAgICAgICAocGx1Z2luTG9hZFBv
bGljeSk6CisgICAgICAgIChhdHRhY2hMb2FkZXJDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHA6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisg
ICAgICAgICh3ZWJraXRfcGx1Z2luX2lzX2Jsb2NrZWQpOgorICAgICAgICAod2Via2l0X3BsdWdp
bl9zZXRfYmxvY2tlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2lu
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dDogRG9jdW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5J
bmZvU3RvcmUuY3BwOiBBZGQgc3RhdGljIGFycmF5IHdpdGggdGhlIGJsb2NrZWQgcGx1Z2lucyBw
YXRocy4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luc0lmTmVj
ZXNzYXJ5KTogQWRkIGNoZWNrIHRvIHJlbG9hZCBwbHVnaW4gaW5mbyB3aGUgd2UgYmxvY2svdW5i
bG9jayBhIHBsdWdpbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OmdldFBsdWdpbkluZm8p
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OnNldEJsb2NrZWRQbHVnaW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZSk6IE1vZGlmeSBjbGFzcyB0byB0YWtlIGludG8g
YWNjb3VudCBwbHVnaW4gc3RhdHVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZp
bmRQbHVnaW4pOgorCiAyMDE0LTEyLTEwICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0NNYWtlXSBGaXggYnVpbGQgYWZ0ZXIgV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDk4YTFjOTY3MzBhNWMy
ZDFiY2RkM2ZkZjU3ZGMzYjlkYTk0NDM1MjMuLjNkMTQwM2UzM2QxNTZhMWUzNTQ5ZGU0M2UzM2Fi
MzFiZjFjZjllMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00NCw2ICs0NCw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCiAKICAgICBTaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisgICAgU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpbkluZm9ybWF0aW9uR3RrLmNwcAogCiAgICAg
U2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlv
bi5jcHAKaW5kZXggZjlmYjJmOWFjMjZjNzVmN2JiOTQzZDhlZjA2NTBlZTkyNDE0MzAyOC4uY2Nk
YzdhZTU5YzllZWRiYjliMTIzNjU2ZTgwMmVlN2ZjOWYxNDUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0
aW9uLmNwcApAQCAtMTA4LDYgKzEwOCwxMSBAQCBTdHJpbmcgcGx1Z0luSW5mb3JtYXRpb25SZXBs
YWNlbWVudE9ic2N1cmVkS2V5KCkKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnSW5JbmZv
cm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWQiKTsKIH0KIAorU3RyaW5nIHBsdWdpbkluZm9ybWF0
aW9uSXNCbG9ja2VkS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZv
cm1hdGlvbklzQmxvY2tlZCIpOworfQorCiB2b2lkIGdldFBsdWdpbk1vZHVsZUluZm9ybWF0aW9u
KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFw
VHlwZSYgbWFwKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTY0LDcg
KzE2OSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5m
b3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gSW1tdXRhYmxlRGlj
dGlvbmFyeTo6Y3JlYXRlKFdURjo6bW92ZShtYXApKTsKIH0KIAotI2lmICFQTEFURk9STShDT0NP
QSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STSAoR1RLKQogdm9pZCBnZXRQbGF0
Zm9ybVBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBJbW11
dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oCmluZGV4
IDdmNmUxOTk4NmI2N2I3M2U0OWM3ZDNlYzRjMjViMWIxNzc4NDBjNzguLjA0OGI1ZGM4Y2M0M2U3
MjUxNGQ3YmI3NGVlOTJlZDEzYjMzNDdhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaApAQCAtNTAs
NiArNTAsNyBAQCBTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CiBTdHJpbmcg
cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOwogU3RyaW5nIHBs
dWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCk7CiBTdHJpbmcgcGx1Z0luSW5mb3JtYXRpb25S
ZXBsYWNlbWVudE9ic2N1cmVkS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25Jc0Jsb2Nr
ZWRLZXkoKTsKIAogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5J
bmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogUGFzc1JlZlB0
cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnko
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVn
aW5VUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCA9IGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5JbmZv
cm1hdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9n
dGsvUGx1Z2luSW5mb3JtYXRpb25HdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MDFiMmMxMDRlODIwZWY3
YzI5ZTJiMzE2MWYyYmY5MDNiYTFmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9ndGsvUGx1Z2luSW5mb3JtYXRpb25HdGsuY3BwCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9u
LmgiCisKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2luY2x1ZGUgIkFQSU51
bWJlci5oIgorI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgZ2V0UGxhdGZvcm1QbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4sIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUmIG1hcCkK
K3sKKyAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uSXNCbG9ja2VkS2V5KCksIEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHBsdWdpbi5pc0Jsb2NrZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpbk1vZHVsZUluZm8uaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpbk1vZHVsZUluZm8uaAppbmRleCBhNmE1ZWQ1
MGEzZjA0MjNjYTgwMjRmMjU3MTg5YjdhNGQ5ZDE0YWM3Li42NTgyNGJjYTUwZWJkYWM3YzI2OTQx
Y2QzMjY0Mzc3ZGQ0YjIzMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9QbHVnaW5Nb2R1bGVJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luTW9kdWxlSW5mby5oCkBAIC01OSw2ICs1OSw3IEBAIHN0cnVjdCBQbHVnaW5Nb2R1
bGVJbmZvIHsKICAgICBib29sIGhhc1NhbmRib3hQcm9maWxlOwogI2VsaWYgUExBVEZPUk0oR1RL
KQogICAgIGJvb2wgcmVxdWlyZXNHdGsyOworICAgIGJvb2wgaXNCbG9ja2VkOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBjOTllZmE3NWIyOThmMmJmOWMzNWI2M2ZjYjdhNTZkMTc5
Y2ZlMDY3Li5hMTRkOGU2MjRmMTJiYzU3NmU2NDlmYzViMDQxNmZhY2ZmODRkZjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNs
aWVudC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJLaXRMb2FkZXJDbGllbnQuaCIKIAorI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKQEAg
LTExNiw2ICsxMTcsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc0NyYXNo
ZWQoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKIH0KIAorc3RhdGljIFdLUGx1Z2luTG9h
ZFBvbGljeSBwbHVnaW5Mb2FkUG9saWN5KFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpbkxvYWRQb2xp
Y3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIFdLRGljdGlvbmFyeVJlZiBwbHVnaW5JbmZvRGlj
dGlvbmFyeSwgV0tTdHJpbmdSZWYqIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgYm9vbCBibG9ja2VkID0gdG9JbXBsKHBsdWdpbkluZm9E
aWN0aW9uYXJ5KS0+Z2V0PEFQSTo6Qm9vbGVhbj4ocGx1Z2luSW5mb3JtYXRpb25Jc0Jsb2NrZWRL
ZXkoKSktPnZhbHVlKCk7CisgICAgcmV0dXJuIGJsb2NrZWQgPyBQbHVnaW5Nb2R1bGVCbG9ja2Vk
IDogUGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OworfQorCiB2b2lkIGF0dGFjaExvYWRlckNsaWVu
dFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZUxvYWRlckNsaWVu
dFYzIHdrTG9hZGVyQ2xpZW50ID0gewpAQCAtMTU4LDcgKzE2NSw3IEBAIHZvaWQgYXR0YWNoTG9h
ZGVyQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRp
ZExheW91dAogICAgICAgICAwLCAvLyBwbHVnaW5Mb2FkUG9saWN5X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjIKICAgICAgICAgMCwgLy8gcGx1Z2luRGlkRmFpbAotICAgICAgICAwLCAvLyBwbHVnaW5M
b2FkUG9saWN5CisgICAgICAgIHBsdWdpbkxvYWRQb2xpY3kgLy8gcGx1Z2luTG9hZFBvbGljeQog
ICAgIH07CiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpOwogICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQod2tQYWdlLCAmd2tMb2FkZXJDbGllbnQuYmFzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcAppbmRleCBiNmRlYzFk
M2E5ZWFlMWRjMWZmODI5NjBiOWM1MTRkZWE1NWI4YjNlLi5kYWE2ZjI4M2Q4NGVhMzIzMWRmZGQ3
NGQ5OTk4ZDgzNGNkNDgyNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJLaXRQbHVnaW4uaCIKIAorI2luY2x1ZGUgIlBsdWdpbkluZm9T
dG9yZS5oIgogI2luY2x1ZGUgIldlYktpdE1pbWVJbmZvUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdFBsdWdpblByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0x
NDksMyArMTUwLDMzIEBAIEdMaXN0KiB3ZWJraXRfcGx1Z2luX2dldF9taW1lX2luZm9fbGlzdChX
ZWJLaXRQbHVnaW4qIHBsdWdpbikKICAgICAgICAgcGx1Z2luLT5wcml2LT5taW1lSW5mb0xpc3Qg
PSBnX2xpc3RfcHJlcGVuZChwbHVnaW4tPnByaXYtPm1pbWVJbmZvTGlzdCwgd2Via2l0TWltZUlu
Zm9DcmVhdGUocGx1Z2luLT5wcml2LT5wbHVnaW5JbmZvLmluZm8ubWltZXNbaV0pKTsKICAgICBy
ZXR1cm4gcGx1Z2luLT5wcml2LT5taW1lSW5mb0xpc3Q7CiB9CisKKy8qKgorICogd2Via2l0X3Bs
dWdpbl9pc19ibG9ja2VkOgorICogQHBsdWdpbjogYSAjV2ViS2l0UGx1Z2luCisgKgorICogR2V0
IHdoZXRoZXIgdGhlIHBsdWdpbiBpcyBjdXJyZW50bHkgYmxvY2tlZC4KKyAqCisgKiBSZXR1cm5z
OiAlVFJVRSBJZiB0aGUgcGx1Z2luIGlzIGJsb2NrZWQsIG9yICVGQUxTRSBvdGhlcndpc2UuCisg
KgorICogU2luY2U6IDIuOAorICovCitnYm9vbGVhbiB3ZWJraXRfcGx1Z2luX2lzX2Jsb2NrZWQo
V2ViS2l0UGx1Z2luKiBwbHVnaW4pCit7CisgICAgcmV0dXJuIHBsdWdpbi0+cHJpdi0+cGx1Z2lu
SW5mby5pc0Jsb2NrZWQ7Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl9zZXRfYmxvY2tlZDoK
KyAqIEBwbHVnaW46IGEgI1dlYktpdFBsdWdpbgorICogQGJsb2NrZWQ6IFZhbHVlIHRvIGJlIHNl
dAorICoKKyAqIEJsb2NrIG9yIHVuYmxvY2sgY2VydGFpbiBwbHVnaW4uCisgKgorICogU2luY2U6
IDIuOAorICovCit2b2lkIHdlYmtpdF9wbHVnaW5fc2V0X2Jsb2NrZWQoV2ViS2l0UGx1Z2luKiBw
bHVnaW4sIGdib29sZWFuIGJsb2NrZWQpCit7CisgICAgcGx1Z2luLT5wcml2LT5wbHVnaW5JbmZv
LmlzQmxvY2tlZCA9IGJsb2NrZWQ7CisgICAgUGx1Z2luSW5mb1N0b3JlOjpzZXRCbG9ja2VkUGx1
Z2luKHBsdWdpbi0+cHJpdi0+cGx1Z2luSW5mbywgYmxvY2tlZCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5oCmluZGV4IGQ3NTMzYzkyMGU0
YTI2OTdmNDhlOGUyYjM3MWZhYWY2MmFjZTMyNjUuLjhkNDE3YzIxNDNlYTJjYWY0MTI3YTdiMzdl
NmJiZmY1NjZiYjA1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFBsdWdpbi5oCkBAIC03MCw2ICs3MCwxMiBAQCB3ZWJraXRfcGx1Z2luX2dldF9wYXRo
ICAgICAgICAgICAoV2ViS2l0UGx1Z2luICpwbHVnaW4pOwogV0VCS0lUX0FQSSBHTGlzdCAqCiB3
ZWJraXRfcGx1Z2luX2dldF9taW1lX2luZm9fbGlzdCAoV2ViS2l0UGx1Z2luICpwbHVnaW4pOwog
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfcGx1Z2luX2lzX2Jsb2NrZWQgICAgICAgICAo
V2ViS2l0UGx1Z2luKiBwbHVnaW4pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wbHVnaW5f
c2V0X2Jsb2NrZWQgICAgICAgIChXZWJLaXRQbHVnaW4qIHBsdWdpbiwgZ2Jvb2xlYW4gYmxvY2tl
ZCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5k
ZXggMTVjNGJjZGU5OGQyN2FlNTc3ZmVkM2I4YmM2YmU0ODkzZGJmYzFlYy4uMzhkNWUzNmY3NzQ5
YmRiYWE2NmY4ZDRlODI4OTdiMWZiNmRiN2NiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
CkBAIC05MzcsNiArOTM3LDggQEAgd2Via2l0X3BsdWdpbl9nZXRfbmFtZQogd2Via2l0X3BsdWdp
bl9nZXRfZGVzY3JpcHRpb24KIHdlYmtpdF9wbHVnaW5fZ2V0X3BhdGgKIHdlYmtpdF9wbHVnaW5f
Z2V0X21pbWVfaW5mb19saXN0Cit3ZWJraXRfcGx1Z2luX2lzX2Jsb2NrZWQKK3dlYmtpdF9wbHVn
aW5fc2V0X2Jsb2NrZWQKIAogPFNVQlNFQ1RJT04gV2ViS2l0TWltZUluZm8+CiBXZWJLaXRNaW1l
SW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHAKaW5kZXggNjVlMzg0MjQ2ODgwMDM2MGQ3NDQxNWI3NjAzMzYxZTA1YzVjOGE2
Mi4uYmVjNjQ2MGU1ZWMzYzBlYTA5N2UzMmUzODYzNzRjMWRmZTNiMGJkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBA
IC02Niw2ICs2Niw5IEBAIHN0YXRpYyB2b2lkIGFkZEZyb21WZWN0b3IoVCYgaGFzaFNldCwgY29u
c3QgVSYgdmVjdG9yKQogdm9pZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5zSWZOZWNlc3Nh
cnkoKQogewogICAgIGlmIChtX3BsdWdpbkxpc3RJc1VwVG9EYXRlKQorI2lmIFBMQVRGT1JNKEdU
SykKKyAgICAgICAgaWYgKFBsdWdpbkluZm9TdG9yZTo6bV9sb2FkZWRQbHVnaW5MaXN0SXNVcFRv
RGF0ZSkKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+
IHVuaXF1ZVBsdWdpblBhdGhzOwpAQCAtODgsNiArOTEsOSBAQCB2b2lkIFBsdWdpbkluZm9TdG9y
ZTo6bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxvYWRQbHVnaW4obV9wbHVnaW5z
LCBwbHVnaW5QYXRoKTsKIAogICAgIG1fcGx1Z2luTGlzdElzVXBUb0RhdGUgPSB0cnVlOworI2lm
IFBMQVRGT1JNKEdUSykKKyAgICBQbHVnaW5JbmZvU3RvcmU6Om1fbG9hZGVkUGx1Z2luTGlzdElz
VXBUb0RhdGUgPSB0cnVlOworI2VuZGlmCiAKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5wbHVnaW5JbmZvU3RvcmVEaWRMb2FkUGx1Z2lucyh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggN2I0
ZjUwOWM3YWQ0NmI3ODlkMzQ1N2U0NjZhMzMxZTI3MGEyNzg2NS4uZDU1YWI3NjM5NzVlMjdiODJm
ZjcwZGE3ZDc3NThmYzFhZDNjNWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZnJlc2goKTsKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lu
cygpOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHN0YXRpYyB2b2lkIHNldEJsb2NrZWRQbHVn
aW4oUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wpOworI2VuZGlmCisKICAgICAvLyBSZXR1cm5zIHRo
ZSBpbmZvIGZvciBhIHBsdWctaW4gdGhhdCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUu
CiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBudWxsLCB0aGUgZmlsZSBleHRlbnNpb24gb2Yg
dGhlIGdpdmVuIHVybCB3aWxsIGJlIHVzZWQgdG8gaW5mZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0
eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIHJp
Z2h0IE1JTUUgdHlwZS4KQEAgLTEwMCw2ICsxMDQsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1
cm4gd2hldGhlciB0aGlzIHBsdWctaW4gc2hvdWxkIGJlIHVzZWQgKGFkZGVkIHRvIHRoZSBsaXN0
IG9mIHBsdWctaW5zKSBvciBub3QuCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlUGx1Z2luKFZl
Y3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYgYWxyZWFkeUxvYWRlZFBsdWdpbnMsIGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBzdGF0aWMgVmVjdG9yPFN0
cmluZz4gbV9ibG9ja2VkUGx1Z2luc1BhdGhzOworICAgIHN0YXRpYyBib29sIG1fbG9hZGVkUGx1
Z2luTGlzdElzVXBUb0RhdGU7CisjZW5kaWYKKwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYWRkaXRp
b25hbFBsdWdpbnNEaXJlY3RvcmllczsKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gbV9w
bHVnaW5zOwogICAgIGJvb2wgbV9wbHVnaW5MaXN0SXNVcFRvRGF0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9y
ZVVuaXguY3BwCmluZGV4IGE5Njg1NjE4ZjQ0NmRlM2E5NTA0N2I3OWFjOTBlZDE1ODNiZmMxMjYu
LmQ4OGY1YjhlZDQ0YWYxYzIwMmY1Njk5ZmJmNjEyNWMxY2I3Mzg4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZv
U3RvcmVVbml4LmNwcApAQCAtMTAzLDEwICsxMDMsMjEgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2lu
SW5mb1N0b3JlOjppbmRpdmlkdWFsUGx1Z2luUGF0aHMoKQogYm9vbCBQbHVnaW5JbmZvU3RvcmU6
OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZv
JiBwbHVnaW4pCiB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGlmIChQbHVnaW5JbmZvQ2FjaGU6
OnNoYXJlZCgpLmdldFBsdWdpbkluZm8ocGx1Z2luUGF0aCwgcGx1Z2luKSkKKyAgICBib29sIGJs
b2NrZWQgPSBmYWxzZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGJsb2NrZWRfcGx1Z2luX3BhdGgg
OiBtX2Jsb2NrZWRQbHVnaW5zUGF0aHMpIHsKKyAgICAgICAgaWYgKGJsb2NrZWRfcGx1Z2luX3Bh
dGggPT0gcGx1Z2luUGF0aCkgeworICAgICAgICAgICAgYmxvY2tlZCA9IHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQbHVnaW5JbmZvQ2FjaGU6
OnNoYXJlZCgpLmdldFBsdWdpbkluZm8ocGx1Z2luUGF0aCwgcGx1Z2luKSkgeworICAgICAgICBw
bHVnaW4uaXNCbG9ja2VkID0gYmxvY2tlZDsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
CiAgICAgaWYgKE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKHBsdWdpblBhdGgs
IHBsdWdpbikpIHsKKyAgICAgICAgcGx1Z2luLmlzQmxvY2tlZCA9IGJsb2NrZWQ7CiAgICAgICAg
IFBsdWdpbkluZm9DYWNoZTo6c2hhcmVkKCkudXBkYXRlUGx1Z2luSW5mbyhwbHVnaW5QYXRoLCBw
bHVnaW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMTYsNiArMTI3LDMyIEBA
IGJvb2wgUGx1Z2luSW5mb1N0b3JlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oR1RLKQor
Citib29sIFBsdWdpbkluZm9TdG9yZTo6bV9sb2FkZWRQbHVnaW5MaXN0SXNVcFRvRGF0ZSA9IHRy
dWU7CitWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6Om1fYmxvY2tlZFBsdWdpbnNQYXRo
czsKKwordm9pZCBQbHVnaW5JbmZvU3RvcmU6OnNldEJsb2NrZWRQbHVnaW4oUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luLCBib29sIGJsb2NrZWQpCit7CisgICAgaW50IHBvc2l0aW9uID0gMDsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGJsb2NrZWRfcGx1Z2luX3BhdGggOiBtX2Jsb2NrZWRQbHVnaW5z
UGF0aHMpIHsKKyAgICAgICAgaWYgKGJsb2NrZWRfcGx1Z2luX3BhdGggPT0gcGx1Z2luLnBhdGgp
IHsKKyAgICAgICAgICAgIGlmICghYmxvY2tlZCkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tl
ZFBsdWdpbnNQYXRocy5yZW1vdmUocG9zaXRpb24pOworICAgICAgICAgICAgICAgIG1fbG9hZGVk
UGx1Z2luTGlzdElzVXBUb0RhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwb3NpdGlvbisrOworICAgIH0KKworICAgIGlm
IChibG9ja2VkKSB7CisgICAgICAgIG1fYmxvY2tlZFBsdWdpbnNQYXRocy5hcHBlbmQocGx1Z2lu
LnBhdGgpOworICAgICAgICBtX2xvYWRlZFBsdWdpbkxpc3RJc1VwVG9EYXRlID0gZmFsc2U7Cisg
ICAgfQorfQorI2VuZGlmCisKIGJvb2wgUGx1Z2luSW5mb1N0b3JlOjpzaG91bGRVc2VQbHVnaW4o
VmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+JiAvKmFscmVhZHlMb2FkZWRQbHVnaW5zKi8sIGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mIC8qcGx1Z2luKi8pCiB7CiAgICAgLy8gV2UgZG8gbm90IGRvIGFu
eSBibGFjay1saXN0aW5nIHByZXNlbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggYzNjYTA3YjNmZjM1NjE0MTg0ZDgyNjc2YWQ3NmI1ZjhmZWQ3MGJi
My4uYjdlN2QzMTFmYjJlYmFlNTk3ODQzNmE4YzQ5ZjA3ODMwM2U0N2U2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwNDMsNiArMTA0Myw5IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICBQbHVnaW5Nb2R1bGVJbmZv
IHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVn
aW4obmV3TWltZVR5cGUsIFVSTCgpKTsKICAgICBpZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpICYm
IG1fcHJlZmVyZW5jZXMtPnBsdWdpbnNFbmFibGVkKCkpCisjaWYgUExBVEZPUk0oR1RLKQorICAg
ICAgICBpZiAoIXBsdWdpbi5pc0Jsb2NrZWQpCisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTE2NjQsNyArMTY2
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHVpbnQzMl90IHByb2Nlc3NUeXBlLCBjb25zCiAKICAgICBwbHVnaW5Mb2FkUG9saWN5ID0g
UGx1Z2luSW5mb1N0b3JlOjpkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihwbHVnaW4pOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykK
ICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVh
dGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgU3Ry
aW5nKCksIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAgICAgcGx1Z2luTG9h
ZFBvbGljeSA9IG1fbG9hZGVyQ2xpZW50LT5wbHVnaW5Mb2FkUG9saWN5KHRoaXMsIHN0YXRpY19j
YXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZv
cm1hdGlvbi5nZXQoKSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJkYzQzOGU2OTJh
ODIxZTMxYzY0Y2M5NzJmYTRhY2MzYWUyZmI4MWYuLmI2ZjJlZDdhNWE0MzQ3MzkwMDlkOGY2ZDFk
YzY3YTM0ZjQ5MWRhOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0xMi0xMiAgTWFyY29zIENoYXZhcnLDrWEg
VGVpamVpcm8gIDxjaGF2YXJyaWExOTkxQGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXVtXZWJL
aXQyXSBNaXNzaW5nIEFQSSB0byBkaXNhYmxlIFdlYktpdFBsdWdpbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOiBBZGQgdGVzdCBmb3IgbmV3IHBsdWdp
biBBUEkgbWV0aG9kcy4KKyAgICAgICAgKHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyk6CisKIDIw
MTQtMTItMTAgIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVwZGF0ZSBBcHBsZSBvd25lZCBidWlsZCBzbGF2ZXMuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCAzMWI1NWY5NWMyMDZiMzkzMjFkNWRmOTdjZGUwYWM4OGRhMDcyNzRlLi4zZjBl
M2I4ZjYzNmFiY2NlOTFlNDZkNDMxY2FmNjFjZDU1MmVmODE5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29u
dGV4dC5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1
ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi93ZWJraXQyLmg+CkBAIC00Myw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJD
b250ZXh0Q29uZmlndXJhdGlvbihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX2Fzc2VydChnX2ZpbGVfdGVzdChsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCksIEdfRklM
RV9URVNUX0lTX0RJUikpOwogfQogCi1jbGFzcyBQbHVnaW5zVGVzdDogcHVibGljIFRlc3Qgewor
Y2xhc3MgUGx1Z2luc1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFL
RV9HTElCX1RFU1RfRklYVFVSRShQbHVnaW5zVGVzdCk7CiAKQEAgLTExNSw2ICsxMTYsMTUgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRHZXRQbHVnaW5zKFBsdWdpbnNUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGV4dGVuc2lvbnMgPSB3ZWJraXRfbWltZV9pbmZvX2dldF9leHRl
bnNpb25zKG1pbWVJbmZvKTsKICAgICBnX2Fzc2VydChleHRlbnNpb25zKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIoZXh0ZW5zaW9uc1swXSwgPT0sICJ0ZXN0bmV0c2NhcGUiKTsKKworICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfcGx1Z2luX2lzX2Jsb2NrZWQodGVzdFBsdWdpbi5nZXQoKSkpOworICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3
LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIpKTsKKyAgICB3ZWJraXRfcGx1
Z2luX3NldF9ibG9ja2VkKHRlc3RQbHVnaW4uZ2V0KCksIHRydWUpOworICAgIGdfYXNzZXJ0KHdl
YmtpdF9wbHVnaW5faXNfYmxvY2tlZCh0ZXN0UGx1Z2luLmdldCgpKSk7CisgICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBw
bGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIpKTsKKyAgICB3ZWJraXRfcGx1Z2luX3Nl
dF9ibG9ja2VkKHRlc3RQbHVnaW4uZ2V0KCksIGZhbHNlKTsKKyAgICBnX2Fzc2VydCghd2Via2l0
X3BsdWdpbl9pc19ibG9ja2VkKHRlc3RQbHVnaW4uZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImFwcGxpY2F0
aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBr
QmFySFRNTCA9ICI8aHRtbD48Ym9keT5CYXI8L2JvZHk+PC9odG1sPiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248056</attachid>
            <date>2015-03-06 02:42:06 -0800</date>
            <delta_ts>2015-03-06 03:25:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134357-20150306114144.patch</filename>
            <type>text/plain</type>
            <size>71682</size>
            <attacher name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDY5MGU1MjE5ZTkwM2U0
Yzk0MmFlYTk1M2YzOTEzNWE2ZDM3YTMyMi4uODVhYTk5NTVkYWFkNjg4YmZkYmIxNmM3YTc1ZTdj
YzM0NTkxZGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTAzLTA2ICBNYXJj
b3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgorCisgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBuZXcgYmxvY2svdW5ibG9jayBwbHVnaW4gQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzU3CisgICAgICAg
IAorICAgICAgICBXZSBjcmVhdGUgc2lnbmFscyB0aGF0IGFyZSBmaXJlZCB3aGVuIGEgcGx1Z2lu
IGlzIGdvaW5nIHRvIGJlIGxvYWRlZCwKKyAgICAgICAgd2hlbiBhIHBsdWdpbiBpcyBibG9ja2Vk
IGFuZCB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGFjdGl2YXRlIGEgYmxvY2tlZAorICAgICAgICBv
ciBtaXNzaW5nIHBsdWdpbi4KKworCVJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0TG9hZGVyQ2xpZW50LmNwcDogSW1wbGVtZW50IHBsdWdpbkxvYWRQb2xpY3kgYW5kIGRpZEJs
b2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uIGhhbmRsZXJzIHRvIGZpcmUgdGhlIGNyZWF0ZWQgd2Vi
dmlldyBzaWduYWwgd2hlbiBuZWVkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UGx1Z2luLmNwcDogQ2hhbmdlIGRvY3VtZW50YXRpb24uIEl0IHNhaWQgdGhhdCB3ZSB3ZXJl
IGFibGUgdG8gYmxvY2sgYSBwbHVnaW4gdXNpbmcgdGhpcyBjbGFzcy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uY3BwOiBBZGRlZC4g
Q3JlYXRlIGNsYXNzIHRvIGhvbGQgaW5mb3JtYXRpb25hIGFib3V0IGEgYmxvY2tlZCBwbHVnaW4u
CisgICAgICAgIChfV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uOjpfV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uKToKKyAgICAgICAgKHdlYmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbkNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25f
Y29weSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZnJlZSk6
CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbik6
CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25faXNfdmlzaWJsZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvblByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuY3BwOiBBZGRlZC4gQ3JlYXRlIGNsYXNzIHRv
IGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgYSBwbHVnaW4gbG9hZCByZXF1ZXN0LgorICAgICAgICAo
X1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0OjpfV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QpOgorICAg
ICAgICAod2Via2l0UGx1Z2luTG9hZFJlcXVlc3RDcmVhdGUpOgorICAgICAgICAod2Via2l0X3Bs
dWdpbl9sb2FkX3JlcXVlc3RfY29weSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2xvYWRfcmVx
dWVzdF9mcmVlKToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9wbHVn
aW4pOgorICAgICAgICAod2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3Rfc2V0X2Rlc2NyaXB0aW9u
KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3RQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBs
dWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uY3BwOiBBZGRlZC4gQ3JlYXRlIGNsYXNzIHRv
IGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgYW4gdW5hdmFpbGFibGUgcGx1Z2luLgorICAgICAgICAo
X1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb246Ol9XZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eUluZm9ybWF0aW9uKToKKyAgICAgICAgKHdlYmtpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb25DcmVhdGUpOgorICAgICAgICAod2Via2l0X3BsdWdpbl91bmF2YWlsYWJp
bGl0eV9pbmZvcm1hdGlvbl9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFi
aWxpdHlfaW5mb3JtYXRpb25fZnJlZSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX3VuYXZhaWxh
YmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24pOgorICAgICAgICAod2Via2l0X3BsdWdpbl91
bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5
SW5mb3JtYXRpb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcDogSW1wbGVtZW50IHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZCBjYWxsYmFjayB0byBmaXJlIHdlYiB2aWV3IHNpZ25hbCB3aGVuIG5lZWRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDogSW1wbGVtZW50IG5ldyBz
aWduYWxzLgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRQbHVnaW4pOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0FjY3VtdWxhdG9yUGx1Z2luTG9hZFBvbGljeUhhbmRsZWQpOiBJbXBsZW1lbnQg
bmV3IGFjY3VtdWxhdG9yIGZvciBsb2FkLXBsdWdpbiBzaWduYWwuIFRoZSBoYW5kbGVyIHRoYXQg
c2V0cyBMT0FEX0JMT0NLIGFzIHBsdWdpbiBsb2FkIHBvbGljeSB3aW5zLgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRQbHVn
aW5SZXF1ZXN0KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdFbWl0UGx1Z2luQmxvY2tlZCk6Cisg
ICAgICAgICh3ZWJLaXRXZWJWaWV3RW1pdFVuYXZhaWxhYmxlUGx1Z2luQWN0aXZhdGVkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDogQWRkIG5ldyBjbGFz
c2VzIHRvIGRvY3VtZW50YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmZpbmRQbHVnaW4pOiBFbmFibGUgcGx1Z2luIGRlY2lkZSBwb2xpY3kgY2FsbGJh
Y2sgZm9yIEdUSyBwbGFyZm9ybS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRC
bG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbik6IEVuYWJsZSBibG9jayBpbnNlY3VyZSBwbHVnaW4g
Y2FsbGJhY2sgZm9yIEdUSyBQbGF0Zm9ybS4KKwogMjAxNS0wMy0wMyAgU2hpdmFrdW1hciBKTSAg
PHNoaXZhLmptQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3YXJuaW5nIGluIFdl
YktpdDIvU2hhcmVkIG1vZHVsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzdkZDNh
YzA1N2M0ZGU5ODMwNTRjN2U3NzE3ZmZkNDJiNWVlZjAyZS4uMmFmOThmNjNhYzlhYTdiYWE4OTk1
NmI0MGMyZGVhMjQxYzMxMWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE4MCw2
ICsxODAsMTUgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UGx1Z2luLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdp
bi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luUHJpdmF0ZS5oCisgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmNwcAorICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi5oCisgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uUHJpdmF0ZS5oCisg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaAorICAgIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmgKKyAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9u
UHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudC5oCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0zNzMsNiArMzgyLDkgQEAgc2V0
KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb24uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi5oCisgICAgJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaAor
ICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXR5SW5mb3JtYXRpb24uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFBvbGljeURlY2lzaW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcmludE9wZXJhdGlvbi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAzMjAzMDkwOTYzN2RlMjk4ZDA0ZGQ4MWY1Yjc3Y2YwY2JkM2M0YjlhLi45OWE5NTZlNWI1ZDM1
MGU3ZjJiODM1M2VkMzk4ZWNhMjhmNTc5NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKQEAgLTIyLDExICsy
MiwxOCBAQAogI2luY2x1ZGUgIldlYktpdExvYWRlckNsaWVudC5oIgogCiAjaW5jbHVkZSAiQVBJ
TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKKyNpbmNsdWRl
ICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJl
c3BvbnNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2lu
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTExNiw2ICsxMjMsNDkgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2ViVmll
d1dlYlByb2Nlc3NDcmFzaGVkKG1fd2ViVmlldyk7CiAgICAgfQogCisjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCisKKyAgICBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcGx1
Z2luTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpQbHVnaW5N
b2R1bGVMb2FkUG9saWN5LCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBX
VEY6OlN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCA9IHBsdWdpbkluZm9EaWN0aW9uYXJ5LT5n
ZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgpKS0+c3RyaW5nKCk7Cisg
ICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luTW9kdWxlSW5mbyA9IHBhZ2UucHJvY2Vzcygp
LnByb2Nlc3NQb29sKCkucGx1Z2luSW5mb1N0b3JlKCkuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBs
dWdpblBhdGgpOworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtpdFBsdWdpbkNy
ZWF0ZShwbHVnaW5Nb2R1bGVJbmZvKTsKKworICAgICAgICBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dCogcmVxdWVzdCA9IHdlYmtpdFBsdWdpbkxvYWRSZXF1ZXN0Q3JlYXRlKHBsdWdpbik7CisKKyAg
ICAgICAgV2ViS2l0UGx1Z2luTG9hZFBvbGljeSBsb2FkUG9saWN5ID0gd2Via2l0V2ViVmlld0xv
YWRQbHVnaW5SZXF1ZXN0KG1fd2ViVmlldywgcmVxdWVzdCk7CisgICAgICAgIHVuYXZhaWxhYmls
aXR5RGVzY3JpcHRpb24gPSB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfZGVzY3JpcHRp
b24ocmVxdWVzdCk7CisKKyAgICAgICAgd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZShy
ZXF1ZXN0KTsKKworICAgICAgICBzd2l0Y2ggKGxvYWRQb2xpY3kpIHsKKyAgICAgICAgY2FzZSBX
RUJLSVRfUExVR0lOX0xPQURfQkxPQ0s6CisgICAgICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxl
QmxvY2tlZDsKKyAgICAgICAgY2FzZSBXRUJLSVRfUExVR0lOX0xPQURfTk9STUFMTFk6CisgICAg
ICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
UGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBk
aWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwg
QVBJOjpEaWN0aW9uYXJ5KiBwbHVnaW5JbmZvRGljdGlvbmFyeSkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCA9IHBsdWdpbkluZm9EaWN0aW9uYXJ5LT5n
ZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgpKS0+c3RyaW5nKCk7Cisg
ICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luTW9kdWxlSW5mbyA9IHBhZ2UucHJvY2Vzcygp
LnByb2Nlc3NQb29sKCkucGx1Z2luSW5mb1N0b3JlKCkuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBs
dWdpblBhdGgpOworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtpdFBsdWdpbkNy
ZWF0ZShwbHVnaW5Nb2R1bGVJbmZvKTsKKworICAgICAgICBnYm9vbGVhbiBpc1Zpc2libGUgPSBw
bHVnaW5JbmZvRGljdGlvbmFyeS0+Z2V0PEFQSTo6Qm9vbGVhbj4ocGx1Z0luSW5mb3JtYXRpb25S
ZXBsYWNlbWVudE9ic2N1cmVkS2V5KCkpLT52YWx1ZSgpOworCisgICAgICAgIFdlYktpdFBsdWdp
bkJsb2NrZWRJbmZvcm1hdGlvbiogaW5mbyA9IHdlYmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
bkNyZWF0ZShwbHVnaW4sIGlzVmlzaWJsZSk7CisKKyAgICAgICAgd2Via2l0V2ViVmlld0VtaXRQ
bHVnaW5CbG9ja2VkKG1fd2ViVmlldywgaW5mbyk7CisKKyAgICAgICAgd2Via2l0X3BsdWdpbl9i
bG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUoaW5mbyk7CisgICAgfQorCisjZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
bHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2lu
LmNwcAppbmRleCBiNmRlYzFkM2E5ZWFlMWRjMWZmODI5NjBiOWM1MTRkZWE1NWI4YjNlLi4xMTQ2
ZDNjZWJjOTAzZTNiODA5M2ZlZGZkMTk5ODZjMWY0NjY2NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKQEAgLTMzLDEwICszMyw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgKgogICogVGhpcyBvYmplY3QgcmVwcmVzZW50
cyBhIHNpbmdsZSBwbHVnaW4sIGZvdW5kIHdoaWxlIHNjYW5uaW5nIHRoZQogICogdmFyaW91cyBw
bGF0Zm9ybSBwbHVnaW4gZGlyZWN0b3JpZXMuIFRoaXMgb2JqZWN0IGNhbiBiZSB1c2VkIHRvIGdl
dAotICogbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhIHBsdWdpbiwgYW5kIGVuYWJsZS9kaXNhYmxl
IGl0LCBhbGxvd2luZwotICogZmluZS1ncmFpbmVkIGNvbnRyb2wgb2YgcGx1Z2lucy4gVGhlIGxp
c3Qgb2YgYXZhaWxhYmxlIHBsdWdpbnMgY2FuCi0gKiBiZSBvYnRhaW5lZCBmcm9tIHRoZSAjV2Vi
S2l0V2ViQ29udGV4dCwgd2l0aAotICogd2Via2l0X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKCku
CisgKiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgcGx1Z2luIGFsbG93aW5nIGZpbmUtZ3JhaW5l
ZCBjb250cm9sIG9mCisgKiBwbHVnaW5zLiBUaGUgbGlzdCBvZiBhdmFpbGFibGUgcGx1Z2lucyBj
YW4gYmUgb2J0YWluZWQgZnJvbSB0aGUKKyAqICNXZWJLaXRXZWJDb250ZXh0LCB3aXRoIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfcGx1Z2lucygpLgogICoKICAqLwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTQ0NzI3MjkxNGE5ZWUwMzI4YjJiZGQ3
YTk2Y2IyYWI5ZWE1MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmNwcApAQCAtMCwwICsx
LDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgiCisK
KyNpbmNsdWRlICJXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlLmgiCisKKwor
LyoqCisgKiBTRUNUSU9OOiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqIEBTaG9y
dF9kZXNjcmlwdGlvbjogSW5mb3JtYXRpb24gYWJvdXQgYSBibG9ja2VkIHBsdWdpbi4KKyAqIEBU
aXRsZTogV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uCisgKiBAU2VlX2Fsc286ICNXZWJL
aXRXZWJWaWV3CisgKgorICogV2hlbiBXZWJLaXQgYmxvY2tzIGEgcGx1Z2luIGxvYWQgaXQgYWxz
byBmaXJlcyB0aGUgI1dlYktpdFdlYlZpZXc6cGx1Z2luLWJsb2NrZWQgc2lnbmFsCisgKiB3aXRo
IGEgI1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiBvYmplY3QuIFRoaXMgb2JqZWN0IGFs
bG93cyB0aGUgY2xpZW50ZSB0byBnZXQKKyAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBibG9ja2Vk
IHBsdWdpbiBzdWNoIGFzIHdoZXRoZXIgaXQgaXMgdmlzaWJsZSBpbiB0aGUgdmlldy4KKyAqLwor
CitzdHJ1Y3QgX1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiB7CisgICAgX1dlYktpdFBs
dWdpbkJsb2NrZWRJbmZvcm1hdGlvbihXZWJLaXRQbHVnaW4qIHVuYXZhaWxhYmxlUGx1Z2luLCBn
Ym9vbGVhbiBpc1Zpc2libGUpCisgICAgICAgIDogcGx1Z2luKHVuYXZhaWxhYmxlUGx1Z2luKQor
ICAgICAgICAsIHZpc2libGUoaXNWaXNpYmxlKQorICAgIHsKKyAgICB9CisKKyAgICBfV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiog
aW5mbykKKyAgICAgICAgOiBwbHVnaW4oaW5mby0+cGx1Z2luKQorICAgICAgICAsIHZpc2libGUo
aW5mby0+dmlzaWJsZSkKKyAgICB7CisgICAgfQorCisgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW47
CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLCB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRp
b24sIHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9jb3B5LCB3ZWJraXRfcGx1Z2lu
X2Jsb2NrZWRfaW5mb3JtYXRpb25fZnJlZSkKKworV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uKiB3ZWJraXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25DcmVhdGUoV2ViS2l0UGx1Z2luKiBw
bHVnaW4sIGdib29sZWFuIGlzVmlzaWJsZSkKK3sKKyAgICBXZWJLaXRQbHVnaW5CbG9ja2VkSW5m
b3JtYXRpb24qIGluZm8gPSBnX3NsaWNlX25ldyhXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b24pOworICAgIG5ldyAoaW5mbykgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKHBsdWdp
biwgaXNWaXNpYmxlKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1
Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weQorICogQGluZm86IHRoZSBXZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBNYWtlIGEgY29weSBvZiBAaW5mby4KKyAqCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgb24gQGluZm8uCisgKgor
ICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiB3ZWJr
aXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weShXZWJLaXRQbHVnaW5CbG9ja2VkSW5m
b3JtYXRpb24qIGluZm8pCit7CisgICAgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBj
b3B5SW5mbyA9IGdfc2xpY2VfbmV3KFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbik7Cisg
ICAgbmV3IChjb3B5SW5mbykgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKGluZm8pOwor
ICAgIHJldHVybiBjb3B5SW5mbzsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRf
aW5mb3JtYXRpb25fZnJlZQorICogQGluZm86IHRoZSBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb24KKyAqCisgKiBGcmVlIEBpbmZvLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK3ZvaWQg
d2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUoV2ViS2l0UGx1Z2luQmxvY2tl
ZEluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRQbHVnaW5CbG9j
a2VkSW5mb3JtYXRpb24sIGluZm8pOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fYmxvY2tl
ZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luCisgKiBAaW5mbzogdGhlICNXZWJLaXRQbHVnaW5CbG9j
a2VkSW5mb3JtYXRpb24KKyAqCisgKiBHZXQgdGhlICNXZWJLaXRQbHVnaW4gb2YgdGhlIEBpbmZv
LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRQbHVnaW4uCisg
KgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2luKiB3ZWJraXRfcGx1Z2luX2Jsb2Nr
ZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24q
IGluZm8pCit7CisgICAgcmV0dXJuIGluZm8tPnBsdWdpbjsKK30KKworLyoqCisgKiB3ZWJraXRf
cGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25faXNfdmlzaWJsZQorICogQGluZm86IHRoZSAjV2Vi
S2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uCisgKgorICogV2hldGhlciB0aGUgcGx1Z2luIGlz
IHZpc2libGUgb24gdGhlIHBhZ2Ugb3IgaXQgaGFzIGJlZW4gb2JzY3VyZWQuCisgKgorICogUmV0
dXJuczogJVRSVUUgaWYgdGhlIHBsdWdpbiBpcyB2aXNpYmxlIG9yICVGQUxTRSBvdGhlcndpc2Uu
CisgKgorICogU2luY2U6IDIuMTAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3BsdWdpbl9ibG9ja2Vk
X2luZm9ybWF0aW9uX2lzX3Zpc2libGUoV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBp
bmZvKQoreworICAgIHJldHVybiBpbmZvLT52aXNpYmxlOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzM3M2MwN2YwYzM1NzM5ZjU5YTgxY2YzMWNmMWVl
MTEyMmQzZjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uX2gKKyNkZWZpbmUg
V2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKKyNpbmNsdWRlICJXZWJL
aXRQbHVnaW4uaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1BMVUdJ
Tl9CTE9DS0VEX0lORk9STUFUSU9OICh3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25f
Z2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb247CisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfdHlwZSAgICAgICAgKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqCit3ZWJraXRf
cGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wbHVn
aW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlICAgICAgICAgICAgKFdlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2luICoKK3dlYmtp
dF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luICAgICAgKFdlYktpdFBsdWdp
bkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxlICAgICAgKFdlYktpdFBsdWdp
bkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvL1dl
YktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb25Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQxMWZhNDYwN2Q4NGM5NWRmOWYxM2E5
MmNlZDAxNDE5OTYyNTllNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGUuaApAQCAt
MCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktp
dFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UGx1
Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgiCisKK1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
biAqIHdlYmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbkNyZWF0ZShXZWJLaXRQbHVnaW4gKnBs
dWdpbiwgZ2Jvb2xlYW4gaXNWaXNpYmxlKTsKKworI2VuZGlmIC8vIFdlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvblByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU2OGQ2YjM1YWQ4OGY3MTJjYjk5MGNiYTMzNzk1M2YyMDNhMDQ3YTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVx
dWVzdC5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGUuaCIK
KworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAorICogQFNob3J0X2Rl
c2NyaXB0aW9uOiBBIHJlcXVlc3QgdG8gbG9hZCBhIHBsdWdpbi4KKyAqIEBUaXRsZTogV2ViS2l0
UGx1Z2luTG9hZFJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBX
aGVuIGEgcGx1Z2luIGlzIGdvaW5nIHRvIGJlIGxvYWRlZCwgV2ViS2l0IHdpbGwgZmlyZSB0aGUg
I1dlYktpdFdlYlZpZXc6OmxvYWQtcGx1Z2luCisgKiBzaWduYWwgd2l0aCBhICNXZWJLaXRQbHVn
aW5Mb2FkUmVxdWVzdCBvYmplY3QuIFRoaXMgb2JqZWN0IHdpbGwgYWxsb3cgdGhlIGNsaWVudCB0
bworICogaW5zcGVjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGx1Z2luIHRoYXQgd2FudCB0byBi
ZSBsb2FkZWQgYW5kIHRvIHNldCBhIGRlc2NyaXB0aW9uCisgKiBhYm91dCB3aHkgaXQncyBub3Qg
Z29pbmcgdG8gYmUgbG9hZGVkLgorICoKKyAqIElmIHRoZSBzaWduYWwgaXMgbm90IGhhbmRsZWQg
V2ViS2l0IHdpbGwgbG9hZCB0aGUgcGx1Z2luIG5vcm1hbGx5LgorICovCisKK3N0cnVjdCBfV2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3QgeworICAgIF9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdChXZWJL
aXRQbHVnaW4qIHVuYXZhaWxhYmxlUGx1Z2luKQorICAgICAgICA6IHBsdWdpbih1bmF2YWlsYWJs
ZVBsdWdpbikKKyAgICAgICAgLCBkZXNjKE5VTEwpCisgICAgeworICAgIH0KKworICAgIF9XZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdChXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCkKKyAg
ICAgICAgOiBwbHVnaW4ocmVxdWVzdC0+cGx1Z2luKQorICAgICAgICAsIGRlc2MocmVxdWVzdC0+
ZGVzYykKKyAgICB7CisgICAgfQorCisgICAgV2ViS2l0UGx1Z2luICpwbHVnaW47CisgICAgY29u
c3QgZ2NoYXIgKmRlc2M7Cit9OworCisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0UGx1Z2lu
TG9hZFJlcXVlc3QsIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0LCB3ZWJraXRfcGx1Z2luX2xv
YWRfcmVxdWVzdF9jb3B5LCB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVlKQorCitXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdCAqIHdlYmtpdFBsdWdpbkxvYWRSZXF1ZXN0Q3JlYXRlKFdlYktp
dFBsdWdpbiogcGx1Z2luKQoreworICAgIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXN1bHQg
PSBnX3NsaWNlX25ldyhXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCk7CisgICAgbmV3IChyZXN1bHQp
IFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KHBsdWdpbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5CisgKiBAcmVxdWVzdDog
dGhlIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgKgorICogTWFrZSBhIGNvcHkgb2YgQHJlcXVl
c3QuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIG9u
ICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCitXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdCAqIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2NvcHkoV2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QqIHJlc3VsdCA9IGdfc2xpY2VfbmV3KFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KTsKKyAg
ICBuZXcgKHJlc3VsdCkgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QocmVxdWVzdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVl
CisgKiBAcmVxdWVzdDogdGhlIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgKgorICogRnJlZSBA
cmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdlYmtpdF9wbHVnaW5fbG9h
ZF9yZXF1ZXN0X2ZyZWUoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAg
Z19zbGljZV9mcmVlKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LCByZXF1ZXN0KTsKK30KKworLyoq
CisgKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luCisgKiBAcmVxdWVzdDog
dGhlICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAorICoKKyAqIEdldCB0aGUgI1dlYktpdFBsdWdp
biBvZiB0aGUgQHJlcXVlc3QuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUg
I1dlYktpdFBsdWdpbi4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW4gKiB3
ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luKFdlYktpdFBsdWdpbkxvYWRSZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiByZXF1ZXN0LT5wbHVnaW47Cit9CisKKy8qKgor
ICogd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3Rfc2V0X2Rlc2NyaXB0aW9uCisgKiBAcmVxdWVz
dDogdGhlICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAorICogQGRlc2NyaXB0aW9uOiB0aGUgZGVz
Y3JpcHRpb24uCisgKgorICogU2V0IHRoZSBkZXNjcmlwdGlvbiBhYm91dCB3aHkgdGhlIHBsdWdp
biBpcyBiZWluZyBsb2FkZWQgd2l0aCBzb21lIHBvbGljeS4KKyAqCisgKiBTaW5jZTogMi4xMAor
ICovCit2b2lkIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X3NldF9kZXNjcmlwdGlvbihXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCit7
CisgICAgcmVxdWVzdC0+ZGVzYyA9IGRlc2NyaXB0aW9uOworfQorCitjb25zdCBjaGFyKiB3ZWJr
aXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfZGVzY3JpcHRpb24oV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIHJlcXVlc3QtPmRlc2M7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVx
dWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9h
ZFJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGVlOGEwMGYwMGMzMThiNzNmODFhMzcwYmJmZTk3OWIw
NDBiOTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJ
REVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Vi
a2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lm
bmRlZiBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW4uaCIKKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1BMVUdJTl9MT0FEX1JFUVVFU1QgKHdlYmtpdF9w
bHVnaW5fbG9hZF9yZXF1ZXN0X2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRQ
bHVnaW5Mb2FkUmVxdWVzdCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdDsKKworV0VCS0lUX0FQSSBH
VHlwZQord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3R5cGUgICAgICAgICh2b2lkKTsK
KworV0VCS0lUX0FQSSBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqCit3ZWJraXRfcGx1Z2luX2xv
YWRfcmVxdWVzdF9jb3B5ICAgICAgICAgICAgKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0ICpyZXF1
ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVl
ICAgICAgICAgICAgKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lU
X0FQSSBXZWJLaXRQbHVnaW4gKgord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdp
biAgICAgIChXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3Rfc2V0X2Rlc2NyaXB0aW9uIChXZWJLaXRQ
bHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24pOworCisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYTZhOWIwZmU4NmY5NzQ3NzViMWNmNDliOTgyYjY5ZjgxNTk3Y2VkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1
Z2luTG9hZFJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oIgorCitXZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dCAqIHdlYmtpdFBsdWdpbkxvYWRSZXF1ZXN0Q3JlYXRlKFdlYktpdFBsdWdpbiAqcGx1Z2luKTsK
K2NvbnN0IGNoYXIqIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbihX
ZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVzdCk7CisKKyNlbmRpZiAvLyBXZWJLaXRQbHVn
aW5Mb2FkUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0
eUluZm9ybWF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2NmMDI0MzU3Y2RkOTAzMmNmYzk0NzEzMDQw
MDVkNDMyY2VjY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5jcHAKQEAgLTAs
MCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3Jt
YXRpb24uaCIKKworI2luY2x1ZGUgIldlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRp
b25Qcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbgorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBJbmZvcm1hdGlvbiBhYm91dCB0
aGUgdW5hdmFpbGFiaWxpdHkgb2YgYSBjZXJ0YWluIHBsdWdpbi4KKyAqIEBUaXRsZTogV2ViS2l0
UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbgorICogQFNlZV9hbHNvOiAjV2ViS2l0V2Vi
VmlldworICoKKyAqIFdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gYWN0aXZhdGUgYSBwbHVnaW4gdGhh
dCBpcyBibG9ja2VkIG9yIG1pc3NpbmcgV2ViS2l0IHdpbGwgZmlyZQorICogYSAjV2ViS2l0V2Vi
Vmlldzo6dW5hdmFpbGFibGUtcGx1Z2luLWFjdGl2YXRlZCBzaWduYWwgd2l0aCBhCisgKiAjV2Vi
S2l0UEx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiBvYmplY3QsIHdoaWNoIHdpbGwgYWxs
b3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbgorICogdG8gaW5zcGVjdCBkZXRhaWxzIGFib3V0IHRo
ZSB1bmF2YWlsYWJpbGl0eSBvZiB0aGUgcGx1Z2luLgorICovCisKK3N0cnVjdCBfV2ViS2l0UGx1
Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiB7CisgICAgX1dlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXR5SW5mb3JtYXRpb24oV2ViS2l0UGx1Z2luKiB1bmF2YWlsYWJsZVBsdWdpbiwgV2ViS2l0
UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gdW5hdmFpbGFiaWxpdHlSZWFzb24pCisgICAgICAg
IDogcGx1Z2luKHVuYXZhaWxhYmxlUGx1Z2luKQorICAgICAgICAsIHJlYXNvbih1bmF2YWlsYWJp
bGl0eVJlYXNvbikKKyAgICB7CisgICAgfQorCisgICAgX1dlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb24oV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5m
bykKKyAgICAgICAgOiBwbHVnaW4oaW5mby0+cGx1Z2luKQorICAgICAgICAsIHJlYXNvbihpbmZv
LT5yZWFzb24pCisgICAgeworICAgIH0KKworICAgIFdlYktpdFBsdWdpbiAqcGx1Z2luOworICAg
IFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHJlYXNvbjsKKyAgICBjb25zdCBnY2hh
ciAqdXJpOworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRQbHVnaW5VbmF2YWlsYWJp
bGl0eUluZm9ybWF0aW9uLCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9u
LCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2NvcHksIHdlYmtpdF9w
bHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZnJlZSk7CisKK1dlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKndlYmtpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3Jt
YXRpb25DcmVhdGUoV2ViS2l0UGx1Z2luKiBwbHVnaW4sIFdlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uIHJlYXNvbikKK3sKKyAgICBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9y
bWF0aW9uKiByZXN1bHQgPSBnX3NsaWNlX25ldyhXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUlu
Zm9ybWF0aW9uKTsKKyAgICBuZXcgKHJlc3VsdCkgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvbihwbHVnaW4sIHJlYXNvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoq
CisgKiB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2NvcHkKKyAqIEBp
bmZvOiBhICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0aXlJbmZvcm1hdGlvbgorICoKKyAqIE1h
a2UgYSBjb3B5IG9mIEBpbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBj
b3B5IG9mIHBhc3NlZCBvbiAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi4K
KyAqCisgKiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9y
bWF0aW9uKiB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2NvcHkoV2Vi
S2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbykKK3sKKyAgICBXZWJLaXRQ
bHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiByZXN1bHQgPSBnX3NsaWNlX25ldyhXZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKTsKKyAgICBuZXcgKHJlc3VsdCkgV2Vi
S2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbihpbmZvKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRp
b25fZnJlZQorICogQGluZm86IGEgI1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXRpeUluZm9ybWF0
aW9uCisgKgorICogRnJlZSBAaW5mby4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdl
YmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZnJlZShXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdfc2xpY2VfZnJlZShXZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLCBpbmZvKTsKK30KKworLyoqCisgKiB3
ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24KKyAqIEBp
bmZvOiBhICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0aXlJbmZvcm1hdGlvbgorICoKKyAqIEdl
dCB0aGUgcmVhc29uIG9mIHRoZSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdGl5SW5mb3JtYXRp
b24uCisgKgorICogUmV0dXJuczogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24K
KyAqCisgKiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
biB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24oV2Vi
S2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbykKK3sKKyAgICByZXR1cm4g
aW5mby0+cmVhc29uOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlf
aW5mb3JtYXRpb25fZ2V0X3BsdWdpbgorICogQGluZm86IGEgI1dlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXRpeUluZm9ybWF0aW9uCisgKgorICogR2V0IHRoZSBwbHVnaW4gb2YgQGluZm8uCisgKgor
ICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFBsdWdpbiBvZiB0aGUgI1dl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXRpeUluZm9ybWF0aW9uLgorICoKKyAqIFNpbmNlOiAyLjEw
CisgKi8KK1dlYktpdFBsdWdpbiogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1h
dGlvbl9nZXRfcGx1Z2luKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIGlu
Zm8pCit7CisgICAgcmV0dXJuIGluZm8tPnBsdWdpbjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3Jt
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzk5YjBlYWI0NjA3NTRjMTg1
MjExYzZhZmFjMTU1YjdkYTJjOGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NP
TVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb25faAorI2RlZmluZSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9y
bWF0aW9uX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW4uaCIKKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9JTkZPUk1B
VElPTiAod2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfdHlwZSgp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlv
biBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uOworCisvKioKKyAqIFdlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uOgorICogQFdFQktJVF9QTFVHSU5fVU5BVkFJTEFC
SUxJVFlfUkVBU09OX01JU1NJTkc6IFRoZSBwbHVnaW4gaXMgbWlzc2luZy4KKyAqIEBXRUJLSVRf
UExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9CTE9DS0VEOiBUaGUgcGx1Z2luIGlzIGJsb2Nr
ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICogQFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJVFlf
UkVBU09OX0NSQVNIRUQ6IFRoZSBwbHVnaW4gY3Jhc2hlZC4KKyAqIEVudW0gdmFsdWVzIHJlcHJl
c2VudGluZyByZWFzb25zIGZvciBwbHVnaW4gdW5hdmFpbGFiaWxpdHkuCisgKgorICogU2luY2U6
IDIuMTAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklM
SVRZX1JFQVNPTl9NSVNTSU5HLAorICAgIFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJVFlfUkVB
U09OX0JMT0NLRUQsCisgICAgV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fQ1JB
U0hFRAorfSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbjsKKworV0VCS0lUX0FQSSBH
VHlwZQord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfdHlwZSAg
ICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5m
b3JtYXRpb24gKgord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9jb3B5
ICAgICAgICAgICAgKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKmluZm8p
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3Jt
YXRpb25fZnJlZSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0
aW9uICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
bgord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcmVhc29uICAg
ICAgKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKmluZm8pOworCitXRUJL
SVRfQVBJIFdlYktpdFBsdWdpbiAqCit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9y
bWF0aW9uX2dldF9wbHVnaW4gICAgICAoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbiAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZv
cm1hdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJi
NDI5NWYyM2JjNGQyODM5NWI1OTlkMjAzM2IxMzI4ZDY1MTNmOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb25Qcml2YXRlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5
SW5mb3JtYXRpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvblByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbi5oIgorCitXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9u
KiB3ZWJraXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uQ3JlYXRlKFdlYktpdFBsdWdp
biAqcGx1Z2luLCBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiByZWFzb24pOworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJ
Q2xpZW50LmNwcAppbmRleCBlZDM4NGNiZGViMjgxMDE1MDRkMGE5MTkyZTllMjE3ODY4MWE1YzMy
Li5jNTYzNmFlZTYyNTg1MjExMjYzYWNiZDUyZDdjZWZkZDY4NWNhY2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0y
MSwxMCArMjEsMTQgQEAKICNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgogCiAjaW5jbHVkZSAi
QVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgorI2luY2x1ZGUg
IlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIldlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCkBAIC0zMiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKQEAgLTE5MSw2ICsxOTYsMzggQEAgcHJp
dmF0ZToKICAgICAgICAgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChtX3dlYlZp
ZXcpOwogICAgIH0KIAorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIHZpcnR1
YWwgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHBhZ2UsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gd2tyZWFzb24sIEFQSTo6RGlj
dGlvbmFyeSogcGx1Z2luSW5mb0RpY3Rpb25hcnkpIG92ZXJyaWRlCisgICAgeworICAgICAgICBX
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiByZWFzb247CisgICAgICAgIFdlYktpdFBs
dWdpbiogcGx1Z2luOworCisgICAgICAgIHN3aXRjaCAod2tyZWFzb24pIHsKKyAgICAgICAgY2Fz
ZSBrV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvblBsdWdpbk1pc3Npbmc6CisgICAgICAgICAg
ICByZWFzb24gPSBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9NSVNTSU5HOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1dLUGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb25QbHVnaW5DcmFzaGVkOgorICAgICAgICAgICAgcmVhc29uID0gV0VCS0lUX1BMVUdJTl9V
TkFWQUlMQUJJTElUWV9SRUFTT05fQ1JBU0hFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIGtXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uSW5zZWN1cmVQbHVnaW5WZXJzaW9u
OgorICAgICAgICAgICAgLyogV2hlbiB3ZSBibG9jayBhIHBsdWdpbiwgdGhlIHJlYXNvbiB3ZSBw
cm92aWRlIGlzICJJbnNlY3VyZVBsdWdpblZlcnNpb24iLiAqLworICAgICAgICAgICAgcmVhc29u
ID0gV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fQkxPQ0tFRDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlYXNvbiAhPSBXRUJLSVRfUExV
R0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9NSVNTSU5HKSB7CisgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGggPSBwbHVnaW5JbmZvRGljdGlvbmFyeS0+Z2V0PEFQSTo6U3RyaW5n
PihwbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKSktPnN0cmluZygpOworICAgICAgICAgICAgUGx1
Z2luTW9kdWxlSW5mbyBwbHVnaW5Nb2R1bGVJbmZvID0gcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkucGx1Z2luSW5mb1N0b3JlKCkuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgp
OworICAgICAgICAgICAgcGx1Z2luID0gd2Via2l0UGx1Z2luQ3JlYXRlKHBsdWdpbk1vZHVsZUlu
Zm8pOworICAgICAgICB9CisKKyAgICAgICAgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZv
cm1hdGlvbiogdW5hdmFpbGFiaWxpdHlJbmZvID0gd2Via2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvbkNyZWF0ZShwbHVnaW4sIHJlYXNvbik7CisgICAgICAgIHdlYktpdFdlYlZpZXdF
bWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQobV93ZWJWaWV3LCB1bmF2YWlsYWJpbGl0eUlu
Zm8pOworCisgICAgICAgIHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25f
ZnJlZSh1bmF2YWlsYWJpbGl0eUluZm8pOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKKwogICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
aW5kZXggOWQ0MWZhOTdhM2QxNmUyYjVjNzUzOTE3YjIxZGNlOGY1NWExMzk1Ny4uZjVhNjAyYmYy
MTA1NDVjOTBiZjU3ZDc0YmE5YmJjNDQwMGNjNDQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTEzNCw2ICsxMzQsMTAg
QEAgZW51bSB7CiAKICAgICBSVU5fQ09MT1JfQ0hPT1NFUiwKIAorICAgIExPQURfUExVR0lOLAor
ICAgIFBMVUdJTl9CTE9DS0VELAorICAgIFVOQVZBSUxBQkxFX1BMVUdJTl9BQ1RJVkFURUQsCisK
ICAgICBMQVNUX1NJR05BTAogfTsKIApAQCAtNjI2LDYgKzYzMCwxMSBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0V2ViVmlld1Nob3dOb3RpZmljYXRpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdE5v
dGlmaWNhdGlvbgogI2VuZGlmCiB9CiAKK3N0YXRpYyBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5IHdl
YmtpdFdlYlZpZXdMb2FkUGx1Z2luKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQbHVnaW5Mb2FkUmVx
dWVzdCopCit7CisgICAgcmV0dXJuIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsKK30KKwog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsK
ICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Y29uc3Ry
dWN0ZWQob2JqZWN0KTsKQEAgLTc3MCw2ICs3NzksMTQgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dFdlYlZpZXdBY2N1bXVsYXRvck9iamVjdEhhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50Kiwg
R1YKICAgICByZXR1cm4gIW9iamVjdDsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdBY2N1bXVsYXRvclBsdWdpbkxvYWRQb2xpY3lIYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGlu
dCosIEdWYWx1ZSogcmV0dXJuVmFsdWUsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3Bv
aW50ZXIpCit7CisgICAgaW50IHBvbGljeSA9IGdfdmFsdWVfZ2V0X2ludChoYW5kbGVyUmV0dXJu
KTsKKyAgICBnX3ZhbHVlX3NldF9pbnQocmV0dXJuVmFsdWUsIHBvbGljeSk7CisKKyAgICByZXR1
cm4gcG9saWN5ID09IFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsKK30KKwogc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3
Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
Uyh3ZWJWaWV3Q2xhc3MpOwpAQCAtNzg3LDYgKzgwNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAg
IHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hv
b3NlcjsKICAgICB3ZWJWaWV3Q2xhc3MtPmF1dGhlbnRpY2F0ZSA9IHdlYmtpdFdlYlZpZXdBdXRo
ZW50aWNhdGU7CiAgICAgd2ViVmlld0NsYXNzLT5zaG93X25vdGlmaWNhdGlvbiA9IHdlYmtpdFdl
YlZpZXdTaG93Tm90aWZpY2F0aW9uOworICAgIHdlYlZpZXdDbGFzcy0+bG9hZF9wbHVnaW4gPSB3
ZWJraXRXZWJWaWV3TG9hZFBsdWdpbjsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6
d2ViLWNvbnRleHQ6CkBAIC0xNzUwLDYgKzE3NjgsNzcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAg
ICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCiAgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMSwKICAgICAgICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVR
VUVTVCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLXBsdWdpbjoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldworICAgICAqIEByZXF1ZXN0OiBhICNX
ZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1p
dHRlZCB3aGVuIGEgcGx1Z2luIGlzIGFib3V0IHRvIGJlIGxvYWRlZCBpbiBhIHBhZ2UuIFRoZQor
ICAgICAqIEByZXF1ZXN0IGluc3RhY2UgaGFzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwbHVnaW4g
YW5kIGFsbG93cyB0byBzZXQgYSBkZXNjcmlwdGlvbgorICAgICAqIGFib3V0IHdoeSB0aGUgcGx1
Z2luIGlzIGdvaW5nIHRvIGJlIGJsb2NrZWQuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBo
YW5kbGVyIHdpbGwgcmV0dXJuIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWS4KKyAgICAgKgor
ICAgICAqIFRoZSBldmVudCB3aWxsIGJlIHByb3BhZ2F0ZWQgdW50aWwgYSBoYW5kbGVyIGJsb2Nr
cyBhIHBsdWdpbiBsb2FkLgorICAgICAqCisgICAgICogUmV0dXJuczogQSAjV2ViS2l0UGx1Z2lu
TG9hZFBvbGljeSB2YWx1ZSB0aGF0IGluZGljYXRlcyB0aGUgbG9hZCBwb2xpY3kgdGhhdCBzaG91
bGQKKyAgICAgKiAgIGJlIHVzZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4xMAorICAgICAq
LworICAgIHNpZ25hbHNbTE9BRF9QTFVHSU5dID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJsb2Fk
LXBsdWdpbiIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3
Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAg
ICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX3Bs
dWdpbiksCisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QWNjdW11bGF0b3JQbHVn
aW5Mb2FkUG9saWN5SGFuZGxlZCwgbnVsbHB0ciAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAg
ICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfSU5UX19CT1hFRCwKKyAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9JTlQsIDEsCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9QTFVHSU5fTE9BRF9SRVFVRVNUKTsKKworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6cGx1Z2luLWJsb2NrZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcK
KyAgICAgKiBAcGx1Z2luX2Jsb2NrZWRfaW5mbzogYSAjV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBwbHVn
aW4gaXMgYmxvY2tlZC4gVGhlIEBwbHVnaW5fYmxvY2tlZF9pbmZvIGluc3RhbmNlIGhhcworICAg
ICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwbHVnaW4gYW5kIGFib3V0IGlmIGl0IGlzIGJlZW4g
c2hvd24gaW4gdGhlIHBhZ2UuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4xMAorICAgICAqLwor
ICAgIHNpZ25hbHNbUExVR0lOX0JMT0NLRURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJwbHVn
aW4tYmxvY2tlZCIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJW
aWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAg
ICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBwbHVn
aW5fYmxvY2tlZCksCisgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyIC8qIGFj
Y3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNo
YWxfVk9JRF9fQk9YRUQsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1BMVUdJTl9CTE9DS0VEX0lORk9STUFUSU9O
KTsKKworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6dW5hdmFpbGFibGUtcGx1Z2lu
LWFjdGl2YXRlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldworICAgICAq
IEBpbmZvOiBhICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAorICAgICAqCisgICAgICogVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGZvcmNlIHRoZSBsb2FkIG9m
IGEgcGx1Z2luIHRoYXQgaGFzCisgICAgICogYmVlbiBibG9ja2VkIGNsaWNraW5nIHRoZSB1bmF2
YWlsYWJsZSBidXR0b24sIGZvciBleGFtcGxlLiBUaGUgQGluZm8gb2JqZWN0CisgICAgICogY29u
dGFpbnMgaW5mbyBhYm91dCB0aGUgcGx1Z2luIGFuZCB0aGUgdW5hdmFpbGFiaWxpdHkgcmVhc29u
LgorICAgICAqCisgICAgICogU2luY2U6IDIuMTAKKyAgICAgKi8KKyAgICBzaWduYWxzW1VOQVZB
SUxBQkxFX1BMVUdJTl9BQ1RJVkFURURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJ1bmF2YWls
YWJsZS1wbHVnaW4tYWN0aXZhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5f
TEFTVCwKKyAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3
Q2xhc3MsIHVuYXZhaWxhYmxlX3BsdWdpbl9hY3RpdmF0ZWQpLAorICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwgbnVsbHB0ciAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAgICAgICAg
ICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX0JPWEVELAorICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9Q
TFVHSU5fVU5BVkFJTEFCSUxJVFlfSU5GT1JNQVRJT04pOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCkBAIC0yMTM0LDYgKzIyMjMsMjMgQEAgYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFJ1bkNvbG9y
Q2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXIKICAgICBy
ZXR1cm4gaGFuZGxlZDsKIH0KIAorV2ViS2l0UGx1Z2luTG9hZFBvbGljeSB3ZWJraXRXZWJWaWV3
TG9hZFBsdWdpblJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0UGx1Z2luTG9h
ZFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0UGx1Z2luTG9hZFBvbGljeSBwb2xpY3k7
CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfUExVR0lOXSwgMCwgcmVx
dWVzdCwgJnBvbGljeSk7CisgICAgcmV0dXJuIHBvbGljeTsKK30KKwordm9pZCB3ZWJraXRXZWJW
aWV3RW1pdFBsdWdpbkJsb2NrZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywg
c2lnbmFsc1tQTFVHSU5fQkxPQ0tFRF0sIDAsIGluZm8pOworfQorCit2b2lkIHdlYktpdFdlYlZp
ZXdFbWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywg
V2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbykKK3sKKyAgICBnX3Np
Z25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbVU5BVkFJTEFCTEVfUExVR0lOX0FDVElWQVRFRF0s
IDAsIGluZm8pOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDBj
ZmMyNDcwODYwY2IyNDU0NzcxY2ViYzcyYzY2YzhiZTM2YzYyMWEuLjI4MTlkZmVkYmNmOWEyZDAy
N2FlZDdhZDk2NDhhODYwMDJkNmNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTQyLDYgKzQyLDkgQEAKICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dE5vdGlmaWNhdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGVybWlzc2lvblJlcXVl
c3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFBvbGljeURlY2lzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRTY3JpcHREaWFsb2cuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNldHRpbmdzLmg+
CkBAIC0xODMsNiArMTg2LDE5IEBAIHR5cGVkZWYgZW51bSB7CiAgIFdFQktJVF9TTkFQU0hPVF9S
RUdJT05fRlVMTF9ET0NVTUVOVCwKIH0gV2ViS2l0U25hcHNob3RSZWdpb247CiAKKworLyoqCisg
KiBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5OgorICogQFdFQktJVF9QTFVHSU5fTE9BRF9CTE9DSzog
VGhlIHBsdWdpbiBsb2FkIHdpbGwgYmUgYmxvY2tlZC4KKyAqIEBXRUJLSVRfUExVR0lOX0xPQURf
Tk9STUFMTFk6IFRoZSBwbHVnaW4gd2lsbCBsb2FkIG5vcm1hbGx5LgorICoKKyAqIEVudW0gdmFs
dWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGx1Z2luIGxvYWQgcG9saWN5LgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9QTFVHSU5fTE9BRF9CTE9DSywKKyAgICBXRUJLSVRfUExVR0lO
X0xPQURfTk9STUFMTFkKK30gV2ViS2l0UGx1Z2luTG9hZFBvbGljeTsKKwogc3RydWN0IF9XZWJL
aXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTE5Myw2MCAr
MjA5LDY2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7CiAKLSAgICB2b2lkICAg
ICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQpOwotICAg
IGdib29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAg
KmVycm9yKTsKLQotICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5hdmlnYXRpb25BY3Rpb24g
ICAgICAqbmF2aWdhdGlvbl9hY3Rpb24pOwotICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9fc2hv
dykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7
Ci0gICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIGNsb3Nl
KSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2NyaXB0RGlhbG9nICAgICAg
ICAgICpkaWFsb2cpICA7Ci0KLSAgICBnYm9vbGVhbiAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNp
c2lvbiAgICAgICAgKmRlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAgICB0eXBlKTsKLSAgICBn
Ym9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAgICAgKnBlcm1pc3Npb25f
cmVxdWVzdCk7Ci0gICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJnZXRfY2hhbmdlZCkgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAg
ICAgICpoaXRfdGVzdF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7Ci0g
ICAgZ2Jvb2xlYW4gICAoKiBwcmludCkgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24gICAgICAgICpwcmludF9v
cGVyYXRpb24pOwotICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlJlc291cmNlICAgICAg
ICAgICAqcmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVlc3QpOwotICAgIGdib29s
ZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBsZWF2ZV9mdWxsc2NyZWVu
KSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAg
ICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QgICAgKnJlcXVlc3Qp
OwotICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29u
dGV4dF9tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAg
ICAqaGl0X3Rlc3RfcmVzdWx0KTsKLSAgICB2b2lkICAgICAgICgqIGNvbnRleHRfbWVudV9kaXNt
aXNzZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAg
IHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7
Ci0gICAgdm9pZCAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQgICBldmVu
dCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVkKSAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLQotICAgIGdib29sZWFuICAgKCog
YXV0aGVudGljYXRlKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAqcmVxdWVzdCk7Ci0gICAgZ2Jvb2xlYW4g
ICAoKiBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0
ZSAgICAgICAgICAgICAqY2VydGlmaWNhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAgICAgICAgIGVycm9ycyk7
Ci0gICAgZ2Jvb2xlYW4gICAoKiBzaG93X25vdGlmaWNhdGlvbikgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Tm90aWZpY2F0aW9uICAgICAgICAgICpub3Rp
ZmljYXRpb24pOwotICAgIGdib29sZWFuICAgKCogcnVuX2NvbG9yX2Nob29zZXIpICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiBsb2FkX2NoYW5n
ZWQpICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZF9ldmVudCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBsb2FkX2ZhaWxlZCkg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZF9ldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICpmYWls
aW5nX3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnJv
cik7CisKKyAgICBHdGtXaWRnZXQgKiAgICAgICAgICAgICgqIGNyZWF0ZSkgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uICAgICAgICAgICAgICAgICpuYXZpZ2F0aW9u
X2FjdGlvbik7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiByZWFkeV90b19zaG93KSAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92
aWV3KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICgqIGNsb3NlKSAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmll
dyk7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAgICAgICAgICAgICAgICpkaWFsb2cpICA7
CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICAgICAgICAgICAgICpkZWNpc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAgICAgICAgICAgICB0eXBlKTsKKyAgICBnYm9v
bGVhbiAgICAgICAgICAgICAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
ZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgICAgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgKCogbW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAgICAgICAgICAgKmhpdF90ZXN0X3Jlc3VsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBndWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOworICAg
IGdib29sZWFuICAgICAgICAgICAgICAgKCogcHJpbnQpICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFByaW50T3BlcmF0aW9uICAgICAgICAgICAgICAgICAgKnByaW50X29wZXJhdGlvbik7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiByZXNvdXJjZV9sb2FkX3N0YXJ0ZWQpICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAqcmVzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0VVJJUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xl
YW4gICAgICAgICAgICAgICAoKiBlbnRlcl9mdWxsc2NyZWVuKSAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFu
ICAgICAgICAgICAgICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAg
ICAgICAgICAgICAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QgICAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICAgICAg
ICAgICAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAg
ICAgICAgICAgICAgICAgICAgICpjb250ZXh0X21lbnUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAg
ICAgICAgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICgqIGNvbnRleHRfbWVudV9kaXNtaXNzZWQpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAoKiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0ICAgICAgICAgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiBp
bnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQgICAg
ICAgICAgICAgZXZlbnQpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCogd2ViX3Byb2Nl
c3NfY3Jhc2hlZCkgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCogYXV0aGVudGlj
YXRlKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAg
ICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAgICAgICAgICAg
KnJlcXVlc3QpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCogbG9hZF9mYWlsZWRfd2l0
aF90bHNfZXJyb3JzKSAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZhaWxp
bmdfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZSAgICAgICAgICAgICAgICAgICAgICAgKmNlcnRp
ZmljYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzICAgICAgICAgICAgICAgICAgIGVycm9y
cyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBzaG93X25vdGlmaWNhdGlvbikgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Tm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAqbm90aWZpY2F0aW9u
KTsKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHJ1bl9jb2xvcl9jaG9vc2VyKSAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAg
ICBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5ICgqIGxvYWRfcGx1Z2luKSAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAgICAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICgqIHBsdWdpbl9ibG9ja2VkKSAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
bHVnaW5CbG9ja2VkSW5mb3JtYXRpb24gICAgICAgICppbmZvKTsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICgqIHVuYXZhaWxhYmxlX3BsdWdpbl9hY3RpdmF0ZWQpIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eUluZm9ybWF0aW9uICppbmZvKTsKIAogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQ
cml2YXRlLmgKaW5kZXggMjZlZmJkNTFmY2ExMjRhZTI5ZmZhOWU2NjYxYmU0MTJkMDVhZmFhNi4u
YjlkZWQxYTVjY2QxOGUyZjg0MzQ4MTc3ZjU5NjI3ZjE2NWM3NmY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CkBAIC02MCw2ICs2MCw5IEBAIHZvaWQgd2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OkF1dGhlbnRpCiB2b2lkIHdlYmtpdFdl
YlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0SW5zZWN1
cmVDb250ZW50RXZlbnQpOwogYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFNob3dOb3RpZmljYXRpb24o
V2ViS2l0V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlvbiopOwogYm9vbCB3ZWJraXRXZWJWaWV3
RW1pdFJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCopOworV2ViS2l0UGx1Z2luTG9hZFBvbGljeSB3ZWJraXRXZWJWaWV3TG9hZFBsdWdpblJl
cXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJl
cXVlc3QpOwordm9pZCB3ZWJraXRXZWJWaWV3RW1pdFBsdWdpbkJsb2NrZWQoV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvKTsKK3ZvaWQg
d2ViS2l0V2ViVmlld0VtaXRVbmF2YWlsYWJsZVBsdWdpbkFjdGl2YXRlZChXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3LCBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uICppbmZvKTsK
IHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NDcmFzaGVkKFdlYktpdFdlYlZpZXcqKTsKIHZv
aWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggYmNkNWY0ZGIyMGIxNGEwOTA2
YmNhNDYyZDljNDc1NWZkODk4YTFmNi4uNDhlZWVlYzEzMzljMTU0MWU5ZTAzZGE5YjIzMmM0YWI5
ZDY5ZmMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTk2OSw2ICs5
NjksNTYgQEAgV2ViS2l0UGx1Z2luUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxG
SUxFPldlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbjwvRklMRT4KK1dlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbgorV2ViS2l0UGx1Z2luTG9hZFBvbGljeQord2Via2l0X3BsdWdpbl9i
bG9ja2VkX2luZm9ybWF0aW9uX2NvcHkKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlv
bl9mcmVlCit3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbgord2Vi
a2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUKKworPFNVQlNFQ1RJT04g
U3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9QTFVHSU5fQkxPQ0tFRF9JTkZPUk1BVElPTgorCis8U1VC
U0VDVElPTiBQcml2YXRlPgord2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF90
eXBlCisKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRQbHVnaW5Mb2FkUmVx
dWVzdDwvRklMRT4KK1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0Cit3ZWJraXRfcGx1Z2luX2xvYWRf
cmVxdWVzdF9jb3B5Cit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVlCit3ZWJraXRfcGx1
Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luCit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9z
ZXRfZGVzY3JpcHRpb24KKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9QTFVH
SU5fTE9BRF9SRVFVRVNUCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfcGx1Z2luX2xv
YWRfcmVxdWVzdF9nZXRfdHlwZQorCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbjwvRklMRT4KK1dlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24KK1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
Cit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2NvcHkKK3dlYmtpdF9w
bHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZnJlZQord2Via2l0X3BsdWdpbl91bmF2
YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcmVhc29uCit3ZWJraXRfcGx1Z2luX3VuYXZhaWxh
YmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVnaW4KKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
RUJLSVRfVFlQRV9QTFVHSU5fVU5BVkFJTEFCSUxJVFlfSU5GT1JNQVRJT04KKworPFNVQlNFQ1RJ
T04gUHJpdmF0ZT4KK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0
X3R5cGUKKworPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdFdlYkluc3BlY3Rv
cjwvRklMRT4KIFdlYktpdFdlYkluc3BlY3Rvcgogd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dl
Yl92aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLnR5cGVzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcwppbmRleCA4MTlhZjU4Y2Q2YTQ0YTg5MzkzYTE0NDI1
ZGViNGFkYzE0NDY3OThkLi4zZTQ0MzZhMzc5Y2RjNmUwM2I1YjkxM2Q1NTY3YjBkYTUwMTYyM2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAgLTE2LDYgKzE2LDkgQEAgd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF90eXBlCiB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF90eXBlCiB3ZWJraXRf
Y29va2llX21hbmFnZXJfZ2V0X3R5cGUKIHdlYmtpdF9wbHVnaW5fZ2V0X3R5cGUKK3dlYmtpdF9w
bHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfdHlwZQord2Via2l0X3BsdWdpbl9sb2FkX3Jl
cXVlc3RfZ2V0X3R5cGUKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25f
Z2V0X3R5cGUKIHdlYmtpdF9taW1lX2luZm9fZ2V0X3R5cGUKIHdlYmtpdF93ZWJfaW5zcGVjdG9y
X2dldF90eXBlCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF90eXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbAppbmRleCAwNDYzNDQ3ZWIxN2Y1MWJlODk3OGZjNjE1N2I1MzNkZGIxNmY4NWJjLi4w
NGY5OTYyMmI3ODNhODQxMzlkMTE3NWEwNWY4Mjg1NDYzMmY1MzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwKQEAgLTM4LDYgKzM4LDkgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
RmluZENvbnRyb2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENv
b2tpZU1hbmFnZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdp
bi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGx1Z2luQmxvY2tlZElu
Zm9ybWF0aW9uLnhtbCIvCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0LnhtbCIvCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24ueG1sIi8KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0V2ViSW5zcGVjdG9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRWZXJzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oCmluZGV4IGQ5YmM5MjBlZDcyMzkyNTQ4NzBmZTc4MDAzNGY5ZDJmMmJiYjJjNWMuLjEwYWU0
M2FiMTdlNDQyMDJmMWYzYjA3YzM2ODY3YzRjM2YzNzNhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTU1LDYgKzU1LDkgQEAKICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0UGx1Z2luLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb24uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0Lmg+Cisj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQcmludE9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0U2NyaXB0RGlhbG9nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAppbmRleCBlMWNmZTA3MjE2ZDM5YjBlOThkNjA0
NzcxYmUwNjI5NjVkMjY4N2YyLi5jZjdlNTgxODExMGU5ZDI4YWUyYzM4NGFmMTYyYjYxNGM1NDgz
Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQy
bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJtYXJzaGFsLmxpc3QKQEAgLTEzLDQgKzEzLDUgQEAgVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lE
Ok9CSkVDVCxQT0lOVEVSCiBWT0lEOlNUUklORyxTVFJJTkcKIFZPSUQ6VUlOVDY0CitJTlQ6Qk9Y
RUQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0NGM0
MGM1NTk5ZjNiMjBiMjEzNjE2MDMyYmY5NzA0MjkwMDJmOTE1Li45OTZiMjdlNmI2NDQ5ZmYzNGM5
Y2MzN2Y0YmJmZjM1OGFjNzk1ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTc3MSw3ICsxNzcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQ
bHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnMK
IAogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBQbHVnaW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9s
aWN5Rm9yUGx1Z2luKHBsdWdpbik7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IHBs
dWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdp
biwgZnJhbWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdlVVJMU3RyaW5nLCBTdHJpbmcoKSwgU3Ry
aW5nKCkpOwogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIHBsdWdpbkxvYWRQ
b2xpY3kgPSBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQoKnRo
aXMsIHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kp
LCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7CkBA
IC01MDg0LDcgKzUwODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBs
dWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogewogICAgIFJlZlB0
cjxBUEk6OkRpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uOwogCi0jaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2lmIChQTEFURk9STShDT0NPQSkg
fHwgUExBVEZPUk0oR1RLKSkgICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFN0
cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2lu
ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4o
bmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1Z2luSW5m
b3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFt
ZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSwg
cmVwbGFjZW1lbnRPYnNjdXJlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOTc4NmRiNzA0OTk0MDdkZmRkMjk2NjdlMzEyYTM3NWIxZWI5MmYy
NC4uNmQwMjllY2U3NDcxMGI5OGI5MjUwZmNiODViNjliMjhiMjA5ZWM2NiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE1LTAzLTA2ICBNYXJjb3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21h
aWwuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCB0ZXN0cyBmb3IgbmV3IGJsb2NrL3Vu
YmxvY2sgcGx1Z2lucyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQzNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHA6CisgICAgICAgICh0ZXN0QmxvY2tpbmdQbHVnaW5zKTogQWRkIHRlc3QuCisgICAg
ICAgIChiZWZvcmVBbGwpOgorCiAyMDE1LTAzLTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ3Jhc2ggbG9ncyBjYW4ndCBiZSBmb3VuZCBvbiBp
b3Mtc2ltdWxhdG9yIGJlY2F1c2UgV2ViS2l0VGVzdFJ1bm5lciByZXR1cm5zIHRoZSB3cm9uZyBw
cm9jZXNzIG5hbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGY2ZmJjMWE5ZDYxMTBjYjMwNmYy
ZDY4NjUwZjQwYWM5NzMwZWY3NWEuLmQxNDkxMDEwM2JjZTU0MWQ4OGIwODBhNjViZDU3MmYxNTQz
Njg5ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtODAzLDYgKzgwMywxNjMgQEAgc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIH0KIAorY2xhc3MgUGx1Z2luc1dlYlZpZXdUZXN0
OiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorCisgICAgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShQbHVnaW5zV2ViVmlld1Rlc3QpOworCisgICAgZW51bSBQbHVnaW5FdmVudFR5cGUgewor
ICAgICAgICBOb25lLAorICAgICAgICBMb2FkLAorICAgICAgICBCbG9ja2VkLAorICAgICAgICBV
bmF2YWlsYWJsZUFjdGl2YXRlZAorICAgIH07CisKKyAgICBzdGF0aWMgV2ViS2l0UGx1Z2luTG9h
ZFBvbGljeSBsb2FkUGx1Z2luQ2FsbGJhY2tCbG9jayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCwgUGx1Z2luc1dlYlZpZXdUZXN0KiB0ZXN0
KQorICAgIHsKKyAgICAgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW4gPSB3ZWJraXRfcGx1Z2luX2xv
YWRfcmVxdWVzdF9nZXRfcGx1Z2luKHJlcXVlc3QpOworICAgICAgICBpZiAoIGdfc3RyY21wMCh3
ZWJraXRfcGx1Z2luX2dldF9uYW1lKHBsdWdpbiksICJXZWJLaXQgVGVzdCBQbHVnSW4iKSkKKyAg
ICAgICAgICAgIHJldHVybiBXRUJLSVRfUExVR0lOX0xPQURfTk9STUFMTFk7CisKKyAgICAgICAg
dGVzdC0+bV9ldmVudCA9IExvYWQ7CisgICAgICAgIHRlc3QtPm1fcGx1Z2luID0gcGx1Z2luOwor
ICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICByZXR1
cm4gV0VCS0lUX1BMVUdJTl9MT0FEX0JMT0NLOworICAgIH0KKworICAgIHN0YXRpYyBXZWJLaXRQ
bHVnaW5Mb2FkUG9saWN5IGxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0LCBQbHVnaW5zV2ViVmll
d1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtp
dF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4ocmVxdWVzdCk7CisgICAgICAgIGlmIChn
X3N0cmNtcDAod2Via2l0X3BsdWdpbl9nZXRfbmFtZShwbHVnaW4pLCAiV2ViS2l0IFRlc3QgUGx1
Z0luIikpCisgICAgICAgICAgICByZXR1cm4gV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOwor
CisgICAgICAgIHRlc3QtPm1fZXZlbnQgPSBMb2FkOworICAgICAgICB0ZXN0LT5tX3BsdWdpbiA9
IHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4ocmVxdWVzdCk7CisgICAgICAg
IGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAgIHJldHVybiBXRUJL
SVRfUExVR0lOX0xPQURfTk9STUFMTFk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcGx1Z2lu
QmxvY2tlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvbiogaW5mbywgUGx1Z2luc1dlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAg
ICAgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW4gPSB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3Jt
YXRpb25fZ2V0X3BsdWdpbihpbmZvKTsKKyAgICAgICAgaWYgKGdfc3RyY21wMCh3ZWJraXRfcGx1
Z2luX2dldF9uYW1lKHBsdWdpbiksICJXZWJLaXQgVGVzdCBQbHVnSW4iKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0ZXN0LT5tX2V2ZW50ID0gQmxvY2tlZDsKKyAgICAgICAgdGVz
dC0+bV9wbHVnaW4gPSB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdp
bihpbmZvKTsKKyAgICAgICAgdGVzdC0+bV9wbHVnaW5Jc1Zpc2libGUgPSB3ZWJraXRfcGx1Z2lu
X2Jsb2NrZWRfaW5mb3JtYXRpb25faXNfdmlzaWJsZShpbmZvKTsKKyAgICAgICAgZ19tYWluX2xv
b3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1bmF2
YWlsYWJsZVBsdWdpbkFjdGl2YXRlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIGluZm8sIFBsdWdpbnNXZWJWaWV3
VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2luID0gd2Via2l0
X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKGluZm8pOworICAg
ICAgICBpZiAoZ19zdHJjbXAwKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUocGx1Z2luKSwgIldlYktp
dCBUZXN0IFBsdWdJbiIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRlc3QtPm1f
ZXZlbnQgPSBVbmF2YWlsYWJsZUFjdGl2YXRlZDsKKyAgICAgICAgdGVzdC0+bV9wbHVnaW4gPSB3
ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVnaW4oaW5mbyk7
CisgICAgICAgIHRlc3QtPm1fdW5hdmFpbGFiaWxpdHlSZWFzb24gPSB3ZWJraXRfcGx1Z2luX3Vu
YXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24oaW5mbyk7CisgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
cGx1Z2luTG9hZGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U2NyaXB0
RGlhbG9nICpkaWFsb2csIFBsdWdpbnNXZWJWaWV3VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihwbHVnaW5Mb2FkZWRDYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX21h
aW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICB0ZXN0LT53YWl0KDEpOyAv
L1JhY2UgQ29uZGl0aW9uCisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIGRvQ2xpY2tJZGxl
Q2FsbGJhY2soUGx1Z2luc1dlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+
Y2xpY2tNb3VzZUJ1dHRvbig1LCA1LCAxKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0K
KworICAgIFBsdWdpbnNXZWJWaWV3VGVzdCgpCisgICAgICAgIDogbV9ldmVudChOb25lKQorICAg
ICAgICAsIG1fcGx1Z2luKG51bGxwdHIpCisgICAgICAgICwgbV9wbHVnaW5Jc1Zpc2libGUoZmFs
c2UpCisgICAgeworICAgICAgICBzaG93SW5XaW5kb3coR1RLX1dJTkRPV19UT1BMRVZFTCk7Cisg
ICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9wbHVnaW5zX2RpcmVjdG9y
eSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSwgV0VCS0lUX1RFU1RfUExV
R0lOX0RJUik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAicGx1Z2luLWJs
b2NrZWQiLCBHX0NBTExCQUNLKHBsdWdpbkJsb2NrZWRDYWxsYmFjayksIHRoaXMpOworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInVuYXZhaWxhYmxlLXBsdWdpbi1hY3RpdmF0
ZWQiLCBHX0NBTExCQUNLKHVuYXZhaWxhYmxlUGx1Z2luQWN0aXZhdGVkQ2FsbGJhY2spLCB0aGlz
KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRXZWIoKQorICAgIHsKKyAgICAgICAgbV9ldmVudCA9
IE5vbmU7CisgICAgICAgIG1fcGx1Z2luID0gbnVsbHB0cjsKKyAgICAgICAgbG9hZEh0bWwoIjxo
dG1sPjxvYmplY3QgaWQ9XCJwbHVnaW5cIiB0eXBlPVwiYXBwbGljYXRpb24veC13ZWJraXQtdGVz
dC1uZXRzY2FwZVwiICIKKyAgICAgICAgICAgICAgICAgInNyYz1cImRhdGE6YXBwbGljYXRpb24v
eC13ZWJraXQtdGVzdC1uZXRzY2FwZSxhbGVydHdoZW5sb2FkZWRcIiB3aWR0aD1cIjEwXCIgIgor
ICAgICAgICAgICAgICAgICAiaGVpZ2h0PVwiMTBcIiBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRl
O3RvcDowO2xlZnQ6MDtcIi8+PC9odG1sPiIsIG51bGxwdHIpOworICAgIH0KKworICAgIHZvaWQg
d2FpdFVudGlsUGx1Z2luTG9hZGVkKCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93ZWJWaWV3LCAic2NyaXB0LWRpYWxvZyIsIEdfQ0FMTEJBQ0socGx1Z2luTG9hZGVkQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0K
KworICAgIHZvaWQgY29udGludWVMb2FkaW5nQW5kV2FpdFVudGlsU2lnbmFsKCkKKyAgICB7Cisg
ICAgICAgIG1fZXZlbnQgPSBOb25lOworICAgICAgICBtX3BsdWdpbiA9IG51bGxwdHI7CisgICAg
ICAgIG1fcGx1Z2luSXNWaXNpYmxlID0gZmFsc2U7CisgICAgICAgIGdfbWFpbl9sb29wX3J1biht
X21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2b2lkIGFjdGl2YXRlUGx1Z2luQW5kV2FpdFVudGls
U2lnbmFsKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOworICAgICAgICBtX3BsdWdp
biA9IG51bGxwdHI7CisgICAgICAgIGdfaWRsZV9hZGQocmVpbnRlcnByZXRfY2FzdDxHU291cmNl
RnVuYz4oZG9DbGlja0lkbGVDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgUGx1Z2luRXZlbnRUeXBlIG1fZXZlbnQ7Cisg
ICAgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gbV91bmF2YWlsYWJpbGl0eVJlYXNv
bjsKKyAgICBXZWJLaXRQbHVnaW4qIG1fcGx1Z2luOworICAgIGdib29sZWFuIG1fcGx1Z2luSXNW
aXNpYmxlOworfTsKKworCitzdGF0aWMgdm9pZCB0ZXN0QmxvY2tpbmdQbHVnaW5zKFBsdWdpbnNX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvL0RlZmF1bHQgYmVoYXZp
b3VyOiBObyBjYWxsYmFjayBjb25uZWN0ZWQuCisgICAgdGVzdC0+bG9hZFdlYigpOworICAgIHRl
c3QtPndhaXRVbnRpbFBsdWdpbkxvYWRlZCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQg
PT0gUGx1Z2luc1dlYlZpZXdUZXN0OjpOb25lKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3BsdWdp
biA9PSBudWxscHRyKTsKKworICAgIC8vQ29ubmVjdCBjYWxsYmFjayB0byBsb2FkIG5vcm1hbGx5
LgorICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAibG9hZC1wbHVnaW4iLCBH
X0NBTExCQUNLKHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwgdGVzdCk7CisgICAg
dGVzdC0+bG9hZFdlYigpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsK
KyAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNXZWJWaWV3VGVzdDo6TG9hZCk7
CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUodGVzdC0+bV9wbHVn
aW4pLCA9PSwgIldlYktpdCBUZXN0IFBsdWdJbiIpOworICAgIHRlc3QtPndhaXRVbnRpbFBsdWdp
bkxvYWRlZCgpOworCisgICAgLy9Db25uZWN0IGNhbGxiYWNrIHRvIGJsb2NrIGxvYWQuCisgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jICh0ZXN0LT5tX3dlYlZpZXcsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwg
dGVzdCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJsb2FkLXBsdWdp
biIsIEdfQ0FMTEJBQ0sodGVzdC0+bG9hZFBsdWdpbkNhbGxiYWNrQmxvY2spLCB0ZXN0KTsKKyAg
ICB0ZXN0LT5sb2FkV2ViKCk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3Ap
OworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gUGx1Z2luc1dlYlZpZXdUZXN0OjpMb2Fk
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFtZSh0ZXN0LT5tX3Bs
dWdpbiksID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7CisKKyAgICBnX21haW5fbG9vcF9ydW4o
dGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBQbHVnaW5z
V2ViVmlld1Rlc3Q6OkJsb2NrZWQpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fcGx1Z2luSXNWaXNp
YmxlKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFtZSh0ZXN0LT5t
X3BsdWdpbiksID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7CisKKyAgICB0ZXN0LT5hY3RpdmF0
ZVBsdWdpbkFuZFdhaXRVbnRpbFNpZ25hbCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQg
PT0gUGx1Z2luc1dlYlZpZXdUZXN0OjpVbmF2YWlsYWJsZUFjdGl2YXRlZCk7CisgICAgZ19hc3Nl
cnQodGVzdC0+bV91bmF2YWlsYWJpbGl0eVJlYXNvbiA9PSBXRUJLSVRfUExVR0lOX1VOQVZBSUxB
QklMSVRZX1JFQVNPTl9CTE9DS0VEKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdp
bl9nZXRfbmFtZSh0ZXN0LT5tX3BsdWdpbiksID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7Cit9
CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBnU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2
ZXIoKTsKQEAgLTgyMiw2ICs5NzksNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTm90aWZpY2F0
aW9uV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJub3RpZmljYXRpb24iLCB0ZXN0
V2ViVmlld05vdGlmaWNhdGlvbik7CiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWlu
Z0F1ZGlvKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImJhY2tncm91
bmQtY29sb3IiLCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcik7CisgICAgUGx1Z2luc1dlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYmxvY2stcGx1Z2lucyIsIHRlc3RCbG9ja2lu
Z1BsdWdpbnMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248058</attachid>
            <date>2015-03-06 03:25:23 -0800</date>
            <delta_ts>2015-04-09 00:38:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134357-20150306122502.patch</filename>
            <type>text/plain</type>
            <size>71391</size>
            <attacher name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDY5MGU1MjE5ZTkwM2U0
Yzk0MmFlYTk1M2YzOTEzNWE2ZDM3YTMyMi4uY2YzMmUxY2E0NWExY2ZmN2MwMGZhZTY3MjYzYzVl
MGRjYzNjM2Y0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTAzLTA2ICBNYXJj
b3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgorCisgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBuZXcgYmxvY2svdW5ibG9jayBwbHVnaW4gQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzU3CisKKyAgICAg
ICAgV2UgY3JlYXRlIHNpZ25hbHMgdGhhdCBhcmUgZmlyZWQgd2hlbiBhIHBsdWdpbiBpcyBnb2lu
ZyB0byBiZSBsb2FkZWQsCisgICAgICAgIHdoZW4gYSBwbHVnaW4gaXMgYmxvY2tlZCBhbmQgd2hl
biB0aGUgdXNlciB0cmllcyB0byBhY3RpdmF0ZSBhIGJsb2NrZWQKKyAgICAgICAgb3IgbWlzc2lu
ZyBwbHVnaW4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRMb2FkZXJDbGllbnQuY3BwOiBJbXBsZW1lbnQgcGx1Z2luTG9hZFBvbGljeSBhbmQgZGlkQmxv
Y2tJbnNlY3VyZVBsdWdpblZlcnNpb24gaGFuZGxlcnMgdG8gZmlyZSB0aGUgY3JlYXRlZCB3ZWJ2
aWV3IHNpZ25hbCB3aGVuIG5lZWRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQbHVnaW4uY3BwOiBDaGFuZ2UgZG9jdW1lbnRhdGlvbi4gSXQgc2FpZCB0aGF0IHdlIHdlcmUg
YWJsZSB0byBibG9jayBhIHBsdWdpbiB1c2luZyB0aGlzIGNsYXNzLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi5jcHA6IEFkZGVkLiBD
cmVhdGUgY2xhc3MgdG8gaG9sZCBpbmZvcm1hdGlvbmEgYWJvdXQgYSBibG9ja2VkIHBsdWdpbi4K
KyAgICAgICAgKF9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb246Ol9XZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24pOgorICAgICAgICAod2Via2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9j
b3B5KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlKToK
KyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKToK
KyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5jcHA6IEFkZGVkLiBDcmVhdGUgY2xhc3MgdG8g
aG9sZCBpbmZvcm1hdGlvbiBhYm91dCBhIHBsdWdpbiBsb2FkIHJlcXVlc3QuCisgICAgICAgIChf
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Q6Ol9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCk6CisgICAg
ICAgICh3ZWJraXRQbHVnaW5Mb2FkUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1
Z2luX2xvYWRfcmVxdWVzdF9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1
ZXN0X2ZyZWUpOgorICAgICAgICAod2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdp
bik6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9zZXRfZGVzY3JpcHRpb24p
OgorICAgICAgICAod2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1
Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5jcHA6IEFkZGVkLiBDcmVhdGUgY2xhc3MgdG8g
aG9sZCBpbmZvcm1hdGlvbiBhYm91dCBhbiB1bmF2YWlsYWJsZSBwbHVnaW4uCisgICAgICAgIChf
V2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbjo6X1dlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXR5SW5mb3JtYXRpb24pOgorICAgICAgICAod2Via2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbkNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmls
aXR5X2luZm9ybWF0aW9uX2NvcHkpOgorICAgICAgICAod2Via2l0X3BsdWdpbl91bmF2YWlsYWJp
bGl0eV9pbmZvcm1hdGlvbl9mcmVlKToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFi
aWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNvbik6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX3Vu
YXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvblByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwOiBJbXBsZW1lbnQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkIGNhbGxiYWNrIHRvIGZpcmUgd2ViIHZpZXcgc2lnbmFsIHdoZW4gbmVlZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOiBJbXBsZW1lbnQgbmV3IHNp
Z25hbHMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZFBsdWdpbik6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QWNjdW11bGF0b3JQbHVnaW5Mb2FkUG9saWN5SGFuZGxlZCk6IEltcGxlbWVudCBu
ZXcgYWNjdW11bGF0b3IgZm9yIGxvYWQtcGx1Z2luIHNpZ25hbC4gVGhlIGhhbmRsZXIgdGhhdCBz
ZXRzIExPQURfQkxPQ0sgYXMgcGx1Z2luIGxvYWQgcG9saWN5IHdpbnMuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZFBsdWdp
blJlcXVlc3QpOgorICAgICAgICAod2Via2l0V2ViVmlld0VtaXRQbHVnaW5CbG9ja2VkKToKKyAg
ICAgICAgKHdlYktpdFdlYlZpZXdFbWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OiBBZGQgbmV3IGNsYXNz
ZXMgdG8gZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLnR5cGVzOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3Q6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZmluZFBsdWdpbik6IEVuYWJsZSBwbHVnaW4gZGVjaWRlIHBvbGljeSBjYWxsYmFj
ayBmb3IgR1RLIHBsYXJmb3JtLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEJs
b2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKTogRW5hYmxlIGJsb2NrIGluc2VjdXJlIHBsdWdpbiBj
YWxsYmFjayBmb3IgR1RLIFBsYXRmb3JtLgorCiAyMDE1LTAzLTAzICBTaGl2YWt1bWFyIEpNICA8
c2hpdmEuam1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIHdhcm5pbmcgaW4gV2Vi
S2l0Mi9TaGFyZWQgbW9kdWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAzN2RkM2Fj
MDU3YzRkZTk4MzA1NGM3ZTc3MTdmZmQ0MmI1ZWVmMDJlLi4yYWY5OGY2M2FjOWFhN2JhYTg5OTU2
YjQwYzJkZWEyNDFjMzExZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgwLDYg
KzE4MCwxNSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW4uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2lu
LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Qcml2YXRlLmgKKyAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgKKyAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlLmgKKyAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmNwcAorICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaAorICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Q
cml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5Q2xpZW50LmgKICAgICBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTM3Myw2ICszODIsOSBAQCBzZXQo
V2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdE5vdGlmaWNhdGlvbi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgKKyAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oCisg
ICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFi
aWxpdHlJbmZvcm1hdGlvbi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UG9saWN5RGVjaXNpb24uaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFByaW50T3BlcmF0aW9uLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDMyMDMwOTA5NjM3ZGUyOThkMDRkZDgxZjViNzdjZjBjYmQzYzRiOWEuLjEwNzI0Yjc3ZGE1YTU1
NDhjOTdkYzYwYTViYjhjODZkZDUwZjY4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjIsMTEgKzIy
LDE4IEBACiAjaW5jbHVkZSAiV2ViS2l0TG9hZGVyQ2xpZW50LmgiCiAKICNpbmNsdWRlICJBUElM
b2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJQ
bHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApAQCAtMTE2LDYgKzEyMyw0OSBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXRXZWJWaWV3
V2ViUHJvY2Vzc0NyYXNoZWQobV93ZWJWaWV3KTsKICAgICB9CiAKKyNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKKworICAgIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwbHVn
aW5Mb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OlBsdWdpbk1v
ZHVsZUxvYWRQb2xpY3ksIEFQSTo6RGljdGlvbmFyeSogcGx1Z2luSW5mb0RpY3Rpb25hcnksIFdU
Rjo6U3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoID0gcGx1Z2luSW5mb0RpY3Rpb25hcnktPmdl
dDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLT5zdHJpbmcoKTsKKyAg
ICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW5Nb2R1bGVJbmZvID0gcGFnZS5wcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5wbHVnaW5JbmZvU3RvcmUoKS5pbmZvRm9yUGx1Z2luV2l0aFBhdGgocGx1
Z2luUGF0aCk7CisgICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2luID0gd2Via2l0UGx1Z2luQ3Jl
YXRlKHBsdWdpbk1vZHVsZUluZm8pOworCisgICAgICAgIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0
KiByZXF1ZXN0ID0gd2Via2l0UGx1Z2luTG9hZFJlcXVlc3RDcmVhdGUocGx1Z2luKTsKKworICAg
ICAgICBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5IGxvYWRQb2xpY3kgPSB3ZWJraXRXZWJWaWV3TG9h
ZFBsdWdpblJlcXVlc3QobV93ZWJWaWV3LCByZXF1ZXN0KTsKKyAgICAgICAgdW5hdmFpbGFiaWxp
dHlEZXNjcmlwdGlvbiA9IHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9kZXNjcmlwdGlv
bihyZXF1ZXN0KTsKKworICAgICAgICB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVlKHJl
cXVlc3QpOworCisgICAgICAgIHN3aXRjaCAobG9hZFBvbGljeSkgeworICAgICAgICBjYXNlIFdF
QktJVF9QTFVHSU5fTE9BRF9CTE9DSzoKKyAgICAgICAgICAgIHJldHVybiBQbHVnaW5Nb2R1bGVC
bG9ja2VkOworICAgICAgICBjYXNlIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWToKKyAgICAg
ICAgICAgIHJldHVybiBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBQ
bHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRp
ZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBB
UEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9EaWN0aW9uYXJ5KSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoID0gcGx1Z2luSW5mb0RpY3Rpb25hcnktPmdl
dDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLT5zdHJpbmcoKTsKKyAg
ICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW5Nb2R1bGVJbmZvID0gcGFnZS5wcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5wbHVnaW5JbmZvU3RvcmUoKS5pbmZvRm9yUGx1Z2luV2l0aFBhdGgocGx1
Z2luUGF0aCk7CisgICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2luID0gd2Via2l0UGx1Z2luQ3Jl
YXRlKHBsdWdpbk1vZHVsZUluZm8pOworCisgICAgICAgIGdib29sZWFuIGlzVmlzaWJsZSA9IHBs
dWdpbkluZm9EaWN0aW9uYXJ5LT5nZXQ8QVBJOjpCb29sZWFuPihwbHVnSW5JbmZvcm1hdGlvblJl
cGxhY2VtZW50T2JzY3VyZWRLZXkoKSktPnZhbHVlKCk7CisKKyAgICAgICAgV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvID0gd2Via2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9u
Q3JlYXRlKHBsdWdpbiwgaXNWaXNpYmxlKTsKKworICAgICAgICB3ZWJraXRXZWJWaWV3RW1pdFBs
dWdpbkJsb2NrZWQobV93ZWJWaWV3LCBpbmZvKTsKKworICAgICAgICB3ZWJraXRfcGx1Z2luX2Js
b2NrZWRfaW5mb3JtYXRpb25fZnJlZShpbmZvKTsKKyAgICB9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKKwogICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBs
dWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4u
Y3BwCmluZGV4IGI2ZGVjMWQzYTllYWUxZGMxZmY4Mjk2MGI5YzUxNGRlYTU1YjhiM2UuLjExNDZk
M2NlYmM5MDNlM2I4MDkzZmVkZmQxOTk4NmMxZjQ2NjY0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcApAQCAtMzMsMTAgKzMzLDkg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAqCiAgKiBUaGlzIG9iamVjdCByZXByZXNlbnRz
IGEgc2luZ2xlIHBsdWdpbiwgZm91bmQgd2hpbGUgc2Nhbm5pbmcgdGhlCiAgKiB2YXJpb3VzIHBs
YXRmb3JtIHBsdWdpbiBkaXJlY3Rvcmllcy4gVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgdG8gZ2V0
Ci0gKiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgcGx1Z2luLCBhbmQgZW5hYmxlL2Rpc2FibGUg
aXQsIGFsbG93aW5nCi0gKiBmaW5lLWdyYWluZWQgY29udHJvbCBvZiBwbHVnaW5zLiBUaGUgbGlz
dCBvZiBhdmFpbGFibGUgcGx1Z2lucyBjYW4KLSAqIGJlIG9idGFpbmVkIGZyb20gdGhlICNXZWJL
aXRXZWJDb250ZXh0LCB3aXRoCi0gKiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMoKS4K
KyAqIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBwbHVnaW4gYWxsb3dpbmcgZmluZS1ncmFpbmVk
IGNvbnRyb2wgb2YKKyAqIHBsdWdpbnMuIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBwbHVnaW5zIGNh
biBiZSBvYnRhaW5lZCBmcm9tIHRoZQorICogI1dlYktpdFdlYkNvbnRleHQsIHdpdGggd2Via2l0
X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKCkuCiAgKgogICovCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9j
a2VkSW5mb3JtYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNDQ3MjcyOTE0YTllZTAzMjhiMmJkZDdh
OTZjYjJhYjllYTUyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uY3BwCkBAIC0wLDAgKzEs
MTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uaCIKKwor
I2luY2x1ZGUgIldlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGUuaCIKKworCisv
KioKKyAqIFNFQ1RJT046IFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbgorICogQFNob3J0
X2Rlc2NyaXB0aW9uOiBJbmZvcm1hdGlvbiBhYm91dCBhIGJsb2NrZWQgcGx1Z2luLgorICogQFRp
dGxlOiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqIEBTZWVfYWxzbzogI1dlYktp
dFdlYlZpZXcKKyAqCisgKiBXaGVuIFdlYktpdCBibG9ja3MgYSBwbHVnaW4gbG9hZCBpdCBhbHNv
IGZpcmVzIHRoZSAjV2ViS2l0V2ViVmlldzpwbHVnaW4tYmxvY2tlZCBzaWduYWwKKyAqIHdpdGgg
YSAjV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uIG9iamVjdC4gVGhpcyBvYmplY3QgYWxs
b3dzIHRoZSBjbGllbnRlIHRvIGdldAorICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJsb2NrZWQg
cGx1Z2luIHN1Y2ggYXMgd2hldGhlciBpdCBpcyB2aXNpYmxlIGluIHRoZSB2aWV3LgorICovCisK
K3N0cnVjdCBfV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uIHsKKyAgICBfV2ViS2l0UGx1
Z2luQmxvY2tlZEluZm9ybWF0aW9uKFdlYktpdFBsdWdpbiogdW5hdmFpbGFibGVQbHVnaW4sIGdi
b29sZWFuIGlzVmlzaWJsZSkKKyAgICAgICAgOiBwbHVnaW4odW5hdmFpbGFibGVQbHVnaW4pCisg
ICAgICAgICwgdmlzaWJsZShpc1Zpc2libGUpCisgICAgeworICAgIH0KKworICAgIF9XZWJLaXRQ
bHVnaW5CbG9ja2VkSW5mb3JtYXRpb24oV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBp
bmZvKQorICAgICAgICA6IHBsdWdpbihpbmZvLT5wbHVnaW4pCisgICAgICAgICwgdmlzaWJsZShp
bmZvLT52aXNpYmxlKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbjsK
KyAgICBnYm9vbGVhbiB2aXNpYmxlOworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRQ
bHVnaW5CbG9ja2VkSW5mb3JtYXRpb24sIHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlv
biwgd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2NvcHksIHdlYmtpdF9wbHVnaW5f
YmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlKQorCitXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b24qIHdlYmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbkNyZWF0ZShXZWJLaXRQbHVnaW4qIHBs
dWdpbiwgZ2Jvb2xlYW4gaXNWaXNpYmxlKQoreworICAgIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbiogaW5mbyA9IGdfc2xpY2VfbmV3KFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
bik7CisgICAgbmV3IChpbmZvKSBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24ocGx1Z2lu
LCBpc1Zpc2libGUpOworICAgIHJldHVybiBpbmZvOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVn
aW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9jb3B5CisgKiBAaW5mbzogdGhlIFdlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbgorICoKKyAqIE1ha2UgYSBjb3B5IG9mIEBpbmZvLgorICoKKyAqIFJl
dHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBjb3B5IG9mIHBhc3NlZCBvbiBAaW5mby4KKyAqCisg
KiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24qIHdlYmtp
dF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9jb3B5KFdlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbiogaW5mbykKK3sKKyAgICBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24qIGNv
cHlJbmZvID0gZ19zbGljZV9uZXcoV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKTsKKyAg
ICBuZXcgKGNvcHlJbmZvKSBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24oaW5mbyk7Cisg
ICAgcmV0dXJuIGNvcHlJbmZvOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9p
bmZvcm1hdGlvbl9mcmVlCisgKiBAaW5mbzogdGhlIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbgorICoKKyAqIEZyZWUgQGluZm8uCisgKgorICogU2luY2U6IDIuMTAKKyAqLwordm9pZCB3
ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZnJlZShXZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb24qIGluZm8pCit7CisgICAgZ19zbGljZV9mcmVlKFdlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvbiwgaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl9ibG9ja2Vk
X2luZm9ybWF0aW9uX2dldF9wbHVnaW4KKyAqIEBpbmZvOiB0aGUgI1dlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvbgorICoKKyAqIEdldCB0aGUgI1dlYktpdFBsdWdpbiBvZiB0aGUgQGluZm8u
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFBsdWdpbi4KKyAq
CisgKiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW4qIHdlYmtpdF9wbHVnaW5fYmxvY2tl
ZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiog
aW5mbykKK3sKKyAgICByZXR1cm4gaW5mby0+cGx1Z2luOworfQorCisvKioKKyAqIHdlYmtpdF9w
bHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxlCisgKiBAaW5mbzogdGhlICNXZWJL
aXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBXaGV0aGVyIHRoZSBwbHVnaW4gaXMg
dmlzaWJsZSBvbiB0aGUgcGFnZSBvciBpdCBoYXMgYmVlbiBvYnNjdXJlZC4KKyAqCisgKiBSZXR1
cm5zOiAlVFJVRSBpZiB0aGUgcGx1Z2luIGlzIHZpc2libGUgb3IgJUZBTFNFIG90aGVyd2lzZS4K
KyAqCisgKiBTaW5jZTogMi4xMAorICovCitnYm9vbGVhbiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRf
aW5mb3JtYXRpb25faXNfdmlzaWJsZShXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24qIGlu
Zm8pCit7CisgICAgcmV0dXJuIGluZm8tPnZpc2libGU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJ
bmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMzczYzA3ZjBjMzU3MzlmNTlhODFjZjMxY2YxZWUx
MTIyZDNmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uaApAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJ
VDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAi
T25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5k
aWYKKworI2lmbmRlZiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25faAorI2RlZmluZSBX
ZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25faAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworI2luY2x1ZGUgIldlYktp
dFBsdWdpbi5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfUExVR0lO
X0JMT0NLRURfSU5GT1JNQVRJT04gKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9n
ZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbjsKKworV0VCS0lUX0FQSSBHVHlwZQor
d2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF90eXBlICAgICAgICAodm9pZCk7
CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uICoKK3dlYmtpdF9w
bHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9jb3B5ICAgICAgICAgICAgKFdlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BsdWdp
bl9ibG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUgICAgICAgICAgICAoV2ViS2l0UGx1Z2luQmxvY2tl
ZEluZm9ybWF0aW9uICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVnaW4gKgord2Via2l0
X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF9wbHVnaW4gICAgICAoV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uICppbmZvKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0
X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUgICAgICAoV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uICppbmZvKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vV2Vi
S2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJ
bmZvcm1hdGlvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTQzZDkwY2JmMTIxZDk4Zjk0ZjEyM2Uz
YjM1MzJkMjhjMDViOWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uUHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQbHVn
aW5CbG9ja2VkSW5mb3JtYXRpb24uaCIKKworV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9u
ICogd2Via2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uQ3JlYXRlKFdlYktpdFBsdWdpbiosIGdi
b29sZWFuKTsKKworI2VuZGlmIC8vIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UGx1Z2luTG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlY2NhODY4MDIwMmU1ZjVj
ZjVlMTQzMWFjYjkzMTNmOGZiNGVhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5jcHAKQEAgLTAsMCAr
MSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LmgiCisKKyNpbmNs
dWRlICJXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGUuaCIKKworLyoqCisgKiBTRUNUSU9O
OiBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHJlcXVl
c3QgdG8gbG9hZCBhIHBsdWdpbi4KKyAqIEBUaXRsZTogV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QK
KyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXaGVuIGEgcGx1Z2luIGlzIGdv
aW5nIHRvIGJlIGxvYWRlZCwgV2ViS2l0IHdpbGwgZmlyZSB0aGUgI1dlYktpdFdlYlZpZXc6Omxv
YWQtcGx1Z2luCisgKiBzaWduYWwgd2l0aCBhICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCBvYmpl
Y3QuIFRoaXMgb2JqZWN0IHdpbGwgYWxsb3cgdGhlIGNsaWVudCB0bworICogaW5zcGVjdCBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgcGx1Z2luIHRoYXQgd2FudCB0byBiZSBsb2FkZWQgYW5kIHRvIHNl
dCBhIGRlc2NyaXB0aW9uCisgKiBhYm91dCB3aHkgaXQncyBub3QgZ29pbmcgdG8gYmUgbG9hZGVk
LgorICoKKyAqIElmIHRoZSBzaWduYWwgaXMgbm90IGhhbmRsZWQgV2ViS2l0IHdpbGwgbG9hZCB0
aGUgcGx1Z2luIG5vcm1hbGx5LgorICovCisKK3N0cnVjdCBfV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3QgeworICAgIF9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdChXZWJLaXRQbHVnaW4qIHVuYXZhaWxh
YmxlUGx1Z2luKQorICAgICAgICA6IHBsdWdpbih1bmF2YWlsYWJsZVBsdWdpbikKKyAgICAgICAg
LCBkZXNjKDApCisgICAgeworICAgIH0KKworICAgIF9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdChX
ZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCkKKyAgICAgICAgOiBwbHVnaW4ocmVxdWVz
dC0+cGx1Z2luKQorICAgICAgICAsIGRlc2MocmVxdWVzdC0+ZGVzYykKKyAgICB7CisgICAgfQor
CisgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW47CisgICAgY29uc3QgZ2NoYXIqIGRlc2M7Cit9Owor
CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QsIHdlYmtpdF9w
bHVnaW5fbG9hZF9yZXF1ZXN0LCB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5LCB3ZWJr
aXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVlKQorCitXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCog
d2Via2l0UGx1Z2luTG9hZFJlcXVlc3RDcmVhdGUoV2ViS2l0UGx1Z2luKiBwbHVnaW4pCit7Cisg
ICAgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlc3VsdCA9IGdfc2xpY2VfbmV3KFdlYktpdFBs
dWdpbkxvYWRSZXF1ZXN0KTsKKyAgICBuZXcgKHJlc3VsdCkgV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3QocGx1Z2luKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioKKyAqIHdlYmtpdF9wbHVn
aW5fbG9hZF9yZXF1ZXN0X2NvcHkKKyAqIEByZXF1ZXN0OiB0aGUgV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QKKyAqCisgKiBNYWtlIGEgY29weSBvZiBAcmVxdWVzdC4KKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgb24gI1dlYktpdFBsdWdpbkxvYWRSZXF1
ZXN0LgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiB3
ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5KFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXN1bHQgPSBnX3NsaWNl
X25ldyhXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCk7CisgICAgbmV3IChyZXN1bHQpIFdlYktpdFBs
dWdpbkxvYWRSZXF1ZXN0KHJlcXVlc3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKgor
ICogd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZQorICogQHJlcXVlc3Q6IHRoZSBXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdAorICoKKyAqIEZyZWUgQHJlcXVlc3QuCisgKgorICogU2luY2U6
IDIuMTAKKyAqLwordm9pZCB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVlKFdlYktpdFBs
dWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRQbHVn
aW5Mb2FkUmVxdWVzdCwgcmVxdWVzdCk7Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl9sb2Fk
X3JlcXVlc3RfZ2V0X3BsdWdpbgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRQbHVnaW4gb2YgdGhlIEByZXF1ZXN0LgorICoK
KyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRQbHVnaW4uCisgKgorICog
U2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2luKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVz
dF9nZXRfcGx1Z2luKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
dHVybiByZXF1ZXN0LT5wbHVnaW47Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl9sb2FkX3Jl
cXVlc3Rfc2V0X2Rlc2NyaXB0aW9uCisgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRQbHVnaW5Mb2Fk
UmVxdWVzdAorICogQGRlc2NyaXB0aW9uOiB0aGUgZGVzY3JpcHRpb24uCisgKgorICogU2V0IHRo
ZSBkZXNjcmlwdGlvbiBhYm91dCB3aHkgdGhlIHBsdWdpbiBpcyBiZWluZyBsb2FkZWQgd2l0aCBz
b21lIHBvbGljeS4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdlYmtpdF9wbHVnaW5f
bG9hZF9yZXF1ZXN0X3NldF9kZXNjcmlwdGlvbihXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVx
dWVzdCwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCit7CisgICAgcmVxdWVzdC0+ZGVzYyA9IGRl
c2NyaXB0aW9uOworfQorCitjb25zdCBjaGFyKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9n
ZXRfZGVzY3JpcHRpb24oV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIHJlcXVlc3QtPmRlc2M7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NGVlOGEwMGYwMGMzMThiNzNmODFhMzcwYmJmZTk3OWIwNDBiOTMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3QuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lU
Ml9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBp
bmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRQbHVnaW5Mb2FkUmVx
dWVzdF9oCisjZGVmaW5lIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0X2gKKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKKyNpbmNs
dWRlICJXZWJLaXRQbHVnaW4uaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9U
WVBFX1BMVUdJTl9MT0FEX1JFUVVFU1QgKHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF90
eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCBXZWJLaXRQ
bHVnaW5Mb2FkUmVxdWVzdDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3BsdWdpbl9sb2Fk
X3JlcXVlc3RfZ2V0X3R5cGUgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVn
aW5Mb2FkUmVxdWVzdCAqCit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5ICAgICAgICAg
ICAgKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9mcmVlICAgICAgICAgICAgKFdlYktpdFBsdWdp
bkxvYWRSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVnaW4gKgord2Vi
a2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdpbiAgICAgIChXZWJLaXRQbHVnaW5Mb2Fk
UmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BsdWdpbl9sb2Fk
X3JlcXVlc3Rfc2V0X2Rlc2NyaXB0aW9uIChXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVz
dCwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24pOworCisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2lu
TG9hZFJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Zjc1MDkyNTczMTFl
Mjk1NmJlNjg1OTFjMDAwMzU1MzNmMzgwM2VhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlLmgK
QEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFBs
dWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5Mb2FkUmVx
dWVzdC5oIgorCitXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqIHdlYmtpdFBsdWdpbkxvYWRSZXF1
ZXN0Q3JlYXRlKFdlYktpdFBsdWdpbiAqKTsKK2NvbnN0IGNoYXIqIHdlYmtpdF9wbHVnaW5fbG9h
ZF9yZXF1ZXN0X2dldF9kZXNjcmlwdGlvbihXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCopOworCisj
ZW5kaWYgLy8gV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5
SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRjYjMwMjc4
ZWY0NmRjMjhmNzZiYzI0OWVlNDliYWEyMzcxMTU5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5m
b3JtYXRpb24uY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eUluZm9ybWF0aW9uUHJpdmF0ZS5oIgorCisvKioKKyAqIFNFQ1RJT046IFdlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24KKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjog
SW5mb3JtYXRpb24gYWJvdXQgdGhlIHVuYXZhaWxhYmlsaXR5IG9mIGEgY2VydGFpbiBwbHVnaW4u
CisgKiBAVGl0bGU6IFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24KKyAqIEBT
ZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXaGVuIHRoZSB1c2VyIHRyaWVzIHRvIGFj
dGl2YXRlIGEgcGx1Z2luIHRoYXQgaXMgYmxvY2tlZCBvciBtaXNzaW5nIFdlYktpdCB3aWxsIGZp
cmUKKyAqIGEgI1dlYktpdFdlYlZpZXc6OnVuYXZhaWxhYmxlLXBsdWdpbi1hY3RpdmF0ZWQgc2ln
bmFsIHdpdGggYQorICogI1dlYktpdFBMdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gb2Jq
ZWN0LCB3aGljaCB3aWxsIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24KKyAqIHRvIGluc3Bl
Y3QgZGV0YWlscyBhYm91dCB0aGUgdW5hdmFpbGFiaWxpdHkgb2YgdGhlIHBsdWdpbi4KKyAqLwor
CitzdHJ1Y3QgX1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24geworICAgIF9X
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKFdlYktpdFBsdWdpbiogdW5hdmFp
bGFibGVQbHVnaW4sIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHVuYXZhaWxhYmls
aXR5UmVhc29uKQorICAgICAgICA6IHBsdWdpbih1bmF2YWlsYWJsZVBsdWdpbikKKyAgICAgICAg
LCByZWFzb24odW5hdmFpbGFiaWxpdHlSZWFzb24pCisgICAgeworICAgIH0KKworICAgIF9XZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKFdlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb24qIGluZm8pCisgICAgICAgIDogcGx1Z2luKGluZm8tPnBsdWdpbikKKyAg
ICAgICAgLCByZWFzb24oaW5mby0+cmVhc29uKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJLaXRQ
bHVnaW4qIHBsdWdpbjsKKyAgICBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiByZWFz
b247CisgICAgY29uc3QgZ2NoYXIqIHVyaTsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2Vi
S2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiwgd2Via2l0X3BsdWdpbl91bmF2YWls
YWJpbGl0eV9pbmZvcm1hdGlvbiwgd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1h
dGlvbl9jb3B5LCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2ZyZWUp
OworCitXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiB3ZWJraXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uQ3JlYXRlKFdlYktpdFBsdWdpbiogcGx1Z2luLCBXZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiByZWFzb24pCit7CisgICAgV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogcmVzdWx0ID0gZ19zbGljZV9uZXcoV2ViS2l0UGx1
Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbik7CisgICAgbmV3IChyZXN1bHQpIFdlYktpdFBs
dWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24ocGx1Z2luLCByZWFzb24pOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZv
cm1hdGlvbl9jb3B5CisgKiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdGl5SW5m
b3JtYXRpb24KKyAqCisgKiBNYWtlIGEgY29weSBvZiBAaW5mby4KKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgb24gI1dlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXR5SW5mb3JtYXRpb24uCisgKgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9p
bmZvcm1hdGlvbl9jb3B5KFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIGlu
Zm8pCit7CisgICAgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogcmVzdWx0
ID0gZ19zbGljZV9uZXcoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbik7Cisg
ICAgbmV3IChyZXN1bHQpIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24oaW5m
byk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX3VuYXZh
aWxhYmlsaXR5X2luZm9ybWF0aW9uX2ZyZWUKKyAqIEBpbmZvOiBhICNXZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0aXlJbmZvcm1hdGlvbgorICoKKyAqIEZyZWUgQGluZm8uCisgKgorICogU2luY2U6
IDIuMTAKKyAqLwordm9pZCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9u
X2ZyZWUoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbykKK3sKKyAg
ICBnX3NsaWNlX2ZyZWUoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiwgaW5m
byk7Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlv
bl9nZXRfcmVhc29uCisgKiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdGl5SW5m
b3JtYXRpb24KKyAqCisgKiBHZXQgdGhlIHJlYXNvbiBvZiB0aGUgI1dlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXRpeUluZm9ybWF0aW9uLgorICoKKyAqIFJldHVybnM6IGEgI1dlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uCisgKgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24gd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1h
dGlvbl9nZXRfcmVhc29uKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIGlu
Zm8pCit7CisgICAgcmV0dXJuIGluZm8tPnJlYXNvbjsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1
Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVnaW4KKyAqIEBpbmZvOiBhICNX
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0aXlJbmZvcm1hdGlvbgorICoKKyAqIEdldCB0aGUgcGx1
Z2luIG9mIEBpbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJL
aXRQbHVnaW4gb2YgdGhlICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0aXlJbmZvcm1hdGlvbi4K
KyAqCisgKiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW4qIHdlYmtpdF9wbHVnaW5fdW5h
dmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihXZWJLaXRQbHVnaW5VbmF2YWlsYWJp
bGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIHJldHVybiBpbmZvLT5wbHVnaW47Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mjc5OWIwZWFiNDYwNzU0YzE4NTIxMWM2YWZhYzE1NWI3ZGEyYzhkNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXR5SW5mb3JtYXRpb24uaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uX2gKKyNkZWZpbmUgV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCisjaW5jbHVkZSAiV2ViS2l0UGx1
Z2luLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9QTFVHSU5fVU5B
VkFJTEFCSUxJVFlfSU5GT1JNQVRJT04gKHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5m
b3JtYXRpb25fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXR5SW5mb3JtYXRpb24gV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlv
bjsKKworLyoqCisgKiBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbjoKKyAqIEBXRUJL
SVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9NSVNTSU5HOiBUaGUgcGx1Z2luIGlzIG1p
c3NpbmcuCisgKiBAV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fQkxPQ0tFRDog
VGhlIHBsdWdpbiBpcyBibG9ja2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAqIEBXRUJLSVRfUExV
R0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9DUkFTSEVEOiBUaGUgcGx1Z2luIGNyYXNoZWQuCisg
KiBFbnVtIHZhbHVlcyByZXByZXNlbnRpbmcgcmVhc29ucyBmb3IgcGx1Z2luIHVuYXZhaWxhYmls
aXR5LgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fTUlTU0lORywKKyAgICBXRUJLSVRfUExVR0lO
X1VOQVZBSUxBQklMSVRZX1JFQVNPTl9CTE9DS0VELAorICAgIFdFQktJVF9QTFVHSU5fVU5BVkFJ
TEFCSUxJVFlfUkVBU09OX0NSQVNIRUQKK30gV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b247CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5m
b3JtYXRpb25fZ2V0X3R5cGUgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVn
aW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uICoKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxp
dHlfaW5mb3JtYXRpb25fY29weSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0
eUluZm9ybWF0aW9uICppbmZvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcGx1Z2luX3Vu
YXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2ZyZWUgICAgICAgICAgICAoV2ViS2l0UGx1Z2luVW5h
dmFpbGFiaWxpdHlJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24KK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3Jt
YXRpb25fZ2V0X3JlYXNvbiAgICAgIChXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0
aW9uICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVnaW4gKgord2Via2l0X3BsdWdpbl91
bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luICAgICAgKFdlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKmluZm8pOworCitHX0VORF9ERUNMUworCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdp
blVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uUHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRmZDA2OWI1YzMxNTAyYWE0MWIyNzZhMWI3MzYwZTNhNjkxMDljNmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRQ
bHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFBs
dWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaCIKKworV2ViS2l0UGx1Z2luVW5hdmFp
bGFiaWxpdHlJbmZvcm1hdGlvbiogd2Via2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlv
bkNyZWF0ZShXZWJLaXRQbHVnaW4qLCBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbik7
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VUlDbGllbnQuY3BwCmluZGV4IGVkMzg0Y2JkZWIyODEwMTUwNGQwYTkxOTJlOWUyMTc4Njgx
YTVjMzIuLmFiZjZmOTk5MzlkZTFhYjNhZTUyNzg5NGIxNTE3ZDc0YzUyYTVhOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAK
QEAgLTIxLDEwICsyMSwxNCBAQAogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAKICNpbmNs
dWRlICJBUElVSUNsaWVudC5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1
ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0TmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRQbHVnaW5Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKQEAgLTMyLDYgKzM2LDcg
QEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdp
bmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIApAQCAtMTkxLDYgKzE5NiwzOCBA
QCBwcml2YXRlOgogICAgICAgICB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKG1f
d2ViVmlldyk7CiAgICAgfQogCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAg
dmlydHVhbCB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSogcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiB3a3JlYXNvbiwgQVBJ
OjpEaWN0aW9uYXJ5KiBwbHVnaW5JbmZvRGljdGlvbmFyeSkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHJlYXNvbjsKKyAgICAgICAgV2Vi
S2l0UGx1Z2luKiBwbHVnaW47CisKKyAgICAgICAgc3dpdGNoICh3a3JlYXNvbikgeworICAgICAg
ICBjYXNlIGtXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uUGx1Z2luTWlzc2luZzoKKyAgICAg
ICAgICAgIHJlYXNvbiA9IFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJVFlfUkVBU09OX01JU1NJ
Tkc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrV0tQbHVnaW5VbmF2YWlsYWJp
bGl0eVJlYXNvblBsdWdpbkNyYXNoZWQ6CisgICAgICAgICAgICByZWFzb24gPSBXRUJLSVRfUExV
R0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9DUkFTSEVEOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2Uga1dLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25JbnNlY3VyZVBsdWdpblZl
cnNpb246CisgICAgICAgICAgICAvKiBXaGVuIHdlIGJsb2NrIGEgcGx1Z2luLCB0aGUgcmVhc29u
IHdlIHByb3ZpZGUgaXMgIkluc2VjdXJlUGx1Z2luVmVyc2lvbiIuICovCisgICAgICAgICAgICBy
ZWFzb24gPSBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9CTE9DS0VEOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVhc29uICE9IFdFQktJ
VF9QTFVHSU5fVU5BVkFJTEFCSUxJVFlfUkVBU09OX01JU1NJTkcpIHsKKyAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCA9IHBsdWdpbkluZm9EaWN0aW9uYXJ5LT5nZXQ8QVBJOjpT
dHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgpKS0+c3RyaW5nKCk7CisgICAgICAgICAg
ICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbk1vZHVsZUluZm8gPSBwYWdlLT5wcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKS5wbHVnaW5JbmZvU3RvcmUoKS5pbmZvRm9yUGx1Z2luV2l0aFBhdGgocGx1Z2lu
UGF0aCk7CisgICAgICAgICAgICBwbHVnaW4gPSB3ZWJraXRQbHVnaW5DcmVhdGUocGx1Z2luTW9k
dWxlSW5mbyk7CisgICAgICAgIH0KKworICAgICAgICBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0
eUluZm9ybWF0aW9uKiB1bmF2YWlsYWJpbGl0eUluZm8gPSB3ZWJraXRQbHVnaW5VbmF2YWlsYWJp
bGl0eUluZm9ybWF0aW9uQ3JlYXRlKHBsdWdpbiwgcmVhc29uKTsKKyAgICAgICAgd2ViS2l0V2Vi
Vmlld0VtaXRVbmF2YWlsYWJsZVBsdWdpbkFjdGl2YXRlZChtX3dlYlZpZXcsIHVuYXZhaWxhYmls
aXR5SW5mbyk7CisKKyAgICAgICAgd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1h
dGlvbl9mcmVlKHVuYXZhaWxhYmlsaXR5SW5mbyk7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQorCiAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCA5ZDQxZmE5N2EzZDE2ZTJiNWM3NTM5MTdiMjFkY2U4ZjU1YTEzOTU3Li5kNGJj
M2RjYTcwZDBkZjY0NWU4M2Y2NTM5NGZlZDhkYmQ1ZmUzYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTM0LDYgKzEz
NCwxMCBAQCBlbnVtIHsKIAogICAgIFJVTl9DT0xPUl9DSE9PU0VSLAogCisgICAgTE9BRF9QTFVH
SU4sCisgICAgUExVR0lOX0JMT0NLRUQsCisgICAgVU5BVkFJTEFCTEVfUExVR0lOX0FDVElWQVRF
RCwKKwogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC02MjYsNiArNjMwLDExIEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRXZWJWaWV3U2hvd05vdGlmaWNhdGlvbihXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0Tm90aWZpY2F0aW9uCiAjZW5kaWYKIH0KIAorc3RhdGljIFdlYktpdFBsdWdpbkxvYWRQb2xp
Y3kgd2Via2l0V2ViVmlld0xvYWRQbHVnaW4oV2ViS2l0V2ViVmlldyosIFdlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0KikKK3sKKyAgICByZXR1cm4gV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOwor
fQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0
KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5j
b25zdHJ1Y3RlZChvYmplY3QpOwpAQCAtNzcwLDYgKzc3OSwxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0V2ViVmlld0FjY3VtdWxhdG9yT2JqZWN0SGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhp
bnQqLCBHVgogICAgIHJldHVybiAhb2JqZWN0OwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
V2ViVmlld0FjY3VtdWxhdG9yUGx1Z2luTG9hZFBvbGljeUhhbmRsZWQoR1NpZ25hbEludm9jYXRp
b25IaW50KiwgR1ZhbHVlKiByZXR1cm5WYWx1ZSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJu
LCBncG9pbnRlcikKK3sKKyAgICBpbnQgcG9saWN5ID0gZ192YWx1ZV9nZXRfaW50KGhhbmRsZXJS
ZXR1cm4pOworICAgIGdfdmFsdWVfc2V0X2ludChyZXR1cm5WYWx1ZSwgcG9saWN5KTsKKworICAg
IHJldHVybiBwb2xpY3kgPT0gV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOworfQorCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHdlYlZpZXdDbGFzcyk7CkBAIC03ODcsNiArODA0LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3Mp
CiAgICAgd2ViVmlld0NsYXNzLT5ydW5fZmlsZV9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkZp
bGVDaG9vc2VyOwogICAgIHdlYlZpZXdDbGFzcy0+YXV0aGVudGljYXRlID0gd2Via2l0V2ViVmll
d0F1dGhlbnRpY2F0ZTsKICAgICB3ZWJWaWV3Q2xhc3MtPnNob3dfbm90aWZpY2F0aW9uID0gd2Vi
a2l0V2ViVmlld1Nob3dOb3RpZmljYXRpb247CisgICAgd2ViVmlld0NsYXNzLT5sb2FkX3BsdWdp
biA9IHdlYmtpdFdlYlZpZXdMb2FkUGx1Z2luOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2Vi
Vmlldzp3ZWItY29udGV4dDoKQEAgLTE3NTAsNiArMTc2OCw3NyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykK
ICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKICAgICAgICAgICAg
IEdfVFlQRV9CT09MRUFOLCAxLAogICAgICAgICAgICAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtcGx1Z2lu
OgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3CisgICAgICogQHJlcXVlc3Q6
IGEgI1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBp
cyBlbWl0dGVkIHdoZW4gYSBwbHVnaW4gaXMgYWJvdXQgdG8gYmUgbG9hZGVkIGluIGEgcGFnZS4g
VGhlCisgICAgICogQHJlcXVlc3QgaW5zdGFjZSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBs
dWdpbiBhbmQgYWxsb3dzIHRvIHNldCBhIGRlc2NyaXB0aW9uCisgICAgICogYWJvdXQgd2h5IHRo
ZSBwbHVnaW4gaXMgZ29pbmcgdG8gYmUgYmxvY2tlZC4KKyAgICAgKgorICAgICAqIFRoZSBkZWZh
dWx0IGhhbmRsZXIgd2lsbCByZXR1cm4gV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZLgorICAg
ICAqCisgICAgICogVGhlIGV2ZW50IHdpbGwgYmUgcHJvcGFnYXRlZCB1bnRpbCBhIGhhbmRsZXIg
YmxvY2tzIGEgcGx1Z2luIGxvYWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiBBICNXZWJLaXRQ
bHVnaW5Mb2FkUG9saWN5IHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBsb2FkIHBvbGljeSB0aGF0
IHNob3VsZAorICAgICAqICAgYmUgdXNlZC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjEwCisg
ICAgICovCisgICAgc2lnbmFsc1tMT0FEX1BMVUdJTl0gPQorICAgICAgICBnX3NpZ25hbF9uZXco
ImxvYWQtcGx1Z2luIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFz
cyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNU
X09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGxvYWRfcGx1Z2luKSwKKyAgICAgICAgICAgIHdl
YmtpdFdlYlZpZXdBY2N1bXVsYXRvclBsdWdpbkxvYWRQb2xpY3lIYW5kbGVkLCBudWxscHRyIC8q
IGFjY3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9JTlRfX0JP
WEVELAorICAgICAgICAgICAgR19UWVBFX0lOVCwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBF
X1BMVUdJTl9MT0FEX1JFUVVFU1QpOworCisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3
OjpwbHVnaW4tYmxvY2tlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldwor
ICAgICAqIEBwbHVnaW5fYmxvY2tlZF9pbmZvOiBhICNXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb24KKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhIHBsdWdp
biBpcyBibG9ja2VkLiBUaGUgQHBsdWdpbl9ibG9ja2VkX2luZm8gaW5zdGFuY2UgaGFzCisgICAg
ICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBsdWdpbiBhbmQgYWJvdXQgaWYgaXQgaXMgYmVlbiBz
aG93biBpbiB0aGUgcGFnZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjEwCisgICAgICovCisg
ICAgc2lnbmFsc1tQTFVHSU5fQkxPQ0tFRF0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoInBsdWdp
bi1ibG9ja2VkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyks
CisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHBsdWdpbl9ibG9ja2VkKSwKKyAgICAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIgLyogYWNjdW11bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgIGdfY2Ns
b3N1cmVfbWFyc2hhbF9WT0lEX19CT1hFRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAor
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfUExVR0lOX0JMT0NLRURfSU5GT1JNQVRJT04pOworCisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojp1bmF2YWlsYWJsZS1wbHVnaW4tYWN0aXZh
dGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3CisgICAgICogQGluZm86
IGEgI1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBp
cyBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gZm9yY2UgdGhlIGxvYWQgb2YgYSBwbHVn
aW4gdGhhdCBoYXMKKyAgICAgKiBiZWVuIGJsb2NrZWQgY2xpY2tpbmcgdGhlIHVuYXZhaWxhYmxl
IGJ1dHRvbiwgZm9yIGV4YW1wbGUuIFRoZSBAaW5mbyBvYmplY3QKKyAgICAgKiBjb250YWlucyBp
bmZvIGFib3V0IHRoZSBwbHVnaW4gYW5kIHRoZSB1bmF2YWlsYWJpbGl0eSByZWFzb24uCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4xMAorICAgICAqLworICAgIHNpZ25hbHNbVU5BVkFJTEFCTEVf
UExVR0lOX0FDVElWQVRFRF0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoInVuYXZhaWxhYmxlLXBs
dWdpbi1hY3RpdmF0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0Ns
YXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJV
Q1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgdW5hdmFpbGFibGVfcGx1Z2luX2FjdGl2YXRl
ZCksCisgICAgICAgICAgICBudWxscHRyLCBudWxscHRyIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8s
CisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fQk9YRUQsCisgICAgICAgICAg
ICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1BMVUdJTl9VTkFWQUlM
QUJJTElUWV9JTkZPUk1BVElPTik7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDYW5j
ZWxBdXRoZW50aWNhdGlvblJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKQEAgLTIxMzQs
NiArMjIyMywyMyBAQCBib29sIHdlYmtpdFdlYlZpZXdFbWl0UnVuQ29sb3JDaG9vc2VyKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlcgogICAgIHJldHVybiBoYW5kbGVk
OwogfQogCitXZWJLaXRQbHVnaW5Mb2FkUG9saWN5IHdlYmtpdFdlYlZpZXdMb2FkUGx1Z2luUmVx
dWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5IHBvbGljeTsKKyAgICBnX3NpZ25h
bF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9QTFVHSU5dLCAwLCByZXF1ZXN0LCAmcG9saWN5
KTsKKyAgICByZXR1cm4gcG9saWN5OworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdFbWl0UGx1Z2lu
QmxvY2tlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb24qIGluZm8pCit7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1BMVUdJ
Tl9CTE9DS0VEXSwgMCwgaW5mbyk7Cit9CisKK3ZvaWQgd2ViS2l0V2ViVmlld0VtaXRVbmF2YWls
YWJsZVBsdWdpbkFjdGl2YXRlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdfc2lnbmFsX2VtaXQod2Vi
Vmlldywgc2lnbmFsc1tVTkFWQUlMQUJMRV9QTFVHSU5fQUNUSVZBVEVEXSwgMCwgaW5mbyk7Cit9
CisKIC8qKgogICogd2Via2l0X3dlYl92aWV3X25ldzoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMGNmYzI0NzA4NjBjYjI0
NTQ3NzFjZWJjNzJjNjZjOGJlMzZjNjIxYS4uMjgxOWRmZWRiY2Y5YTJkMDI3YWVkN2FkOTY0OGE4
NjAwMmQ2Y2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApAQCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
TmF2aWdhdGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Tm90aWZpY2F0aW9u
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0UG9saWN5RGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdERp
YWxvZy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4KQEAgLTE4Myw2ICsx
ODYsMTkgQEAgdHlwZWRlZiBlbnVtIHsKICAgV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RP
Q1VNRU5ULAogfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsKIAorCisvKioKKyAqIFdlYktpdFBsdWdp
bkxvYWRQb2xpY3k6CisgKiBAV0VCS0lUX1BMVUdJTl9MT0FEX0JMT0NLOiBUaGUgcGx1Z2luIGxv
YWQgd2lsbCBiZSBibG9ja2VkLgorICogQFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTogVGhl
IHBsdWdpbiB3aWxsIGxvYWQgbm9ybWFsbHkuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBz
cGVjaWZ5IHRoZSBwbHVnaW4gbG9hZCBwb2xpY3kuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX1BMVUdJTl9MT0FEX0JMT0NLLAorICAgIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxM
WQorfSBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5OworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewog
ICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAtMTkzLDYwICsyMDksNjYgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBX
ZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKIAotICAgIHZvaWQgICAgICAgKCogbG9hZF9j
aGFuZ2VkKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7Ci0gICAgZ2Jvb2xlYW4gICAo
KiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg
ICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqZXJyb3IpOwotCi0g
ICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiAgICAgICpuYXZpZ2F0
aW9uX2FjdGlvbik7Ci0gICAgdm9pZCAgICAgICAoKiByZWFkeV90b19zaG93KSAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAg
ICAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0KLSAg
ICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAgICAgKmRpYWxvZykg
IDsKLQotICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uICAgICAgICAq
ZGVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAgIHR5cGUpOwotICAgIGdib29sZWFuICAgKCog
cGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAgICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsKLSAg
ICB2b2lkICAgICAgICgqIG1vdXNlX3RhcmdldF9jaGFuZ2VkKSAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0
X3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKLSAgICBnYm9vbGVhbiAg
ICgqIHByaW50KSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQcmludE9wZXJhdGlvbiAgICAgICAgKnByaW50X29wZXJhdGlvbik7Ci0g
ICAgdm9pZCAgICAgICAoKiByZXNvdXJjZV9sb2FkX3N0YXJ0ZWQpICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJj
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFVSSVJlcXVlc3QgICAgICAgICAgICAqcmVxdWVzdCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBlbnRl
cl9mdWxsc2NyZWVuKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKLSAgICBnYm9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3JlZW4pICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICAg
KCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7Ci0gICAgZ2Jvb2xl
YW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAgICpjb250ZXh0X21lbnUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAg
ICAgICAgICAgICAgICAgICAgKmV2ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9y
ZXN1bHQpOwotICAgIHZvaWQgICAgICAgKCogY29udGV4dF9tZW51X2Rpc21pc3NlZCkgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAo
KiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKLSAgICB2b2lkICAg
ICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0ZWQpICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCAgIGV2ZW50KTsKLSAgICBnYm9v
bGVhbiAgICgqIHdlYl9wcm9jZXNzX2NyYXNoZWQpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBhdXRoZW50aWNhdGUp
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0QXV0
aGVudGljYXRpb25SZXF1ZXN0ICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFp
bGVkX3dpdGhfdGxzX2Vycm9ycykgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Rsc0NlcnRpZmljYXRlICAgICAgICAgICAg
ICpjZXJ0aWZpY2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzICAgICAgICAgZXJyb3JzKTsKLSAgICBnYm9vbGVh
biAgICgqIHNob3dfbm90aWZpY2F0aW9uKSAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXROb3RpZmljYXRpb24gICAgICAgICAgKm5vdGlmaWNhdGlvbik7Ci0g
ICAgZ2Jvb2xlYW4gICAoKiBydW5fY29sb3JfY2hvb3NlcikgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAgICpyZXF1ZXN0
KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgICAgICAgICAgICBsb2FkX2V2ZW50KTsK
KyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIGxvYWRfZmFpbGVkKSAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgICAgICAgICAgICBsb2FkX2V2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmVycm9yKTsKKworICAgIEd0
a1dpZGdldCAqICAgICAgICAgICAgKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dE5hdmlnYXRpb25BY3Rpb24gICAgICAgICAgICAgICAgKm5hdmlnYXRpb25fYWN0aW9uKTsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgKCogY2xvc2UpICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdi
b29sZWFuICAgICAgICAgICAgICAgKCogc2NyaXB0X2RpYWxvZykgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNjcmlwdERpYWxvZyAgICAgICAgICAgICAgICAgICAgKmRpYWxvZykgIDsKKworICAgIGdib29s
ZWFuICAgICAgICAgICAgICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBv
bGljeURlY2lzaW9uICAgICAgICAgICAgICAgICAgKmRlY2lzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGlj
eURlY2lzaW9uVHlwZSAgICAgICAgICAgICAgIHR5cGUpOworICAgIGdib29sZWFuICAgICAgICAg
ICAgICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1
ZXN0ICAgICAgICAgICAgICAgKnBlcm1pc3Npb25fcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAoKiBtb3VzZV90YXJnZXRfY2hhbmdlZCkgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJl
c3VsdCAgICAgICAgICAgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisgICAgZ2Jvb2xlYW4gICAg
ICAgICAgICAgICAoKiBwcmludCkgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVy
YXRpb24gICAgICAgICAgICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRlZCkgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJSZXNv
dXJjZSAgICAgICAgICAgICAgICAgICAgICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0
ICAgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICAgICAgICAg
ICAgICgqIGVudGVyX2Z1bGxzY3JlZW4pICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAg
ICAoKiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAg
KCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAg
ICAgICAgICAgICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCogY29u
dGV4dF9tZW51KSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAg
ICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAgICAg
ICAgICAgKmNvbnRleHRfbWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgICAgICAgICAg
ICpoaXRfdGVzdF9yZXN1bHQpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogY29udGV4
dF9tZW51X2Rpc21pc3NlZCkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAg
ICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICgqIHN1Ym1pdF9m
b3JtKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QgICAgICAgICAg
ICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICgqIGluc2VjdXJlX2NvbnRl
bnRfZGV0ZWN0ZWQpICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCAgICAgICAgICAgICBldmVu
dCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVkKSAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcp
OworCisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBhdXRoZW50aWNhdGUpICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0ICAgICAgICAgICAqcmVxdWVzdCk7Cisg
ICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMp
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1Rsc0NlcnRpZmljYXRlICAgICAgICAgICAgICAgICAgICAgICAqY2VydGlmaWNhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1Rsc0NlcnRpZmljYXRlRmxhZ3MgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICBnYm9v
bGVhbiAgICAgICAgICAgICAgICgqIHNob3dfbm90aWZpY2F0aW9uKSAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRO
b3RpZmljYXRpb24gICAgICAgICAgICAgICAgICAgICpub3RpZmljYXRpb24pOworICAgIGdib29s
ZWFuICAgICAgICAgICAgICAgKCogcnVuX2NvbG9yX2Nob29zZXIpICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QgICAgICAgICAgICAgKnJlcXVlc3QpOworICAgIFdlYktpdFBsdWdp
bkxvYWRQb2xpY3kgKCogbG9hZF9wbHVnaW4pICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0ICAgICAgICAgICAgICAgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgKCogcGx1Z2luX2Jsb2NrZWQpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBsdWdpbkJsb2NrZWRJ
bmZvcm1hdGlvbiAgICAgICAgKmluZm8pOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCog
dW5hdmFpbGFibGVfcGx1Z2luX2FjdGl2YXRlZCkgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5m
b3JtYXRpb24gKmluZm8pOwogCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7
CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRl
eCAyNmVmYmQ1MWZjYTEyNGFlMjlmZmE5ZTY2NjFiZTQxMmQwNWFmYWE2Li5kZTk0MTM2Yzg1Y2I0
NDA4MTZmMTQwODIwZmJjMDlkZTU3NWMwZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTYwLDYgKzYw
LDkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
S2l0V2ViVmlldyosIFdlYktpdDo6QXV0aGVudGkKIHZvaWQgd2Via2l0V2ViVmlld0luc2VjdXJl
Q29udGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVu
dCk7CiBib29sIHdlYmtpdFdlYlZpZXdFbWl0U2hvd05vdGlmaWNhdGlvbihXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0Tm90aWZpY2F0aW9uKik7CiBib29sIHdlYmtpdFdlYlZpZXdFbWl0UnVuQ29sb3JD
aG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Kik7CitXZWJL
aXRQbHVnaW5Mb2FkUG9saWN5IHdlYmtpdFdlYlZpZXdMb2FkUGx1Z2luUmVxdWVzdChXZWJLaXRX
ZWJWaWV3KiwgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Vt
aXRQbHVnaW5CbG9ja2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb24qKTsKK3ZvaWQgd2ViS2l0V2ViVmlld0VtaXRVbmF2YWlsYWJsZVBsdWdpbkFjdGl2YXRl
ZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiop
Owogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc0NyYXNoZWQoV2ViS2l0V2ViVmlldyopOwog
dm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBiY2Q1ZjRkYjIwYjE0YTA5
MDZiY2E0NjJkOWM0NzU1ZmQ4OThhMWY2Li40OGVlZWVjMTMzOWMxNTQxZTllMDNkYTliMjMyYzRh
YjlkNjlmYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtOTY5LDYg
Kzk2OSw1NiBAQCBXZWJLaXRQbHVnaW5Qcml2YXRlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgor
PEZJTEU+V2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uPC9GSUxFPgorV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uCitXZWJLaXRQbHVnaW5Mb2FkUG9saWN5Cit3ZWJraXRfcGx1Z2lu
X2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weQord2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0
aW9uX2ZyZWUKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luCit3
ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25faXNfdmlzaWJsZQorCis8U1VCU0VDVElP
TiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX1BMVUdJTl9CTE9DS0VEX0lORk9STUFUSU9OCisKKzxT
VUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0
X3R5cGUKKworPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0PC9GSUxFPgorV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKK3dlYmtpdF9wbHVnaW5fbG9h
ZF9yZXF1ZXN0X2NvcHkKK3dlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2ZyZWUKK3dlYmtpdF9w
bHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4KK3dlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0
X3NldF9kZXNjcmlwdGlvbgorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX1BM
VUdJTl9MT0FEX1JFUVVFU1QKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9wbHVnaW5f
bG9hZF9yZXF1ZXN0X2dldF90eXBlCisKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5X
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uPC9GSUxFPgorV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbgorV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24KK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fY29weQord2Via2l0
X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9mcmVlCit3ZWJraXRfcGx1Z2luX3Vu
YXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24KK3dlYmtpdF9wbHVnaW5fdW5hdmFp
bGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbgorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4K
K1dFQktJVF9UWVBFX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9JTkZPUk1BVElPTgorCis8U1VCU0VD
VElPTiBQcml2YXRlPgord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9n
ZXRfdHlwZQorCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0V2ViSW5zcGVj
dG9yPC9GSUxFPgogV2ViS2l0V2ViSW5zcGVjdG9yCiB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRf
d2ViX3ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCmluZGV4IDgxOWFmNThjZDZhNDRhODkzOTNhMTQ0
MjVkZWI0YWRjMTQ0Njc5OGQuLjNlNDQzNmEzNzljZGM2ZTAzYjViOTEzZDU1NjdiMGRhNTAxNjIz
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAudHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcwpAQCAtMTYsNiArMTYsOSBAQCB3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfZ2V0X3R5cGUKIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3R5cGUKIHdlYmtp
dF9jb29raWVfbWFuYWdlcl9nZXRfdHlwZQogd2Via2l0X3BsdWdpbl9nZXRfdHlwZQord2Via2l0
X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF90eXBlCit3ZWJraXRfcGx1Z2luX2xvYWRf
cmVxdWVzdF9nZXRfdHlwZQord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlv
bl9nZXRfdHlwZQogd2Via2l0X21pbWVfaW5mb19nZXRfdHlwZQogd2Via2l0X3dlYl9pbnNwZWN0
b3JfZ2V0X3R5cGUKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3R5cGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sCmluZGV4IDA0NjM0NDdlYjE3ZjUxYmU4OTc4ZmM2MTU3YjUzM2RkYjE2Zjg1YmMu
LjA0Zjk5NjIyYjc4M2E4NDEzOWQxMTc1YTA1ZjgyODU0NjMyZjUzN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRv
Y3Muc2dtbApAQCAtMzgsNiArMzgsOSBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRGaW5kQ29udHJvbGxlci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
Q29va2llTWFuYWdlci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGx1
Z2luLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb24ueG1sIi8KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGx1Z2lu
TG9hZFJlcXVlc3QueG1sIi8KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi54bWwiLwogICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXRXZWJJbnNwZWN0b3IueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdFZlcnNpb24ueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKaW5kZXggZDliYzkyMGVkNzIzOTI1NDg3MGZlNzgwMDM0ZjlkMmYyYmJiMmM1Yy4uMTBh
ZTQzYWIxN2U0NDIwMmYxZjNiMDdjMzY4NjdjNGMzZjM3M2EyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNTUsNiArNTUsOSBAQAogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRQbHVnaW4uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbi5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24u
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFByaW50T3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRTY3JpcHREaWFsb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CmluZGV4IGUxY2ZlMDcyMTZkMzliMGU5OGQ2
MDQ3NzFiZTA2Mjk2NWQyNjg3ZjIuLmNmN2U1ODE4MTEwZTlkMjhhZTJjMzg0YWYxNjJiNjE0YzU0
ODM3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mm1hcnNoYWwubGlzdApAQCAtMTMsNCArMTMsNSBAQCBWT0lEOk9CSkVDVCxPQkpFQ1QKIFZP
SUQ6T0JKRUNULFBPSU5URVIKIFZPSUQ6U1RSSU5HLFNUUklORwogVk9JRDpVSU5UNjQKK0lOVDpC
T1hFRAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ0
YzQwYzU1OTlmM2IyMGIyMTM2MTYwMzJiZjk3MDQyOTAwMmY5MTUuLjk5NmIyN2U2YjY0NDlmZjM0
YzljYzM3ZjRiYmZmMzU4YWM3OTVlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0xNzcxLDcgKzE3NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlu
ZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29u
cwogCiAgICAgcGx1Z2luTG9hZFBvbGljeSA9IFBsdWdpbkluZm9TdG9yZTo6ZGVmYXVsdExvYWRQ
b2xpY3lGb3JQbHVnaW4ocGx1Z2luKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCiAgICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4g
cGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1
Z2luLCBmcmFtZVVSTFN0cmluZywgU3RyaW5nKCksIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBT
dHJpbmcoKSk7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKICAgICAgICAgcGx1Z2luTG9h
ZFBvbGljeSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCgq
dGhpcywgc3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1Z2luTG9hZFBvbGlj
eSksIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpLCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKTsK
QEAgLTUwODQsNyArNTA4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJl
UGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTCiB7CiAgICAgUmVm
UHRyPEFQSTo6RGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb247CiAKLSNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjaWYgKFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspKSAgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
U3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVn
aW4gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdp
bihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5J
bmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZy
YW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygp
LCByZXBsYWNlbWVudE9ic2N1cmVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5Nzg2ZGI3MDQ5OTQwN2RmZGQyOTY2N2UzMTJhMzc1YjFlYjky
ZjI0Li42ZDAyOWVjZTc0NzEwYjk4YjkyNTBmY2I4NWI2OWIyOGIyMDllYzY2IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTUtMDMtMDYgIE1hcmNvcyBDaGF2YXJyw61hIFRlaWplaXJvICA8Y2hhdmFycmlhMTk5MUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHRlc3RzIGZvciBuZXcgYmxvY2sv
dW5ibG9jayBwbHVnaW5zIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDM1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RCbG9ja2luZ1BsdWdpbnMpOiBBZGQgdGVzdC4KKyAg
ICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMTUtMDMtMDMgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDcmFzaCBsb2dzIGNhbid0IGJlIGZvdW5kIG9u
IGlvcy1zaW11bGF0b3IgYmVjYXVzZSBXZWJLaXRUZXN0UnVubmVyIHJldHVybnMgdGhlIHdyb25n
IHByb2Nlc3MgbmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZjZmYmMxYTlkNjExMGNiMzA2
ZjJkNjg2NTBmNDBhYzk3MzBlZjc1YS4uZjFlM2MzOWU4YzhjYjJhZTVmMjYxOWJhODE0NThjYjVm
MjFkYTA5MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC04MDMsNiArODAzLDE2MyBAQCBzdGF0
aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKgogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNz
YWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogfQogCitjbGFzcyBQbHVnaW5zV2ViVmlld1Rl
c3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisKKyAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKFBsdWdpbnNXZWJWaWV3VGVzdCk7CisKKyAgICBlbnVtIFBsdWdpbkV2ZW50VHlwZSB7
CisgICAgICAgIE5vbmUsCisgICAgICAgIExvYWQsCisgICAgICAgIEJsb2NrZWQsCisgICAgICAg
IFVuYXZhaWxhYmxlQWN0aXZhdGVkCisgICAgfTsKKworICAgIHN0YXRpYyBXZWJLaXRQbHVnaW5M
b2FkUG9saWN5IGxvYWRQbHVnaW5DYWxsYmFja0Jsb2NrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0LCBQbHVnaW5zV2ViVmlld1Rlc3QqIHRl
c3QpCisgICAgeworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtpdF9wbHVnaW5f
bG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4ocmVxdWVzdCk7CisgICAgICAgIGlmIChnX3N0cmNtcDAo
d2Via2l0X3BsdWdpbl9nZXRfbmFtZShwbHVnaW4pLCAiV2ViS2l0IFRlc3QgUGx1Z0luIikpCisg
ICAgICAgICAgICByZXR1cm4gV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOworCisgICAgICAg
IHRlc3QtPm1fZXZlbnQgPSBMb2FkOworICAgICAgICB0ZXN0LT5tX3BsdWdpbiA9IHBsdWdpbjsK
KyAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICAgICAgcmV0
dXJuIFdFQktJVF9QTFVHSU5fTE9BRF9CTE9DSzsKKyAgICB9CisKKyAgICBzdGF0aWMgV2ViS2l0
UGx1Z2luTG9hZFBvbGljeSBsb2FkUGx1Z2luQ2FsbGJhY2tOb3JtYWxseShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCwgUGx1Z2luc1dlYlZp
ZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW4gPSB3ZWJr
aXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luKHJlcXVlc3QpOworICAgICAgICBpZiAo
Z19zdHJjbXAwKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUocGx1Z2luKSwgIldlYktpdCBUZXN0IFBs
dWdJbiIpKQorICAgICAgICAgICAgcmV0dXJuIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsK
KworICAgICAgICB0ZXN0LT5tX2V2ZW50ID0gTG9hZDsKKyAgICAgICAgdGVzdC0+bV9wbHVnaW4g
PSB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luKHJlcXVlc3QpOworICAgICAg
ICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4gV0VC
S0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHBsdWdp
bkJsb2NrZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRQbHVnaW5CbG9j
a2VkSW5mb3JtYXRpb24qIGluZm8sIFBsdWdpbnNXZWJWaWV3VGVzdCogdGVzdCkKKyAgICB7Cisg
ICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2luID0gd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9y
bWF0aW9uX2dldF9wbHVnaW4oaW5mbyk7CisgICAgICAgIGlmIChnX3N0cmNtcDAod2Via2l0X3Bs
dWdpbl9nZXRfbmFtZShwbHVnaW4pLCAiV2ViS2l0IFRlc3QgUGx1Z0luIikpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGVzdC0+bV9ldmVudCA9IEJsb2NrZWQ7CisgICAgICAgIHRl
c3QtPm1fcGx1Z2luID0gd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF9wbHVn
aW4oaW5mbyk7CisgICAgICAgIHRlc3QtPm1fcGx1Z2luSXNWaXNpYmxlID0gd2Via2l0X3BsdWdp
bl9ibG9ja2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUoaW5mbyk7CisgICAgICAgIGdfbWFpbl9s
b29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdW5h
dmFpbGFibGVQbHVnaW5BY3RpdmF0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvLCBQbHVnaW5zV2ViVmll
d1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtp
dF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihpbmZvKTsKKyAg
ICAgICAgaWYgKGdfc3RyY21wMCh3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHBsdWdpbiksICJXZWJL
aXQgVGVzdCBQbHVnSW4iKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0ZXN0LT5t
X2V2ZW50ID0gVW5hdmFpbGFibGVBY3RpdmF0ZWQ7CisgICAgICAgIHRlc3QtPm1fcGx1Z2luID0g
d2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKGluZm8p
OworICAgICAgICB0ZXN0LT5tX3VuYXZhaWxhYmlsaXR5UmVhc29uID0gd2Via2l0X3BsdWdpbl91
bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcmVhc29uKGluZm8pOworICAgICAgICBnX21h
aW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IHBsdWdpbkxvYWRlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNjcmlw
dERpYWxvZyAqZGlhbG9nLCBQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3QpCisgICAgeworICAgICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocGx1Z2luTG9hZGVkQ2FsbGJhY2spLCB0ZXN0KTsKKyAgICAgICAgZ19t
YWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICAgICAgdGVzdC0+d2FpdCgxKTsg
Ly8gUmFjZSBDb25kaXRpb24KKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gZG9DbGlja0lk
bGVDYWxsYmFjayhQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0
LT5jbGlja01vdXNlQnV0dG9uKDUsIDUsIDEpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
fQorCisgICAgUGx1Z2luc1dlYlZpZXdUZXN0KCkKKyAgICAgICAgOiBtX2V2ZW50KE5vbmUpCisg
ICAgICAgICwgbV9wbHVnaW4obnVsbHB0cikKKyAgICAgICAgLCBtX3BsdWdpbklzVmlzaWJsZShm
YWxzZSkKKyAgICB7CisgICAgICAgIHNob3dJbldpbmRvdyhHVEtfV0lORE9XX1RPUExFVkVMKTsK
KyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0
b3J5KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dChtX3dlYlZpZXcpLCBXRUJLSVRfVEVTVF9Q
TFVHSU5fRElSKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJwbHVnaW4t
YmxvY2tlZCIsIEdfQ0FMTEJBQ0socGx1Z2luQmxvY2tlZENhbGxiYWNrKSwgdGhpcyk7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAidW5hdmFpbGFibGUtcGx1Z2luLWFjdGl2
YXRlZCIsIEdfQ0FMTEJBQ0sodW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWRDYWxsYmFjayksIHRo
aXMpOworICAgIH0KKworICAgIHZvaWQgbG9hZFdlYigpCisgICAgeworICAgICAgICBtX2V2ZW50
ID0gTm9uZTsKKyAgICAgICAgbV9wbHVnaW4gPSBudWxscHRyOworICAgICAgICBsb2FkSHRtbCgi
PGh0bWw+PG9iamVjdCBpZD1cInBsdWdpblwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LW5ldHNjYXBlXCIgIgorICAgICAgICAgICAgInNyYz1cImRhdGE6YXBwbGljYXRpb24veC13
ZWJraXQtdGVzdC1uZXRzY2FwZSxhbGVydHdoZW5sb2FkZWRcIiB3aWR0aD1cIjEwXCIgIgorICAg
ICAgICAgICAgImhlaWdodD1cIjEwXCIgc3R5bGU9XCJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDts
ZWZ0OjA7XCIvPjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRVbnRp
bFBsdWdpbkxvYWRlZCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmll
dywgInNjcmlwdC1kaWFsb2ciLCBHX0NBTExCQUNLKHBsdWdpbkxvYWRlZENhbGxiYWNrKSwgdGhp
cyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2
b2lkIGNvbnRpbnVlTG9hZGluZ0FuZFdhaXRVbnRpbFNpZ25hbCgpCisgICAgeworICAgICAgICBt
X2V2ZW50ID0gTm9uZTsKKyAgICAgICAgbV9wbHVnaW4gPSBudWxscHRyOworICAgICAgICBtX3Bs
dWdpbklzVmlzaWJsZSA9IGZhbHNlOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cCk7CisgICAgfQorCisgICAgdm9pZCBhY3RpdmF0ZVBsdWdpbkFuZFdhaXRVbnRpbFNpZ25hbCgp
CisgICAgeworICAgICAgICBtX2V2ZW50ID0gTm9uZTsKKyAgICAgICAgbV9wbHVnaW4gPSBudWxs
cHRyOworICAgICAgICBnX2lkbGVfYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGRv
Q2xpY2tJZGxlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIFBsdWdpbkV2ZW50VHlwZSBtX2V2ZW50OworICAgIFdlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIG1fdW5hdmFpbGFiaWxpdHlSZWFzb247CisgICAg
V2ViS2l0UGx1Z2luKiBtX3BsdWdpbjsKKyAgICBnYm9vbGVhbiBtX3BsdWdpbklzVmlzaWJsZTsK
K307CisKKworc3RhdGljIHZvaWQgdGVzdEJsb2NraW5nUGx1Z2lucyhQbHVnaW5zV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXI6IE5v
IGNhbGxiYWNrIGNvbm5lY3RlZC4KKyAgICB0ZXN0LT5sb2FkV2ViKCk7CisgICAgdGVzdC0+d2Fp
dFVudGlsUGx1Z2luTG9hZGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBQbHVn
aW5zV2ViVmlld1Rlc3Q6Ok5vbmUpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fcGx1Z2luID09IG51
bGxwdHIpOworCisgICAgLy8gQ29ubmVjdCBjYWxsYmFjayB0byBsb2FkIG5vcm1hbGx5LgorICAg
IGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAibG9hZC1wbHVnaW4iLCBHX0NBTExC
QUNLKHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwgdGVzdCk7CisgICAgdGVzdC0+
bG9hZFdlYigpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBn
X2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNXZWJWaWV3VGVzdDo6TG9hZCk7CisgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUodGVzdC0+bV9wbHVnaW4pLCA9
PSwgIldlYktpdCBUZXN0IFBsdWdJbiIpOworICAgIHRlc3QtPndhaXRVbnRpbFBsdWdpbkxvYWRl
ZCgpOworCisgICAgLy8gQ29ubmVjdCBjYWxsYmFjayB0byBibG9jayBsb2FkLgorICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh0ZXN0LT5tX3dlYlZpZXcsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwgdGVzdCk7
CisgICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJsb2FkLXBsdWdpbiIsIEdf
Q0FMTEJBQ0sodGVzdC0+bG9hZFBsdWdpbkNhbGxiYWNrQmxvY2spLCB0ZXN0KTsKKyAgICB0ZXN0
LT5sb2FkV2ViKCk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAg
IGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gUGx1Z2luc1dlYlZpZXdUZXN0OjpMb2FkKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFtZSh0ZXN0LT5tX3BsdWdpbiks
ID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7CisKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+
bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBQbHVnaW5zV2ViVmll
d1Rlc3Q6OkJsb2NrZWQpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fcGx1Z2luSXNWaXNpYmxlKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFtZSh0ZXN0LT5tX3BsdWdp
biksID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7CisKKyAgICB0ZXN0LT5hY3RpdmF0ZVBsdWdp
bkFuZFdhaXRVbnRpbFNpZ25hbCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gUGx1
Z2luc1dlYlZpZXdUZXN0OjpVbmF2YWlsYWJsZUFjdGl2YXRlZCk7CisgICAgZ19hc3NlcnQodGVz
dC0+bV91bmF2YWlsYWJpbGl0eVJlYXNvbiA9PSBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklMSVRZ
X1JFQVNPTl9CTE9DS0VEKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRf
bmFtZSh0ZXN0LT5tX3BsdWdpbiksID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7Cit9CisKIHZv
aWQgYmVmb3JlQWxsKCkKIHsKICAgICBnU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsK
QEAgLTgyMiw2ICs5NzksNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTm90aWZpY2F0aW9uV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJub3RpZmljYXRpb24iLCB0ZXN0V2ViVmll
d05vdGlmaWNhdGlvbik7CiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlv
KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImJhY2tncm91bmQtY29s
b3IiLCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcik7CisgICAgUGx1Z2luc1dlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAiYmxvY2stcGx1Z2lucyIsIHRlc3RCbG9ja2luZ1BsdWdp
bnMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250424</attachid>
            <date>2015-04-09 00:38:40 -0700</date>
            <delta_ts>2015-04-10 04:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134357-20150409093748.patch</filename>
            <type>text/plain</type>
            <size>95670</size>
            <attacher name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMyNDU3NDA5OGE0ZTZi
MWFmN2NlZWI2ZThjZTJjNzY5M2U0ZGJkYy4uNTljM2EyN2ViY2JiYzExMTQ3ZWZhYjAyMmMyODNk
YjU1NWEyY2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA0LTA4ICBNYXJj
b3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgorCisgICAg
ICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgYmxvY2tpbmcgcGx1Z2lucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSBzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5IGFuZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzIG1ldGhvZHMgaW4gY29k
ZSBmb3IgR1RLIHBsYXRmb3JtLgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5TdHJhdGVneS5o
OgorCiAyMDE1LTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmluZyB2aWRlbyBzZWFyY2ggcmVzdWx0IHBhZ2VzIGFyZSBub3QgUGFnZUNhY2hlYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGU4NDY5NDExZTVkYzYwYmVhOTIzZmFjZTk5ZDVlZWIyNGE1YmNjNjYuLmI2
MmJkMzU5NmIwYmI0ZjQzOWNlNTBkNmViYjI2YzY4YTRhMDc2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTUtMDQtMDggIE1hcmNvcyBDaGF2YXJyw61hIFRlaWplaXJvICA8Y2hh
dmFycmlhMTk5MUBnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEFQSSB0byBhbGxvdyBi
bG9ja2luZyBwbHVnaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzQzNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnRzIEFQSSB0byBhbGxvdyB0aGUgY2xpZW50cyB0byBibG9jayBwbHVn
aW5zLgorCisgICAgICAgIFRoaXMgcmV2aXNpb24gYWRkcyBhIG1ldGhvZCB0byB0aGUgV2ViS2l0
UGx1Z2luIGNsYXNzIHRvIHNldCB0aGUgY2xpZW50IGxvYWQKKyAgICAgICAgcG9saWN5IHRvIG9u
ZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcyBvZiB0aGUgUGx1Z2luTG9hZENsaWVudFBvbGljeQor
ICAgICAgICBlbnVtOiBVTkRFRklORUQsIEFTSywgQkxPQ0sgYW5kIEFMTE9XLiBJZiBVTkRFRklO
RUQgb3IgQVNLIGFyZSBzZXQgdGhlCisgICAgICAgIGNsaWVudCBzaG91bGQgYXNrIHRoZSB1c2Vy
LCBpZiBCTE9DSyBpcyBzZXQgd2UgYmxvY2sgdGhlIHBsdWdpbiBhbmQgaWYKKyAgICAgICAgQUxM
T1cgaXMgc2V0IHdlIGFsbG93IHRoZSBwbHVnaW4gbG9hZC4KKworICAgICAgICBXZSBoYXZlIGFs
c28gYWRkIHRoZSBjbGVhciBjbGllbnQgcG9saWNpZXMgbWV0aG9kIHRvIHRoZQorICAgICAgICBX
ZWJDb250ZXh0Q2xhc3MuCisKKyAgICAgICAgVGhlIHJldmlzaW9uIGFkZHMgbmV3IHNpZ25hbHMg
dG8gdGhlIFdlYlZpZXcgY2xhc3M6CisgICAgICAgIC0gbG9hZC1wbHVnaW46IEFsbG93IHVzIHRv
IGRlY2lkZSB0aGUgcGx1Z2luIGxvYWQgcG9saWN5IHRoZSB0aGUgY2xpZW50CisgICAgICAgIHBv
bGljeSBpcyBBU0sgb3IgVU5ERUZJTkVELiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhbGxv
d3MgdGhlIHBsdWdpbgorICAgICAgICB0byBiZSBsb2FkIG5vcm1hbGx5CisgICAgICAgIC0gYmxv
Y2tlZC1wbHVnaW46IElzIGZpcmVkIHdoZW4gYSBwbHVnaW4gaXMgYmxvY2tlZC4KKyAgICAgICAg
LSB1bmF2YWlsYWJsZS1wbHVnaW4tYWN0aXZhdGVkOiBJcyBmaXJlZCB3aGVuIHdlIHRyeSB0byBl
bmFibGUgYSBwbHVnaW4KKyAgICAgICAgdGhhdCBpcyBub3QgYXZhaWxhYmxlLgorCisgICAgICAg
IFRoaXMgdGhyZWUgc2lnbmFsIGhhcyBhcyBwYXJhbWV0ZXIgc2VwYXJhdGVkIGNsYXNzZXMgdGhh
dCBob2xkCisgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBibG9ja2VkIHBsdWdpbnMgYW5k
IHRoZSByZWFzb25zIHdoeSB0aGV5IHdlcmUKKyAgICAgICAgbm90IGF2YWlsYWJsZS4KKworICAg
ICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgbmV3IGZpbGVzIHRvIGJ1aWxkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHA6IEltcGxlbWVudCBw
bHVnaW5Mb2FkUG9saWN5IGFuZCBkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbiBtZXRob2Rz
LgorICAgICAgICAoTG9hZGVyQ2xpZW50OjpwbHVnaW5Mb2FkUG9saWN5QXNrKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwOiBJbXBsZW1lbnQgc2V0X2NsaWVu
dF9wb2xpY3kgbWV0aG9kLgorICAgICAgICAod2Via2l0UGx1Z2luQ3JlYXRlKTogQWRkIHdlYiBj
b250ZXh0IHBhcmFtZXRlciB0byBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKHRvV2ViQ29yZVBsdWdp
bkxvYWRDbGllbnRQb2xpY3kpOgorICAgICAgICAod2Via2l0X3BsdWdpbl9zZXRfY2xpZW50X3Bv
bGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmg6IENyZWF0
ZSBlbnVtIFdlYktpdFBsdWdpbkxvYWRDbGllbnRQb2xpY3kuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmNwcDogQWRkZWQuIENsYXNz
IHRvIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgYmxvY2tlZCBwbHVnaW5zLgorICAgICAgICAoX1dl
YktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbjo6X1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbik6CisgICAgICAgICh3ZWJraXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25DcmVhdGUpOgor
ICAgICAgICAod2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2NvcHkpOgorICAgICAg
ICAod2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUpOgorICAgICAgICAod2Vi
a2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF9wbHVnaW4pOgorICAgICAgICAod2Vi
a2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBs
dWdpbkxvYWRSZXF1ZXN0LmNwcDogQWRkZWQuIENsYXNzIHRvIGhvbGQgaW5mb3JtYXRpb24gYWJv
dXQgcGx1Z2luIGxvYWQgcmVxdWVzdHMuCisgICAgICAgIChfV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3Q6Ol9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCk6CisgICAgICAgICh3ZWJraXRQbHVnaW5Mb2Fk
UmVxdWVzdENyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5
KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2ZyZWUpOgorICAgICAgICAo
d2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdpbik6CisgICAgICAgICh3ZWJraXRf
cGx1Z2luX2xvYWRfcmVxdWVzdF9zZXRfZGVzY3JpcHRpb24pOgorICAgICAgICAod2Via2l0X3Bs
dWdpbl9sb2FkX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRp
b24uY3BwOiBBZGRlZC4gQ2xhc3MgdG8gaG9sZCBpbmZvcm1hdGlvbiBhYm91dCB1bmF2YWlsYWJs
ZSBwbHVnaW5zLgorICAgICAgICAoX1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRp
b246Ol9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKToKKyAgICAgICAgKHdl
YmtpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25DcmVhdGUpOgorICAgICAgICAod2Vi
a2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9jb3B5KToKKyAgICAgICAgKHdl
YmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZnJlZSk6CisgICAgICAgICh3
ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24pOgorICAg
ICAgICAod2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2lu
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0
eUluZm9ybWF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDogSW1wbGVtZW50IHVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcDogSW1wbGVtZW50IGNsZWFyX3BsdWdpbl9jbGllbnRfcG9saWNp
ZXMgbWV0aG9kLgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEdldFBsdWdpblRocmVhZCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfY2xlYXJfcGx1Z2luX2NsaWVudF9wb2xpY2llcyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0
V2ViVmlld0xvYWRQbHVnaW4pOgorICAgICAgICAod2Via2l0V2ViVmlld0FjY3VtdWxhdG9yUGx1
Z2luTG9hZFBvbGljeUhhbmRsZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2lu
aXQpOiBBZGQgbmV3IHNpZ25hbHMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZFBsdWdpblJl
cXVlc3QpOgorICAgICAgICAod2Via2l0V2ViVmlld0VtaXRQbHVnaW5CbG9ja2VkKToKKyAgICAg
ICAgKHdlYktpdFdlYlZpZXdFbWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OiBBZGQgZG9jdW1lbnRhdGlv
bi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVz
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3Q6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6IEFkZCBzdXBwb3J0IGZvciBHVEsgcGxhdGZvcm0uCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6IEltcGxlbWVudCBnZXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5IG1ldGhvZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldFBsdWdpbkxv
YWRDbGllbnRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDogQWRkIHN1cHBvcnQgZm9yIEdUSyBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRXZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhv
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1
Z2luQ2FjaGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmg6CisKIDIwMTUtMDQtMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgdGhlIHdlYiBpbnNwZWN0b3IgcHJvY2VzcyBw
b29sIGxhemlseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJh
dGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJhdGVneS5oCmluZGV4IDNh
NDBjZWIyYjQzNzFiYjA1MmEwYWJlOTRjMzQxM2QxMTJmZTBlNTQuLjA4OTg1NjZkYmE0YjVjYzk4
MjcwZjQxNDNkNWNiOGQ5Mzg3ODNjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0
cmF0ZWd5LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWZy
ZXNoUGx1Z2lucygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBQ
YWdlKiwgVmVjdG9yPFBsdWdpbkluZm8+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRXZWJW
aXNpYmxlUGx1Z2luSW5mbyhjb25zdCBQYWdlKiwgVmVjdG9yPFBsdWdpbkluZm8+JikgPSAwOwot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggNDQyMWM0MDBiNDg3MWE2MWZlOTFhMmM0NjJhZjYwZGVhOTQ2MjYwZS4uYjBi
NzM0NWYxMWRkNmYxN2I2YjZlZTE3NzlmNmUyZGI3NTAxYjEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UKQEAgLTE4Miw2ICsxODIsMTUgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBsdWdpbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2lu
UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbi5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uUHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Qu
aAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZS5o
CisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0
eUluZm9ybWF0aW9uLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWls
YWJpbGl0eUluZm9ybWF0aW9uUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9saWN5Q2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeUNsaWVu
dC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0z
NzUsNiArMzg0LDkgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb24uaAogICAgICR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0LmgK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaAorICAg
ICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbi5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1
Z2luTG9hZFJlcXVlc3QuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaAogICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJhdGlvbi5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAzMjAzMDkwOTYzN2RlMjk4ZDA0ZGQ4MWY1Yjc3Y2YwY2JkM2M0
YjlhLi42YzZlYTEzYzRjZjczYTEzMmZjY2EwMjA5M2NkYWUyYzJkODFiZmVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVu
dC5jcHAKQEAgLTIyLDExICsyMiwxOCBAQAogI2luY2x1ZGUgIldlYktpdExvYWRlckNsaWVudC5o
IgogCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb1N0
b3JlLmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJXZWJLaXRC
YWNrRm9yd2FyZExpc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luQmxvY2tlZElu
Zm9ybWF0aW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTExNiw2ICsxMjMsNzEgQEAgcHJpdmF0ZToKICAg
ICAgICAgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NDcmFzaGVkKG1fd2ViVmlldyk7CiAgICAgfQog
CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyAgICBzdGF0aWMgV2ViS2l0OjpQ
bHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xpY3lBc2soV2ViS2l0V2ViVmlldyog
dmlldywgV2ViS2l0UGx1Z2luICpwbHVnaW4sIFdURjo6U3RyaW5nJiB1bmF2YWlsYWJpbGl0eURl
c2NyaXB0aW9uKQorICAgIHsKKworICAgICAgICBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVx
dWVzdCA9IHdlYmtpdFBsdWdpbkxvYWRSZXF1ZXN0Q3JlYXRlKHBsdWdpbik7CisKKyAgICAgICAg
V2ViS2l0UGx1Z2luTG9hZFBvbGljeSBsb2FkUG9saWN5ID0gd2Via2l0V2ViVmlld0xvYWRQbHVn
aW5SZXF1ZXN0KHZpZXcsIHJlcXVlc3QpOworICAgICAgICB1bmF2YWlsYWJpbGl0eURlc2NyaXB0
aW9uID0gd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKHJlcXVlc3Qp
OworCisgICAgICAgIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2ZyZWUocmVxdWVzdCk7CisK
KyAgICAgICAgc3dpdGNoIChsb2FkUG9saWN5KSB7CisgICAgICAgIGNhc2UgV0VCS0lUX1BMVUdJ
Tl9MT0FEX0JMT0NLOgorICAgICAgICAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUJsb2NrZWQ7Cisg
ICAgICAgIGNhc2UgV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOgorICAgICAgICAgICAgcmV0
dXJuIFBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFBsdWdpbk1vZHVs
ZUxvYWROb3JtYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdlYktpdDo6UGx1Z2luTW9k
dWxlTG9hZFBvbGljeSBwbHVnaW5Mb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3ksIEFQSTo6RGljdGlvbmFyeSogcGx1Z2lu
SW5mb0RpY3Rpb25hcnksIFdURjo6U3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoID0gcGx1Z2lu
SW5mb0RpY3Rpb25hcnktPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5
KCkpLT5zdHJpbmcoKTsKKyAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW5Nb2R1bGVJbmZv
ID0gcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wbHVnaW5JbmZvU3RvcmUoKS5pbmZvRm9y
UGx1Z2luV2l0aFBhdGgocGx1Z2luUGF0aCk7CisgICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2lu
ID0gd2Via2l0UGx1Z2luQ3JlYXRlKHBsdWdpbk1vZHVsZUluZm8sIHdlYmtpdF93ZWJfdmlld19n
ZXRfY29udGV4dChtX3dlYlZpZXcpKTsKKyAgICAgICAgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVu
dFBvbGljeSBjbGllbnRQb2xpY3k7CisKKyAgICAgICAgVVJMIHVybCA9IFVSTChudWxscHRyLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpKTsKKyAgICAgICAgcGFnZS5wcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5nZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVybC5ob3N0KCksIHBs
dWdpbk1vZHVsZUluZm8uaW5mby5maWxlLCAiKiIsIGNsaWVudFBvbGljeSk7CisKKyAgICAgICAg
c3dpdGNoIChjbGllbnRQb2xpY3kpIHsKKyAgICAgICAgY2FzZSBQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5VW5kZWZpbmVkOgorICAgICAgICBjYXNlIFBsdWdpbkxvYWRDbGllbnRQb2xpY3lBc2s6Cisg
ICAgICAgICAgICByZXR1cm4gcGx1Z2luTG9hZFBvbGljeUFzayhtX3dlYlZpZXcsIHBsdWdpbiwg
dW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7CisgICAgICAgIGNhc2UgUGx1Z2luTG9hZENsaWVu
dFBvbGljeUJsb2NrOgorICAgICAgICAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUJsb2NrZWQ7Cisg
ICAgICAgIGNhc2UgUGx1Z2luTG9hZENsaWVudFBvbGljeUFsbG93OgorICAgICAgICBjYXNlIFBs
dWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5czoKKyAgICAgICAgICAgIHJldHVybiBQbHVn
aW5Nb2R1bGVMb2FkTm9ybWFsbHk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBQbHVnaW5Nb2R1bGVMb2FkTm9y
bWFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQbHVn
aW5WZXJzaW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OkRpY3Rpb25hcnkqIHBs
dWdpbkluZm9EaWN0aW9uYXJ5KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoID0gcGx1Z2luSW5mb0RpY3Rpb25hcnktPmdldDxBUEk6OlN0cmluZz4ocGx1
Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLT5zdHJpbmcoKTsKKyAgICAgICAgUGx1Z2luTW9kdWxl
SW5mbyBwbHVnaW5Nb2R1bGVJbmZvID0gcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wbHVn
aW5JbmZvU3RvcmUoKS5pbmZvRm9yUGx1Z2luV2l0aFBhdGgocGx1Z2luUGF0aCk7CisgICAgICAg
IFdlYktpdFBsdWdpbiogcGx1Z2luID0gd2Via2l0UGx1Z2luQ3JlYXRlKHBsdWdpbk1vZHVsZUlu
Zm8sIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dChtX3dlYlZpZXcpKTsKKworICAgICAgICBn
Ym9vbGVhbiBpc1Zpc2libGUgPSBwbHVnaW5JbmZvRGljdGlvbmFyeS0+Z2V0PEFQSTo6Qm9vbGVh
bj4ocGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCkpLT52YWx1ZSgpOwor
CisgICAgICAgIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiogaW5mbyA9IHdlYmtpdFBs
dWdpbkJsb2NrZWRJbmZvcm1hdGlvbkNyZWF0ZShwbHVnaW4sIGlzVmlzaWJsZSk7CisKKyAgICAg
ICAgd2Via2l0V2ViVmlld0VtaXRQbHVnaW5CbG9ja2VkKG1fd2ViVmlldywgaW5mbyk7CisKKyAg
ICAgICAgd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUoaW5mbyk7CisgICAg
fQorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKICAgICBXZWJLaXRX
ZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcAppbmRleCBiNmRlYzFkM2E5ZWFlMWRjMWZmODI5NjBi
OWM1MTRkZWE1NWI4YjNlLi44YWViOTc3ZWE5M2E5MWY4MDFiOTZlNmMwY2JmYTlmOThjM2RkZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdp
bi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIldlYktpdE1pbWVJbmZvUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTUxLDYgKzUyLDcgQEAgc3RydWN0IF9XZWJLaXRQbHVn
aW5Qcml2YXRlIHsKICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uOwogICAgIENTdHJpbmcgcGF0aDsK
ICAgICBHTGlzdCogbWltZUluZm9MaXN0OworICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQ7
CiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0UGx1Z2luLCB3ZWJraXRfcGx1Z2luLCBH
X1RZUEVfT0JKRUNUKQpAQCAtNTksMTAgKzYxLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9wbHVn
aW5fY2xhc3NfaW5pdChXZWJLaXRQbHVnaW5DbGFzcyopCiB7CiB9CiAKLVdlYktpdFBsdWdpbiog
d2Via2l0UGx1Z2luQ3JlYXRlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitX
ZWJLaXRQbHVnaW4qIHdlYmtpdFBsdWdpbkNyZWF0ZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBw
bHVnaW5JbmZvLCBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIFdlYktpdFBsdWdp
biogcGx1Z2luID0gV0VCS0lUX1BMVUdJTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfUExVR0lO
LCBOVUxMKSk7CiAgICAgcGx1Z2luLT5wcml2LT5wbHVnaW5JbmZvID0gcGx1Z2luSW5mbzsKKyAg
ICBwbHVnaW4tPnByaXYtPmNvbnRleHQgPSBjb250ZXh0OwogICAgIHJldHVybiBwbHVnaW47CiB9
CiAKQEAgLTE0OSwzICsxNTIsMzkgQEAgR0xpc3QqIHdlYmtpdF9wbHVnaW5fZ2V0X21pbWVfaW5m
b19saXN0KFdlYktpdFBsdWdpbiogcGx1Z2luKQogICAgICAgICBwbHVnaW4tPnByaXYtPm1pbWVJ
bmZvTGlzdCA9IGdfbGlzdF9wcmVwZW5kKHBsdWdpbi0+cHJpdi0+bWltZUluZm9MaXN0LCB3ZWJr
aXRNaW1lSW5mb0NyZWF0ZShwbHVnaW4tPnByaXYtPnBsdWdpbkluZm8uaW5mby5taW1lc1tpXSkp
OwogICAgIHJldHVybiBwbHVnaW4tPnByaXYtPm1pbWVJbmZvTGlzdDsKIH0KKworc3RhdGljIGlu
bGluZSBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHRvV2ViQ29yZVBsdWdpbkxvYWRD
bGllbnRQb2xpY3koV2ViS2l0UGx1Z2luTG9hZENsaWVudFBvbGljeSBwb2xpY3kpCit7CisgICAg
c3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9M
SUNZX1VOREVGSU5FRDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQ
b2xpY3lVbmRlZmluZWQ7CisgICAgY2FzZSBXRUJLSVRfUExVR0lOX0xPQURfQ0xJRU5UX1BPTElD
WV9CTE9DSzoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lC
bG9jazsKKyAgICBjYXNlIFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9MSUNZX0FTSzoKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lBc2s7CisgICAgY2Fz
ZSBXRUJLSVRfUExVR0lOX0xPQURfQ0xJRU5UX1BPTElDWV9BTExPVzoKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvdzsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBv
bGljeUJsb2NrOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fc2V0X2NsaWVudF9wb2xpY3k6
CisgKiBAcGx1Z2luOiBhICNXZWJLaXRQbHVnaW4KKyAqIEBob3N0OiBhIGhvc3QgbmFtZQorICog
QHBvbGljeTogYSAjV2ViS2l0UGx1Z2luTG9hY0NsaWVudFBvbGljeQorICoKKyAqIFNldCB0aGUg
cG9saWN5IGZvciB0aGUgZ2l2ZW4gcGx1Z2luIGFuZCBob3N0IHRvIEBwb2xpY3kuCisgKgorICog
U2luY2U6IDIuMTAKKyAqLwordm9pZCB3ZWJraXRfcGx1Z2luX3NldF9jbGllbnRfcG9saWN5KFdl
YktpdFBsdWdpbiAqcGx1Z2luLCBjb25zdCBnY2hhciAqaG9zdCwgV2ViS2l0UGx1Z2luTG9hZENs
aWVudFBvbGljeSBwb2xpY3kpCit7CisgICAgU3RyaW5nIHNIb3N0ID0gU3RyaW5nOjpmcm9tVVRG
OChob3N0KTsKKyAgICBXZWJQcm9jZXNzUG9vbCogd2ViQ29udGV4dCA9IHdlYmtpdFdlYkNvbnRl
eHRHZXRDb250ZXh0KHBsdWdpbi0+cHJpdi0+Y29udGV4dCk7CisgICAgV2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeSB3Y1BvbGljeSA9IHRvV2ViQ29yZVBsdWdpbkxvYWRDbGllbnRQb2xp
Y3kocG9saWN5KTsKKworICAgIHdlYkNvbnRleHQtPnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3ko
d2NQb2xpY3ksIHNIb3N0LCBwbHVnaW4tPnByaXYtPnBsdWdpbkluZm8uaW5mby5maWxlLCAiKiIp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4u
aAppbmRleCBkNzUzM2M5MjBlNGEyNjk3ZjQ4ZThlMmIzNzFmYWFmNjJhY2UzMjY1Li4xMTE4Nzcx
MzcwMTUwZTAxOWExZDI5NGFjZGEzMDk0OTE0YjBhOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uaApAQCAtNTUsMjEgKzU1LDQyIEBAIHN0
cnVjdCBfV2ViS2l0UGx1Z2luQ2xhc3MgewogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykg
KHZvaWQpOwogfTsKIAorCisvKioKKyAqIFdlYktpdFBsdWdpbkxvYWRDbGllbnRQb2xpY3kKKyAq
IEBXRUJLSVRfUExVR0lOX0xPQURfQ0xJRU5UX1BPTElDWV9BU0s6IFRoZSBjbGllbnQgd2lsbCBh
c2sgdGhlIHVzZXIgaWYgdGhleSB3YW50IHRvIGxvYWQgdGhlIHBsdWdpbi4KKyAqIEBXRUJLSVRf
UExVR0lOX0xPQURfQ0xJRU5UX1BPTElDWV9VTkRFRklORUQ6IE5vIHBvbGljeSBoYXMgYmVlbiBk
ZWZpbmVkLiBUaGUgY2xpZW50IHdpbGwgYXNrIHRoZSB1c2VyLgorICogQFdFQktJVF9QTFVHSU5f
TE9BRF9DTElFTlRfUE9MSUNZX0JMT0NLOiBUaGUgY2xpZW50IHdpbGwgYmxvY2sgdGhlIHBsdWdp
biBsb2FkLgorICogQFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9MSUNZX0FMTE9XOiBUaGUg
Y2xpZW50IHdpbGwgYWxsb3cgdGhlIHBsdWdpbiBsb2FkLgorICoKKyAqIFNpbmNlOiAyLjEwCisg
Ki8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX1BMVUdJTl9MT0FEX0NMSUVOVF9QT0xJQ1lf
QVNLLAorICAgIFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9MSUNZX1VOREVGSU5FRCwKKyAg
ICBXRUJLSVRfUExVR0lOX0xPQURfQ0xJRU5UX1BPTElDWV9CTE9DSywKKyAgICBXRUJLSVRfUExV
R0lOX0xPQURfQ0xJRU5UX1BPTElDWV9BTExPVworfSBXZWJLaXRQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5OworCiBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJraXRfcGx1Z2luX2dldF90eXBlICAgICAgICAg
ICAodm9pZCk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3BsdWdpbl9nZXRf
bmFtZSAgICAgICAgICAgKFdlYktpdFBsdWdpbiAqcGx1Z2luKTsKK3dlYmtpdF9wbHVnaW5fZ2V0
X25hbWUgICAgICAgICAgIChXZWJLaXRQbHVnaW4gICAgICAgICAgICAgICAgKnBsdWdpbik7CiAK
IFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3BsdWdpbl9nZXRfZGVzY3JpcHRpb24g
ICAgKFdlYktpdFBsdWdpbiAqcGx1Z2luKTsKK3dlYmtpdF9wbHVnaW5fZ2V0X2Rlc2NyaXB0aW9u
ICAgIChXZWJLaXRQbHVnaW4gICAgICAgICAgICAgICAgKnBsdWdpbik7CiAKIFdFQktJVF9BUEkg
Y29uc3QgZ2NoYXIgKgotd2Via2l0X3BsdWdpbl9nZXRfcGF0aCAgICAgICAgICAgKFdlYktpdFBs
dWdpbiAqcGx1Z2luKTsKK3dlYmtpdF9wbHVnaW5fZ2V0X3BhdGggICAgICAgICAgIChXZWJLaXRQ
bHVnaW4gICAgICAgICAgICAgICAgKnBsdWdpbik7CiAKIFdFQktJVF9BUEkgR0xpc3QgKgotd2Vi
a2l0X3BsdWdpbl9nZXRfbWltZV9pbmZvX2xpc3QgKFdlYktpdFBsdWdpbiAqcGx1Z2luKTsKK3dl
YmtpdF9wbHVnaW5fZ2V0X21pbWVfaW5mb19saXN0IChXZWJLaXRQbHVnaW4gICAgICAgICAgICAg
ICAgKnBsdWdpbik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BsdWdpbl9zZXRfY2xpZW50
X3BvbGljeSAgKFdlYktpdFBsdWdpbiAgICAgICAgICAgICAgICAqcGx1Z2luLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAqaG9z
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5IHBvbGljeSk7CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxYzA3MmI2NmU0MDMyZWZjZGZlZDZi
NTdmMTkzODM4YTRiMzYxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uY3BwCkBAIC0wLDAg
KzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uaCIK
KworI2luY2x1ZGUgIldlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGUuaCIKKwor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbgorICogQFNo
b3J0X2Rlc2NyaXB0aW9uOiBJbmZvcm1hdGlvbiBhYm91dCBhIGJsb2NrZWQgcGx1Z2luLgorICog
QFRpdGxlOiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqIEBTZWVfYWxzbzogI1dl
YktpdFdlYlZpZXcKKyAqCisgKiBXaGVuIFdlYktpdCBibG9ja3MgYSBwbHVnaW4gbG9hZCBpdCBh
bHNvIGZpcmVzIHRoZSAjV2ViS2l0V2ViVmlldzo6cGx1Z2luLWJsb2NrZWQgc2lnbmFsCisgKiB3
aXRoIGEgI1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiBvYmplY3QuIFRoaXMgb2JqZWN0
IGFsbG93cyB0aGUgY2xpZW50ZSB0byBnZXQKKyAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBibG9j
a2VkIHBsdWdpbiBzdWNoIGFzIHdoZXRoZXIgaXQgaXMgdmlzaWJsZSBpbiB0aGUgdmlldy4KKyAq
LworCitzdHJ1Y3QgX1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiB7CisgICAgX1dlYktp
dFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbihXZWJLaXRQbHVnaW4qIHVuYXZhaWxhYmxlUGx1Z2lu
LCBnYm9vbGVhbiBpc1Zpc2libGUpCisgICAgICAgIDogcGx1Z2luKHVuYXZhaWxhYmxlUGx1Z2lu
KQorICAgICAgICAsIHZpc2libGUoaXNWaXNpYmxlKQorICAgIHsKKyAgICB9CisKKyAgICBfV2Vi
S2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
biogaW5mbykKKyAgICAgICAgOiBwbHVnaW4oaW5mby0+cGx1Z2luKQorICAgICAgICAsIHZpc2li
bGUoaW5mby0+dmlzaWJsZSkKKyAgICB7CisgICAgfQorCisgICAgV2ViS2l0UGx1Z2luKiBwbHVn
aW47CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2Vi
S2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLCB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3Jt
YXRpb24sIHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9jb3B5LCB3ZWJraXRfcGx1
Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZnJlZSkKKworV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uKiB3ZWJraXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25DcmVhdGUoV2ViS2l0UGx1Z2lu
KiBwbHVnaW4sIGdib29sZWFuIGlzVmlzaWJsZSkKK3sKKyAgICBXZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb24qIGluZm8gPSBnX3NsaWNlX25ldyhXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb24pOworICAgIG5ldyAoaW5mbykgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKHBs
dWdpbiwgaXNWaXNpYmxlKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiB3ZWJraXRf
cGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weQorICogQGluZm86IHRoZSBXZWJLaXRQbHVn
aW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBNYWtlIGEgY29weSBvZiBAaW5mby4KKyAqCisg
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgb24gQGluZm8uCisg
KgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiB3
ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weShXZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb24qIGluZm8pCit7CisgICAgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9u
KiBjb3B5SW5mbyA9IGdfc2xpY2VfbmV3KFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbik7
CisgICAgbmV3IChjb3B5SW5mbykgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKGluZm8p
OworICAgIHJldHVybiBjb3B5SW5mbzsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2Jsb2Nr
ZWRfaW5mb3JtYXRpb25fZnJlZQorICogQGluZm86IHRoZSBXZWJLaXRQbHVnaW5CbG9ja2VkSW5m
b3JtYXRpb24KKyAqCisgKiBGcmVlIEBpbmZvLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK3Zv
aWQgd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUoV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdfc2xpY2VfZnJlZShXZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24sIGluZm8pOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fYmxv
Y2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luCisgKiBAaW5mbzogdGhlICNXZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBHZXQgdGhlICNXZWJLaXRQbHVnaW4gb2YgdGhlIEBp
bmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRQbHVnaW4u
CisgKgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1Z2luKiB3ZWJraXRfcGx1Z2luX2Js
b2NrZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b24qIGluZm8pCit7CisgICAgcmV0dXJuIGluZm8tPnBsdWdpbjsKK30KKworLyoqCisgKiB3ZWJr
aXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25faXNfdmlzaWJsZQorICogQGluZm86IHRoZSAj
V2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uCisgKgorICogV2hldGhlciB0aGUgcGx1Z2lu
IGlzIHZpc2libGUgb24gdGhlIHBhZ2Ugb3IgaXQgaGFzIGJlZW4gb2JzY3VyZWQuCisgKgorICog
UmV0dXJuczogJVRSVUUgaWYgdGhlIHBsdWdpbiBpcyB2aXNpYmxlIG9yICVGQUxTRSBvdGhlcndp
c2UuCisgKgorICogU2luY2U6IDIuMTAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3BsdWdpbl9ibG9j
a2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUoV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9u
KiBpbmZvKQoreworICAgIHJldHVybiBpbmZvLT52aXNpYmxlOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9j
a2VkSW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzM3M2MwN2YwYzM1NzM5ZjU5YTgxY2YzMWNm
MWVlMTEyMmQzZjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19X
RUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJy
b3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgor
I2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uX2gKKyNkZWZp
bmUgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uX2gKKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKKyNpbmNsdWRlICJX
ZWJLaXRQbHVnaW4uaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1BM
VUdJTl9CTE9DS0VEX0lORk9STUFUSU9OICh3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRp
b25fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb247CisKK1dFQktJVF9BUEkgR1R5
cGUKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfdHlwZSAgICAgICAgKHZv
aWQpOworCitXRUJLSVRfQVBJIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqCit3ZWJr
aXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weSAgICAgICAgICAgIChXZWJLaXRQbHVn
aW5CbG9ja2VkSW5mb3JtYXRpb24gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9w
bHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlICAgICAgICAgICAgKFdlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2luICoKK3dl
YmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luICAgICAgKFdlYktpdFBs
dWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxlICAgICAgKFdlYktpdFBs
dWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAv
L1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9j
a2VkSW5mb3JtYXRpb25Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTE0M2Q5MGNiZjEyMWQ5OGY5NGYx
MjNlM2IzNTMyZDI4YzA1YjljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGUuaApA
QCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uUHJpdmF0ZV9oCisjZGVmaW5lIFdl
YktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgiCisKK1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbiAqIHdlYmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbkNyZWF0ZShXZWJLaXRQbHVnaW4q
LCBnYm9vbGVhbik7CisKKyNlbmRpZiAvLyBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Q
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBsdWdpbkxvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTQ1ZjFlOGM2NzNl
MDZiNjVjMjllODVkYWJmZjNlYmViY2RjYjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuY3BwCkBAIC0w
LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oIgorCisj
aW5jbHVkZSAiV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlLmgiCisKKy8qKgorICogU0VD
VElPTjogV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBy
ZXF1ZXN0IHRvIGxvYWQgYSBwbHVnaW4uCisgKiBAVGl0bGU6IFdlYktpdFBsdWdpbkxvYWRSZXF1
ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgorICogV2hlbiBhIHBsdWdpbiBp
cyBnb2luZyB0byBiZSBsb2FkZWQgYW5kIFdlYktpdCBuZWVkcyB0byBhc2sgdGhlIGNsaWVudCBp
ZiBpdAorICogc2hvdWxkIGJlIGxvYWRlZCBpdCB3aWxsIGZpcmUgdGhlICNXZWJLaXRXZWJWaWV3
Ojpsb2FkLXBsdWdpbiBzaWduYWwgd2l0aCBhCisgKiAjV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Qg
b2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGFsbG93IHRoZSBjbGllbnQgdG8gaW5zcGVjdAorICog
aW5mb3JtYXRpb24gYWJvdXQgdGhlIHBsdWdpbiB0aGF0IHdhbnQgdG8gYmUgbG9hZGVkIGFuZCB0
byBzZXQgYSBkZXNjcmlwdGlvbgorICogYWJvdXQgd2h5IGl0J3Mgbm90IGdvaW5nIHRvIGJlIGxv
YWRlZC4KKyAqCisgKiBJZiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVkIFdlYktpdCB3aWxsIGxv
YWQgdGhlIHBsdWdpbiBub3JtYWxseS4KKyAqLworCitzdHJ1Y3QgX1dlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0IHsKKyAgICBfV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QoV2ViS2l0UGx1Z2luKiB1bmF2
YWlsYWJsZVBsdWdpbikKKyAgICAgICAgOiBwbHVnaW4odW5hdmFpbGFibGVQbHVnaW4pCisgICAg
ICAgICwgZGVzYygwKQorICAgIHsKKyAgICB9CisKKyAgICBfV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3QoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QpCisgICAgICAgIDogcGx1Z2luKHJl
cXVlc3QtPnBsdWdpbikKKyAgICAgICAgLCBkZXNjKHJlcXVlc3QtPmRlc2MpCisgICAgeworICAg
IH0KKworICAgIFdlYktpdFBsdWdpbiogcGx1Z2luOworICAgIGNvbnN0IGdjaGFyKiBkZXNjOwor
fTsKKworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LCB3ZWJr
aXRfcGx1Z2luX2xvYWRfcmVxdWVzdCwgd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfY29weSwg
d2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZSkKKworV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3QqIHdlYmtpdFBsdWdpbkxvYWRSZXF1ZXN0Q3JlYXRlKFdlYktpdFBsdWdpbiogcGx1Z2luKQor
eworICAgIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXN1bHQgPSBnX3NsaWNlX25ldyhXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdCk7CisgICAgbmV3IChyZXN1bHQpIFdlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0KHBsdWdpbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqCisgKiB3ZWJraXRf
cGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5CisgKiBAcmVxdWVzdDogdGhlIFdlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0CisgKgorICogTWFrZSBhIGNvcHkgb2YgQHJlcXVlc3QuCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIG9uICNXZWJLaXRQbHVnaW5Mb2Fk
UmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCitXZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dCogd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfY29weShXZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVzdWx0ID0gZ19z
bGljZV9uZXcoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QpOworICAgIG5ldyAocmVzdWx0KSBXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisv
KioKKyAqIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2ZyZWUKKyAqIEByZXF1ZXN0OiB0aGUg
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKKyAqCisgKiBGcmVlIEByZXF1ZXN0LgorICoKKyAqIFNp
bmNlOiAyLjEwCisgKi8KK3ZvaWQgd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZShXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0
UGx1Z2luTG9hZFJlcXVlc3QsIHJlcXVlc3QpOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5f
bG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4KKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0CisgKgorICogR2V0IHRoZSAjV2ViS2l0UGx1Z2luIG9mIHRoZSBAcmVxdWVzdC4K
KyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0UGx1Z2luLgorICoK
KyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdpbiogd2Via2l0X3BsdWdpbl9sb2FkX3Jl
cXVlc3RfZ2V0X3BsdWdpbihXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICByZXR1cm4gcmVxdWVzdC0+cGx1Z2luOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fbG9h
ZF9yZXF1ZXN0X3NldF9kZXNjcmlwdGlvbgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0UGx1Z2lu
TG9hZFJlcXVlc3QKKyAqIEBkZXNjcmlwdGlvbjogdGhlIGRlc2NyaXB0aW9uLgorICoKKyAqIFNl
dCB0aGUgZGVzY3JpcHRpb24gYWJvdXQgd2h5IHRoZSBwbHVnaW4gaXMgYmVpbmcgbG9hZGVkIHdp
dGggc29tZSBwb2xpY3kuCisgKgorICogU2luY2U6IDIuMTAKKyAqLwordm9pZCB3ZWJraXRfcGx1
Z2luX2xvYWRfcmVxdWVzdF9zZXRfZGVzY3JpcHRpb24oV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Qq
IHJlcXVlc3QsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQoreworICAgIHJlcXVlc3QtPmRlc2Mg
PSBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgY2hhciogd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVl
c3RfZ2V0X2Rlc2NyaXB0aW9uKFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIHJldHVybiByZXF1ZXN0LT5kZXNjOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjRlZThhMDBmMDBjMzE4YjczZjgxYTM3MGJiZmU5NzliMDQwYjkzMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdF
QktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4g
YmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luTG9h
ZFJlcXVlc3RfaAorI2RlZmluZSBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdF9oCisKKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCisj
aW5jbHVkZSAiV2ViS2l0UGx1Z2luLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJL
SVRfVFlQRV9QTFVHSU5fTE9BRF9SRVFVRVNUICh3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9n
ZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QgV2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3Q7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9wbHVnaW5f
bG9hZF9yZXF1ZXN0X2dldF90eXBlICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0
UGx1Z2luTG9hZFJlcXVlc3QgKgord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfY29weSAgICAg
ICAgICAgIChXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZSAgICAgICAgICAgIChXZWJLaXRQ
bHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2luICoK
K3dlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4gICAgICAoV2ViS2l0UGx1Z2lu
TG9hZFJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wbHVnaW5f
bG9hZF9yZXF1ZXN0X3NldF9kZXNjcmlwdGlvbiAoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QgKnJl
cXVlc3QsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uKTsKKworCitHX0VORF9ERUNMUworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBs
dWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3NTA5MjU3
MzExZTI5NTZiZTY4NTkxYzAwMDM1NTMzZjM4MDNlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0
ZS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJL
aXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luTG9h
ZFJlcXVlc3QuaCIKKworV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QgKiB3ZWJraXRQbHVnaW5Mb2Fk
UmVxdWVzdENyZWF0ZShXZWJLaXRQbHVnaW4gKik7Citjb25zdCBjaGFyKiB3ZWJraXRfcGx1Z2lu
X2xvYWRfcmVxdWVzdF9nZXRfZGVzY3JpcHRpb24oV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqKTsK
KworI2VuZGlmIC8vIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Qcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Qcml2YXRlLmgK
aW5kZXggM2ZlMmFjMGJmYTU2ZmU1MWM3OTIxYjJjNmNjMDVmMjVkMTU1MzRjOC4uMGVjM2I2MTE1
M2U0MmY4MDk1YmNhZWRmNDU1NDYyM2FlMWIxNTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblByaXZhdGUuaApAQCAtMjMsNyAr
MjMsOCBAQAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbmNsdWRlICJXZWJLaXRQ
bHVnaW4uaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dC5oIgogCi1XZWJLaXRQbHVnaW4qIHdlYmtpdFBsdWdpbkNyZWF0ZShjb25zdCBXZWJL
aXQ6OlBsdWdpbk1vZHVsZUluZm8mKTsKK1dlYktpdFBsdWdpbiogd2Via2l0UGx1Z2luQ3JlYXRl
KGNvbnN0IFdlYktpdDo6UGx1Z2luTW9kdWxlSW5mbyYsIFdlYktpdFdlYkNvbnRleHQqKTsKIAog
I2VuZGlmIC8vIFdlYktpdFBsdWdpblByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eUluZm9ybWF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmU4NjAwMGM2NmQzOTM5NjI1
NmEyM2UyZjY0ZjU4NTIxMGY1OWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5j
cHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb24uaCIKKworI2luY2x1ZGUgIldlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5
SW5mb3JtYXRpb25Qcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0UGx1Z2luVW5h
dmFpbGFiaWxpdHlJbmZvcm1hdGlvbgorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBJbmZvcm1hdGlv
biBhYm91dCB0aGUgdW5hdmFpbGFiaWxpdHkgb2YgYSBjZXJ0YWluIHBsdWdpbi4KKyAqIEBUaXRs
ZTogV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbgorICogQFNlZV9hbHNvOiAj
V2ViS2l0V2ViVmlldworICoKKyAqIFdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gYWN0aXZhdGUgYSBw
bHVnaW4gdGhhdCBpcyBibG9ja2VkIG9yIG1pc3NpbmcgV2ViS2l0IHdpbGwgZmlyZQorICogYSAj
V2ViS2l0V2ViVmlldzo6dW5hdmFpbGFibGUtcGx1Z2luLWFjdGl2YXRlZCBzaWduYWwgd2l0aCBh
CisgKiAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiBvYmplY3QsIHdoaWNo
IHdpbGwgYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbgorICogdG8gaW5zcGVjdCBkZXRhaWxz
IGFib3V0IHRoZSB1bmF2YWlsYWJpbGl0eSBvZiB0aGUgcGx1Z2luLgorICovCisKK3N0cnVjdCBf
V2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiB7CisgICAgX1dlYktpdFBsdWdp
blVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24oV2ViS2l0UGx1Z2luKiB1bmF2YWlsYWJsZVBsdWdp
biwgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gdW5hdmFpbGFiaWxpdHlSZWFzb24p
CisgICAgICAgIDogcGx1Z2luKHVuYXZhaWxhYmxlUGx1Z2luKQorICAgICAgICAsIHJlYXNvbih1
bmF2YWlsYWJpbGl0eVJlYXNvbikKKyAgICB7CisgICAgfQorCisgICAgX1dlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24oV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbiogaW5mbykKKyAgICAgICAgOiBwbHVnaW4oaW5mby0+cGx1Z2luKQorICAgICAgICAsIHJl
YXNvbihpbmZvLT5yZWFzb24pCisgICAgeworICAgIH0KKworICAgIFdlYktpdFBsdWdpbiogcGx1
Z2luOworICAgIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHJlYXNvbjsKKyAgICBj
b25zdCBnY2hhciogdXJpOworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2lu
Zm9ybWF0aW9uLCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2NvcHks
IHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZnJlZSk7CisKK1dlYktp
dFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIHdlYmtpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb25DcmVhdGUoV2ViS2l0UGx1Z2luKiBwbHVnaW4sIFdlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uIHJlYXNvbikKK3sKKyAgICBXZWJLaXRQbHVnaW5VbmF2YWlsYWJp
bGl0eUluZm9ybWF0aW9uKiByZXN1bHQgPSBnX3NsaWNlX25ldyhXZWJLaXRQbHVnaW5VbmF2YWls
YWJpbGl0eUluZm9ybWF0aW9uKTsKKyAgICBuZXcgKHJlc3VsdCkgV2ViS2l0UGx1Z2luVW5hdmFp
bGFiaWxpdHlJbmZvcm1hdGlvbihwbHVnaW4sIHJlYXNvbik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2Nv
cHkKKyAqIEBpbmZvOiBhICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uCisg
KgorICogTWFrZSBhIGNvcHkgb2YgQGluZm8uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1
bGwpOiBBIGNvcHkgb2YgcGFzc2VkIG9uICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9y
bWF0aW9uLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb24qIHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25f
Y29weShXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAg
IFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIHJlc3VsdCA9IGdfc2xpY2Vf
bmV3KFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24pOworICAgIG5ldyAocmVz
dWx0KSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKGluZm8pOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9p
bmZvcm1hdGlvbl9mcmVlCisgKiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvbgorICoKKyAqIEZyZWUgQGluZm8uCisgKgorICogU2luY2U6IDIuMTAKKyAqLwor
dm9pZCB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2ZyZWUoV2ViS2l0
UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbykKK3sKKyAgICBnX3NsaWNlX2Zy
ZWUoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiwgaW5mbyk7Cit9CisKKy8q
KgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcmVhc29u
CisgKiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbgorICoK
KyAqIEdldCB0aGUgcmVhc29uIG9mIHRoZSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZv
cm1hdGlvbi4KKyAqCisgKiBSZXR1cm5zOiBhICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uIHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNv
bihXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIHJl
dHVybiBpbmZvLT5yZWFzb247Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJp
bGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luCisgKiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5h
dmFpbGFiaWxpdHlJbmZvcm1hdGlvbgorICoKKyAqIEdldCB0aGUgcGx1Z2luIG9mIEBpbmZvLgor
ICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRQbHVnaW4gb2YgdGhl
ICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLgorICoKKyAqIFNpbmNlOiAy
LjEwCisgKi8KK1dlYktpdFBsdWdpbiogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZv
cm1hdGlvbl9nZXRfcGx1Z2luKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24q
IGluZm8pCit7CisgICAgcmV0dXJuIGluZm8tPnBsdWdpbjsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5m
b3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdp
blVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzk5YjBlYWI0NjA3NTRj
MTg1MjExYzZhZmFjMTU1YjdkYTJjOGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlv
bi5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQy
X0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGlu
Y2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXR5SW5mb3JtYXRpb25faAorI2RlZmluZSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUlu
Zm9ybWF0aW9uX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW4uaCIKKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9JTkZP
Uk1BVElPTiAod2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfdHlw
ZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbiBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uOworCisvKioKKyAqIFdl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uOgorICogQFdFQktJVF9QTFVHSU5fVU5BVkFJ
TEFCSUxJVFlfUkVBU09OX01JU1NJTkc6IFRoZSBwbHVnaW4gaXMgbWlzc2luZy4KKyAqIEBXRUJL
SVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9CTE9DS0VEOiBUaGUgcGx1Z2luIGlzIGJs
b2NrZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICogQFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJ
VFlfUkVBU09OX0NSQVNIRUQ6IFRoZSBwbHVnaW4gY3Jhc2hlZC4KKyAqIEVudW0gdmFsdWVzIHJl
cHJlc2VudGluZyByZWFzb25zIGZvciBwbHVnaW4gdW5hdmFpbGFiaWxpdHkuCisgKgorICogU2lu
Y2U6IDIuMTAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfUExVR0lOX1VOQVZBSUxB
QklMSVRZX1JFQVNPTl9NSVNTSU5HLAorICAgIFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJVFlf
UkVBU09OX0JMT0NLRUQsCisgICAgV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05f
Q1JBU0hFRAorfSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbjsKKworV0VCS0lUX0FQ
SSBHVHlwZQord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfdHlw
ZSAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5
SW5mb3JtYXRpb24gKgord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9j
b3B5ICAgICAgICAgICAgKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKmlu
Zm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5m
b3JtYXRpb25fZnJlZSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9y
bWF0aW9uICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbgord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcmVhc29u
ICAgICAgKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKmluZm8pOworCitX
RUJLSVRfQVBJIFdlYktpdFBsdWdpbiAqCit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2lu
Zm9ybWF0aW9uX2dldF9wbHVnaW4gICAgICAoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZv
cm1hdGlvbiAqaW5mbyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGZkMDY5YjVjMzE1MDJhYTQxYjI3NmExYjczNjBlM2E2OTEwOWM2YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxh
YmlsaXR5SW5mb3JtYXRpb25Qcml2YXRlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb25Qcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvblByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luVW5hdmFpbGFi
aWxpdHlJbmZvcm1hdGlvbi5oIgorCitXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0
aW9uKiB3ZWJraXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uQ3JlYXRlKFdlYktpdFBs
dWdpbiosIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKTsKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAK
aW5kZXggZWQzODRjYmRlYjI4MTAxNTA0ZDBhOTE5MmU5ZTIxNzg2ODFhNWMzMi4uMTFkOWU4NDEy
MzU0ODc3YTVhY2RhZTgwZTlkZjc0ZTNiZTM1MGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjEsMTAgKzIxLDE0
IEBACiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKIAogI2luY2x1ZGUgIkFQSVVJQ2xpZW50
LmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dFBsdWdpblByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUlu
Zm9ybWF0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgpAQCAtMzIsNiArMzYsNyBAQAogI2luY2x1ZGUgIldl
YktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogCkBAIC0xOTEsNiArMTk2LDM4IEBAIHByaXZhdGU6CiAgICAg
ICAgIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQobV93ZWJWaWV3KTsKICAgICB9
CiAKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICB2aXJ0dWFsIHZvaWQgdW5h
dmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlLCBX
S1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHdrcmVhc29uLCBBUEk6OkRpY3Rpb25hcnkqIHBs
dWdpbkluZm9EaWN0aW9uYXJ5KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24gcmVhc29uOworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdp
bjsKKworICAgICAgICBzd2l0Y2ggKHdrcmVhc29uKSB7CisgICAgICAgIGNhc2Uga1dLUGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb25QbHVnaW5NaXNzaW5nOgorICAgICAgICAgICAgcmVhc29uID0g
V0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fTUlTU0lORzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIGtXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uUGx1Z2lu
Q3Jhc2hlZDoKKyAgICAgICAgICAgIHJlYXNvbiA9IFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJ
VFlfUkVBU09OX0NSQVNIRUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrV0tQ
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkluc2VjdXJlUGx1Z2luVmVyc2lvbjoKKyAgICAgICAg
ICAgIC8qIFdoZW4gd2UgYmxvY2sgYSBwbHVnaW4sIHRoZSByZWFzb24gd2UgcHJvdmlkZSBpcyAi
SW5zZWN1cmVQbHVnaW5WZXJzaW9uIi4gKi8KKyAgICAgICAgICAgIHJlYXNvbiA9IFdFQktJVF9Q
TFVHSU5fVU5BVkFJTEFCSUxJVFlfUkVBU09OX0JMT0NLRUQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWFzb24gIT0gV0VCS0lUX1BMVUdJTl9VTkFWQUlM
QUJJTElUWV9SRUFTT05fTUlTU0lORykgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoID0gcGx1Z2luSW5mb0RpY3Rpb25hcnktPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5m
b3JtYXRpb25QYXRoS2V5KCkpLT5zdHJpbmcoKTsKKyAgICAgICAgICAgIFBsdWdpbk1vZHVsZUlu
Zm8gcGx1Z2luTW9kdWxlSW5mbyA9IHBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnBsdWdp
bkluZm9TdG9yZSgpLmluZm9Gb3JQbHVnaW5XaXRoUGF0aChwbHVnaW5QYXRoKTsKKyAgICAgICAg
ICAgIHBsdWdpbiA9IHdlYmtpdFBsdWdpbkNyZWF0ZShwbHVnaW5Nb2R1bGVJbmZvLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSk7CisgICAgICAgIH0KKworICAgICAgICBX
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiB1bmF2YWlsYWJpbGl0eUluZm8g
PSB3ZWJraXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uQ3JlYXRlKHBsdWdpbiwgcmVh
c29uKTsKKyAgICAgICAgd2ViS2l0V2ViVmlld0VtaXRVbmF2YWlsYWJsZVBsdWdpbkFjdGl2YXRl
ZChtX3dlYlZpZXcsIHVuYXZhaWxhYmlsaXR5SW5mbyk7CisKKyAgICAgICAgd2Via2l0X3BsdWdp
bl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9mcmVlKHVuYXZhaWxhYmlsaXR5SW5mbyk7Cisg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCiAgICAgV2ViS2l0
V2ViVmlldyogbV93ZWJWaWV3OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA5ZjNjNmNjMDcyYmM4Mzlm
ZjM2ZmFkYTFhMzQ5Nzg1YzRmNWZmOWVmLi5lOWQzYzc2ZjliOTEzNjI1MjJkNjk2YTkwNGYwNTdm
NmMwZDFiNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjg0LDcgKzY4NCw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYkNvbnRleHRHZXRQbHVnaW5UaHJlYWQoR1Rhc2sqIHRhc2ssIGdwb2ludGVyIG9iamVj
dCwgZ3BvaW50CiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbnMgPSBXRUJLSVRf
V0VCX0NPTlRFWFQob2JqZWN0KS0+cHJpdi0+Y29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCkucGx1
Z2lucygpOwogICAgIEdMaXN0KiByZXR1cm5WYWx1ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKQotICAgICAgICByZXR1cm5WYWx1ZSA9IGdfbGlz
dF9wcmVwZW5kKHJldHVyblZhbHVlLCB3ZWJraXRQbHVnaW5DcmVhdGUocGx1Z2luc1tpXSkpOwor
ICAgICAgICByZXR1cm5WYWx1ZSA9IGdfbGlzdF9wcmVwZW5kKHJldHVyblZhbHVlLCB3ZWJraXRQ
bHVnaW5DcmVhdGUocGx1Z2luc1tpXSwgV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCkpKTsKICAg
ICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzaywgcmV0dXJuVmFsdWUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lQbHVnaW5MaXN0KSk7CiB9CiAKQEAgLTcyOCw2ICs3
MjgsMTkgQEAgR0xpc3QqIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2goV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgR0FzeW5jUmUKIH0KIAogLyoqCisgKiB3ZWJraXRfd2Vi
X2NvbnRleHRfY2xlYXJfcGx1Z2luX2NsaWVudF9wb2xpY2llczoKKyAqIEBjb250ZXh0OiBhICNX
ZWJLaXRXZWJDb250ZXh0CisgKgorICogQ2xlYXIgdGhlIGVzdGFibGlzaGVkIHBsdWdpbiBjbGll
bnQgbG9hZCBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCit2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9jbGVhcl9wbHVnaW5fY2xpZW50X3BvbGljaWVzKFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQpCit7CisgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+Y2xlYXJQbHVnaW5DbGll
bnRQb2xpY2llcygpOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91
cmlfc2NoZW1lOgogICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKICAqIEBzY2hlbWU6
IHRoZSBuZXR3b3JrIHNjaGVtZSB0byByZWdpc3RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCmluZGV4IDhjNDI4YzI5ZjRhNTM5
YWU5NmViNzUxZDVjNGQyNjdkMGVhMTg2MWUuLjQzYTZlNzNmZTYxMjZiMDUwMWFhYTk3N2VhZTRl
NDY2NzUwNmZiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmgKQEAgLTE5MSw2ICsxOTEsOSBAQCB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3BsdWdpbnNfZmluaXNoICAgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVzdWx0ICAgICAgICAgICAgICAgICAgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAg
ICAqKmVycm9yKTsKIFdFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9jb250ZXh0X2NsZWFyX3Bs
dWdpbl9jbGllbnRfcG9saWNpZXMgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAq
Y29udGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVy
X3VyaV9zY2hlbWUgICAgICAgICAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKnNjaGVtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdENhbGxiYWNrIGNhbGxiYWNrLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjZDZkYTRhODAyOGE5MzA2NmUwZjAw
MGViYzhlZjI1NGIxODQ2MDA2Li42MjEzNmZiZWQ0NTE4MDhkNDM2Y2I1YzY1NDYwN2RjYTQ2MDM5
ODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcApAQCAtMTMzLDYgKzEzMywxMCBAQCBlbnVtIHsKIAogICAgIFJVTl9DT0xPUl9D
SE9PU0VSLAogCisgICAgTE9BRF9QTFVHSU4sCisgICAgUExVR0lOX0JMT0NLRUQsCisgICAgVU5B
VkFJTEFCTEVfUExVR0lOX0FDVElWQVRFRCwKKwogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC02
MjUsNiArNjI5LDExIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3U2hvd05vdGlmaWNh
dGlvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Tm90aWZpY2F0aW9uCiAjZW5kaWYKIH0KIAorc3Rh
dGljIFdlYktpdFBsdWdpbkxvYWRQb2xpY3kgd2Via2l0V2ViVmlld0xvYWRQbHVnaW4oV2ViS2l0
V2ViVmlldyosIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KikKK3sKKyAgICByZXR1cm4gV0VCS0lU
X1BMVUdJTl9MT0FEX05PUk1BTExZOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29u
c3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAtNzY5LDYgKzc3
OCwxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0FjY3VtdWxhdG9yT2JqZWN0SGFu
ZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqLCBHVgogICAgIHJldHVybiAhb2JqZWN0OwogfQog
CitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0FjY3VtdWxhdG9yUGx1Z2luTG9hZFBvbGlj
eUhhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiwgR1ZhbHVlKiByZXR1cm5WYWx1ZSwgY29u
c3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlcikKK3sKKyAgICBpbnQgcG9saWN5ID0g
Z192YWx1ZV9nZXRfaW50KGhhbmRsZXJSZXR1cm4pOworICAgIGdfdmFsdWVfc2V0X2ludChyZXR1
cm5WYWx1ZSwgcG9saWN5KTsKKworICAgIHJldHVybiBwb2xpY3kgPT0gV0VCS0lUX1BMVUdJTl9M
T0FEX05PUk1BTExZOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3Mq
IGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CkBAIC03ODYsNiAr
ODAzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2Vi
Vmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5ydW5fZmlsZV9jaG9v
c2VyID0gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyOwogICAgIHdlYlZpZXdDbGFzcy0+YXV0
aGVudGljYXRlID0gd2Via2l0V2ViVmlld0F1dGhlbnRpY2F0ZTsKICAgICB3ZWJWaWV3Q2xhc3Mt
PnNob3dfbm90aWZpY2F0aW9uID0gd2Via2l0V2ViVmlld1Nob3dOb3RpZmljYXRpb247CisgICAg
d2ViVmlld0NsYXNzLT5sb2FkX3BsdWdpbiA9IHdlYmtpdFdlYlZpZXdMb2FkUGx1Z2luOwogCiAg
ICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzp3ZWItY29udGV4dDoKQEAgLTE3NDksNiArMTc2
Nyw3OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX09CSkVDVCwKICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAogICAgICAgICAgICAg
V0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKTsKKworICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6OmxvYWQtcGx1Z2luOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRX
ZWJWaWV3CisgICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgICAg
ICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBwbHVnaW4gaGFzIGl0cyBj
bGllbnQgbG9hZCBwb2xpY3kgc2V0IHRvCisgICAgICogV0VCS0lUX1BMVUdJTl9MT0FEX0NMSUVO
VF9QT0xJQ1lfQVNLIG9yIHRvIFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9MSUNZX1VOREVG
SU5FRAorICAgICAqIGFuZCBpdCBpcyBhYm91dCB0byBiZSBsb2FkZWQgaW4gYSBwYWdlLiBUaGUg
QHJlcXVlc3QgaW5zdGFjZSBoYXMgaW5mb3JtYXRpb24KKyAgICAgKiBhYm91dCB0aGUgcGx1Z2lu
IGFuZCBhbGxvd3MgdG8gc2V0IGEgZGVzY3JpcHRpb24gYWJvdXQgd2h5IHRoZSBwbHVnaW4gaXMK
KyAgICAgKiBnb2luZyB0byBiZSBibG9ja2VkLgorICAgICAqCisgICAgICogVGhlIGRlZmF1bHQg
aGFuZGxlciB3aWxsIHJldHVybiBXRUJLSVRfUExVR0lOX0xPQURfTk9STUFMTFkuCisgICAgICoK
KyAgICAgKiBUaGUgZXZlbnQgd2lsbCBiZSBwcm9wYWdhdGVkIHVudGlsIGEgaGFuZGxlciBibG9j
a3MgYSBwbHVnaW4gbG9hZC4KKyAgICAgKgorICAgICAqIFJldHVybnM6IEEgI1dlYktpdFBsdWdp
bkxvYWRQb2xpY3kgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIGxvYWQgcG9saWN5IHRoYXQgc2hv
dWxkCisgICAgICogICBiZSB1c2VkLgorICAgICAqCisgICAgICogU2luY2U6IDIuMTAKKyAgICAg
Ki8KKyAgICBzaWduYWxzW0xPQURfUExVR0lOXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygibG9h
ZC1wbHVnaW4iLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZG
U0VUKFdlYktpdFdlYlZpZXdDbGFzcywgbG9hZF9wbHVnaW4pLAorICAgICAgICAgICAgd2Via2l0
V2ViVmlld0FjY3VtdWxhdG9yUGx1Z2luTG9hZFBvbGljeUhhbmRsZWQsIG51bGxwdHIgLyogYWNj
dW11bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0lOVF9fQk9YRUQs
CisgICAgICAgICAgICBHX1RZUEVfSU5ULCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfUExV
R0lOX0xPQURfUkVRVUVTVCk7CisKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnBs
dWdpbi1ibG9ja2VkOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3CisgICAg
ICogQHBsdWdpbl9ibG9ja2VkX2luZm86IGEgI1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
bgorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgcGx1Z2luIGlz
IGJsb2NrZWQuIFRoZSBAcGx1Z2luX2Jsb2NrZWRfaW5mbyBpbnN0YW5jZSBoYXMKKyAgICAgKiBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcGx1Z2luIGFuZCBhYm91dCBpZiBpdCBpcyBiZWVuIHNob3du
IGluIHRoZSBwYWdlLgorICAgICAqCisgICAgICogU2luY2U6IDIuMTAKKyAgICAgKi8KKyAgICBz
aWduYWxzW1BMVUdJTl9CTE9DS0VEXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygicGx1Z2luLWJs
b2NrZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAg
ICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VU
KFdlYktpdFdlYlZpZXdDbGFzcywgcGx1Z2luX2Jsb2NrZWQpLAorICAgICAgICAgICAgbnVsbHB0
ciwgbnVsbHB0ciAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAgICAgICAgZ19jY2xvc3Vy
ZV9tYXJzaGFsX1ZPSURfX0JPWEVELAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9QTFVHSU5fQkxPQ0tFRF9JTkZPUk1BVElPTik7CisKKworICAg
IC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnVuYXZhaWxhYmxlLXBsdWdpbi1hY3RpdmF0ZWQ6
CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcKKyAgICAgKiBAaW5mbzogYSAj
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVt
aXR0ZWQgd2hlbiB0aGUgdXNlciB0cmllcyB0byBmb3JjZSB0aGUgbG9hZCBvZiBhIHBsdWdpbiB0
aGF0IGhhcworICAgICAqIGJlZW4gYmxvY2tlZCBjbGlja2luZyB0aGUgdW5hdmFpbGFibGUgYnV0
dG9uLCBmb3IgZXhhbXBsZS4gVGhlIEBpbmZvIG9iamVjdAorICAgICAqIGNvbnRhaW5zIGluZm8g
YWJvdXQgdGhlIHBsdWdpbiBhbmQgdGhlIHVuYXZhaWxhYmlsaXR5IHJlYXNvbi4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjEwCisgICAgICovCisgICAgc2lnbmFsc1tVTkFWQUlMQUJMRV9QTFVH
SU5fQUNUSVZBVEVEXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygidW5hdmFpbGFibGUtcGx1Z2lu
LWFjdGl2YXRlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCB1bmF2YWlsYWJsZV9wbHVnaW5fYWN0aXZhdGVkKSwK
KyAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIgLyogYWNjdW11bGF0b3IgZGF0YSAqLywKKyAg
ICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19CT1hFRCwKKyAgICAgICAgICAgIEdf
VFlQRV9OT05FLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfUExVR0lOX1VOQVZBSUxBQklM
SVRZX0lORk9STUFUSU9OKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEF1
dGhlbnRpY2F0aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMjEzMyw2ICsy
MjI0LDIzIEBAIGJvb2wgd2Via2l0V2ViVmlld0VtaXRSdW5Db2xvckNob29zZXIoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0Q29sb3JDaG9vc2VyCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9
CiAKK1dlYktpdFBsdWdpbkxvYWRQb2xpY3kgd2Via2l0V2ViVmlld0xvYWRQbHVnaW5SZXF1ZXN0
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIFdlYktpdFBsdWdpbkxvYWRQb2xpY3kgcG9saWN5OworICAgIGdfc2lnbmFsX2Vt
aXQod2ViVmlldywgc2lnbmFsc1tMT0FEX1BMVUdJTl0sIDAsIHJlcXVlc3QsICZwb2xpY3kpOwor
ICAgIHJldHVybiBwb2xpY3k7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0VtaXRQbHVnaW5CbG9j
a2VkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
biogaW5mbykKK3sKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUExVR0lOX0JM
T0NLRURdLCAwLCBpbmZvKTsKK30KKwordm9pZCB3ZWJLaXRXZWJWaWV3RW1pdFVuYXZhaWxhYmxl
UGx1Z2luQWN0aXZhdGVkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXR5SW5mb3JtYXRpb24qIGluZm8pCit7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3
LCBzaWduYWxzW1VOQVZBSUxBQkxFX1BMVUdJTl9BQ1RJVkFURURdLCAwLCBpbmZvKTsKK30KKwog
LyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCAwY2ZjMjQ3MDg2MGNiMjQ1NDc3
MWNlYmM3MmM2NmM4YmUzNmM2MjFhLi4yODE5ZGZlZGJjZjlhMmQwMjdhZWQ3YWQ5NjQ4YTg2MDAy
ZDZjZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCkBAIC00Miw2ICs0Miw5IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROYXZp
Z2F0aW9uQWN0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROb3RpZmljYXRpb24uaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQ
bHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRQb2xpY3lEZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlhbG9n
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgpAQCAtMTgzLDYgKzE4Niwx
OSBAQCB0eXBlZGVmIGVudW0gewogICBXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1F
TlQsCiB9IFdlYktpdFNuYXBzaG90UmVnaW9uOwogCisKKy8qKgorICogV2ViS2l0UGx1Z2luTG9h
ZFBvbGljeToKKyAqIEBXRUJLSVRfUExVR0lOX0xPQURfQkxPQ0s6IFRoZSBwbHVnaW4gbG9hZCB3
aWxsIGJlIGJsb2NrZWQuCisgKiBAV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOiBUaGUgcGx1
Z2luIHdpbGwgbG9hZCBub3JtYWxseS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNp
ZnkgdGhlIHBsdWdpbiBsb2FkIHBvbGljeS4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJL
SVRfUExVR0lOX0xPQURfQkxPQ0ssCisgICAgV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZCit9
IFdlYktpdFBsdWdpbkxvYWRQb2xpY3k7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC0xOTMsNjAgKzIwOSw2NiBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXcgewogc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIFdlYktp
dFdlYlZpZXdCYXNlQ2xhc3MgcGFyZW50OwogCi0gICAgdm9pZCAgICAgICAoKiBsb2FkX2NoYW5n
ZWQpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
TG9hZEV2ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50KTsKLSAgICBnYm9vbGVhbiAgICgqIGxv
YWRfZmFpbGVkKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
ICAgICAgKmZhaWxpbmdfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICplcnJvcik7Ci0KLSAgICBH
dGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uICAgICAgKm5hdmlnYXRpb25f
YWN0aW9uKTsKLSAgICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAg
KCogcnVuX2FzX21vZGFsKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLQotICAgIGdi
b29sZWFuICAgKCogc2NyaXB0X2RpYWxvZykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdERpYWxvZyAgICAgICAgICAqZGlhbG9nKSAgOwot
Ci0gICAgZ2Jvb2xlYW4gICAoKiBkZWNpZGVfcG9saWN5KSAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNp
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFBvbGljeURlY2lzaW9uVHlwZSAgICAgdHlwZSk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBwZXJt
aXNzaW9uX3JlcXVlc3QpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOwotICAgIHZv
aWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVz
dWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp
bnQgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOwotICAgIGdib29sZWFuICAgKCog
cHJpbnQpICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFByaW50T3BlcmF0aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKLSAgICB2
b2lkICAgICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRlZCkgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSAgICAgICAgICAgKnJlc291cmNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJ
UmVxdWVzdCAgICAgICAgICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1
bGxzY3JlZW4pICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOwotICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBy
dW5fZmlsZV9jaG9vc2VyKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAg
ICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAg
ICAgICAgICAgICAgICAqZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0ICAgICAgICAgKmhpdF90ZXN0X3Jlc3Vs
dCk7Ci0gICAgdm9pZCAgICAgICAoKiBjb250ZXh0X21lbnVfZGlzbWlzc2VkKSAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHN1
Ym1pdF9mb3JtKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOwotICAgIHZvaWQgICAgICAg
KCogaW5zZWN1cmVfY29udGVudF9kZXRlY3RlZCkgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50ICAgZXZlbnQpOwotICAgIGdib29sZWFu
ICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWRf
d2l0aF90bHNfZXJyb3JzKSAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGUgICAgICAgICAgICAgKmNl
cnRpZmljYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgICAgICAgICBlcnJvcnMpOwotICAgIGdib29sZWFuICAg
KCogc2hvd19ub3RpZmljYXRpb24pICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdE5vdGlmaWNhdGlvbiAgICAgICAgICAqbm90aWZpY2F0aW9uKTsKLSAgICBn
Ym9vbGVhbiAgICgqIHJ1bl9jb2xvcl9jaG9vc2VyKSAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgKnJlcXVlc3QpOwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRfZXZlbnQpOworICAg
IGdib29sZWFuICAgICAgICAgICAgICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdExvYWRFdmVudCAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRfZXZlbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vy
cm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXJyb3IpOworCisgICAgR3RrV2lk
Z2V0ICogICAgICAgICAgICAoKiBjcmVhdGUpICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TmF2
aWdhdGlvbkFjdGlvbiAgICAgICAgICAgICAgICAqbmF2aWdhdGlvbl9hY3Rpb24pOworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgKCogcmVhZHlfdG9fc2hvdykgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCisgICAgZ2Jvb2xl
YW4gICAgICAgICAgICAgICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2Ny
aXB0RGlhbG9nICAgICAgICAgICAgICAgICAgICAqZGlhbG9nKSAgOworCisgICAgZ2Jvb2xlYW4g
ICAgICAgICAgICAgICAoKiBkZWNpZGVfcG9saWN5KSAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5
RGVjaXNpb24gICAgICAgICAgICAgICAgICAqZGVjaXNpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVj
aXNpb25UeXBlICAgICAgICAgICAgICAgdHlwZSk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAg
ICAoKiBwZXJtaXNzaW9uX3JlcXVlc3QpICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3Qg
ICAgICAgICAgICAgICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICgqIG1vdXNlX3RhcmdldF9jaGFuZ2VkKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRIaXRUZXN0UmVzdWx0
ICAgICAgICAgICAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKKyAgICBnYm9vbGVhbiAgICAgICAg
ICAgICAgICgqIHByaW50KSAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcmludE9wZXJhdGlv
biAgICAgICAgICAgICAgICAgICpwcmludF9vcGVyYXRpb24pOworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlJlc291cmNl
ICAgICAgICAgICAgICAgICAgICAgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVSSVJlcXVlc3QgICAg
ICAgICAgICAgICAgICAgICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAg
KCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgq
IGxlYXZlX2Z1bGxzY3JlZW4pICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBy
dW5fZmlsZV9jaG9vc2VyKSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICAg
ICAgICAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBjb250ZXh0
X21lbnUpICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAgICAgICAgICAg
ICAqY29udGV4dF9tZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAgICAgICAgICAgKmhp
dF90ZXN0X3Jlc3VsdCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiBjb250ZXh0X21l
bnVfZGlzbWlzc2VkKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogc3VibWl0X2Zvcm0p
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAg
KndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCAgICAgICAgICAgKnJl
cXVlc3QpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogaW5zZWN1cmVfY29udGVudF9k
ZXRlY3RlZCkgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50ICAgICAgICAgICAgIGV2ZW50KTsK
KyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHdlYl9wcm9jZXNzX2NyYXNoZWQpICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisK
KyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICBn
Ym9vbGVhbiAgICAgICAgICAgICAgICgqIGxvYWRfZmFpbGVkX3dpdGhfdGxzX2Vycm9ycykgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxz
Q2VydGlmaWNhdGUgICAgICAgICAgICAgICAgICAgICAgICpjZXJ0aWZpY2F0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxz
Q2VydGlmaWNhdGVGbGFncyAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgIGdib29sZWFu
ICAgICAgICAgICAgICAgKCogc2hvd19ub3RpZmljYXRpb24pICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5vdGlm
aWNhdGlvbiAgICAgICAgICAgICAgICAgICAgKm5vdGlmaWNhdGlvbik7CisgICAgZ2Jvb2xlYW4g
ICAgICAgICAgICAgICAoKiBydW5fY29sb3JfY2hvb3NlcikgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCAgICAgICAgICAgICAqcmVxdWVzdCk7CisgICAgV2ViS2l0UGx1Z2luTG9h
ZFBvbGljeSAoKiBsb2FkX3BsdWdpbikgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QgICAgICAgICAgICAgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAoKiBwbHVnaW5fYmxvY2tlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uICAgICAgICAqaW5mbyk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiB1bmF2
YWlsYWJsZV9wbHVnaW5fYWN0aXZhdGVkKSAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbiAqaW5mbyk7CiAKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKICAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDI2
ZWZiZDUxZmNhMTI0YWUyOWZmYTllNjY2MWJlNDEyZDA1YWZhYTYuLmRlOTQxMzZjODVjYjQ0MDgx
NmYxNDA4MjBmYmMwOWRlNTc1YzBlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNjAsNiArNjAsOSBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXRX
ZWJWaWV3KiwgV2ViS2l0OjpBdXRoZW50aQogdm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250
ZW50RGV0ZWN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50KTsK
IGJvb2wgd2Via2l0V2ViVmlld0VtaXRTaG93Tm90aWZpY2F0aW9uKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXROb3RpZmljYXRpb24qKTsKIGJvb2wgd2Via2l0V2ViVmlld0VtaXRSdW5Db2xvckNob29z
ZXIoV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqKTsKK1dlYktpdFBs
dWdpbkxvYWRQb2xpY3kgd2Via2l0V2ViVmlld0xvYWRQbHVnaW5SZXF1ZXN0KFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJWaWV3RW1pdFBs
dWdpbkJsb2NrZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlv
biopOwordm9pZCB3ZWJLaXRXZWJWaWV3RW1pdFVuYXZhaWxhYmxlUGx1Z2luQWN0aXZhdGVkKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKik7CiB2
b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRXZWJWaWV3Kik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGJjZDVmNGRiMjBiMTRhMDkwNmJj
YTQ2MmQ5YzQ3NTVmZDg5OGExZjYuLjU5OTdhNjIyNmFhOTEwYTcyY2M5NzQ2ZTFhNjJjMmY2NzYx
YTg1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC00MSw2ICs0MSw3
IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc2VjdXJpdHlfbWFuYWdlcgogd2Via2l0X3dlYl9j
b250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5CiB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3BsdWdpbnMKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2gKK3dl
YmtpdF93ZWJfY29udGV4dF9jbGVhcl9wbHVnaW5fY2xpZW50X3BvbGljaWVzCiB3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQKIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZAogd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9j
aGVja2luZ19sYW5ndWFnZXMKQEAgLTkzOSwxMCArOTQwLDEyIEBAIHdlYmtpdF9jb29raWVfbWFu
YWdlcl9nZXRfdHlwZQogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRQbHVnaW48L0ZJTEU+CiBXZWJL
aXRQbHVnaW4KK1dlYktpdFBsdWdpbkxvYWRDbGllbnRQb2xpY3kKIHdlYmtpdF9wbHVnaW5fZ2V0
X25hbWUKIHdlYmtpdF9wbHVnaW5fZ2V0X2Rlc2NyaXB0aW9uCiB3ZWJraXRfcGx1Z2luX2dldF9w
YXRoCiB3ZWJraXRfcGx1Z2luX2dldF9taW1lX2luZm9fbGlzdAord2Via2l0X3BsdWdpbl9zZXRf
Y2xpZW50X3BvbGljeQogCiA8U1VCU0VDVElPTiBXZWJLaXRNaW1lSW5mbz4KIFdlYktpdE1pbWVJ
bmZvCkBAIC05NjksNiArOTcyLDU2IEBAIFdlYktpdFBsdWdpblByaXZhdGUKIDwvU0VDVElPTj4K
IAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb248L0ZJTEU+
CitXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KK1dlYktpdFBsdWdpbkxvYWRQb2xpY3kK
K3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9jb3B5Cit3ZWJraXRfcGx1Z2luX2Js
b2NrZWRfaW5mb3JtYXRpb25fZnJlZQord2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9u
X2dldF9wbHVnaW4KK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxl
CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfUExVR0lOX0JMT0NLRURfSU5G
T1JNQVRJT04KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9p
bmZvcm1hdGlvbl9nZXRfdHlwZQorCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3Q8L0ZJTEU+CitXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAord2Vi
a2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfY29weQord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3Rf
ZnJlZQord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdpbgord2Via2l0X3BsdWdp
bl9sb2FkX3JlcXVlc3Rfc2V0X2Rlc2NyaXB0aW9uCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgor
V0VCS0lUX1RZUEVfUExVR0lOX0xPQURfUkVRVUVTVAorCis8U1VCU0VDVElPTiBQcml2YXRlPgor
d2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3R5cGUKKworPC9TRUNUSU9OPgorCis8U0VD
VElPTj4KKzxGSUxFPldlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb248L0ZJTEU+
CitXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uCitXZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbgord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlv
bl9jb3B5Cit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2ZyZWUKK3dl
YmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNvbgord2Via2l0
X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luCisKKzxTVUJTRUNU
SU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfUExVR0lOX1VOQVZBSUxBQklMSVRZX0lORk9STUFU
SU9OCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5
X2luZm9ybWF0aW9uX2dldF90eXBlCisKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5X
ZWJLaXRXZWJJbnNwZWN0b3I8L0ZJTEU+CiBXZWJLaXRXZWJJbnNwZWN0b3IKIHdlYmtpdF93ZWJf
aW5zcGVjdG9yX2dldF93ZWJfdmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggODE5YWY1OGNk
NmE0NGE4OTM5M2ExNDQyNWRlYjRhZGMxNDQ2Nzk4ZC4uM2U0NDM2YTM3OWNkYzZlMDNiNWI5MTNk
NTU2N2IwZGE1MDE2MjNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCkBAIC0xNiw2ICsxNiw5IEBA
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdHlwZQogd2Via2l0X3dlYl9yZXNvdXJjZV9n
ZXRfdHlwZQogd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF90eXBlCiB3ZWJraXRfcGx1Z2luX2dl
dF90eXBlCit3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0X3R5cGUKK3dlYmtp
dF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF90eXBlCit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmls
aXR5X2luZm9ybWF0aW9uX2dldF90eXBlCiB3ZWJraXRfbWltZV9pbmZvX2dldF90eXBlCiB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9nZXRfdHlwZQogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRf
dHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNWE4NWJiNDNmN2E0MDM2MWQ3NDViOWUxMTQ5
ZDM2MTQxNTU0YTJlMi4uMzg4ZDQ5ODg3NmUyMGRlYzE1ZGViMzQ3M2U0NmUzZmI3YTQyMmZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0zOCw2ICszOCw5IEBACiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdEZpbmRDb250cm9sbGVyLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRDb29raWVNYW5hZ2VyLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRQbHVnaW4ueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24ueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYkluc3BlY3Rvci54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0VmVyc2lvbi54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBkOWJjOTIwZWQ3MjM5MjU0ODcwZmU3ODAwMzRm
OWQyZjJiYmIyYzVjLi4xMGFlNDNhYjE3ZTQ0MjAyZjFmM2IwN2MzNjg2N2M0YzNmMzczYTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC01NSw2ICs1
NSw5IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXROb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpbi5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQbHVn
aW5Mb2FkUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGx1Z2luVW5hdmFpbGFi
aWxpdHlJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UHJpbnRPcGVyYXRp
b24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdERpYWxvZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKaW5kZXggZTFj
ZmUwNzIxNmQzOWIwZTk4ZDYwNDc3MWJlMDYyOTY1ZDI2ODdmMi4uY2Y3ZTU4MTgxMTBlOWQyOGFl
MmMzODRhZjE2MmI2MTRjNTQ4Mzc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CkBAIC0xMyw0ICsxMyw1IEBAIFZPSUQ6
T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUgogVk9JRDpTVFJJTkcsU1RSSU5HCiBW
T0lEOlVJTlQ2NAorSU5UOkJPWEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMjc1NTFhYTg5NWI1NzhmMzlhZTVjMmI3MTkyZjc0MTAxYjg0OGEyMy4u
MmFkNTQ0YzBiYzBjMWI2MWU3NDljNDUzNDI1MzQyZGJjZGFjOGY0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE4MTUsNyArMTgxNSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90
IHByb2Nlc3NUeXBlLCBjb25zCiAKICAgICBwbHVnaW5Mb2FkUG9saWN5ID0gUGx1Z2luSW5mb1N0
b3JlOjpkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihwbHVnaW4pOwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICBSZWZQdHI8
QVBJOjpEaWN0aW9uYXJ5PiBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0
aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0
cmluZywgU3RyaW5nKCksIFN0cmluZygpKTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQog
ICAgICAgICBwbHVnaW5Mb2FkUG9saWN5ID0gbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xp
Y3lGb3JQbHVnaW5Mb2FkKCp0aGlzLCBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1bGVMb2FkUG9saWN5
PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCksIHVuYXZhaWxhYmls
aXR5RGVzY3JpcHRpb24pOwpAQCAtNTE0NCw3ICs1MTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFMKIHsKICAgICBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBwbHVnaW5JbmZvcm1hdGlvbjsK
IAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyNp
ZiAoUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykpICYmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdp
bk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBsdWdpbkluZm9T
dG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5n
KSk7CiAgICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rp
b25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0
cmluZygpLCBTdHJpbmcoKSwgcmVwbGFjZW1lbnRPYnNjdXJlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5Mjc3ZGZkYWNiNjNjODg3ZTFjZTUy
YjA4YmNlMjFlNzAwNTdmZDJkLi45NDIwNGQ5MTk3ZjM1NTBlZjc4ZWYwZjY1OWJmOTc1MzQ4OGFh
MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTE0NDgsNiArMTQ0OCw0MiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCkKICNlbmRpZgogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpKTsKIH0KKwordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Z2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5n
LCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JiBwb2xpY3kpCit7CisjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgU3RyaW5nIGhvc3RUb0dldCA9IGhvc3Q7CisgICAg
SGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4gcG9saWNpZXNCeUlkZW50
aWZpZXI7CisgICAgaWYgKCFtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5jb250YWlucyhob3N0
VG9HZXQpKQorICAgICAgICBob3N0VG9HZXQgPSAiKiI7CisgICAgaWYgKCFtX3BsdWdpbkxvYWRD
bGllbnRQb2xpY2llcy5jb250YWlucyhob3N0VG9HZXQpKSB7CisgICAgICAgIHBvbGljeSA9IFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lVbmRlZmluZWQ7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBwb2xpY2llc0J5SWRlbnRpZmllciA9IG1fcGx1Z2luTG9hZENsaWVudFBv
bGljaWVzLmdldChob3N0VG9HZXQpOworICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90PiB2ZXJz
aW9uc1RvUG9saWNpZXM7CisgICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXJUb0dldCA9IGJ1bmRs
ZUlkZW50aWZpZXI7CisgICAgaWYgKCFwb2xpY2llc0J5SWRlbnRpZmllci5jb250YWlucyhidW5k
bGVJZGVudGlmaWVyVG9HZXQpKQorICAgICAgICBidW5kbGVJZGVudGlmaWVyVG9HZXQgPSAiKiI7
CisgICAgaWYgKCFwb2xpY2llc0J5SWRlbnRpZmllci5jb250YWlucyhidW5kbGVJZGVudGlmaWVy
VG9HZXQpKSB7CisgICAgICAgIHBvbGljeSA9IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lVbmRlZmluZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2ZXJzaW9uc1RvUG9s
aWNpZXMgPSBwb2xpY2llc0J5SWRlbnRpZmllci5nZXQoYnVuZGxlSWRlbnRpZmllcik7CisgICAg
U3RyaW5nIHZlcnNpb25TdHJpbmdUb0dldCA9IHZlcnNpb25TdHJpbmc7CisgICAgaWYgKCF2ZXJz
aW9uc1RvUG9saWNpZXMuY29udGFpbnModmVyc2lvblN0cmluZ1RvR2V0KSkKKyAgICAgICAgdmVy
c2lvblN0cmluZ1RvR2V0ID0gIioiOworICAgIGlmICghdmVyc2lvbnNUb1BvbGljaWVzLmNvbnRh
aW5zKHZlcnNpb25TdHJpbmdUb0dldCkpIHsKKyAgICAgICAgcG9saWN5ID0gV2ViQ29yZTo6UGx1
Z2luTG9hZENsaWVudFBvbGljeVVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBwb2xpY3kgPSBzdGF0aWNfY2FzdDxQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Pih2ZXJzaW9uc1Rv
UG9saWNpZXMuZ2V0KHZlcnNpb25TdHJpbmcpKTsKKyNlbHNlCisgICAgcG9saWN5ID0gV2ViQ29y
ZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeVVuZGVmaW5lZDsKKyNlbmRpZgorfQogI2VuZGlmCiAg
ICAgCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNZW1vcnlDYWNoZURpc2FibGVkKGJvb2wgZGlz
YWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDQy
YjBjZTVlNzg0OTRhNjczMDdkZGM3M2MxNDBjYWIxZDM5YzljNjYuLjIyNTgzYTZmYWMyOGZmM2Mw
YjFlZDExMzI2NzIzMzZjZjgwMDEyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0xODUsNiArMTg1LDcgQEAgcHVibGljOgogCiAgICAgUGx1Z2luSW5m
b1N0b3JlJiBwbHVnaW5JbmZvU3RvcmUoKSB7IHJldHVybiBtX3BsdWdpbkluZm9TdG9yZTsgfQog
CisgICAgdm9pZCBnZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJp
bmcsIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kmKTsKICAgICB2b2lkIHNldFBsdWdp
bkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3Qg
U3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvblN0cmluZyk7CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAyMzY4ODBh
YWEwN2M5YmUyMjgzNmFkNjIyZDgzNjYzMjBjOGQ4MzM3Li41MzNlMTQ1MjJlOTg5MmRiZGRmNzYy
NGVjZGExNjk4OTAzMjdhZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFdlYlZp
c2libGVQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHUKIAogICAgIGdldFBs
dWdpbkluZm8ocGFnZSwgcGx1Z2lucyk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShHVEspCiAgICAgZm9yIChpbnQzMl90IGkgPSBwbHVnaW5zLnNp
emUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIFBsdWdpbkluZm8mIGluZm8gPSBwbHVn
aW5zLmF0KGkpOwogICAgICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGNsaWVudFBvbGljeSA9
IGluZm8uY2xpZW50TG9hZFBvbGljeTsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwg
VmVjdG9yPFBsdQogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShHVEspCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0UGx1
Z2luTG9hZENsaWVudFBvbGljeShQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGNsaWVudFBvbGljeSwg
Y29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdmVyc2lvblN0cmluZykKIHsKICAgICBTdHJpbmcgaG9zdFRvU2V0ID0gaG9zdC5p
c051bGwoKSB8fCAhaG9zdC5sZW5ndGgoKSA/ICIqIiA6IGhvc3Q7CkBAIC0zMzEsNyArMzMxLDcg
QEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMo
KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCiBib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5n
JiBob3N0LCBjb25zdCBQbHVnaW5JbmZvJiBpbmZvLCBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JiBw
b2xpY3kpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGhvc3RUb0xvb2tVcCA9IGhvc3Q7CkBAIC0zNDEs
MTQgKzM0MSwyMiBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cGx1Z2luTG9hZENsaWVu
dFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBjbwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyIHBvbGljaWVzQnlJZGVudGlm
aWVyID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZ2V0KGhvc3RUb0xvb2tVcCk7Cisj
aWYgUExBVEZPUk0oR1RLKQorICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5maWxlOworI2Vs
c2UKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IGluZm8uYnVuZGxlSWRlbnRpZmllcjsKKyNlbmRp
ZgogICAgIGlmICghaWRlbnRpZmllciB8fCAhcG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMo
aWRlbnRpZmllcikpCiAgICAgICAgIGlkZW50aWZpZXIgPSAiKiI7CiAgICAgaWYgKCFwb2xpY2ll
c0J5SWRlbnRpZmllci5jb250YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgUGx1Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25z
VG9Qb2xpY2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChpZGVudGlmaWVyKTsKKyNpZiBQ
TEFURk9STShHVEspCisgICAgU3RyaW5nIHZlcnNpb24gPSAiKiI7CisjZWxzZQogICAgIFN0cmlu
ZyB2ZXJzaW9uID0gaW5mby52ZXJzaW9uU3RyaW5nOworI2VuZGlmCiAgICAgaWYgKCF2ZXJzaW9u
IHx8ICF2ZXJzaW9uc1RvUG9saWNpZXMuY29udGFpbnModmVyc2lvbikpCiAgICAgICAgIHZlcnNp
b24gPSAiKiI7CiAgICAgaWYgKCF2ZXJzaW9uc1RvUG9saWNpZXMuY29udGFpbnModmVyc2lvbikp
CkBAIC0zNTcsNyArMzY1LDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBsdWdpbkxv
YWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgY28KICAgICBwb2xpY3kg
PSB2ZXJzaW9uc1RvUG9saWNpZXMuZ2V0KHZlcnNpb24pOwogICAgIHJldHVybiB0cnVlOwogfQot
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKEdUSykKIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2Fj
aGUoY29uc3QgV2ViQ29yZTo6UGFnZSYgcGFnZSkKIHsKQEAgLTM2OSw3ICszNzcsNyBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3Jl
OjpQYWdlJiBwYWdlKQogICAgICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSB0cnVlOwog
ICAgIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KEdUSykKICAgICBTdHJpbmcgcGFnZUhvc3QgPSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuaG9zdCgpOwogICAgIGZvciAoUGx1Z2luSW5m
byYgaW5mbyA6IG1fY2FjaGVkUGx1Z2lucykgewogICAgICAgICBQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5IGNsaWVudFBvbGljeTsKQEAgLTM3OCw3ICszODYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQog
ICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwotI2VuZGlmIC8vIG5vdCBQTEFU
Rk9STShNQUMpCisjZW5kaWYgLy8gbm90IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQog
fQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAzYjJmY2IxYjQxMmI0MjBlNWJjMWMwYjBmODczNmRhNDE2
NTE2NzEwLi41YWJmMTY1ZGJiYjNiNjIyYzc3MWFjY2ZlMjRmZDg2Y2VjNTEyOWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFdl
YlZpc2libGVQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKEdUSykKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNCeUJ1
bmRsZVZlcnNpb247CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uPiBQbHVnaW5Qb2xpY3lNYXBzQnlJZGVudGlmaWVyOwog
CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiBtX2NhY2hlZFBsdWdpbnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
IG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQogICAgIEhhc2hNYXA8U3RyaW5nLCBQbHVnaW5Q
b2xpY3lNYXBzQnlJZGVudGlmaWVyPiBtX2hvc3RzVG9QbHVnaW5JZGVudGlmaWVyRGF0YTsKICAg
ICBib29sIHBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OlBsdWdpbkluZm8mLCBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5Jikg
Y29uc3Q7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oR1RLKQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
fTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGVhZWU1ZjdmNjdjNmU5YzI0YmMyMWE3MDRmZmE2YzAyNzZjYjhiOWMuLmU0MWU4OTliZjQ1MTVj
OGYwMjQ2MDRkNTk0OWVhMmY2ZTQ3MzhiYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNC0wOCAgTWFyY29z
IENoYXZhcnLDrWEgVGVpamVpcm8gIDxjaGF2YXJyaWExOTkxQGdtYWlsLmNvbT4KKworICAgICAg
ICBbR1RLXSBBZGQgQVBJIHRvIGFsbG93IGJsb2NraW5nIHBsdWdpbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDM1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBuZXcgdGVzdCBmb3Ig
dGhlIGJsb2NraW5nIHBsdWdpbnMgQVBJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RCbG9ja2lu
Z1BsdWdpbnMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNS0wNC0wNiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE4MjQ0NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDU3M2U1NzY2YTIwMTY2
OWE2M2Y3ODA5MTczMjZiNDc3Mzc1MTJhM2EuLmRhYTJlYzY3MTVmOThhY2Y5NDZmNzRiZDZmYjIx
ZTYyNTU5MjEyODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtODMzLDYgKzgzMywyNTUgQEAg
c3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIH0KIAorY2xhc3MgUGx1Z2luc1dlYlZp
ZXdUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorCisgICAgTUFLRV9HTElCX1RF
U1RfRklYVFVSRShQbHVnaW5zV2ViVmlld1Rlc3QpOworCisgICAgZW51bSBQbHVnaW5FdmVudFR5
cGUgeworICAgICAgICBOb25lLAorICAgICAgICBMb2FkLAorICAgICAgICBCbG9ja2VkLAorICAg
ICAgICBVbmF2YWlsYWJsZUFjdGl2YXRlZAorICAgIH07CisKKyAgICBzdGF0aWMgV2ViS2l0UGx1
Z2luTG9hZFBvbGljeSBsb2FkUGx1Z2luQ2FsbGJhY2tCbG9jayhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCwgUGx1Z2luc1dlYlZpZXdUZXN0
KiB0ZXN0KQorICAgIHsKKyAgICAgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW4gPSB3ZWJraXRfcGx1
Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luKHJlcXVlc3QpOworICAgICAgICBpZiAoZ19zdHJj
bXAwKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUocGx1Z2luKSwgIldlYktpdCBUZXN0IFBsdWdJbiIp
KQorICAgICAgICAgICAgcmV0dXJuIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsKKworICAg
ICAgICB0ZXN0LT5tX2V2ZW50ID0gTG9hZDsKKyAgICAgICAgdGVzdC0+bV9wbHVnaW4gPSBwbHVn
aW47CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAg
IHJldHVybiBXRUJLSVRfUExVR0lOX0xPQURfQkxPQ0s7CisgICAgfQorCisgICAgc3RhdGljIFdl
YktpdFBsdWdpbkxvYWRQb2xpY3kgbG9hZFBsdWdpbkNhbGxiYWNrTm9ybWFsbHkoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QsIFBsdWdpbnNX
ZWJWaWV3VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2luID0g
d2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdpbihyZXF1ZXN0KTsKKyAgICAgICAg
aWYgKGdfc3RyY21wMCh3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHBsdWdpbiksICJXZWJLaXQgVGVz
dCBQbHVnSW4iKSkKKyAgICAgICAgICAgIHJldHVybiBXRUJLSVRfUExVR0lOX0xPQURfTk9STUFM
TFk7CisKKyAgICAgICAgdGVzdC0+bV9ldmVudCA9IExvYWQ7CisgICAgICAgIHRlc3QtPm1fcGx1
Z2luID0gd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdpbihyZXF1ZXN0KTsKKyAg
ICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJu
IFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBw
bHVnaW5CbG9ja2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvLCBQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3QpCisgICAg
eworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9p
bmZvcm1hdGlvbl9nZXRfcGx1Z2luKGluZm8pOworICAgICAgICBpZiAoZ19zdHJjbXAwKHdlYmtp
dF9wbHVnaW5fZ2V0X25hbWUocGx1Z2luKSwgIldlYktpdCBUZXN0IFBsdWdJbiIpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRlc3QtPm1fZXZlbnQgPSBCbG9ja2VkOworICAgICAg
ICB0ZXN0LT5tX3BsdWdpbiA9IHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRf
cGx1Z2luKGluZm8pOworICAgICAgICB0ZXN0LT5tX3BsdWdpbklzVmlzaWJsZSA9IHdlYmtpdF9w
bHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxlKGluZm8pOworICAgICAgICBnX21h
aW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IHVuYXZhaWxhYmxlUGx1Z2luQWN0aXZhdGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmll
dywgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbywgUGx1Z2luc1dl
YlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW4gPSB3
ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVnaW4oaW5mbyk7
CisgICAgICAgIGlmIChnX3N0cmNtcDAod2Via2l0X3BsdWdpbl9nZXRfbmFtZShwbHVnaW4pLCAi
V2ViS2l0IFRlc3QgUGx1Z0luIikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGVz
dC0+bV9ldmVudCA9IFVuYXZhaWxhYmxlQWN0aXZhdGVkOworICAgICAgICB0ZXN0LT5tX3BsdWdp
biA9IHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihp
bmZvKTsKKyAgICAgICAgdGVzdC0+bV91bmF2YWlsYWJpbGl0eVJlYXNvbiA9IHdlYmtpdF9wbHVn
aW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNvbihpbmZvKTsKKyAgICAgICAg
Z19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCBwbHVnaW5Mb2FkZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRT
Y3JpcHREaWFsb2cgKmRpYWxvZywgUGx1Z2luc1dlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXcsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBsdWdpbkxvYWRlZENhbGxiYWNrKSwgdGVzdCk7CisgICAgICAg
IGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAgIHRlc3QtPndhaXQo
MSk7IC8vIFJhY2UgQ29uZGl0aW9uCisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIGRvQ2xp
Y2tJZGxlQ2FsbGJhY2soUGx1Z2luc1dlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAg
dGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbig1LCA1LCAxKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOwor
ICAgIH0KKworICAgIFBsdWdpbnNXZWJWaWV3VGVzdCgpCisgICAgICAgIDogbV9ldmVudChOb25l
KQorICAgICAgICAsIG1fcGx1Z2luKG51bGxwdHIpCisgICAgICAgICwgbV9wbHVnaW5Jc1Zpc2li
bGUoZmFsc2UpCisgICAgeworICAgICAgICBzaG93SW5XaW5kb3coR1RLX1dJTkRPV19UT1BMRVZF
TCk7CisgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRpb25hbF9wbHVnaW5zX2Rp
cmVjdG9yeSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSwgV0VCS0lUX1RF
U1RfUExVR0lOX0RJUik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAicGx1
Z2luLWJsb2NrZWQiLCBHX0NBTExCQUNLKHBsdWdpbkJsb2NrZWRDYWxsYmFjayksIHRoaXMpOwor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInVuYXZhaWxhYmxlLXBsdWdpbi1h
Y3RpdmF0ZWQiLCBHX0NBTExCQUNLKHVuYXZhaWxhYmxlUGx1Z2luQWN0aXZhdGVkQ2FsbGJhY2sp
LCB0aGlzKTsKKyAgICB9CisKKyAgICB+UGx1Z2luc1dlYlZpZXdUZXN0KCkKKyAgICB7CisgICAg
ICAgIGdfbGlzdF9mcmVlX2Z1bGwobV9wbHVnaW5zLCBnX29iamVjdF91bnJlZik7CisgICAgfQor
CisgICAgdm9pZCBsb2FkV2ViKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOworICAg
ICAgICBtX3BsdWdpbiA9IG51bGxwdHI7CisgICAgICAgIGxvYWRIdG1sKCI8aHRtbD48b2JqZWN0
IGlkPVwicGx1Z2luXCIgdHlwZT1cImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGVc
IiAiCisgICAgICAgICAgICAic3JjPVwiZGF0YTphcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlLGFsZXJ0d2hlbmxvYWRlZFwiIHdpZHRoPVwiMTBcIiAiCisgICAgICAgICAgICAiaGVp
Z2h0PVwiMTBcIiBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtcIi8+PC9o
dG1sPiIsIG51bGxwdHIpOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsUGx1Z2luTG9hZGVk
KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LWRp
YWxvZyIsIEdfQ0FMTEJBQ0socGx1Z2luTG9hZGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGls
TG9hZEZpbmlzaGVkKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOworICAgICAgICBt
X3BsdWdpbj0gbnVsbHB0cjsKKyAgICAgICAgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOworICAgIH0KKworICAgIHZvaWQgY29udGludWVMb2FkaW5nQW5kV2FpdFVudGlsU2ln
bmFsKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOworICAgICAgICBtX3BsdWdpbiA9
IG51bGxwdHI7CisgICAgICAgIG1fcGx1Z2luSXNWaXNpYmxlID0gZmFsc2U7CisgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2b2lkIGFjdGl2YXRlUGx1
Z2luQW5kV2FpdFVudGlsU2lnbmFsKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOwor
ICAgICAgICBtX3BsdWdpbiA9IG51bGxwdHI7CisgICAgICAgIGdfaWRsZV9hZGQocmVpbnRlcnBy
ZXRfY2FzdDxHU291cmNlRnVuYz4oZG9DbGlja0lkbGVDYWxsYmFjayksIHRoaXMpOworICAgICAg
ICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
Z2V0UGx1Z2luc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIFBsdWdpbnNXZWJWaWV3VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fcGx1
Z2lucyA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2luc19maW5pc2godGVzdC0+bV93ZWJD
b250ZXh0LmdldCgpLCByZXN1bHQsIG51bGxwdHIpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0
KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFdlYktpdFBsdWdpbiogZ2V0VGVzdFBs
dWdpbigpCisgICAgeworICAgICAgICBnX2xpc3RfZnJlZV9mdWxsKG1fcGx1Z2lucywgZ19vYmpl
Y3RfdW5yZWYpOworICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3BsdWdpbnMobV93ZWJD
b250ZXh0LmdldCgpLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJh
Y2s+KGdldFBsdWdpbnNBc3luY1JlYWR5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19tYWlu
X2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIGZvciAoR0xpc3QqIGl0ZW0gPSBtX3Bs
dWdpbnM7IGl0ZW07IGl0ZW0gPSBnX2xpc3RfbmV4dChpdGVtKSkgeworICAgICAgICAgICAgV2Vi
S2l0UGx1Z2luKiBwbHVnaW4gPSBXRUJLSVRfUExVR0lOKGl0ZW0tPmRhdGEpOworICAgICAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChwbHVnaW4p
KTsKKyAgICAgICAgICAgIGlmICghZ19zdHJjbXAwKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUocGx1
Z2luKSwgIldlYktpdCBUZXN0IFBsdWdJbiIpKQorICAgICAgICAgICAgICAgIHJldHVybiBwbHVn
aW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHTGlzdCogbV9wbHVnaW5zOworICAgIFBsdWdp
bkV2ZW50VHlwZSBtX2V2ZW50OworICAgIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
IG1fdW5hdmFpbGFiaWxpdHlSZWFzb247CisgICAgV2ViS2l0UGx1Z2luKiBtX3BsdWdpbjsKKyAg
ICBnYm9vbGVhbiBtX3BsdWdpbklzVmlzaWJsZTsKK307CisKKworc3RhdGljIHZvaWQgdGVzdEJs
b2NraW5nUGx1Z2lucyhQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7
CisKKyAgICAvLyBEZWZhdWx0IGJlaGF2aW91cjogTm8gY2FsbGJhY2sgY29ubmVjdGVkIGFuZCBj
bGllbnQgcG9saWN5IGlzIGRlZmF1bHQuCisgICAgdGVzdC0+bG9hZFdlYigpOworICAgIHRlc3Qt
PndhaXRVbnRpbFBsdWdpbkxvYWRlZCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0g
UGx1Z2luc1dlYlZpZXdUZXN0OjpOb25lKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3BsdWdpbiA9
PSBudWxscHRyKTsKKworICAgIC8vIENvbm5lY3QgY2FsbGJhY2sgdG8gbG9hZCBub3JtYWxseSBh
bmQgY2xpZW50IHBvbGljeSBpcyBkZWZhdWx0LgorICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+
bV93ZWJWaWV3LCAibG9hZC1wbHVnaW4iLCBHX0NBTExCQUNLKHRlc3QtPmxvYWRQbHVnaW5DYWxs
YmFja05vcm1hbGx5KSwgdGVzdCk7CisgICAgdGVzdC0+bG9hZFdlYigpOworICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09
IFBsdWdpbnNXZWJWaWV3VGVzdDo6TG9hZCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9w
bHVnaW5fZ2V0X25hbWUodGVzdC0+bV9wbHVnaW4pLCA9PSwgIldlYktpdCBUZXN0IFBsdWdJbiIp
OworICAgIHRlc3QtPndhaXRVbnRpbFBsdWdpbkxvYWRlZCgpOworCisgICAgLy8gQ29ubmVjdCBj
YWxsYmFjayB0byBibG9jayBsb2FkIGFuZCBjbGllbnQgcG9saWN5IGlzIGRlZmF1bHQuCisgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHRlc3QtPm1fd2ViVmlldywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4odGVzdC0+bG9hZFBsdWdpbkNhbGxiYWNrTm9ybWFsbHkpLCB0
ZXN0KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHRlc3QtPm1fd2ViVmlldywgImxvYWQtcGx1Z2lu
IiwgR19DQUxMQkFDSyh0ZXN0LT5sb2FkUGx1Z2luQ2FsbGJhY2tCbG9jayksIHRlc3QpOworICAg
IHRlc3QtPmxvYWRXZWIoKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7
CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBQbHVnaW5zV2ViVmlld1Rlc3Q6OkxvYWQp
OworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHRlc3QtPm1fcGx1
Z2luKSwgPT0sICJXZWJLaXQgVGVzdCBQbHVnSW4iKTsKKworICAgIGdfbWFpbl9sb29wX3J1bih0
ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNX
ZWJWaWV3VGVzdDo6QmxvY2tlZCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9wbHVnaW5Jc1Zpc2li
bGUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHRlc3QtPm1f
cGx1Z2luKSwgPT0sICJXZWJLaXQgVGVzdCBQbHVnSW4iKTsKKworICAgIHRlc3QtPmFjdGl2YXRl
UGx1Z2luQW5kV2FpdFVudGlsU2lnbmFsKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9
PSBQbHVnaW5zV2ViVmlld1Rlc3Q6OlVuYXZhaWxhYmxlQWN0aXZhdGVkKTsKKyAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX3VuYXZhaWxhYmlsaXR5UmVhc29uID09IFdFQktJVF9QTFVHSU5fVU5BVkFJTEFC
SUxJVFlfUkVBU09OX0JMT0NLRUQpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfcGx1Z2lu
X2dldF9uYW1lKHRlc3QtPm1fcGx1Z2luKSwgPT0sICJXZWJLaXQgVGVzdCBQbHVnSW4iKTsKKwor
ICAgIFdlYktpdFBsdWdpbiogdGVzdFBsdWdpbiA9IHRlc3QtPmdldFRlc3RQbHVnaW4oKTsKKwor
ICAgIC8vIFNldCBjbGllbnQgcG9saWN5IHRvIGJsb2NrIGFuZCBjb25uZWN0IGNhbGxiYWNrIHRv
IGxvYWQgbm9ybWFsbHkuCisgICAgd2Via2l0X3BsdWdpbl9zZXRfY2xpZW50X3BvbGljeSh0ZXN0
UGx1Z2luLCAiKiIsIFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9MSUNZX0JMT0NLKTsKKyAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmModGVzdC0+bV93ZWJWaWV3LCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPih0ZXN0LT5sb2FkUGx1Z2luQ2FsbGJhY2tCbG9jayksIHRl
c3QpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAibG9hZC1wbHVnaW4i
LCBHX0NBTExCQUNLKHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwgdGVzdCk7Cisg
ICAgdGVzdC0+bG9hZFdlYigpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNXZWJWaWV3VGVzdDo6Qmxv
Y2tlZCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9wbHVnaW5Jc1Zpc2libGUpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHRlc3QtPm1fcGx1Z2luKSwgPT0sICJX
ZWJLaXQgVGVzdCBQbHVnSW4iKTsKKworICAgIC8vIFNldCBjbGllbnQgcG9saWN5IHRvIGJsb2Nr
IGFuZCBjb25uZWN0IGNhbGxiYWNrIHRvIGJsb2NrLgorICAgIHdlYmtpdF9wbHVnaW5fc2V0X2Ns
aWVudF9wb2xpY3kodGVzdFBsdWdpbiwgIioiLCBXRUJLSVRfUExVR0lOX0xPQURfQ0xJRU5UX1BP
TElDWV9BTExPVyk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHRl
c3QtPm1fd2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGVzdC0+bG9hZFBsdWdpbkNh
bGxiYWNrTm9ybWFsbHkpLCB0ZXN0KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHRlc3QtPm1fd2Vi
VmlldywgImxvYWQtcGx1Z2luIiwgR19DQUxMQkFDSyh0ZXN0LT5sb2FkUGx1Z2luQ2FsbGJhY2tC
bG9jayksIHRlc3QpOworICAgIHRlc3QtPmxvYWRXZWIoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxQ
bHVnaW5Mb2FkZWQoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNXZWJW
aWV3VGVzdDo6Tm9uZSk7CisKKyAgICAvLyBTZXQgY2xpZW50IHBvbGljeSB0byBhc2sgYW5kIGNv
bm5lY3QgY2FsbGJhY2sgdG8gYmxvY2suCisgICAgd2Via2l0X3BsdWdpbl9zZXRfY2xpZW50X3Bv
bGljeSh0ZXN0UGx1Z2luLCAiKiIsIFdFQktJVF9QTFVHSU5fTE9BRF9DTElFTlRfUE9MSUNZX0FT
Syk7CisgICAgdGVzdC0+bG9hZFdlYigpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21h
aW5Mb29wKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNXZWJWaWV3VGVz
dDo6TG9hZCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUodGVz
dC0+bV9wbHVnaW4pLCA9PSwgIldlYktpdCBUZXN0IFBsdWdJbiIpOworCisgICAgZ19tYWluX2xv
b3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0g
UGx1Z2luc1dlYlZpZXdUZXN0OjpCbG9ja2VkKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3BsdWdp
bklzVmlzaWJsZSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUo
dGVzdC0+bV9wbHVnaW4pLCA9PSwgIldlYktpdCBUZXN0IFBsdWdJbiIpOworCisgICAgLy8gQ29u
bmVjdCBjYWxsYmFjayB0byBsb2FkIG5vcm1hbGx5CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKHRlc3QtPm1fd2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
dGVzdC0+bG9hZFBsdWdpbkNhbGxiYWNrQmxvY2spLCB0ZXN0KTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KHRlc3QtPm1fd2ViVmlldywgImxvYWQtcGx1Z2luIiwgR19DQUxMQkFDSyh0ZXN0LT5sb2Fk
UGx1Z2luQ2FsbGJhY2tOb3JtYWxseSksIHRlc3QpOworICAgIHRlc3QtPmxvYWRXZWIoKTsKKyAg
ICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnQodGVzdC0+
bV9ldmVudCA9PSBQbHVnaW5zV2ViVmlld1Rlc3Q6OkxvYWQpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHRlc3QtPm1fcGx1Z2luKSwgPT0sICJXZWJLaXQgVGVz
dCBQbHVnSW4iKTsKKyAgICB0ZXN0LT53YWl0VW50aWxQbHVnaW5Mb2FkZWQoKTsKKworICAgIC8v
IFNldCBjbGllbnQgcG9saWN5IHRvIGJsb2NrIGFuZCBjb25uZWN0IGNhbGxiYWNrIHRvIGxvYWQg
bm9ybWFsbHkgYWdhaW4gdGhlbiBjbGVhciBwb2xpY2llcy4KKyAgICB3ZWJraXRfcGx1Z2luX3Nl
dF9jbGllbnRfcG9saWN5KHRlc3RQbHVnaW4sICIqIiwgV0VCS0lUX1BMVUdJTl9MT0FEX0NMSUVO
VF9QT0xJQ1lfQkxPQ0spOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
Yyh0ZXN0LT5tX3dlYlZpZXcsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRlc3QtPmxvYWRQbHVn
aW5DYWxsYmFja0Jsb2NrKSwgdGVzdCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dl
YlZpZXcsICJsb2FkLXBsdWdpbiIsIEdfQ0FMTEJBQ0sodGVzdC0+bG9hZFBsdWdpbkNhbGxiYWNr
Tm9ybWFsbHkpLCB0ZXN0KTsKKyAgICB0ZXN0LT5sb2FkV2ViKCk7CisgICAgZ19tYWluX2xvb3Bf
cnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gUGx1
Z2luc1dlYlZpZXdUZXN0OjpCbG9ja2VkKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3BsdWdpbklz
VmlzaWJsZSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUodGVz
dC0+bV9wbHVnaW4pLCA9PSwgIldlYktpdCBUZXN0IFBsdWdJbiIpOworCisgICAgd2Via2l0X3dl
Yl9jb250ZXh0X2NsZWFyX3BsdWdpbl9jbGllbnRfcG9saWNpZXMod2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldykpOworICAgIHRlc3QtPmxvYWRXZWIoKTsKKyAgICBn
X21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9l
dmVudCA9PSBQbHVnaW5zV2ViVmlld1Rlc3Q6OkxvYWQpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfcGx1Z2luX2dldF9uYW1lKHRlc3QtPm1fcGx1Z2luKSwgPT0sICJXZWJLaXQgVGVzdCBQ
bHVnSW4iKTsKKyAgICB0ZXN0LT53YWl0VW50aWxQbHVnaW5Mb2FkZWQoKTsKK30KKwogdm9pZCBi
ZWZvcmVBbGwoKQogewogICAgIGdTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwpAQCAt
ODUzLDYgKzExMDIsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTm90aWZpY2F0aW9uV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJub3RpZmljYXRpb24iLCB0ZXN0V2ViVmlld05v
dGlmaWNhdGlvbik7CiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsK
ICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImJhY2tncm91bmQtY29sb3Ii
LCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcik7CisgICAgUGx1Z2luc1dlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiYmxvY2stcGx1Z2lucyIsIHRlc3RCbG9ja2luZ1BsdWdpbnMp
OwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250508</attachid>
            <date>2015-04-10 04:25:20 -0700</date>
            <delta_ts>2015-04-10 04:25:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134357-20150410132426.patch</filename>
            <type>text/plain</type>
            <size>71389</size>
            <attacher name="Marcos Chavarría Teijeiro (irc: chavaone)">chavarria1991</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZThkMDI1Zjk5ZDcyNWY5
MTA1MWRiZGY1YTM1ZmIyY2QzNjZjN2RiNy4uMDBlZDFlMzE4M2YyMGUzNjgwN2E5ZDRkMTNjZDMz
NmUwNDczN2VlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE1LTAzLTA2ICBNYXJj
b3MgQ2hhdmFycsOtYSBUZWlqZWlybyAgPGNoYXZhcnJpYTE5OTFAZ21haWwuY29tPgorCisgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBuZXcgYmxvY2svdW5ibG9jayBwbHVnaW4gQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzU3CisKKyAgICAg
ICAgV2UgY3JlYXRlIHNpZ25hbHMgdGhhdCBhcmUgZmlyZWQgd2hlbiBhIHBsdWdpbiBpcyBnb2lu
ZyB0byBiZSBsb2FkZWQsCisgICAgICAgIHdoZW4gYSBwbHVnaW4gaXMgYmxvY2tlZCBhbmQgd2hl
biB0aGUgdXNlciB0cmllcyB0byBhY3RpdmF0ZSBhIGJsb2NrZWQKKyAgICAgICAgb3IgbWlzc2lu
ZyBwbHVnaW4uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRMb2FkZXJDbGllbnQuY3BwOiBJbXBsZW1lbnQgcGx1Z2luTG9hZFBvbGljeSBhbmQgZGlkQmxv
Y2tJbnNlY3VyZVBsdWdpblZlcnNpb24gaGFuZGxlcnMgdG8gZmlyZSB0aGUgY3JlYXRlZCB3ZWJ2
aWV3IHNpZ25hbCB3aGVuIG5lZWRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQbHVnaW4uY3BwOiBDaGFuZ2UgZG9jdW1lbnRhdGlvbi4gSXQgc2FpZCB0aGF0IHdlIHdlcmUg
YWJsZSB0byBibG9jayBhIHBsdWdpbiB1c2luZyB0aGlzIGNsYXNzLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbi5jcHA6IEFkZGVkLiBD
cmVhdGUgY2xhc3MgdG8gaG9sZCBpbmZvcm1hdGlvbmEgYWJvdXQgYSBibG9ja2VkIHBsdWdpbi4K
KyAgICAgICAgKF9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb246Ol9XZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24pOgorICAgICAgICAod2Via2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9j
b3B5KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlKToK
KyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKToK
KyAgICAgICAgKHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9pc192aXNpYmxlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRp
b24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5jcHA6IEFkZGVkLiBDcmVhdGUgY2xhc3MgdG8g
aG9sZCBpbmZvcm1hdGlvbiBhYm91dCBhIHBsdWdpbiBsb2FkIHJlcXVlc3QuCisgICAgICAgIChf
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Q6Ol9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCk6CisgICAg
ICAgICh3ZWJraXRQbHVnaW5Mb2FkUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1
Z2luX2xvYWRfcmVxdWVzdF9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1
ZXN0X2ZyZWUpOgorICAgICAgICAod2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdp
bik6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9zZXRfZGVzY3JpcHRpb24p
OgorICAgICAgICAod2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1
Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5jcHA6IEFkZGVkLiBDcmVhdGUgY2xhc3MgdG8g
aG9sZCBpbmZvcm1hdGlvbiBhYm91dCBhbiB1bmF2YWlsYWJsZSBwbHVnaW4uCisgICAgICAgIChf
V2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbjo6X1dlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXR5SW5mb3JtYXRpb24pOgorICAgICAgICAod2Via2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbkNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmls
aXR5X2luZm9ybWF0aW9uX2NvcHkpOgorICAgICAgICAod2Via2l0X3BsdWdpbl91bmF2YWlsYWJp
bGl0eV9pbmZvcm1hdGlvbl9mcmVlKToKKyAgICAgICAgKHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFi
aWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNvbik6CisgICAgICAgICh3ZWJraXRfcGx1Z2luX3Vu
YXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJ
bmZvcm1hdGlvblByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwOiBJbXBsZW1lbnQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkIGNhbGxiYWNrIHRvIGZpcmUgd2ViIHZpZXcgc2lnbmFsIHdoZW4gbmVlZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOiBJbXBsZW1lbnQgbmV3IHNp
Z25hbHMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZFBsdWdpbik6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QWNjdW11bGF0b3JQbHVnaW5Mb2FkUG9saWN5SGFuZGxlZCk6IEltcGxlbWVudCBu
ZXcgYWNjdW11bGF0b3IgZm9yIGxvYWQtcGx1Z2luIHNpZ25hbC4gVGhlIGhhbmRsZXIgdGhhdCBz
ZXRzIExPQURfQkxPQ0sgYXMgcGx1Z2luIGxvYWQgcG9saWN5IHdpbnMuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZFBsdWdp
blJlcXVlc3QpOgorICAgICAgICAod2Via2l0V2ViVmlld0VtaXRQbHVnaW5CbG9ja2VkKToKKyAg
ICAgICAgKHdlYktpdFdlYlZpZXdFbWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OiBBZGQgbmV3IGNsYXNz
ZXMgdG8gZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLnR5cGVzOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3Q6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZmluZFBsdWdpbik6IEVuYWJsZSBwbHVnaW4gZGVjaWRlIHBvbGljeSBjYWxsYmFj
ayBmb3IgR1RLIHBsYXRmb3JtLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEJs
b2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKTogRW5hYmxlIGJsb2NrIGluc2VjdXJlIHBsdWdpbiBj
YWxsYmFjayBmb3IgR1RLIFBsYXRmb3JtLgorCiAyMDE1LTA0LTA5ICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF1bR1RLXSBXZWJLaXQyJ3MgZ2Vu
ZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsIHJ1bnMgdG9vIG1hbnkgdGltZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggNTYzN2E1MjliOGNiNzcxOWEzZmFmNTY1NmE2ZThhNWRlZjE4
ZTEwNi4uMGQ0OGI4ZmI0ODVhMDQ3OGZlZDE1YmJjNWZkODNhMmE5YTRhODBiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTE4Miw2ICsxODIsMTUgQEAgbGlzdChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UGx1Z2luUHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbi5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uUHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1
Z2luTG9hZFJlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9h
ZFJlcXVlc3QuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0
UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eUluZm9ybWF0aW9uLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVn
aW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UG9saWN5Q2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBv
bGljeUNsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24u
Y3BwCkBAIC0zNzUsNiArMzg0LDkgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb24u
aAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBlcm1pc3Npb25S
ZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVn
aW4uaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbi5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24uaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKICAgICAk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJhdGlvbi5oCiAg
ICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0TG9hZGVyQ2xpZW50LmNwcAppbmRleCAzMjAzMDkwOTYzN2RlMjk4ZDA0ZGQ4MWY1Yjc3
Y2YwY2JkM2M0YjlhLi4xMDcyNGI3N2RhNWE1NTQ4Yzk3ZGM2MGE1YmI4Yzg2ZGQ1MGY2OGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExv
YWRlckNsaWVudC5jcHAKQEAgLTIyLDExICsyMiwxOCBAQAogI2luY2x1ZGUgIldlYktpdExvYWRl
ckNsaWVudC5oIgogCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUGx1
Z2luSW5mb1N0b3JlLmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRl
ICJXZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpbkxvYWRS
ZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTExNiw2ICsxMjMsNDkgQEAgcHJp
dmF0ZToKICAgICAgICAgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NDcmFzaGVkKG1fd2ViVmlldyk7
CiAgICAgfQogCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyAgICBXZWJLaXQ6
OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcGx1Z2luTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9saWN5LCBBUEk6OkRpY3Rpb25h
cnkqIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBXVEY6OlN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCA9IHBsdWdpbkluZm9EaWN0aW9uYXJ5LT5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0
aW9uUGF0aEtleSgpKS0+c3RyaW5nKCk7CisgICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2lu
TW9kdWxlSW5mbyA9IHBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkucGx1Z2luSW5mb1N0b3Jl
KCkuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOworICAgICAgICBXZWJLaXRQbHVn
aW4qIHBsdWdpbiA9IHdlYmtpdFBsdWdpbkNyZWF0ZShwbHVnaW5Nb2R1bGVJbmZvKTsKKworICAg
ICAgICBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdFBsdWdpbkxvYWRS
ZXF1ZXN0Q3JlYXRlKHBsdWdpbik7CisKKyAgICAgICAgV2ViS2l0UGx1Z2luTG9hZFBvbGljeSBs
b2FkUG9saWN5ID0gd2Via2l0V2ViVmlld0xvYWRQbHVnaW5SZXF1ZXN0KG1fd2ViVmlldywgcmVx
dWVzdCk7CisgICAgICAgIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24gPSB3ZWJraXRfcGx1Z2lu
X2xvYWRfcmVxdWVzdF9nZXRfZGVzY3JpcHRpb24ocmVxdWVzdCk7CisKKyAgICAgICAgd2Via2l0
X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZShyZXF1ZXN0KTsKKworICAgICAgICBzd2l0Y2ggKGxv
YWRQb2xpY3kpIHsKKyAgICAgICAgY2FzZSBXRUJLSVRfUExVR0lOX0xPQURfQkxPQ0s6CisgICAg
ICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxlQmxvY2tlZDsKKyAgICAgICAgY2FzZSBXRUJLSVRf
UExVR0lOX0xPQURfTk9STUFMTFk6CisgICAgICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxlTG9h
ZE5vcm1hbGx5OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm4gUGx1Z2luTW9kdWxlTG9hZE5vcm1hbGx5OworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpEaWN0aW9uYXJ5KiBwbHVnaW5JbmZvRGlj
dGlvbmFyeSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCA9IHBsdWdpbkluZm9EaWN0aW9uYXJ5LT5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0
aW9uUGF0aEtleSgpKS0+c3RyaW5nKCk7CisgICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2lu
TW9kdWxlSW5mbyA9IHBhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkucGx1Z2luSW5mb1N0b3Jl
KCkuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOworICAgICAgICBXZWJLaXRQbHVn
aW4qIHBsdWdpbiA9IHdlYmtpdFBsdWdpbkNyZWF0ZShwbHVnaW5Nb2R1bGVJbmZvKTsKKworICAg
ICAgICBnYm9vbGVhbiBpc1Zpc2libGUgPSBwbHVnaW5JbmZvRGljdGlvbmFyeS0+Z2V0PEFQSTo6
Qm9vbGVhbj4ocGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCkpLT52YWx1
ZSgpOworCisgICAgICAgIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiogaW5mbyA9IHdl
YmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbkNyZWF0ZShwbHVnaW4sIGlzVmlzaWJsZSk7CisK
KyAgICAgICAgd2Via2l0V2ViVmlld0VtaXRQbHVnaW5CbG9ja2VkKG1fd2ViVmlldywgaW5mbyk7
CisKKyAgICAgICAgd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2ZyZWUoaW5mbyk7
CisgICAgfQorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKICAgICBX
ZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luLmNwcAppbmRleCBiNmRlYzFkM2E5ZWFlMWRjMWZm
ODI5NjBiOWM1MTRkZWE1NWI4YjNlLi4xMTQ2ZDNjZWJjOTAzZTNiODA5M2ZlZGZkMTk5ODZjMWY0
NjY2NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFBsdWdpbi5jcHAKQEAgLTMzLDEwICszMyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAg
KgogICogVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIHNpbmdsZSBwbHVnaW4sIGZvdW5kIHdoaWxl
IHNjYW5uaW5nIHRoZQogICogdmFyaW91cyBwbGF0Zm9ybSBwbHVnaW4gZGlyZWN0b3JpZXMuIFRo
aXMgb2JqZWN0IGNhbiBiZSB1c2VkIHRvIGdldAotICogbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBh
IHBsdWdpbiwgYW5kIGVuYWJsZS9kaXNhYmxlIGl0LCBhbGxvd2luZwotICogZmluZS1ncmFpbmVk
IGNvbnRyb2wgb2YgcGx1Z2lucy4gVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHBsdWdpbnMgY2FuCi0g
KiBiZSBvYnRhaW5lZCBmcm9tIHRoZSAjV2ViS2l0V2ViQ29udGV4dCwgd2l0aAotICogd2Via2l0
X3dlYl9jb250ZXh0X2dldF9wbHVnaW5zKCkuCisgKiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEg
cGx1Z2luIGFsbG93aW5nIGZpbmUtZ3JhaW5lZCBjb250cm9sIG9mCisgKiBwbHVnaW5zLiBUaGUg
bGlzdCBvZiBhdmFpbGFibGUgcGx1Z2lucyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUKKyAqICNX
ZWJLaXRXZWJDb250ZXh0LCB3aXRoIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfcGx1Z2lucygpLgog
ICoKICAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYTQ0NzI3MjkxNGE5ZWUwMzI4YjJiZGQ3YTk2Y2IyYWI5ZWE1MmE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tl
ZEluZm9ybWF0aW9uLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1
Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb25Qcml2YXRlLmgiCisKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRQbHVnaW5C
bG9ja2VkSW5mb3JtYXRpb24KKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogSW5mb3JtYXRpb24gYWJv
dXQgYSBibG9ja2VkIHBsdWdpbi4KKyAqIEBUaXRsZTogV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgorICogV2hlbiBXZWJLaXQg
YmxvY2tzIGEgcGx1Z2luIGxvYWQgaXQgYWxzbyBmaXJlcyB0aGUgI1dlYktpdFdlYlZpZXc6cGx1
Z2luLWJsb2NrZWQgc2lnbmFsCisgKiB3aXRoIGEgI1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbiBvYmplY3QuIFRoaXMgb2JqZWN0IGFsbG93cyB0aGUgY2xpZW50ZSB0byBnZXQKKyAqIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBibG9ja2VkIHBsdWdpbiBzdWNoIGFzIHdoZXRoZXIgaXQgaXMg
dmlzaWJsZSBpbiB0aGUgdmlldy4KKyAqLworCitzdHJ1Y3QgX1dlYktpdFBsdWdpbkJsb2NrZWRJ
bmZvcm1hdGlvbiB7CisgICAgX1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbihXZWJLaXRQ
bHVnaW4qIHVuYXZhaWxhYmxlUGx1Z2luLCBnYm9vbGVhbiBpc1Zpc2libGUpCisgICAgICAgIDog
cGx1Z2luKHVuYXZhaWxhYmxlUGx1Z2luKQorICAgICAgICAsIHZpc2libGUoaXNWaXNpYmxlKQor
ICAgIHsKKyAgICB9CisKKyAgICBfV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKFdlYktp
dFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiogaW5mbykKKyAgICAgICAgOiBwbHVnaW4oaW5mby0+
cGx1Z2luKQorICAgICAgICAsIHZpc2libGUoaW5mby0+dmlzaWJsZSkKKyAgICB7CisgICAgfQor
CisgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW47CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKK307CisK
K0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLCB3ZWJr
aXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb24sIHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZv
cm1hdGlvbl9jb3B5LCB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZnJlZSkKKwor
V2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiB3ZWJraXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb25DcmVhdGUoV2ViS2l0UGx1Z2luKiBwbHVnaW4sIGdib29sZWFuIGlzVmlzaWJsZSkKK3sK
KyAgICBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24qIGluZm8gPSBnX3NsaWNlX25ldyhX
ZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24pOworICAgIG5ldyAoaW5mbykgV2ViS2l0UGx1
Z2luQmxvY2tlZEluZm9ybWF0aW9uKHBsdWdpbiwgaXNWaXNpYmxlKTsKKyAgICByZXR1cm4gaW5m
bzsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29weQor
ICogQGluZm86IHRoZSBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBNYWtl
IGEgY29weSBvZiBAaW5mby4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEgY29w
eSBvZiBwYXNzZWQgb24gQGluZm8uCisgKgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0UGx1
Z2luQmxvY2tlZEluZm9ybWF0aW9uKiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25f
Y29weShXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24qIGluZm8pCit7CisgICAgV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBjb3B5SW5mbyA9IGdfc2xpY2VfbmV3KFdlYktpdFBs
dWdpbkJsb2NrZWRJbmZvcm1hdGlvbik7CisgICAgbmV3IChjb3B5SW5mbykgV2ViS2l0UGx1Z2lu
QmxvY2tlZEluZm9ybWF0aW9uKGluZm8pOworICAgIHJldHVybiBjb3B5SW5mbzsKK30KKworLyoq
CisgKiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZnJlZQorICogQGluZm86IHRo
ZSBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBGcmVlIEBpbmZvLgorICoK
KyAqIFNpbmNlOiAyLjEwCisgKi8KK3ZvaWQgd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0
aW9uX2ZyZWUoV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdf
c2xpY2VfZnJlZShXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24sIGluZm8pOworfQorCisv
KioKKyAqIHdlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luCisgKiBA
aW5mbzogdGhlICNXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24KKyAqCisgKiBHZXQgdGhl
ICNXZWJLaXRQbHVnaW4gb2YgdGhlIEBpbmZvLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBu
b25lKTogdGhlICNXZWJLaXRQbHVnaW4uCisgKgorICogU2luY2U6IDIuMTAKKyAqLworV2ViS2l0
UGx1Z2luKiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihXZWJL
aXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24qIGluZm8pCit7CisgICAgcmV0dXJuIGluZm8tPnBs
dWdpbjsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25faXNf
dmlzaWJsZQorICogQGluZm86IHRoZSAjV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uCisg
KgorICogV2hldGhlciB0aGUgcGx1Z2luIGlzIHZpc2libGUgb24gdGhlIHBhZ2Ugb3IgaXQgaGFz
IGJlZW4gb2JzY3VyZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgdGhlIHBsdWdpbiBpcyB2
aXNpYmxlIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMTAKKyAqLworZ2Jv
b2xlYW4gd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUoV2ViS2l0
UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIHJldHVybiBpbmZvLT52aXNp
YmxlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzM3
M2MwN2YwYzM1NzM5ZjU5YTgxY2YzMWNmMWVlMTEyMmQzZjNlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9y
bWF0aW9uLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdF
QktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4g
YmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luQmxv
Y2tlZEluZm9ybWF0aW9uX2gKKyNkZWZpbmUgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9u
X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRE
ZWZpbmVzLmg+CisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW4uaCIKKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1BMVUdJTl9CTE9DS0VEX0lORk9STUFUSU9OICh3ZWJraXRf
cGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3Jt
YXRpb247CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1h
dGlvbl9nZXRfdHlwZSAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFBsdWdpbkJs
b2NrZWRJbmZvcm1hdGlvbiAqCit3ZWJraXRfcGx1Z2luX2Jsb2NrZWRfaW5mb3JtYXRpb25fY29w
eSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24gKmluZm8pOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlICAg
ICAgICAgICAgKFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0UGx1Z2luICoKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9n
ZXRfcGx1Z2luICAgICAgKFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisK
K1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9p
c192aXNpYmxlICAgICAgKFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqaW5mbyk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvL1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVn
aW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTE0M2Q5MGNiZjEyMWQ5OGY5NGYxMjNlM2IzNTMyZDI4YzA1YjljZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvblByaXZhdGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0
aW9uUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvblByaXZh
dGVfaAorCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLmgiCisKK1dl
YktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbiAqIHdlYmtpdFBsdWdpbkJsb2NrZWRJbmZvcm1h
dGlvbkNyZWF0ZShXZWJLaXRQbHVnaW4qLCBnYm9vbGVhbik7CisKKyNlbmRpZiAvLyBXZWJLaXRQ
bHVnaW5CbG9ja2VkSW5mb3JtYXRpb25Qcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZWNjYTg2ODAyMDJlNWY1Y2Y1ZTE0MzFhY2I5MzEzZjhmYjRlYWRlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1
Z2luTG9hZFJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQ
bHVnaW5Mb2FkUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQ
cml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKKyAq
IEBTaG9ydF9kZXNjcmlwdGlvbjogQSByZXF1ZXN0IHRvIGxvYWQgYSBwbHVnaW4uCisgKiBAVGl0
bGU6IFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3
CisgKgorICogV2hlbiBhIHBsdWdpbiBpcyBnb2luZyB0byBiZSBsb2FkZWQsIFdlYktpdCB3aWxs
IGZpcmUgdGhlICNXZWJLaXRXZWJWaWV3Ojpsb2FkLXBsdWdpbgorICogc2lnbmFsIHdpdGggYSAj
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Qgb2JqZWN0LiBUaGlzIG9iamVjdCB3aWxsIGFsbG93IHRo
ZSBjbGllbnQgdG8KKyAqIGluc3BlY3QgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBsdWdpbiB0aGF0
IHdhbnQgdG8gYmUgbG9hZGVkIGFuZCB0byBzZXQgYSBkZXNjcmlwdGlvbgorICogYWJvdXQgd2h5
IGl0J3Mgbm90IGdvaW5nIHRvIGJlIGxvYWRlZC4KKyAqCisgKiBJZiB0aGUgc2lnbmFsIGlzIG5v
dCBoYW5kbGVkIFdlYktpdCB3aWxsIGxvYWQgdGhlIHBsdWdpbiBub3JtYWxseS4KKyAqLworCitz
dHJ1Y3QgX1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0IHsKKyAgICBfV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QoV2ViS2l0UGx1Z2luKiB1bmF2YWlsYWJsZVBsdWdpbikKKyAgICAgICAgOiBwbHVnaW4o
dW5hdmFpbGFibGVQbHVnaW4pCisgICAgICAgICwgZGVzYygwKQorICAgIHsKKyAgICB9CisKKyAg
ICBfV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVl
c3QpCisgICAgICAgIDogcGx1Z2luKHJlcXVlc3QtPnBsdWdpbikKKyAgICAgICAgLCBkZXNjKHJl
cXVlc3QtPmRlc2MpCisgICAgeworICAgIH0KKworICAgIFdlYktpdFBsdWdpbiogcGx1Z2luOwor
ICAgIGNvbnN0IGdjaGFyKiBkZXNjOworfTsKKworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktp
dFBsdWdpbkxvYWRSZXF1ZXN0LCB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdCwgd2Via2l0X3Bs
dWdpbl9sb2FkX3JlcXVlc3RfY29weSwgd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZnJlZSkK
KworV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHdlYmtpdFBsdWdpbkxvYWRSZXF1ZXN0Q3JlYXRl
KFdlYktpdFBsdWdpbiogcGx1Z2luKQoreworICAgIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KiBy
ZXN1bHQgPSBnX3NsaWNlX25ldyhXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCk7CisgICAgbmV3IChy
ZXN1bHQpIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0KHBsdWdpbik7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLyoqCisgKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5CisgKiBAcmVx
dWVzdDogdGhlIFdlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgKgorICogTWFrZSBhIGNvcHkgb2Yg
QHJlcXVlc3QuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFz
c2VkIG9uICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi4xMAorICov
CitXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfY29w
eShXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRQbHVnaW5M
b2FkUmVxdWVzdCogcmVzdWx0ID0gZ19zbGljZV9uZXcoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Qp
OworICAgIG5ldyAocmVzdWx0KSBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdChyZXF1ZXN0KTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisvKioKKyAqIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0
X2ZyZWUKKyAqIEByZXF1ZXN0OiB0aGUgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKKyAqCisgKiBG
cmVlIEByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK3ZvaWQgd2Via2l0X3BsdWdp
bl9sb2FkX3JlcXVlc3RfZnJlZShXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QsIHJlcXVlc3QpOworfQor
CisvKioKKyAqIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9wbHVnaW4KKyAqIEByZXF1
ZXN0OiB0aGUgI1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0CisgKgorICogR2V0IHRoZSAjV2ViS2l0
UGx1Z2luIG9mIHRoZSBAcmVxdWVzdC4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IHRoZSAjV2ViS2l0UGx1Z2luLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdp
biogd2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3BsdWdpbihXZWJLaXRQbHVnaW5Mb2Fk
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gcmVxdWVzdC0+cGx1Z2luOworfQorCisv
KioKKyAqIHdlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X3NldF9kZXNjcmlwdGlvbgorICogQHJl
cXVlc3Q6IHRoZSAjV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QKKyAqIEBkZXNjcmlwdGlvbjogdGhl
IGRlc2NyaXB0aW9uLgorICoKKyAqIFNldCB0aGUgZGVzY3JpcHRpb24gYWJvdXQgd2h5IHRoZSBw
bHVnaW4gaXMgYmVpbmcgbG9hZGVkIHdpdGggc29tZSBwb2xpY3kuCisgKgorICogU2luY2U6IDIu
MTAKKyAqLwordm9pZCB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9zZXRfZGVzY3JpcHRpb24o
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
KQoreworICAgIHJlcXVlc3QtPmRlc2MgPSBkZXNjcmlwdGlvbjsKK30KKworY29uc3QgY2hhciog
d2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKFdlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiByZXF1ZXN0LT5kZXNjOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9h
ZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdp
bkxvYWRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlZThhMDBmMDBjMzE4YjczZjgxYTM3MGJiZmU5
NzliMDQwYjkzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RfaAorI2RlZmluZSBXZWJLaXRQbHVnaW5M
b2FkUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RGVmaW5lcy5oPgorCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luLmgiCisKK0dfQkVH
SU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9QTFVHSU5fTE9BRF9SRVFVRVNUICh3ZWJr
aXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3QgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3Q7CisKK1dFQktJVF9B
UEkgR1R5cGUKK3dlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF90eXBlICAgICAgICAodm9p
ZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QgKgord2Via2l0X3BsdWdp
bl9sb2FkX3JlcXVlc3RfY29weSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAq
cmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3Rf
ZnJlZSAgICAgICAgICAgIChXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dF
QktJVF9BUEkgV2ViS2l0UGx1Z2luICoKK3dlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X2dldF9w
bHVnaW4gICAgICAoV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9wbHVnaW5fbG9hZF9yZXF1ZXN0X3NldF9kZXNjcmlwdGlvbiAoV2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uKTsK
KworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3RQcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGY3NTA5MjU3MzExZTI5NTZiZTY4NTkxYzAwMDM1NTMzZjM4MDNlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFBsdWdpbkxvYWRSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVz
dFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdFByaXZhdGVfaAorCisj
aW5jbHVkZSAiV2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QuaCIKKworV2ViS2l0UGx1Z2luTG9hZFJl
cXVlc3QgKiB3ZWJraXRQbHVnaW5Mb2FkUmVxdWVzdENyZWF0ZShXZWJLaXRQbHVnaW4gKik7Citj
b25zdCBjaGFyKiB3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfZGVzY3JpcHRpb24oV2Vi
S2l0UGx1Z2luTG9hZFJlcXVlc3QqKTsKKworI2VuZGlmIC8vIFdlYktpdFBsdWdpbkxvYWRSZXF1
ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZkY2IzMDI3OGVmNDZkYzI4Zjc2YmMyNDllZTQ5YmFhMjM3MTE1
OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmNwcApAQCAtMCwwICsxLDEyMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5oIgor
CisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvblByaXZhdGUu
aCIKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0
aW9uCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEluZm9ybWF0aW9uIGFib3V0IHRoZSB1bmF2YWls
YWJpbGl0eSBvZiBhIGNlcnRhaW4gcGx1Z2luLgorICogQFRpdGxlOiBXZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eUluZm9ybWF0aW9uCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgor
ICogV2hlbiB0aGUgdXNlciB0cmllcyB0byBhY3RpdmF0ZSBhIHBsdWdpbiB0aGF0IGlzIGJsb2Nr
ZWQgb3IgbWlzc2luZyBXZWJLaXQgd2lsbCBmaXJlCisgKiBhICNXZWJLaXRXZWJWaWV3Ojp1bmF2
YWlsYWJsZS1wbHVnaW4tYWN0aXZhdGVkIHNpZ25hbCB3aXRoIGEKKyAqICNXZWJLaXRQTHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uIG9iamVjdCwgd2hpY2ggd2lsbCBhbGxvdyB0aGUgY2xp
ZW50IGFwcGxpY2F0aW9uCisgKiB0byBpbnNwZWN0IGRldGFpbHMgYWJvdXQgdGhlIHVuYXZhaWxh
YmlsaXR5IG9mIHRoZSBwbHVnaW4uCisgKi8KKworc3RydWN0IF9XZWJLaXRQbHVnaW5VbmF2YWls
YWJpbGl0eUluZm9ybWF0aW9uIHsKKyAgICBfV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZv
cm1hdGlvbihXZWJLaXRQbHVnaW4qIHVuYXZhaWxhYmxlUGx1Z2luLCBXZWJLaXRQbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiB1bmF2YWlsYWJpbGl0eVJlYXNvbikKKyAgICAgICAgOiBwbHVnaW4o
dW5hdmFpbGFibGVQbHVnaW4pCisgICAgICAgICwgcmVhc29uKHVuYXZhaWxhYmlsaXR5UmVhc29u
KQorICAgIHsKKyAgICB9CisKKyAgICBfV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbihXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQorICAgICAg
ICA6IHBsdWdpbihpbmZvLT5wbHVnaW4pCisgICAgICAgICwgcmVhc29uKGluZm8tPnJlYXNvbikK
KyAgICB7CisgICAgfQorCisgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW47CisgICAgV2ViS2l0UGx1
Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcmVhc29uOworICAgIGNvbnN0IGdjaGFyKiB1cmk7Cit9
OworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3Jt
YXRpb24sIHdlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb24sIHdlYmtpdF9w
bHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fY29weSwgd2Via2l0X3BsdWdpbl91bmF2
YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9mcmVlKTsKKworV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbiogd2Via2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbkNyZWF0
ZShXZWJLaXRQbHVnaW4qIHBsdWdpbiwgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24g
cmVhc29uKQoreworICAgIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIHJl
c3VsdCA9IGdfc2xpY2VfbmV3KFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24p
OworICAgIG5ldyAocmVzdWx0KSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9u
KHBsdWdpbiwgcmVhc29uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioKKyAqIHdlYmtp
dF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fY29weQorICogQGluZm86IGEgI1dl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXRpeUluZm9ybWF0aW9uCisgKgorICogTWFrZSBhIGNvcHkg
b2YgQGluZm8uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFz
c2VkIG9uICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLgorICoKKyAqIFNp
bmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIHdl
YmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fY29weShXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIFdlYktpdFBsdWdpblVuYXZh
aWxhYmlsaXR5SW5mb3JtYXRpb24qIHJlc3VsdCA9IGdfc2xpY2VfbmV3KFdlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24pOworICAgIG5ldyAocmVzdWx0KSBXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKGluZm8pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
Ky8qKgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9mcmVlCisg
KiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdGl5SW5mb3JtYXRpb24KKyAqCisg
KiBGcmVlIEBpbmZvLgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK3ZvaWQgd2Via2l0X3BsdWdp
bl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9mcmVlKFdlYktpdFBsdWdpblVuYXZhaWxhYmls
aXR5SW5mb3JtYXRpb24qIGluZm8pCit7CisgICAgZ19zbGljZV9mcmVlKFdlYktpdFBsdWdpblVu
YXZhaWxhYmlsaXR5SW5mb3JtYXRpb24sIGluZm8pOworfQorCisvKioKKyAqIHdlYmtpdF9wbHVn
aW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNvbgorICogQGluZm86IGEgI1dl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXRpeUluZm9ybWF0aW9uCisgKgorICogR2V0IHRoZSByZWFz
b24gb2YgdGhlICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0aXlJbmZvcm1hdGlvbi4KKyAqCisg
KiBSZXR1cm5zOiBhICNXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbgorICoKKyAqIFNp
bmNlOiAyLjEwCisgKi8KK1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHdlYmtpdF9w
bHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3JlYXNvbihXZWJLaXRQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIHJldHVybiBpbmZvLT5yZWFz
b247Cit9CisKKy8qKgorICogd2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlv
bl9nZXRfcGx1Z2luCisgKiBAaW5mbzogYSAjV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdGl5SW5m
b3JtYXRpb24KKyAqCisgKiBHZXQgdGhlIHBsdWdpbiBvZiBAaW5mby4KKyAqCisgKiBSZXR1cm5z
OiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0UGx1Z2luIG9mIHRoZSAjV2ViS2l0UGx1Z2lu
VW5hdmFpbGFiaWxpdGl5SW5mb3JtYXRpb24uCisgKgorICogU2luY2U6IDIuMTAKKyAqLworV2Vi
S2l0UGx1Z2luKiB3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9w
bHVnaW4oV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5mbykKK3sKKyAg
ICByZXR1cm4gaW5mby0+cGx1Z2luOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxp
dHlJbmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3OTliMGVhYjQ2MDc1NGMxODUyMTFjNmFmYWMx
NTViN2RhMmM4ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmgKQEAgLTAsMCAr
MSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmlu
ZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04p
CisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0
bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvbl9oCisjZGVmaW5lIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25faAor
CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmlu
ZXMuaD4KKworI2luY2x1ZGUgIldlYktpdFBsdWdpbi5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfUExVR0lOX1VOQVZBSUxBQklMSVRZX0lORk9STUFUSU9OICh3ZWJr
aXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF90eXBlKCkpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uIFdlYktpdFBs
dWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb247CisKKy8qKgorICogV2ViS2l0UGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb246CisgKiBAV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFT
T05fTUlTU0lORzogVGhlIHBsdWdpbiBpcyBtaXNzaW5nLgorICogQFdFQktJVF9QTFVHSU5fVU5B
VkFJTEFCSUxJVFlfUkVBU09OX0JMT0NLRUQ6IFRoZSBwbHVnaW4gaXMgYmxvY2tlZCBieSB0aGUg
YXBwbGljYXRpb24uCisgKiBAV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fQ1JB
U0hFRDogVGhlIHBsdWdpbiBjcmFzaGVkLgorICogRW51bSB2YWx1ZXMgcmVwcmVzZW50aW5nIHJl
YXNvbnMgZm9yIHBsdWdpbiB1bmF2YWlsYWJpbGl0eS4KKyAqCisgKiBTaW5jZTogMi4xMAorICov
Cit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9QTFVHSU5fVU5BVkFJTEFCSUxJVFlfUkVBU09O
X01JU1NJTkcsCisgICAgV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fQkxPQ0tF
RCwKKyAgICBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNPTl9DUkFTSEVECit9IFdl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uOworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF90eXBlICAgICAgICAodm9p
ZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiAq
Cit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2NvcHkgICAgICAgICAg
ICAoV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9mcmVl
ICAgICAgICAgICAgKFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24gKmluZm8p
OworCitXRUJLSVRfQVBJIFdlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uCit3ZWJraXRf
cGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9yZWFzb24gICAgICAoV2ViS2l0
UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiAqaW5mbyk7CisKK1dFQktJVF9BUEkgV2Vi
S2l0UGx1Z2luICoKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0
X3BsdWdpbiAgICAgIChXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uICppbmZv
KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5h
dmFpbGFiaWxpdHlJbmZvcm1hdGlvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmQwNjliNWMzMTUw
MmFhNDFiMjc2YTFiNzM2MGUzYTY5MTA5YzZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1h
dGlvblByaXZhdGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlv
blByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9u
UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0
aW9uLmgiCisKK1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qIHdlYmtpdFBs
dWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25DcmVhdGUoV2ViS2l0UGx1Z2luKiwgV2ViS2l0
UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCBlZDM4NGNi
ZGViMjgxMDE1MDRkMGE5MTkyZTllMjE3ODY4MWE1YzMyLi5hYmY2Zjk5OTM5ZGUxYWIzYWU1Mjc4
OTRiMTUxN2Q3NGM1MmE1YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMSwxMCArMjEsMTQgQEAKICNpbmNsdWRl
ICJXZWJLaXRVSUNsaWVudC5oIgogCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRl
ICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYktpdEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dE5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Tm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0
ZS5oIgorI2luY2x1ZGUgIldlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb25Qcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJl
cXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcml2YXRlLmgiCkBAIC0zMiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CiAKQEAgLTE5MSw2ICsxOTYsMzggQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2Vi
Vmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChtX3dlYlZpZXcpOwogICAgIH0KIAorI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIHZpcnR1YWwgdm9pZCB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UsIFdLUGx1Z2luVW5hdmFp
bGFiaWxpdHlSZWFzb24gd2tyZWFzb24sIEFQSTo6RGljdGlvbmFyeSogcGx1Z2luSW5mb0RpY3Rp
b25hcnkpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbiByZWFzb247CisgICAgICAgIFdlYktpdFBsdWdpbiogcGx1Z2luOworCisgICAgICAg
IHN3aXRjaCAod2tyZWFzb24pIHsKKyAgICAgICAgY2FzZSBrV0tQbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvblBsdWdpbk1pc3Npbmc6CisgICAgICAgICAgICByZWFzb24gPSBXRUJLSVRfUExVR0lO
X1VOQVZBSUxBQklMSVRZX1JFQVNPTl9NSVNTSU5HOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Uga1dLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25QbHVnaW5DcmFzaGVkOgorICAg
ICAgICAgICAgcmVhc29uID0gV0VCS0lUX1BMVUdJTl9VTkFWQUlMQUJJTElUWV9SRUFTT05fQ1JB
U0hFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtXS1BsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uSW5zZWN1cmVQbHVnaW5WZXJzaW9uOgorICAgICAgICAgICAgLyogV2hlbiB3
ZSBibG9jayBhIHBsdWdpbiwgdGhlIHJlYXNvbiB3ZSBwcm92aWRlIGlzICJJbnNlY3VyZVBsdWdp
blZlcnNpb24iLiAqLworICAgICAgICAgICAgcmVhc29uID0gV0VCS0lUX1BMVUdJTl9VTkFWQUlM
QUJJTElUWV9SRUFTT05fQkxPQ0tFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHJlYXNvbiAhPSBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JFQVNP
Tl9NSVNTSU5HKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGggPSBwbHVn
aW5JbmZvRGljdGlvbmFyeS0+Z2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvblBhdGhL
ZXkoKSktPnN0cmluZygpOworICAgICAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW5Nb2R1
bGVJbmZvID0gcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucGx1Z2luSW5mb1N0b3JlKCku
aW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOworICAgICAgICAgICAgcGx1Z2luID0g
d2Via2l0UGx1Z2luQ3JlYXRlKHBsdWdpbk1vZHVsZUluZm8pOworICAgICAgICB9CisKKyAgICAg
ICAgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogdW5hdmFpbGFiaWxpdHlJ
bmZvID0gd2Via2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbkNyZWF0ZShwbHVnaW4s
IHJlYXNvbik7CisgICAgICAgIHdlYktpdFdlYlZpZXdFbWl0VW5hdmFpbGFibGVQbHVnaW5BY3Rp
dmF0ZWQobV93ZWJWaWV3LCB1bmF2YWlsYWJpbGl0eUluZm8pOworCisgICAgICAgIHdlYmtpdF9w
bHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZnJlZSh1bmF2YWlsYWJpbGl0eUluZm8p
OworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKwogICAgIFdl
YktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggY2Q2ZGE0YTgwMjhhOTMwNjZl
MGYwMDBlYmM4ZWYyNTRiMTg0NjAwNi4uM2EzNDk2OGNjZWNmYTMyOGZhZDM3NGUyMzliNmQ0YzMz
YWQwNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5jcHAKQEAgLTEzMyw2ICsxMzMsMTAgQEAgZW51bSB7CiAKICAgICBSVU5fQ09M
T1JfQ0hPT1NFUiwKIAorICAgIExPQURfUExVR0lOLAorICAgIFBMVUdJTl9CTE9DS0VELAorICAg
IFVOQVZBSUxBQkxFX1BMVUdJTl9BQ1RJVkFURUQsCisKICAgICBMQVNUX1NJR05BTAogfTsKIApA
QCAtNjI1LDYgKzYyOSwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1Nob3dOb3Rp
ZmljYXRpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlvbgogI2VuZGlmCiB9CiAK
K3N0YXRpYyBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5IHdlYmtpdFdlYlZpZXdMb2FkUGx1Z2luKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCopCit7CisgICAgcmV0dXJuIFdF
QktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKQEAgLTc2OSw2
ICs3NzgsMTQgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBY2N1bXVsYXRvck9iamVj
dEhhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiwgR1YKICAgICByZXR1cm4gIW9iamVjdDsK
IH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBY2N1bXVsYXRvclBsdWdpbkxvYWRQ
b2xpY3lIYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCosIEdWYWx1ZSogcmV0dXJuVmFsdWUs
IGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIpCit7CisgICAgaW50IHBvbGlj
eSA9IGdfdmFsdWVfZ2V0X2ludChoYW5kbGVyUmV0dXJuKTsKKyAgICBnX3ZhbHVlX3NldF9pbnQo
cmV0dXJuVmFsdWUsIHBvbGljeSk7CisKKyAgICByZXR1cm4gcG9saWN5ID09IFdFQktJVF9QTFVH
SU5fTE9BRF9OT1JNQUxMWTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNz
X2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiB7CiAgICAgR09iamVjdENs
YXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwpAQCAtNzg2
LDYgKzgwMyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVf
Y2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcjsKICAgICB3ZWJWaWV3Q2xhc3Mt
PmF1dGhlbnRpY2F0ZSA9IHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGU7CiAgICAgd2ViVmlld0Ns
YXNzLT5zaG93X25vdGlmaWNhdGlvbiA9IHdlYmtpdFdlYlZpZXdTaG93Tm90aWZpY2F0aW9uOwor
ICAgIHdlYlZpZXdDbGFzcy0+bG9hZF9wbHVnaW4gPSB3ZWJraXRXZWJWaWV3TG9hZFBsdWdpbjsK
IAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRleHQ6CkBAIC0xNzQ5LDYg
KzE3NjcsNzcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9C
T09MRUFOX19PQkpFQ1QsCiAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKICAgICAgICAg
ICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCk7CisKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRXZWJWaWV3Ojpsb2FkLXBsdWdpbjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2Vi
S2l0V2ViVmlldworICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAor
ICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgcGx1Z2luIGlzIGFi
b3V0IHRvIGJlIGxvYWRlZCBpbiBhIHBhZ2UuIFRoZQorICAgICAqIEByZXF1ZXN0IGluc3RhY2Ug
aGFzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwbHVnaW4gYW5kIGFsbG93cyB0byBzZXQgYSBkZXNj
cmlwdGlvbgorICAgICAqIGFib3V0IHdoeSB0aGUgcGx1Z2luIGlzIGdvaW5nIHRvIGJlIGJsb2Nr
ZWQuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBoYW5kbGVyIHdpbGwgcmV0dXJuIFdFQktJ
VF9QTFVHSU5fTE9BRF9OT1JNQUxMWS4KKyAgICAgKgorICAgICAqIFRoZSBldmVudCB3aWxsIGJl
IHByb3BhZ2F0ZWQgdW50aWwgYSBoYW5kbGVyIGJsb2NrcyBhIHBsdWdpbiBsb2FkLgorICAgICAq
CisgICAgICogUmV0dXJuczogQSAjV2ViS2l0UGx1Z2luTG9hZFBvbGljeSB2YWx1ZSB0aGF0IGlu
ZGljYXRlcyB0aGUgbG9hZCBwb2xpY3kgdGhhdCBzaG91bGQKKyAgICAgKiAgIGJlIHVzZWQuCisg
ICAgICoKKyAgICAgKiBTaW5jZTogMi4xMAorICAgICAqLworICAgIHNpZ25hbHNbTE9BRF9QTFVH
SU5dID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJsb2FkLXBsdWdpbiIsCisgICAgICAgICAgICBH
X1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVO
X0xBU1QsCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBs
b2FkX3BsdWdpbiksCisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QWNjdW11bGF0b3JQbHVnaW5M
b2FkUG9saWN5SGFuZGxlZCwgbnVsbHB0ciAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAg
ICAgICAgd2Via2l0X21hcnNoYWxfSU5UX19CT1hFRCwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQs
IDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9QTFVHSU5fTE9BRF9SRVFVRVNUKTsKKworCisg
ICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6cGx1Z2luLWJsb2NrZWQ6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcKKyAgICAgKiBAcGx1Z2luX2Jsb2NrZWRfaW5mbzog
YSAjV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uCisgICAgICoKKyAgICAgKiBUaGlzIHNp
Z25hbCBpcyBlbWl0dGVkIHdoZW4gYSBwbHVnaW4gaXMgYmxvY2tlZC4gVGhlIEBwbHVnaW5fYmxv
Y2tlZF9pbmZvIGluc3RhbmNlIGhhcworICAgICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwbHVn
aW4gYW5kIGFib3V0IGlmIGl0IGlzIGJlZW4gc2hvd24gaW4gdGhlIHBhZ2UuCisgICAgICoKKyAg
ICAgKiBTaW5jZTogMi4xMAorICAgICAqLworICAgIHNpZ25hbHNbUExVR0lOX0JMT0NLRURdID0K
KyAgICAgICAgZ19zaWduYWxfbmV3KCJwbHVnaW4tYmxvY2tlZCIsCisgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBwbHVn
aW5fYmxvY2tlZCksCisgICAgICAgICAgICBudWxscHRyLCBudWxscHRyIC8qIGFjY3VtdWxhdG9y
IGRhdGEgKi8sCisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fQk9YRUQsCisg
ICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1BMVUdJ
Tl9CTE9DS0VEX0lORk9STUFUSU9OKTsKKworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6dW5hdmFpbGFibGUtcGx1Z2luLWFjdGl2YXRlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldworICAgICAqIEBpbmZvOiBhICNXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdAor
ICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHRyaWVz
IHRvIGZvcmNlIHRoZSBsb2FkIG9mIGEgcGx1Z2luIHRoYXQgaGFzCisgICAgICogYmVlbiBibG9j
a2VkIGNsaWNraW5nIHRoZSB1bmF2YWlsYWJsZSBidXR0b24sIGZvciBleGFtcGxlLiBUaGUgQGlu
Zm8gb2JqZWN0CisgICAgICogY29udGFpbnMgaW5mbyBhYm91dCB0aGUgcGx1Z2luIGFuZCB0aGUg
dW5hdmFpbGFiaWxpdHkgcmVhc29uLgorICAgICAqCisgICAgICogU2luY2U6IDIuMTAKKyAgICAg
Ki8KKyAgICBzaWduYWxzW1VOQVZBSUxBQkxFX1BMVUdJTl9BQ1RJVkFURURdID0KKyAgICAgICAg
Z19zaWduYWxfbmV3KCJ1bmF2YWlsYWJsZS1wbHVnaW4tYWN0aXZhdGVkIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9S
VU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3Ms
IHVuYXZhaWxhYmxlX3BsdWdpbl9hY3RpdmF0ZWQpLAorICAgICAgICAgICAgbnVsbHB0ciwgbnVs
bHB0ciAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJz
aGFsX1ZPSURfX0JPWEVELAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgICAg
ICBXRUJLSVRfVFlQRV9QTFVHSU5fVU5BVkFJTEFCSUxJVFlfSU5GT1JNQVRJT04pOwogfQogCiBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0yMTMzLDYgKzIyMjIsMjMgQEAgYm9vbCB3ZWJraXRXZWJW
aWV3RW1pdFJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xv
ckNob29zZXIKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorV2ViS2l0UGx1Z2luTG9hZFBvbGlj
eSB3ZWJraXRXZWJWaWV3TG9hZFBsdWdpblJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0UGx1Z2luTG9hZFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0UGx1Z2luTG9h
ZFBvbGljeSBwb2xpY3k7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURf
UExVR0lOXSwgMCwgcmVxdWVzdCwgJnBvbGljeSk7CisgICAgcmV0dXJuIHBvbGljeTsKK30KKwor
dm9pZCB3ZWJraXRXZWJWaWV3RW1pdFBsdWdpbkJsb2NrZWQoV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKiBpbmZvKQoreworICAgIGdfc2lnbmFs
X2VtaXQod2ViVmlldywgc2lnbmFsc1tQTFVHSU5fQkxPQ0tFRF0sIDAsIGluZm8pOworfQorCit2
b2lkIHdlYktpdFdlYlZpZXdFbWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQoV2ViS2l0V2Vi
VmlldyAqd2ViVmlldywgV2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZvcm1hdGlvbiogaW5m
bykKK3sKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbVU5BVkFJTEFCTEVfUExV
R0lOX0FDVElWQVRFRF0sIDAsIGluZm8pOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19u
ZXc6CiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCmluZGV4IDBjZmMyNDcwODYwY2IyNDU0NzcxY2ViYzcyYzY2YzhiZTM2YzYyMWEuLjI4
MTlkZmVkYmNmOWEyZDAyN2FlZDdhZDk2NDhhODYwMDJkNmNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTQyLDYgKzQyLDkg
QEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdE5vdGlmaWNhdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
UGVybWlzc2lvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpbkJsb2Nr
ZWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGx1Z2luTG9hZFJlcXVl
c3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3Jt
YXRpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFBvbGljeURlY2lzaW9uLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHREaWFsb2cuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFNldHRpbmdzLmg+CkBAIC0xODMsNiArMTg2LDE5IEBAIHR5cGVkZWYgZW51bSB7CiAgIFdF
QktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwKIH0gV2ViS2l0U25hcHNob3RSZWdp
b247CiAKKworLyoqCisgKiBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5OgorICogQFdFQktJVF9QTFVH
SU5fTE9BRF9CTE9DSzogVGhlIHBsdWdpbiBsb2FkIHdpbGwgYmUgYmxvY2tlZC4KKyAqIEBXRUJL
SVRfUExVR0lOX0xPQURfTk9STUFMTFk6IFRoZSBwbHVnaW4gd2lsbCBsb2FkIG5vcm1hbGx5Lgor
ICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGx1Z2luIGxvYWQgcG9saWN5
LgorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9QTFVHSU5fTE9BRF9CTE9DSywKKyAg
ICBXRUJLSVRfUExVR0lOX0xPQURfTk9STUFMTFkKK30gV2ViS2l0UGx1Z2luTG9hZFBvbGljeTsK
Kwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7
CiAKQEAgLTE5Myw2MCArMjA5LDY2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7
CiAKLSAgICB2b2lkICAgICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxv
YWRfZXZlbnQpOwotICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAg
ICAgICAgbG9hZF9ldmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191cmksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAg
ICAgICAgICAgICAgICAgKmVycm9yKTsKLQotICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE5h
dmlnYXRpb25BY3Rpb24gICAgICAqbmF2aWdhdGlvbl9hY3Rpb24pOwotICAgIHZvaWQgICAgICAg
KCogcmVhZHlfdG9fc2hvdykgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lk
ICAgICAgICgqIGNsb3NlKSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9n
KSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2Ny
aXB0RGlhbG9nICAgICAgICAgICpkaWFsb2cpICA7Ci0KLSAgICBnYm9vbGVhbiAgICgqIGRlY2lk
ZV9wb2xpY3kpICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICAgKmRlY2lzaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAg
ICB0eXBlKTsKLSAgICBnYm9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAg
ICAgKnBlcm1pc3Npb25fcmVxdWVzdCk7Ci0gICAgdm9pZCAgICAgICAoKiBtb3VzZV90YXJnZXRf
Y2hhbmdlZCkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0
VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVycyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBwcmludCkgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24g
ICAgICAgICpwcmludF9vcGVyYXRpb24pOwotICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9h
ZF9zdGFydGVkKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdl
YlJlc291cmNlICAgICAgICAgICAqcmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVl
c3QpOwotICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBs
ZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3KTsKLSAgICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QgICAgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51
ICAgICAgICAgICAqY29udGV4dF9tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRl
c3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsKLSAgICB2b2lkICAgICAgICgqIGNv
bnRleHRfbWVudV9kaXNtaXNzZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVx
dWVzdCAqcmVxdWVzdCk7Ci0gICAgdm9pZCAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVj
dGVkKSAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQgICBldmVudCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiB3ZWJfcHJvY2Vzc19jcmFzaGVk
KSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLQotICAg
IGdib29sZWFuICAgKCogYXV0aGVudGljYXRlKSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAqcmVxdWVzdCk7
Ci0gICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZF93aXRoX3Rsc19lcnJvcnMpIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICpmYWls
aW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdUbHNDZXJ0aWZpY2F0ZSAgICAgICAgICAgICAqY2VydGlmaWNhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAg
ICAgICAgIGVycm9ycyk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBzaG93X25vdGlmaWNhdGlvbikgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Tm90aWZpY2F0aW9u
ICAgICAgICAgICpub3RpZmljYXRpb24pOwotICAgIGdib29sZWFuICAgKCogcnVuX2NvbG9yX2No
b29zZXIpICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAoKiBsb2FkX2NoYW5nZWQpICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZF9ldmVudCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAo
KiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZF9ldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpmYWlsaW5nX3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICplcnJvcik7CisKKyAgICBHdGtXaWRnZXQgKiAgICAgICAgICAgICgqIGNyZWF0
ZSkgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uICAgICAgICAgICAg
ICAgICpuYXZpZ2F0aW9uX2FjdGlvbik7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiBy
ZWFkeV90b19zaG93KSAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogcnVu
X2FzX21vZGFsKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICgqIGNsb3Nl
KSAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAg
ICAgICAgICp3ZWJfdmlldyk7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHNjcmlw
dF9kaWFsb2cpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAgICAgICAgICAg
ICAgICpkaWFsb2cpICA7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIGRlY2lkZV9w
b2xpY3kpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvbiAgICAgICAgICAgICAgICAg
ICpkZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUgICAgICAgICAgICAgICB0
eXBlKTsKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCAgICAgICAgICAgICAgICpwZXJtaXNzaW9u
X3JlcXVlc3QpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgKCogbW91c2VfdGFyZ2V0X2No
YW5nZWQpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAgICAgICAgICAgKmhpdF90
ZXN0X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
b2RpZmllcnMpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCogcHJpbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFByaW50T3BlcmF0aW9uICAgICAgICAgICAgICAgICAgKnByaW50
X29wZXJhdGlvbik7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAoKiByZXNvdXJjZV9sb2Fk
X3N0YXJ0ZWQpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAqcmVz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAqcmVxdWVz
dCk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBlbnRlcl9mdWxsc2NyZWVuKSAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcp
OworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgKndlYl92aWV3KTsK
KyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QgICAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICBn
Ym9vbGVhbiAgICAgICAgICAgICAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRDb250ZXh0TWVudSAgICAgICAgICAgICAgICAgICAgICpjb250ZXh0X21lbnUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Rr
RXZlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0
VGVzdFJlc3VsdCAgICAgICAgICAgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICgqIGNvbnRleHRfbWVudV9kaXNtaXNzZWQpICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAoKiBzdWJtaXRfZm9ybSkgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Rm9y
bVN1Ym1pc3Npb25SZXF1ZXN0ICAgICAgICAgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAoKiBpbnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5zZWN1cmVD
b250ZW50RXZlbnQgICAgICAgICAgICAgZXZlbnQpOworICAgIGdib29sZWFuICAgICAgICAgICAg
ICAgKCogd2ViX3Byb2Nlc3NfY3Jhc2hlZCkgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAgICAgICAgICAg
ICAgKCogYXV0aGVudGljYXRlKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVx
dWVzdCAgICAgICAgICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgICAgICAgICAgICAgKCog
bG9hZF9mYWlsZWRfd2l0aF90bHNfZXJyb3JzKSAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKmZhaWxpbmdfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZSAgICAgICAgICAgICAg
ICAgICAgICAgKmNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzICAgICAgICAg
ICAgICAgICAgIGVycm9ycyk7CisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAoKiBzaG93X25v
dGlmaWNhdGlvbikgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Tm90aWZpY2F0aW9uICAgICAgICAgICAgICAgICAg
ICAqbm90aWZpY2F0aW9uKTsKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICgqIHJ1bl9jb2xv
cl9jaG9vc2VyKSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAg
ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICAgICAg
ICpyZXF1ZXN0KTsKKyAgICBXZWJLaXRQbHVnaW5Mb2FkUG9saWN5ICgqIGxvYWRfcGx1Z2luKSAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCAgICAgICAgICAgICAgICpyZXF1
ZXN0KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICgqIHBsdWdpbl9ibG9ja2VkKSAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24gICAgICAgICppbmZvKTsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICgqIHVuYXZhaWxhYmxlX3BsdWdpbl9hY3RpdmF0ZWQp
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uICppbmZvKTsKIAogICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MSkgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggMjZlZmJkNTFmY2ExMjRhZTI5ZmZhOWU2NjYx
YmU0MTJkMDVhZmFhNi4uZGU5NDEzNmM4NWNiNDQwODE2ZjE0MDgyMGZiYzA5ZGU1NzVjMGVlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC02MCw2ICs2MCw5IEBAIHZvaWQgd2Via2l0V2ViVmlld0hhbmRs
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OkF1dGhlbnRp
CiB2b2lkIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQpOwogYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFNo
b3dOb3RpZmljYXRpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlvbiopOwogYm9v
bCB3ZWJraXRXZWJWaWV3RW1pdFJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCopOworV2ViS2l0UGx1Z2luTG9hZFBvbGljeSB3ZWJraXRXZWJW
aWV3TG9hZFBsdWdpblJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdFBsdWdpbkxvYWRSZXF1
ZXN0Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdFbWl0UGx1Z2luQmxvY2tlZChXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uKik7Cit2b2lkIHdlYktpdFdlYlZpZXdF
bWl0VW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFBsdWdp
blVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24qKTsKIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nl
c3NDcmFzaGVkKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1
ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKaW5kZXggYmNkNWY0ZGIyMGIxNGEwOTA2YmNhNDYyZDljNDc1NWZkODk4YTFmNi4uNDhl
ZWVlYzEzMzljMTU0MWU5ZTAzZGE5YjIzMmM0YWI5ZDY5ZmMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKQEAgLTk2OSw2ICs5NjksNTYgQEAgV2ViS2l0UGx1Z2luUHJpdmF0
ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFBsdWdpbkJsb2NrZWRJbmZv
cm1hdGlvbjwvRklMRT4KK1dlYktpdFBsdWdpbkJsb2NrZWRJbmZvcm1hdGlvbgorV2ViS2l0UGx1
Z2luTG9hZFBvbGljeQord2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2NvcHkKK3dl
YmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9mcmVlCit3ZWJraXRfcGx1Z2luX2Jsb2Nr
ZWRfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbgord2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0
aW9uX2lzX3Zpc2libGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9QTFVH
SU5fQkxPQ0tFRF9JTkZPUk1BVElPTgorCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X3Bs
dWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF90eXBlCisKKzwvU0VDVElPTj4KKworPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdDwvRklMRT4KK1dlYktpdFBsdWdpbkxv
YWRSZXF1ZXN0Cit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9jb3B5Cit3ZWJraXRfcGx1Z2lu
X2xvYWRfcmVxdWVzdF9mcmVlCit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2lu
Cit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9zZXRfZGVzY3JpcHRpb24KKworPFNVQlNFQ1RJ
T04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9QTFVHSU5fTE9BRF9SRVFVRVNUCisKKzxTVUJTRUNU
SU9OIFByaXZhdGU+Cit3ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfdHlwZQorCis8L1NF
Q1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0UGx1Z2luVW5hdmFpbGFiaWxpdHlJbmZv
cm1hdGlvbjwvRklMRT4KK1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24KK1dl
YktpdFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uCit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmls
aXR5X2luZm9ybWF0aW9uX2NvcHkKK3dlYmtpdF9wbHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3Jt
YXRpb25fZnJlZQord2Via2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRf
cmVhc29uCit3ZWJraXRfcGx1Z2luX3VuYXZhaWxhYmlsaXR5X2luZm9ybWF0aW9uX2dldF9wbHVn
aW4KKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQRV9QTFVHSU5fVU5BVkFJTEFC
SUxJVFlfSU5GT1JNQVRJT04KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9wbHVnaW5f
dW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3R5cGUKKworPC9TRUNUSU9OPgorCis8U0VD
VElPTj4KIDxGSUxFPldlYktpdFdlYkluc3BlY3RvcjwvRklMRT4KIFdlYktpdFdlYkluc3BlY3Rv
cgogd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dlYl92aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcwpp
bmRleCA4MTlhZjU4Y2Q2YTQ0YTg5MzkzYTE0NDI1ZGViNGFkYzE0NDY3OThkLi4zZTQ0MzZhMzc5
Y2RjNmUwM2I1YjkxM2Q1NTY3YjBkYTUwMTYyM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKQEAg
LTE2LDYgKzE2LDkgQEAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF90eXBlCiB3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF90eXBlCiB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X3R5cGUKIHdl
YmtpdF9wbHVnaW5fZ2V0X3R5cGUKK3dlYmtpdF9wbHVnaW5fYmxvY2tlZF9pbmZvcm1hdGlvbl9n
ZXRfdHlwZQord2Via2l0X3BsdWdpbl9sb2FkX3JlcXVlc3RfZ2V0X3R5cGUKK3dlYmtpdF9wbHVn
aW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3R5cGUKIHdlYmtpdF9taW1lX2luZm9f
Z2V0X3R5cGUKIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlCiB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA1YTg1YmI0M2Y3YTQw
MzYxZDc0NWI5ZTExNDlkMzYxNDE1NTRhMmUyLi5mZmYwODE4NjhjMGY2MTk1ZjYzODJkNWRjMzJj
MzM3OGVjNDM2NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTM4LDYgKzM4LDkgQEAKICAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmluZENvbnRyb2xsZXIueG1sIi8+CiAgICAg
PHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvb2tpZU1hbmFnZXIueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpbi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0UGx1Z2luQmxvY2tlZEluZm9ybWF0aW9uLnhtbCIvCisgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0LnhtbCIvCisgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdFBsdWdpblVuYXZhaWxhYmlsaXR5SW5mb3JtYXRpb24ueG1s
Ii8KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViSW5zcGVjdG9yLnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRWZXJzaW9uLnhtbCIvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IGQ5YmM5MjBlZDcyMzkyNTQ4
NzBmZTc4MDAzNGY5ZDJmMmJiYjJjNWMuLjEwYWU0M2FiMTdlNDQyMDJmMWYzYjA3YzM2ODY3YzRj
M2YzNzNhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
QEAgLTU1LDYgKzU1LDkgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQZXJtaXNzaW9uUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UGx1Z2luLmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRQbHVnaW5CbG9ja2VkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFBsdWdpbkxvYWRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQbHVn
aW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRQ
cmludE9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlhbG9nLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5s
aXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlz
dAppbmRleCBlMWNmZTA3MjE2ZDM5YjBlOThkNjA0NzcxYmUwNjI5NjVkMjY4N2YyLi5jZjdlNTgx
ODExMGU5ZDI4YWUyYzM4NGFmMTYyYjYxNGM1NDgzNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKQEAgLTEzLDQgKzEz
LDUgQEAgVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxQT0lOVEVSCiBWT0lEOlNUUklO
RyxTVFJJTkcKIFZPSUQ6VUlOVDY0CitJTlQ6Qk9YRUQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmYjg4MGM0ODIyMjM2ZTliYzQ5NTY5ODZkMWU0ZWVh
MzFjNjlkZmI2Li4wZDQwNjJhZDM4NmJkNTg1Mzc0NWQxMjAxMGM3ZGMwOWY4YjYwNDYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTgxNiw3ICsxODE2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgdWludDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnMKIAogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBQ
bHVnaW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKHBsdWdpbik7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQog
ICAgIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIFN0cmluZygp
LCBwYWdlVVJMU3RyaW5nLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQpCiAgICAgICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBtX25hdmlnYXRpb25DbGllbnQt
PmRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQoKnRoaXMsIHN0YXRpY19jYXN0PFBsdWdpbk1vZHVs
ZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwg
dW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7CkBAIC01MTYxLDcgKzUxNjEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgUwogewogICAgIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IHBsdWdpbklu
Zm9ybWF0aW9uOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQorI2lmIChQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSkgJiYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7
CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCBwbHVn
aW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVS
TFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9ic2N1cmVkKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MTc0NjMyODg4
ZmFmMzA4ODlmY2U5OTg3ODA4YmM5NDIwZjRjMmNiLi5iOGQ2MGRmMzczNzUxOTdjYzViMTRkM2Vi
MmQ5MTdkYjRiNjU1ZmY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDMtMDYgIE1hcmNvcyBDaGF2YXJyw61h
IFRlaWplaXJvICA8Y2hhdmFycmlhMTk5MUBnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gSW1w
bGVtZW50IHRlc3RzIGZvciBuZXcgYmxvY2svdW5ibG9jayBwbHVnaW5zIEFQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDM1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RCbG9j
a2luZ1BsdWdpbnMpOiBBZGQgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMTUtMDQt
MDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZM
XVtHVEtdIFdlYktpdDIncyBnZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgcnVucyB0b28g
bWFueSB0aW1lcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTczZTU3NjZhMjAxNjY5YTYzZjc4
MDkxNzMyNmI0NzczNzUxMmEzYS4uOWFlNmM0YjVjNzFmZjg1ZWU0Y2Q2NmEyNDI1YjIyZmJkMDJh
ZDNiYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC04MzMsNiArODMzLDE2MyBAQCBzdGF0aWMg
dm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNz
YWdlLCBjb25zdCBjaGFyKgogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdl
LCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogfQogCitjbGFzcyBQbHVnaW5zV2ViVmlld1Rlc3Q6
IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhU
VVJFKFBsdWdpbnNXZWJWaWV3VGVzdCk7CisKKyAgICBlbnVtIFBsdWdpbkV2ZW50VHlwZSB7Cisg
ICAgICAgIE5vbmUsCisgICAgICAgIExvYWQsCisgICAgICAgIEJsb2NrZWQsCisgICAgICAgIFVu
YXZhaWxhYmxlQWN0aXZhdGVkCisgICAgfTsKKworICAgIHN0YXRpYyBXZWJLaXRQbHVnaW5Mb2Fk
UG9saWN5IGxvYWRQbHVnaW5DYWxsYmFja0Jsb2NrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFBsdWdpbkxvYWRSZXF1ZXN0KiByZXF1ZXN0LCBQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3Qp
CisgICAgeworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtpdF9wbHVnaW5fbG9h
ZF9yZXF1ZXN0X2dldF9wbHVnaW4ocmVxdWVzdCk7CisgICAgICAgIGlmIChnX3N0cmNtcDAod2Vi
a2l0X3BsdWdpbl9nZXRfbmFtZShwbHVnaW4pLCAiV2ViS2l0IFRlc3QgUGx1Z0luIikpCisgICAg
ICAgICAgICByZXR1cm4gV0VCS0lUX1BMVUdJTl9MT0FEX05PUk1BTExZOworCisgICAgICAgIHRl
c3QtPm1fZXZlbnQgPSBMb2FkOworICAgICAgICB0ZXN0LT5tX3BsdWdpbiA9IHBsdWdpbjsKKyAg
ICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJu
IFdFQktJVF9QTFVHSU5fTE9BRF9CTE9DSzsKKyAgICB9CisKKyAgICBzdGF0aWMgV2ViS2l0UGx1
Z2luTG9hZFBvbGljeSBsb2FkUGx1Z2luQ2FsbGJhY2tOb3JtYWxseShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRQbHVnaW5Mb2FkUmVxdWVzdCogcmVxdWVzdCwgUGx1Z2luc1dlYlZpZXdU
ZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgV2ViS2l0UGx1Z2luKiBwbHVnaW4gPSB3ZWJraXRf
cGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luKHJlcXVlc3QpOworICAgICAgICBpZiAoZ19z
dHJjbXAwKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUocGx1Z2luKSwgIldlYktpdCBUZXN0IFBsdWdJ
biIpKQorICAgICAgICAgICAgcmV0dXJuIFdFQktJVF9QTFVHSU5fTE9BRF9OT1JNQUxMWTsKKwor
ICAgICAgICB0ZXN0LT5tX2V2ZW50ID0gTG9hZDsKKyAgICAgICAgdGVzdC0+bV9wbHVnaW4gPSB3
ZWJraXRfcGx1Z2luX2xvYWRfcmVxdWVzdF9nZXRfcGx1Z2luKHJlcXVlc3QpOworICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4gV0VCS0lU
X1BMVUdJTl9MT0FEX05PUk1BTExZOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHBsdWdpbkJs
b2NrZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRQbHVnaW5CbG9ja2Vk
SW5mb3JtYXRpb24qIGluZm8sIFBsdWdpbnNXZWJWaWV3VGVzdCogdGVzdCkKKyAgICB7CisgICAg
ICAgIFdlYktpdFBsdWdpbiogcGx1Z2luID0gd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0
aW9uX2dldF9wbHVnaW4oaW5mbyk7CisgICAgICAgIGlmIChnX3N0cmNtcDAod2Via2l0X3BsdWdp
bl9nZXRfbmFtZShwbHVnaW4pLCAiV2ViS2l0IFRlc3QgUGx1Z0luIikpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGVzdC0+bV9ldmVudCA9IEJsb2NrZWQ7CisgICAgICAgIHRlc3Qt
Pm1fcGx1Z2luID0gd2Via2l0X3BsdWdpbl9ibG9ja2VkX2luZm9ybWF0aW9uX2dldF9wbHVnaW4o
aW5mbyk7CisgICAgICAgIHRlc3QtPm1fcGx1Z2luSXNWaXNpYmxlID0gd2Via2l0X3BsdWdpbl9i
bG9ja2VkX2luZm9ybWF0aW9uX2lzX3Zpc2libGUoaW5mbyk7CisgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdW5hdmFp
bGFibGVQbHVnaW5BY3RpdmF0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRQbHVnaW5VbmF2YWlsYWJpbGl0eUluZm9ybWF0aW9uKiBpbmZvLCBQbHVnaW5zV2ViVmlld1Rl
c3QqIHRlc3QpCisgICAgeworICAgICAgICBXZWJLaXRQbHVnaW4qIHBsdWdpbiA9IHdlYmtpdF9w
bHVnaW5fdW5hdmFpbGFiaWxpdHlfaW5mb3JtYXRpb25fZ2V0X3BsdWdpbihpbmZvKTsKKyAgICAg
ICAgaWYgKGdfc3RyY21wMCh3ZWJraXRfcGx1Z2luX2dldF9uYW1lKHBsdWdpbiksICJXZWJLaXQg
VGVzdCBQbHVnSW4iKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0ZXN0LT5tX2V2
ZW50ID0gVW5hdmFpbGFibGVBY3RpdmF0ZWQ7CisgICAgICAgIHRlc3QtPm1fcGx1Z2luID0gd2Vi
a2l0X3BsdWdpbl91bmF2YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcGx1Z2luKGluZm8pOwor
ICAgICAgICB0ZXN0LT5tX3VuYXZhaWxhYmlsaXR5UmVhc29uID0gd2Via2l0X3BsdWdpbl91bmF2
YWlsYWJpbGl0eV9pbmZvcm1hdGlvbl9nZXRfcmVhc29uKGluZm8pOworICAgICAgICBnX21haW5f
bG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHBs
dWdpbkxvYWRlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNjcmlwdERp
YWxvZyAqZGlhbG9nLCBQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocGx1Z2luTG9hZGVkQ2FsbGJhY2spLCB0ZXN0KTsKKyAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAgICAgICAgdGVzdC0+d2FpdCgxKTsgLy8g
UmFjZSBDb25kaXRpb24KKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gZG9DbGlja0lkbGVD
YWxsYmFjayhQbHVnaW5zV2ViVmlld1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5j
bGlja01vdXNlQnV0dG9uKDUsIDUsIDEpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQor
CisgICAgUGx1Z2luc1dlYlZpZXdUZXN0KCkKKyAgICAgICAgOiBtX2V2ZW50KE5vbmUpCisgICAg
ICAgICwgbV9wbHVnaW4obnVsbHB0cikKKyAgICAgICAgLCBtX3BsdWdpbklzVmlzaWJsZShmYWxz
ZSkKKyAgICB7CisgICAgICAgIHNob3dJbldpbmRvdyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAg
ICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5
KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dChtX3dlYlZpZXcpLCBXRUJLSVRfVEVTVF9QTFVH
SU5fRElSKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJwbHVnaW4tYmxv
Y2tlZCIsIEdfQ0FMTEJBQ0socGx1Z2luQmxvY2tlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAidW5hdmFpbGFibGUtcGx1Z2luLWFjdGl2YXRl
ZCIsIEdfQ0FMTEJBQ0sodW5hdmFpbGFibGVQbHVnaW5BY3RpdmF0ZWRDYWxsYmFjayksIHRoaXMp
OworICAgIH0KKworICAgIHZvaWQgbG9hZFdlYigpCisgICAgeworICAgICAgICBtX2V2ZW50ID0g
Tm9uZTsKKyAgICAgICAgbV9wbHVnaW4gPSBudWxscHRyOworICAgICAgICBsb2FkSHRtbCgiPGh0
bWw+PG9iamVjdCBpZD1cInBsdWdpblwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0
LW5ldHNjYXBlXCIgIgorICAgICAgICAgICAgInNyYz1cImRhdGE6YXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC1uZXRzY2FwZSxhbGVydHdoZW5sb2FkZWRcIiB3aWR0aD1cIjEwXCIgIgorICAgICAg
ICAgICAgImhlaWdodD1cIjEwXCIgc3R5bGU9XCJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0
OjA7XCIvPjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRVbnRpbFBs
dWdpbkxvYWRlZCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywg
InNjcmlwdC1kaWFsb2ciLCBHX0NBTExCQUNLKHBsdWdpbkxvYWRlZENhbGxiYWNrKSwgdGhpcyk7
CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2b2lk
IGNvbnRpbnVlTG9hZGluZ0FuZFdhaXRVbnRpbFNpZ25hbCgpCisgICAgeworICAgICAgICBtX2V2
ZW50ID0gTm9uZTsKKyAgICAgICAgbV9wbHVnaW4gPSBudWxscHRyOworICAgICAgICBtX3BsdWdp
bklzVmlzaWJsZSA9IGZhbHNlOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
CisgICAgfQorCisgICAgdm9pZCBhY3RpdmF0ZVBsdWdpbkFuZFdhaXRVbnRpbFNpZ25hbCgpCisg
ICAgeworICAgICAgICBtX2V2ZW50ID0gTm9uZTsKKyAgICAgICAgbV9wbHVnaW4gPSBudWxscHRy
OworICAgICAgICBnX2lkbGVfYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGRvQ2xp
Y2tJZGxlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxv
b3ApOworICAgIH0KKworICAgIFBsdWdpbkV2ZW50VHlwZSBtX2V2ZW50OworICAgIFdlYktpdFBs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIG1fdW5hdmFpbGFiaWxpdHlSZWFzb247CisgICAgV2Vi
S2l0UGx1Z2luKiBtX3BsdWdpbjsKKyAgICBnYm9vbGVhbiBtX3BsdWdpbklzVmlzaWJsZTsKK307
CisKKworc3RhdGljIHZvaWQgdGVzdEJsb2NraW5nUGx1Z2lucyhQbHVnaW5zV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gRGVmYXVsdCBiZWhhdmlvdXI6IE5vIGNh
bGxiYWNrIGNvbm5lY3RlZC4KKyAgICB0ZXN0LT5sb2FkV2ViKCk7CisgICAgdGVzdC0+d2FpdFVu
dGlsUGx1Z2luTG9hZGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBQbHVnaW5z
V2ViVmlld1Rlc3Q6Ok5vbmUpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fcGx1Z2luID09IG51bGxw
dHIpOworCisgICAgLy8gQ29ubmVjdCBjYWxsYmFjayB0byBsb2FkIG5vcm1hbGx5LgorICAgIGdf
c2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAibG9hZC1wbHVnaW4iLCBHX0NBTExCQUNL
KHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwgdGVzdCk7CisgICAgdGVzdC0+bG9h
ZFdlYigpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fz
c2VydCh0ZXN0LT5tX2V2ZW50ID09IFBsdWdpbnNXZWJWaWV3VGVzdDo6TG9hZCk7CisgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X25hbWUodGVzdC0+bV9wbHVnaW4pLCA9PSwg
IldlYktpdCBUZXN0IFBsdWdJbiIpOworICAgIHRlc3QtPndhaXRVbnRpbFBsdWdpbkxvYWRlZCgp
OworCisgICAgLy8gQ29ubmVjdCBjYWxsYmFjayB0byBibG9jayBsb2FkLgorICAgIGdfc2lnbmFs
X2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh0ZXN0LT5tX3dlYlZpZXcsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHRlc3QtPmxvYWRQbHVnaW5DYWxsYmFja05vcm1hbGx5KSwgdGVzdCk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJsb2FkLXBsdWdpbiIsIEdfQ0FM
TEJBQ0sodGVzdC0+bG9hZFBsdWdpbkNhbGxiYWNrQmxvY2spLCB0ZXN0KTsKKyAgICB0ZXN0LT5s
b2FkV2ViKCk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdf
YXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gUGx1Z2luc1dlYlZpZXdUZXN0OjpMb2FkKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFtZSh0ZXN0LT5tX3BsdWdpbiksID09
LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7CisKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9t
YWluTG9vcCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBQbHVnaW5zV2ViVmlld1Rl
c3Q6OkJsb2NrZWQpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fcGx1Z2luSXNWaXNpYmxlKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFtZSh0ZXN0LT5tX3BsdWdpbiks
ID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7CisKKyAgICB0ZXN0LT5hY3RpdmF0ZVBsdWdpbkFu
ZFdhaXRVbnRpbFNpZ25hbCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gUGx1Z2lu
c1dlYlZpZXdUZXN0OjpVbmF2YWlsYWJsZUFjdGl2YXRlZCk7CisgICAgZ19hc3NlcnQodGVzdC0+
bV91bmF2YWlsYWJpbGl0eVJlYXNvbiA9PSBXRUJLSVRfUExVR0lOX1VOQVZBSUxBQklMSVRZX1JF
QVNPTl9CTE9DS0VEKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfbmFt
ZSh0ZXN0LT5tX3BsdWdpbiksID09LCAiV2ViS2l0IFRlc3QgUGx1Z0luIik7Cit9CisKIHZvaWQg
YmVmb3JlQWxsKCkKIHsKICAgICBnU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAg
LTg1Myw2ICsxMDEwLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIE5vdGlmaWNhdGlvbldlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uIiwgdGVzdFdlYlZpZXdO
b3RpZmljYXRpb24pOwogICAgIElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJpcy1wbGF5aW5nLWF1ZGlvIiwgdGVzdFdlYlZpZXdJc1BsYXlpbmdBdWRpbyk7
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9y
IiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOworICAgIFBsdWdpbnNXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImJsb2NrLXBsdWdpbnMiLCB0ZXN0QmxvY2tpbmdQbHVnaW5z
KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>