<?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>134921</bug_id>
          
          <creation_ts>2014-07-15 00:26:19 -0700</creation_ts>
          <short_desc>[EFL] Introduce EWebKit_Extension</short_desc>
          <delta_ts>2014-10-12 00:33:02 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137515</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>shiva.jm</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1022425</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-15 00:26:19 -0700</bug_when>
    <thetext>ewebkit2 does not support extensions such as DOM and JS binding.

This is to introduce EWebKit_Extension, basic structure for these functionalities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022430</commentid>
    <comment_count>1</comment_count>
      <attachid>234910</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-15 01:51:15 -0700</bug_when>
    <thetext>Created attachment 234910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023618</commentid>
    <comment_count>2</comment_count>
      <attachid>235204</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-20 22:51:36 -0700</bug_when>
    <thetext>Created attachment 235204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023619</commentid>
    <comment_count>3</comment_count>
      <attachid>235204</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-07-20 23:04:26 -0700</bug_when>
    <thetext>Comment on attachment 235204
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:405
&gt; +    &quot;${CMAKE_CURRENT_SOURCE_DIR}/WebProcess/InjectedBundle/API/efl/ewk_extension.h&quot;

Why ewk_extension.h should be opened ? EWebKit_Extension.h includes it.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:161
&gt; +    if (!bundlePath)

Is it possible bundlePath can be null ? injectedBundlePath() returns String() at least.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:61
&gt; +#include &quot;ewk_extension.h&quot;

Do you have a plan to add new header file to this file ?

&gt; Source/WebKit2/WebProcess/efl/WebEflInjectedBundleMain.cpp:33
&gt; +#if defined(WIN32) || defined(_WIN32)

Should we support win 32 arch ?

&gt; Tools/Scripts/webkitpy/common/config/watchlist:111
&gt; +                        r&quot;|Source/WebKit2/UIProcess/API/efl/&quot;

Missing a comma(,) at the end of line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023624</commentid>
    <comment_count>4</comment_count>
      <attachid>235207</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-20 23:44:27 -0700</bug_when>
    <thetext>Created attachment 235207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023627</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-20 23:48:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 235204 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235204&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/PlatformEfl.cmake:405
&gt; &gt; +    &quot;${CMAKE_CURRENT_SOURCE_DIR}/WebProcess/InjectedBundle/API/efl/ewk_extension.h&quot;
&gt; 
&gt; Why ewk_extension.h should be opened ? EWebKit_Extension.h includes it.
&gt; 

Like EwebKit2.h, EWebKit_Extension.h will be used master header file.
ewk_extension.h is one of files for extensions.
I will add others in different bug.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:161
&gt; &gt; +    if (!bundlePath)
&gt; 
&gt; Is it possible bundlePath can be null ? injectedBundlePath() returns String() at least.
&gt; 
right, I fixed.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:61
&gt; &gt; +#include &quot;ewk_extension.h&quot;
&gt; 
&gt; Do you have a plan to add new header file to this file ?
&gt; 
At least, ewk_page.h will be added.

&gt; &gt; Source/WebKit2/WebProcess/efl/WebEflInjectedBundleMain.cpp:33
&gt; &gt; +#if defined(WIN32) || defined(_WIN32)
&gt; 
&gt; Should we support win 32 arch ?
&gt; 
OK, I will remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023630</commentid>
    <comment_count>6</comment_count>
      <attachid>235207</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-07-21 00:12:14 -0700</bug_when>
    <thetext>Comment on attachment 235207
Patch

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

Basically I can understand what do you want. However, I need to take a look this patch further. Let me comment soon again.

&gt; Source/WebKit2/PlatformEfl.cmake:418
&gt; +set(INJECTED_BUNDLE_INSTALL_DIR &quot;${LIB_INSTALL_DIR}/ewebkit2-0/&quot; CACHE PATH &quot;Whether to install injected bundle&quot;)

Any reason you hardcoded ewebkit2-0 instead of ${WebKit2_OUTPUT_NAME}-${PROJECT_VERSION_MAJOR} ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:127
&gt; +    String m_extensionsPath;

Need to add a new line.

&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:2
&gt; + * Copyright (C) 2012 Samsung Electronics

2012 -&gt; 2012-2014 ?

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:52
&gt; +    String extensionsDirectory = toImpl(static_cast&lt;WKStringRef&gt;(userData))-&gt;string();

I&apos;m not sure if &quot;toImpl(static_cast&lt;WKStringRef&gt;(userData))-&gt;string()&quot; can be null. In gtk, it doesn&apos;t check it.

    CString userDataString = toImpl(static_cast&lt;WKStringRef&gt;(userData))-&gt;string().utf8();
    GRefPtr&lt;GVariant&gt; variant = g_variant_parse(nullptr, userDataString.data(),
        userDataString.data() + userDataString.length(), nullptr, nullptr);

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:72
&gt; +

Unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023642</commentid>
    <comment_count>7</comment_count>
      <attachid>235212</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-21 01:50:06 -0700</bug_when>
    <thetext>Created attachment 235212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023643</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-21 01:51:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 235207 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235207&amp;action=review
&gt; 
&gt; Basically I can understand what do you want. However, I need to take a look this patch further. Let me comment soon again.
&gt; 

Sure, feel free to review.
I fixed all you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023665</commentid>
    <comment_count>9</comment_count>
      <attachid>235217</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-21 06:53:06 -0700</bug_when>
    <thetext>Created attachment 235217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023666</commentid>
    <comment_count>10</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-07-21 06:54:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=235217) [details]
&gt; Patch

I added an option (-x) for MiniBrowser to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029305</commentid>
    <comment_count>11</comment_count>
      <attachid>236643</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-15 00:02:02 -0700</bug_when>
    <thetext>Created attachment 236643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031350</commentid>
    <comment_count>12</comment_count>
      <attachid>236643</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-26 02:46:40 -0700</bug_when>
    <thetext>Comment on attachment 236643
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Although there are ewk_context_new_with_injected_bundle_path() in ewebkit2 APIs,

nit: are -&gt; is

&gt; Source/WebKit2/PlatformEfl.cmake:419
&gt; +set(INJECTED_BUNDLE_INSTALL_DIR &quot;${LIB_INSTALL_DIR}/${WebKit2_OUTPUT_NAME}-${PROJECT_VERSION_MAJOR}/&quot; CACHE PATH &quot;Whether to install injected bundle&quot;)

Whether -&gt; Where ? (Absolute path to the extension library installation directory)

&gt; Source/WebKit2/PlatformEfl.cmake:421
&gt; +add_library(ewkInjectedBundle SHARED &quot;${WEBKIT2_DIR}/WebProcess/efl/WebEflInjectedBundleMain.cpp&quot;)

WebEflInjectedBundleMain.cpp -&gt; WebInjectedBundleMainEfl.cpp ? (similarly to WebProcessMainEfl.cpp)

&gt; Source/WebKit2/PlatformEfl.cmake:465
&gt; +set(TEST_INJECTED_BUNDLE_DIR ${WEBKIT2_EFL_TEST_DIR}/extensions)

I think we should decide the proper name for this feature as InjectedBundle and extension(s) are mixed in this patch? How about WebExtensions ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:138
&gt; +    String bundlePath;
&gt; +    static const char* bundleDirectory = getenv(&quot;WEBKIT_INJECTED_BUNDLE_PATH&quot;);

IMHO, bundlePath and bundleDirectory resemble each other. How about clientWebExtensionsPath ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:143
&gt; +        if (WebCore::fileExists(bundlePath))
&gt; +            return bundlePath;

I think it&apos;s worth notifying the user that his extension path is invalid, for example using WARN(..) macro.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:146
&gt; +    bundlePath = WebCore::pathByAppendingComponent(String::fromUTF8(TEST_LIB_DIR), INJECTEDBUNDLENAME);

Why are we looking for the extension library in TEST_LIB_DIR (OUTPUT_DIR)? Seems odd to me.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:154
&gt; +    return String();

nit: emptyString()

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:160
&gt; +    String bundlePath = injectedBundlePath();
&gt; +    if (bundlePath.isEmpty())

Why do we force own library path regardless of the client&apos;s extensionsPath parameter?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:163
&gt; +    WKRetainPtr&lt;WKStringRef&gt; path = adoptWK(toCopiedAPI(bundlePath));

path -&gt; webExtensionsPath ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:165
&gt; +    return adoptRef(new EwkContext(adoptWK(WKContextCreateWithInjectedBundlePath(path.get())).get(), extensionsPath));

Please correct me If I am wrong, shouldn&apos;t we pass (the client) extensionsPath if it&apos;s valid? Otherwise injectedBundlePath() should determine the proper path if any.


&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:89
&gt; +    String extensionsPath() { return m_extensionsPath; }

nit: const String&amp;

&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:2
&gt; + * Copyright (C) 2012-2014 Samsung Electronics

Nit: 2014

&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Please use BSD license.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:35
&gt; +EwkExtension::EwkExtension(InjectedBundle* bundle)
&gt; +{
&gt; +}

Nit: Could has been defined in the header as it&apos;s empty.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:37
&gt; +EwkExtension::~EwkExtension()

Ditto,

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:54
&gt; +    EINA_SAFETY_ON_NULL_RETURN(extension);
&gt; +    EINA_SAFETY_ON_NULL_RETURN(client);

Similarly to existing ewk APIs, can we change this API to notify the user about wrongly API usage by returning false?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:61
&gt; +    EINA_SAFETY_ON_NULL_RETURN(extension);

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Please use BSD license.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:34
&gt; +#include &lt;Eina.h&gt;

Nit: is eina really required here?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:50
&gt; + * @brief  Type definition for the entry of the extension.

Can we add bundle and reserved parameters description as well.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:58
&gt; +struct EwkExtensionClient {
&gt; +    int version;
&gt; +    void *data;
&gt; +};

Is it possible to hide it in cpp unless the client needs it?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:67
&gt; + * This function add a client, which contains several callbacks receiving events

Typo: add -&gt; adds

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:68
&gt; + * in WebProcess side, to a @p extension.

Typo: in -&gt; from

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:77
&gt; + * @param extension extension to delete client to

Typo: without &quot;to&quot;

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension_private.h:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Please use BSD license.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Please use BSD license.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:46
&gt; +ExtensionManagerEfl::ExtensionManagerEfl()
&gt; +{
&gt; +}

How about moving it to the header?

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:50
&gt; +    m_extension = std::make_unique&lt;EwkExtension&gt;(toImpl(bundle));

how about preventing it from accidental second initialization:

static bool initialized = false;
if (initialized)
    return;
.
.
.
initalized = true;

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.h:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Please use BSD license.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031367</commentid>
    <comment_count>13</comment_count>
      <attachid>236643</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-26 05:08:23 -0700</bug_when>
    <thetext>Comment on attachment 236643
Patch

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

First, thanks for your comment.
I will uplodate new patch after followed the most of your comments.
(Leave some inline comments)

And, I agree that we are confusing about the extension and injected bundle.
Now, I am considering like below.

extension : the shared object library which user creates, it should contain the implementation of ewk_extension_init() for the entry point.
ewebkit_extension (webkit_extension) : Injected bundle library which ewebkit installs and load and calls ewk_extension_init() for the `extension` which user creates.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:146
&gt;&gt; +    bundlePath = WebCore::pathByAppendingComponent(String::fromUTF8(TEST_LIB_DIR), INJECTEDBUNDLENAME);
&gt; 
&gt; Why are we looking for the extension library in TEST_LIB_DIR (OUTPUT_DIR)? Seems odd to me.

It&apos;s for the webkit developers who does not install ewebkit and extensions.

For example, build-webkit generate INJECTEDBUNDLENAME into WebKitBuild/{Release|Debug}/lib.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:34
&gt;&gt; +#include &lt;Eina.h&gt;
&gt; 
&gt; Nit: is eina really required here?

At least we should include it somewhere to use EAPI or other eina structure/macros.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:58
&gt;&gt; +};
&gt; 
&gt; Is it possible to hide it in cpp unless the client needs it?

This structure is just skeleton now, but will expose several callbacks in near future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031370</commentid>
    <comment_count>14</comment_count>
      <attachid>237149</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-26 07:34:53 -0700</bug_when>
    <thetext>Created attachment 237149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032551</commentid>
    <comment_count>15</comment_count>
      <attachid>237470</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-09-01 17:24:27 -0700</bug_when>
    <thetext>Created attachment 237470
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036468</commentid>
    <comment_count>16</comment_count>
      <attachid>238465</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-09-22 01:27:14 -0700</bug_when>
    <thetext>Created attachment 238465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036469</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-22 01:28:55 -0700</bug_when>
    <thetext>Attachment 238465 did not pass style-queue:


Traceback (most recent call last):
  File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
    sys.exit(CheckWebKitStyle().main())
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
    patch_checker.check(patch)
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 83, in check
    self._text_file_reader.process_file(file_path=path, line_numbers=line_numbers)
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 124, in process_file
    self._processor.process(lines, file_path, **kwargs)
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/checker.py&quot;, line 905, in process
    checker.check(lines)
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/checkers/watchlist.py&quot;, line 51, in check
    WatchListParser(log_error=log_to_style_error).parse(&apos;\n&apos;.join(lines))
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py&quot;, line 70, in parse
    dictionary = self._eval_watch_list(watch_list_contents)
  File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py&quot;, line 86, in _eval_watch_list
    return eval(watch_list_contents, {&apos;__builtins__&apos;: None}, None)
  File &quot;&lt;string&gt;&quot;, line 210
    r&quot;|Tools/Scripts/webkitpy/replay&quot;,
                                     ^
SyntaxError: invalid syntax


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036479</commentid>
    <comment_count>18</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-09-22 01:38:13 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 238465 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; Traceback (most recent call last):
&gt;   File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
&gt;     sys.exit(CheckWebKitStyle().main())
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
&gt;     patch_checker.check(patch)
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 83, in check
&gt;     self._text_file_reader.process_file(file_path=path, line_numbers=line_numbers)
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 124, in process_file
&gt;     self._processor.process(lines, file_path, **kwargs)
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/checker.py&quot;, line 905, in process
&gt;     checker.check(lines)
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/style/checkers/watchlist.py&quot;, line 51, in check
&gt;     WatchListParser(log_error=log_to_style_error).parse(&apos;\n&apos;.join(lines))
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py&quot;, line 70, in parse
&gt;     dictionary = self._eval_watch_list(watch_list_contents)
&gt;   File &quot;/Volumes/Data/StyleQueue/Webkit/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py&quot;, line 86, in _eval_watch_list
&gt;     return eval(watch_list_contents, {&apos;__builtins__&apos;: None}, None)
&gt;   File &quot;&lt;string&gt;&quot;, line 210
&gt;     r&quot;|Tools/Scripts/webkitpy/replay&quot;,
&gt;                                      ^
&gt; SyntaxError: invalid syntax
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

It is not related to this bug.

I uploaded 136996 to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036504</commentid>
    <comment_count>19</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-09-22 03:44:19 -0700</bug_when>
    <thetext>I updated the name of InjectedBundle to extension manager.

So,
extension manager means injected bundle which controls user&apos;s extensions.
extension is user library to extend webcore&apos;s functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037393</commentid>
    <comment_count>20</comment_count>
      <attachid>238465</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-09-25 21:01:41 -0700</bug_when>
    <thetext>Comment on attachment 238465
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        EwebKit2 does not provide the functionality to extend WebProcess.

EwebKit2 -&gt; EWebKit2.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:191
&gt; +EAPI Ewk_Context *ewk_context_new_with_extensions_path(const char *path);

Wrong * place in (const char *path);

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:2
&gt; + * Copyright (C) 2014 Samsung Electronics

Please add &quot;All right reserved.&quot;

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:2
&gt; + * Copyright (C) 2014 Samsung Electronics

ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:2
&gt; + * Copyright (C) 2014 Samsung Electronics

ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:40
&gt; +typedef struct EwkPage Ewk_Page;

I wonder where Ewk_Page is used.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension_private.h:2
&gt; + * Copyright (C) 2014 Samsung Electronics

ditto.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:2
&gt; + * Copyright (C) 2014 Samsung Electronics

ditto.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:55
&gt; +    ASSERT(!extensionsDirectory.isEmpty());

ASSERT() should be used when condition should not be something. It looks extensionsDirectory can be empty because the string is passed by WKBundleInitialize(). Thus it seems to me that it would be good if you check it with &quot;if ~ return&quot; statement.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.h:2
&gt; + * Copyright (C) 2014 Samsung Electronics

ditto.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.h:42
&gt; +

No necessary line.

&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.h:49
&gt; +    Vector&lt;WebKit::Module*&gt; m_extensionModules;

Looks unnecessary namespace use. Vector&lt;Module*&gt; is enough to here.

&gt; Source/WebKit2/WebProcess/efl/WebInjectedBundleMainEfl.cpp:2
&gt; + * Copyright (C) 2014 Samsung Electronics

ditto.

&gt; Source/WebKit2/efl/ewebkit2-extension.pc.in:4
&gt; +Name: ewebkit2-extension

What is benefit to add additional .pc.in file ? It looks application developer needs to include this pc file in order to use this extension feature additionally.

&gt; Tools/Scripts/webkitpy/style/checker.py:193
&gt; +      &quot;Source/WebKit2/WebProcess/InjectedBundle/API/efl/&quot;,

Wrong alphabet order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037395</commentid>
    <comment_count>21</comment_count>
      <attachid>238694</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-09-25 21:19:44 -0700</bug_when>
    <thetext>Created attachment 238694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037396</commentid>
    <comment_count>22</comment_count>
      <attachid>238465</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-09-25 21:26:14 -0700</bug_when>
    <thetext>Comment on attachment 238465
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:8
&gt;&gt; +        EwebKit2 does not provide the functionality to extend WebProcess.
&gt; 
&gt; EwebKit2 -&gt; EWebKit2.

Done.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:191
&gt;&gt; +EAPI Ewk_Context *ewk_context_new_with_extensions_path(const char *path);
&gt; 
&gt; Wrong * place in (const char *path);

It&apos;s right because this is public header.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:2
&gt;&gt; + * Copyright (C) 2014 Samsung Electronics
&gt; 
&gt; Please add &quot;All right reserved.&quot;

Done, and I changed copyright by my name because I am not in samsung now.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:40
&gt;&gt; +typedef struct EwkPage Ewk_Page;
&gt; 
&gt; I wonder where Ewk_Page is used.

Removed, it will be introduced in next patch for javascript binding and so on.

&gt;&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.cpp:55
&gt;&gt; +    ASSERT(!extensionsDirectory.isEmpty());
&gt; 
&gt; ASSERT() should be used when condition should not be something. It looks extensionsDirectory can be empty because the string is passed by WKBundleInitialize(). Thus it seems to me that it would be good if you check it with &quot;if ~ return&quot; statement.

OK. although it should not be empty when we uses extension manager, it looks better not to make crash in debug build.

&gt;&gt; Source/WebKit2/WebProcess/efl/ExtensionManagerEfl.h:49
&gt;&gt; +    Vector&lt;WebKit::Module*&gt; m_extensionModules;
&gt; 
&gt; Looks unnecessary namespace use. Vector&lt;Module*&gt; is enough to here.

Done.

&gt;&gt; Source/WebKit2/efl/ewebkit2-extension.pc.in:4
&gt;&gt; +Name: ewebkit2-extension
&gt; 
&gt; What is benefit to add additional .pc.in file ? It looks application developer needs to include this pc file in order to use this extension feature additionally.

Application developer should distinguish ewebkit2.pc and ewebkit2-extension.pc
The former is to make application which uses ewebkit2 and the latter is to make shared object, extension.

Applications should not include the both because the former is valid only in UIProcess while the latter is valid in the WebProcess.

&gt;&gt; Tools/Scripts/webkitpy/style/checker.py:193
&gt;&gt; +      &quot;Source/WebKit2/WebProcess/InjectedBundle/API/efl/&quot;,
&gt; 
&gt; Wrong alphabet order.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038777</commentid>
    <comment_count>23</comment_count>
      <attachid>238694</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-01 22:18:03 -0700</bug_when>
    <thetext>Comment on attachment 238694
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:137
&gt; +    String bundlePathForExtension = WebCore::pathByAppendingComponent(String::fromUTF8(TEST_LIB_DIR), EXTENSIONMANAGERNAME);

TEST_LIB_DIR looks like we only use it for EFL port test. Can&apos;t we use better name for it ?

&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:33
&gt; +{

notImplemented() ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:2
&gt; + * Copyright (C) 2014 Samsung Electronics

Samsung copyright ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:50
&gt; + * @param extension the extension instance helps the communication between WebProcess and your extension library.

Remove a period at the end of line.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:51
&gt; + * @param reserved extra parameter for the future. NULL is fine, now.

If *reserved* is not used now, isn&apos;t it keep it as &quot;void*&quot; ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:63
&gt; + * Add (register) a client which contains a several callbacks to the extension.

I don&apos;t know what &quot;(register)&quot; means in this sentence.

a several callbacks -&gt; several callbacks.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:68
&gt; + * This function add a client, which contains several callbacks receiving events

add -&gt; adds.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.h:79
&gt; + * @param client client which contains version, data and callbacks.

ditto.

&gt; Source/WebKit2/WebProcess/efl/WebInjectedBundleMainEfl.cpp:2
&gt; + * Copyright (C) 2014 Ryuan Choi.  All rights reserved.

Missing your email address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038812</commentid>
    <comment_count>24</comment_count>
      <attachid>238694</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-02 01:32:34 -0700</bug_when>
    <thetext>Comment on attachment 238694
Patch

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

I will update patch with you comments. thanks.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:137
&gt;&gt; +    String bundlePathForExtension = WebCore::pathByAppendingComponent(String::fromUTF8(TEST_LIB_DIR), EXTENSIONMANAGERNAME);
&gt; 
&gt; TEST_LIB_DIR looks like we only use it for EFL port test. Can&apos;t we use better name for it ?

Any good name suggestion?

I will consider it.

Anyway, this code is only for webkit developers who does not install ewebkit but want to test.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:33
&gt;&gt; +{
&gt; 
&gt; notImplemented() ?

Because this is in C area, we can&apos;t use notImplemented().

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/EWebKit_Extension.h:2
&gt;&gt; + * Copyright (C) 2014 Samsung Electronics
&gt; 
&gt; Samsung copyright ?

Sorry, I missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038816</commentid>
    <comment_count>25</comment_count>
      <attachid>239092</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-02 01:55:40 -0700</bug_when>
    <thetext>Created attachment 239092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038822</commentid>
    <comment_count>26</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-02 02:24:17 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 238694 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238694&amp;action=review
&gt; 
&gt; I will update patch with you comments. thanks.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:137
&gt; &gt;&gt; +    String bundlePathForExtension = WebCore::pathByAppendingComponent(String::fromUTF8(TEST_LIB_DIR), EXTENSIONMANAGERNAME);
&gt; &gt; 
&gt; &gt; TEST_LIB_DIR looks like we only use it for EFL port test. Can&apos;t we use better name for it ?
&gt; 
&gt; Any good name suggestion?
&gt; 
&gt; I will consider it.


TEST_LIB_DIR is defined in Source/WebKit2/PlatformEfl.cmake. To use it for WebKit2, I think we need to define new variable, for example, LIB_OUTPUT_DIR, EWEBKIT_LIB_DIR and so on. Then, TEST_LIB_DIR can use it as well.


add_definitions(-DTEST_RESOURCES_DIR=\&quot;${TEST_RESOURCES_DIR}\&quot;
    -DTEST_LIB_DIR=\&quot;${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\&quot; =&gt;    -DTEST_LIB_DIR=\&quot;${EWEBKIT_LIB_DIR}\&quot;

)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038823</commentid>
    <comment_count>27</comment_count>
      <attachid>239092</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-02 02:25:36 -0700</bug_when>
    <thetext>Comment on attachment 239092
Patch

LGTM. However, jinwoo might want to have final look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039638</commentid>
    <comment_count>28</comment_count>
      <attachid>239092</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-05 17:47:38 -0700</bug_when>
    <thetext>Comment on attachment 239092
Patch

Clearing flags on attachment: 239092

Committed r174335: &lt;http://trac.webkit.org/changeset/174335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039639</commentid>
    <comment_count>29</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-05 17:47:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040234</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-08 01:24:33 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 137515</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040831</commentid>
    <comment_count>31</comment_count>
      <attachid>239603</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-10 00:12:03 -0700</bug_when>
    <thetext>Created attachment 239603
fixed layouttest crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041103</commentid>
    <comment_count>32</comment_count>
      <attachid>239603</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-10 22:42:41 -0700</bug_when>
    <thetext>Comment on attachment 239603
fixed layouttest crash

r+ed again. Please check efl buildbot after landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041193</commentid>
    <comment_count>33</comment_count>
      <attachid>239603</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-12 00:32:48 -0700</bug_when>
    <thetext>Comment on attachment 239603
fixed layouttest crash

Clearing flags on attachment: 239603

Committed r174636: &lt;http://trac.webkit.org/changeset/174636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041194</commentid>
    <comment_count>34</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-10-12 00:33:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234910</attachid>
            <date>2014-07-15 01:51:15 -0700</date>
            <delta_ts>2014-07-20 22:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140715175057.patch</filename>
            <type>text/plain</type>
            <size>42130</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDdkNzkyYWFjNWViMDEz
MmU4YzFhZDUxZWExMmYyM2YyMGI0M2E5Ny4uZWQ5ZDhkMWMyZjJmNzQ1ODhhOGUyMTg2ZjBkY2M4
ZjczZmViMjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA3LTE1ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBld2tfY29u
dGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisg
ICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qg
d2l0aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90
IGV4cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNp
b24sIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUg
RVdlYktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpF
d2tDb250ZXh0KToKKyAgICAgICAgKGluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChFd2tD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIgZG9lcyBu
b3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5zdGVhZCwg
RXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OmV4
dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHA6IFJlbmFtZWQgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgg
dG8gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6
ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFnZSk6
CisgICAgICAgIChFd2tFeHRlbnNpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKEV3
a0V4dGVuc2lvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAoRXdrRXh0ZW5z
aW9uOjpFd2tFeHRlbnNpb24pOgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjp+RXdrRXh0ZW5zaW9u
KToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6YXBwZW5kKToKKyAgICAgICAgKGV3a19leHRlbnNp
b25fY2xpZW50X3NldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19leHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OkV4dGVuc2lvbk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwpOgorICAgICAgICAoV2Vi
S2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvZWZsL1dlYkVmbEluamVjdGVkQnVuZGxlTWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tC
dW5kbGVJbml0aWFsaXplKToKKyAgICAgICAgKiBlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmlu
OiBBZGRlZC4KKwogMjAxNC0wNy0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgdHJhbnNwYXJlbnQgV0tXZWJWaWV3cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCBjODI3Mzg0YjBkYzZmMjgwMWQxNWNkYTllNDhiNDk0ODc3MGNh
MzY2Li41ZDMzOTM0Njc2ZmZiMDhmNzBiM2U5MjdmOTgxZDVmZDEzOTZiYWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTczLDYgKzE3Myw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3Vw
LmNwcAogICAgIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxp
dGUuY3BwCiAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVu
c2lvbi5jcHAKKwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVu
ZGxlRWZsLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2lu
UHJveHlVbml4LmNwcApAQCAtMTk1LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKIAorICAgIFdlYlByb2Nlc3Mv
ZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZp
bHRlcnNXZWJQcm9jZXNzRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWlu
RWZsLmNwcAogCkBAIC0yNDMsNiArMjQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgogICAgICIk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvdW5peCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcyIKQEAgLTM1NSw2ICszNTksNyBAQCBzZXQoV0VCS0lUMl9FWFRSQV9ERVBFTkRFTkNJRVMK
ICkKIAogY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLnBjLmluICR7Q01BS0VfQklOQVJZX0RJ
Un0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgQE9OTFkpCitjb25maWd1cmVfZmlsZShlZmwvZXdl
YmtpdDItZXh0ZW5zaW9uLnBjLmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdl
YmtpdDItZXh0ZW5zaW9uLnBjIEBPTkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXQyQ29u
ZmlnLmNtYWtlLmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25m
aWcuY21ha2UgQE9OTFkpCiBjb25maWd1cmVfZmlsZShlZmwvRVdlYktpdDJDb25maWdWZXJzaW9u
LmNtYWtlLmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWdW
ZXJzaW9uLmNtYWtlIEBPTkxZKQogCkBAIC0zOTUsMTMgKzQwMCwyNyBAQCBzZXQoRVdlYktpdDJf
SEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dpbmRvd19mZWF0dXJlcy5oIgogKQogCitzZXQoRVdlYktpdDJfRXh0ZW5zaW9uX0hF
QURFUlMKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRl
bnNpb24uaCIKKykKKworaW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFU
SU9OIGluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpP
Un0pCitpbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlN9IERFU1RJTkFU
SU9OIGluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpP
Un0vZXh0ZW5zaW9uKQorCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKK2luc3RhbGwoRklM
RVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMg
REVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIGluc3RhbGwoRklMRVMKICAgICAgICAgJHtDTUFL
RV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZQogICAgICAgICAk
e0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFr
ZQogICAgICAgICBERVNUSU5BVElPTiBsaWIvY21ha2UvRVdlYktpdDIpCiAKLWluc3RhbGwoRklM
RVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQ
VVRfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQorc2V0KElOSkVDVEVEX0JVTkRMRV9J
TlNUQUxMX0RJUiAiJHtMSUJfSU5TVEFMTF9ESVJ9L2V3ZWJraXQyLTAvIiBDQUNIRSBQQVRIICJX
aGV0aGVyIHRvIGluc3RhbGwgaW5qZWN0ZWQgYnVuZGxlIikKKworYWRkX2xpYnJhcnkoZXdrSW5q
ZWN0ZWRCdW5kbGUgU0hBUkVEICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbC9XZWJFZmxJ
bmplY3RlZEJ1bmRsZU1haW4uY3BwIikKK3RhcmdldF9saW5rX2xpYnJhcmllcyhld2tJbmplY3Rl
ZEJ1bmRsZSBXZWJLaXQyKQorCitpbnN0YWxsKFRBUkdFVFMgZXdrSW5qZWN0ZWRCdW5kbGUgREVT
VElOQVRJT04gIiR7SU5KRUNURURfQlVORExFX0lOU1RBTExfRElSfSIpCiAKIGlmIChFTkFCTEVf
UExVR0lOX1BST0NFU1MpCiAgICAgbGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJ
UkVDVE9SSUVTCkBAIC00NDIsMTYgKzQ2MSwxOCBAQCBzZXQoRVdLMlVuaXRUZXN0c19MSUJSQVJJ
RVMKIAogc2V0KFdFQktJVDJfRUZMX1RFU1RfRElSICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cyIpCiBzZXQoVEVTVF9SRVNPVVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVT
VF9ESVJ9L3Jlc291cmNlcykKLXNldChURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVIgJHtXRUJLSVQy
X0VGTF9URVNUX0RJUn0vSW5qZWN0ZWRCdW5kbGUpCitzZXQoVEVTVF9JTkpFQ1RFRF9CVU5ETEVf
RElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L2V4dGVuc2lvbnMpCiBzZXQoV0VCS0lUMl9FRkxf
VEVTVF9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJF
Q1RPUll9L1Rlc3RXZWJLaXRBUEkvRVdlYktpdDIpCiAKIGFkZF9kZWZpbml0aW9ucygtRFRFU1Rf
UkVTT1VSQ0VTX0RJUj1cIiR7VEVTVF9SRVNPVVJDRVNfRElSfVwiCiAgICAgLURURVNUX0xJQl9E
SVI9XCIke0NNQUtFX0xJQlJBUllfT1VUUFVUX0RJUkVDVE9SWX1cIgogICAgIC1ER1RFU1RfTElO
S0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEKICAgICAtRExJQkVYRUNESVI9XCIke0VYRUNfSU5TVEFM
TF9ESVJ9XCIKKyAgICAtRElOSkVDVEVEQlVORExFRElSPVwiJHtDTUFLRV9JTlNUQUxMX1BSRUZJ
WH0vJHtJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVJ9XCIKICAgICAtRFdFQlBST0NFU1NOQU1F
PVwiV2ViUHJvY2Vzc1wiCiAgICAgLURQTFVHSU5QUk9DRVNTTkFNRT1cIlBsdWdpblByb2Nlc3Nc
IgogICAgIC1ETkVUV09SS1BST0NFU1NOQU1FPVwiTmV0d29ya1Byb2Nlc3NcIgorICAgIC1ESU5K
RUNURURCVU5ETEVOQU1FPVwibGliZXdrSW5qZWN0ZWRCdW5kbGUuc29cIgogKQogCiBhZGRfbGli
cmFyeShld2syVW5pdFRlc3RVdGlscwpAQCAtNTAzLDggKzUyNCw3IEBAIGlmIChFTkFCTEVfQVBJ
X1RFU1RTKQogICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0ZXN0TmFtZX0gJHtFV0sy
VW5pdFRlc3RzX0xJQlJBUklFU30gZXdrMlVuaXRUZXN0VXRpbHMpCiAgICAgZW5kZm9yZWFjaCAo
KQogCi0gICAgYWRkX2xpYnJhcnkoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVTYW1wbGUgU0hB
UkVEICR7VEVTVF9JTkpFQ1RFRF9CVU5ETEVfRElSfS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNw
cCkKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVT
YW1wbGUgV2ViS2l0MikKKyAgICBhZGRfbGlicmFyeShld2syVW5pdFRlc3RJbmplY3RlZEJ1bmRs
ZVNhbXBsZSBTSEFSRUQgJHtURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVJ9L2V4dGVuc2lvbl9zYW1w
bGUuY3BwKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9TUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDQ0OGM2YTQy
YzI0MDUzYjY4ZmMzZTVlNjI3MWNjODYyYmMzZDhlMGMuLjdhODg0ODY1MTJmODZiMzZjZjZjODAz
Nzc4NjZmMjJhYjNiNDJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSBDb250
ZXh0TWFwJiBjb250ZXh0TWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1Fd2tDb250ZXh0OjpF
d2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQorRXdrQ29udGV4dDo6RXdrQ29udGV4dChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKICAgICA6
IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kYXRhYmFzZU1hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxFd2tEYXRhYmFzZU1hbmFnZXI+KFdLQ29udGV4dEdldERhdGFiYXNlTWFuYWdlcihjb250
ZXh0KSkpCiAgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RXdrU3RvcmFn
ZU1hbmFnZXI+KFdLQ29udGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoY29udGV4dCkpKQpA
QCAtNzQsNiArNzQsNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250
ZXh0KQogICAgICwgbV9yZXF1ZXN0TWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFJlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPENvbnRleHRIaXN0b3J5Q2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1f
anNHbG9iYWxDb250ZXh0KG51bGxwdHIpCisgICAgLCBtX2V4dGVuc2lvbnNQYXRoKGV4dGVuc2lv
bnNQYXRoKQogewogICAgIENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFw
KCkuYWRkKGNvbnRleHQsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CkBAIC05Niw2ICs5NywxNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdL
Q29udGV4dFJlZiBjb250ZXh0KQogCiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUuY2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLnVzZXJEYXRhID0gbnVsbHB0cjsKKworICAgIFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2Yo
Y2xpZW50KSk7CisKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBjbGllbnQuYmFz
ZS5jbGllbnRJbmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBj
bGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgY2xpZW50
LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldEluamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKKworICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIH0KIAogRXdrQ29udGV4
dDo6fkV3a0NvbnRleHQoKQpAQCAtMTIxLDE0ICsxMzMsMzcgQEAgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBFd2tDb250ZXh0OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29u
dGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKS5nZXQoKSkpOwogfQogCi1QYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVu
ZGxlUGF0aCkKK3N0YXRpYyBTdHJpbmcgaW5qZWN0ZWRCdW5kbGVQYXRoKCkKK3sKKyAgICBTdHJp
bmcgYnVuZGxlUGF0aDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogYnVuZGxlRGlyZWN0b3J5ID0g
Z2V0ZW52KCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgiKTsKKworICAgIGlmIChidW5kbGVE
aXJlY3RvcnkpIHsKKyAgICAgICAgYnVuZGxlUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4KGJ1bmRsZURpcmVjdG9yeSksIElOSkVDVEVEQlVO
RExFTkFNRSk7CisgICAgICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGgpKQor
ICAgICAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CisgICAgfQorCisgICAgYnVuZGxlUGF0aCA9
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4KFRFU1Rf
TElCX0RJUiksIElOSkVDVEVEQlVORExFTkFNRSk7CisgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlz
dHMoYnVuZGxlUGF0aCkpCisgICAgICAgIHJldHVybiBidW5kbGVQYXRoOworCisgICAgYnVuZGxl
UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4
KElOSkVDVEVEQlVORExFRElSKSwgSU5KRUNURURCVU5ETEVOQU1FKTsKKyAgICBpZiAoV2ViQ29y
ZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CisK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1Bhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29u
dGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGgpCiB7ICAgCi0gICAgaWYg
KCFmaWxlRXhpc3RzKGluamVjdGVkQnVuZGxlUGF0aCkpCisgICAgU3RyaW5nIGJ1bmRsZVBhdGgg
PSBpbmplY3RlZEJ1bmRsZVBhdGgoKTsKKyAgICBpZiAoIWJ1bmRsZVBhdGgpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9wdFdLKHRv
Q29waWVkQVBJKGluamVjdGVkQnVuZGxlUGF0aCkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBwYXRoID0gYWRvcHRXSyh0b0NvcGllZEFQSShidW5kbGVQYXRoKSk7CiAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5q
ZWN0ZWRCdW5kbGVQYXRoKHBhdGguZ2V0KCkpKS5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRs
ZVBhdGgocGF0aC5nZXQoKSkpLmdldCgpLCBleHRlbnNpb25zUGF0aCkpOwogfQogCiBFd2tDb250
ZXh0KiBFd2tDb250ZXh0OjpkZWZhdWx0Q29udGV4dCgpCkBAIC0zNjUsNiArNDAwLDExIEBAIHZv
aWQgRXdrQ29udGV4dDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0NvbnRleHRSZWYsIFdLCiAgICAgdG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT5wcm9j
ZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdl
Qm9keSwgcmV0dXJuRGF0YSk7CiB9CiAKK1dLVHlwZVJlZiBFd2tDb250ZXh0OjpnZXRJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXS1R5cGVSZWY+KHRvQ29waWVk
QVBJKHRvRXdrQ29udGV4dChjbGllbnRJbmZvKS0+ZXh0ZW5zaW9uc1BhdGgoKSkpOworfQorCiB2
b2lkIEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tf
Q29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiIGNhbGxiYWNrLCB2b2lkKiB1
c2VyRGF0YSkKIHsKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS51
c2VyRGF0YSA9IHVzZXJEYXRhOwpAQCAtMzcyLDE5ICs0MTIsNiBAQCB2b2lkIEV3a0NvbnRleHQ6
OnNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29udGV4dF9NZXNzYWdl
X0Zyb21fSQogICAgIGlmIChtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5j
YWxsYmFjayA9PSBjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NhbGxi
YWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjaykgewotICAgICAgICBXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNsaWVudDsKLSAgICAgICAgbWVtc2V0KCZjbGll
bnQsIDAsIHNpemVvZihjbGllbnQpKTsKLQotICAgICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0g
MTsKLSAgICAgICAgY2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgICAgIGNsaWVu
dC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlOwotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGU7Ci0KLSAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwotICAgIH0gZWxzZSBpZiAoIWNh
bGxiYWNrKQotICAgICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRl
eHQuZ2V0KCksIG51bGxwdHIpOwotCiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUuY2FsbGJhY2sgPSBjYWxsYmFjazsKIH0KIApAQCAtNDM0LDcgKzQ2MSw3IEBAIEV3
a19Db250ZXh0KiBld2tfY29udGV4dF9uZXcoKQogICAgIHJldHVybiBFd2tDb250ZXh0OjpjcmVh
dGUoKS5sZWFrUmVmKCk7CiB9CiAKLUV3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXdfd2l0aF9p
bmplY3RlZF9idW5kbGVfcGF0aChjb25zdCBjaGFyKiBwYXRoKQorRXdrX0NvbnRleHQqIGV3a19j
b250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChjb25zdCBjaGFyKiBwYXRoKQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwYXRoLCBudWxscHRyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXggYmM3YjA1
NGM3ZmRmZDg5NTBlN2I2MzYyYmI3MmY0NGRlM2Y0MTkxNi4uZTE3NjcwYjkxNWM4OWJkY2Y2NWNj
MWMwNDdiNmVlMzQxNWYxYWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5oCkBAIC0xNjksNyArMTY5LDcgQEAgRUFQSSBFd2tfQ29udGV4dCAq
ZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQodm9pZCk7CiAgKiBAcmV0dXJuIEV3a19Db250ZXh0IG9i
amVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQogICoKICAqIEBzZWUgZXdrX29i
amVjdF91bnJlZgotICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVf
cGF0aAorICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgKICAqLwog
RUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3KHZvaWQpOwogCkBAIC0xNzgsMTQgKzE3
OCwxNyBAQCBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXcodm9pZCk7CiAgKgogICog
VGhlIHJldHVybmVkIEV3a19Db250ZXh0IG9iamVjdCBAYiBzaG91bGQgYmUgdW5yZWYnZWQgYWZ0
ZXIgdXNlLgogICoKLSAqIEBwYXJhbSBwYXRoIHBhdGggb2YgaW5qZWN0ZWQgYnVuZGxlIGxpYnJh
cnkKKyAqIEBwYXJhbSBwYXRoIGRpcmVjdG9yeSBwYXRoIG9mIGV4dGVuc2lvbnMKICAqCiAgKiBA
cmV0dXJuIEV3a19Db250ZXh0IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVy
ZQogICoKKyAqIEBub3RlIEFsbCBzaGFyZWQgb2JqZWN0cyB3aGljaCBoYXZlIGV3a19leHRlbnNp
b25faW5pdCgpIGluIHRoZSBnaXZlbiBAYSBwYXRoIHdpbGwgYmUgbG9hZGVkLgorICoKICAqIEBz
ZWUgZXdrX29iamVjdF91bnJlZgogICogQHNlZSBld2tfY29udGV4dF9uZXcKKyAqIEBzZWUgRXdr
X0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uCiAgKi8KLUVBUEkgRXdrX0NvbnRleHQgKmV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgp
OworRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRo
KGNvbnN0IGNoYXIgKnBhdGgpOwogCiAvKioKICAqIEdldHMgdGhlIGFwcGxpY2F0aW9uIGNhY2hl
IG1hbmFnZXIgaW5zdGFuY2UgZm9yIHRoaXMgQGEgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCAx
NzI5YzRhMTJhMjI3ZmMwYTMyZDRhOTc1NjE2YjYwNWE3ZjlkNDU5Li5lZmY5ZThkMDlkZWQwNTYz
NTViODYyMTBmZGVjZWFjZTdiNDM3ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCkBAIC04Niw2ICs4Niw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKEV3a19UTFNfRXJyb3JfUG9s
aWN5IFRMU0Vycm9yUG9saWN5KSBjb25zdDsKIAorICAgIFN0cmluZyBleHRlbnNpb25zUGF0aCgp
IHsgcmV0dXJuIG1fZXh0ZW5zaW9uc1BhdGg7IH0KKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIHZvaWQgc2V0QWRkaXRpb25hbFBsdWdpblBhdGgoY29uc3QgU3RyaW5nJik7
CiAjZW5kaWYKQEAgLTk2LDExICs5OCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworICAgIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAg
ICAgdm9pZCBzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRf
TWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiwgdm9pZCopOwogICAgIHZvaWQgcHJvY2Vz
c1JlY2VpdmVkTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYqIHJldHVybkRhdGEpOwogCiBwcml2
YXRlOgotICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmKTsKKyAgICBleHBsaWNp
dCBFd2tDb250ZXh0KFdLQ29udGV4dFJlZiwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCA9
IFN0cmluZygpKTsKIAogICAgIHZvaWQgZW5zdXJlRmF2aWNvbkRhdGFiYXNlKCk7CiAKQEAgLTEy
MSw2ICsxMjQsNyBAQCBwcml2YXRlOgogCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fanNHbG9i
YWxDb250ZXh0OwogCisgICAgU3RyaW5nIG1fZXh0ZW5zaW9uc1BhdGg7CiAgICAgc3RydWN0IHsK
ICAgICAgICAgRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiBjYWxs
YmFjazsKICAgICAgICAgdm9pZCogdXNlckRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVf
c2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL0luamVj
dGVkQnVuZGxlL2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NGNlMTNiNmFjNmJhYTVjNzMzM2VjNWQ0ZWQzOGRhOWMwNjI0MGEzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL0luamVjdGVkQnVuZGxlL2luamVjdGVkX2J1bmRsZV9z
YW1wbGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDxXZWJL
aXQvV0tCdW5kbGVJbml0aWFsaXplLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLQotdm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKLXsKLX0KLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyNTk3MThlYmI0MDIzNjc0NTQwYWRmNDFmNGNjZmRmNGY5ZmQyYjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiRVdlYktpdF9FeHRlbnNpb24uaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCit2b2lkIGV3a19leHRlbnNpb25faW5pdChFd2tfRXh0ZW5zaW9uICop
Cit7Cit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHAKaW5kZXggM2YxNDcwYTA5ZGFjODE1NDdjNmE1ZjYxODhiM2MxODY4MzZlZTE2MS4uOGEz
NjI5NjVlMjFlZGI1ZDUxOGQ0NTcwMTdkMjM5MWJlN2U0ZTE4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250
ZXh0LmNwcApAQCAtMjMwLDkgKzIzMCw5IEBAIFRFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19j
b250ZXh0X25ldykKICAgICBld2tfb2JqZWN0X3VucmVmKGNvbnRleHQpOwogfQogCi1URVNUX0Yo
RVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0
aCkKK1RFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lv
bnNfcGF0aCkKIHsKLSAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IGV3a19jb250ZXh0X25ld193
aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGVudmlyb25tZW50LT5pbmplY3RlZEJ1bmRsZVNhbXBs
ZSgpKTsKKyAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IGV3a19jb250ZXh0X25ld193aXRoX2V4
dGVuc2lvbnNfcGF0aChlbnZpcm9ubWVudC0+aW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSk7CiAgICAg
QVNTRVJUX1RSVUUoY29udGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJlZihjb250ZXh0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFmMzcw
ODhhYzUwZTc4OWM3YzlkYWM5OTZkOTExNGU0ODM2ODY3YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4
dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIEVXZWJLaXRfRXh0
ZW5zaW9uLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBoZWFkZXIgZmlsZXMgdGhhdCBhcmUg
cmVxdWlyZWQgYnkgZXdlYmtpdDItZXh0ZW5zaW9uLgorICoKKyAqIEVXZWJLaXRfRXh0ZW5zaW9u
IGlzIHRoZSB3YXkgdG8gZXh0ZW5kIFdlYlByb2Nlc3Mgb2YgZXdlYmtpdDIuCisgKgorICogSW4g
b3JkZXIgdG8gY3JlYXRlIHRoZSBleHRlbnNpb24sIAorICogRmlyc3QsIGV3a19leHRlbnNpb25f
aW5pdCBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBzaGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6
CisgKgorICogQGNvZGUKKyAqICNpbmNsdWRlICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorICogCisg
KiB2b2lkIGV3a19leHRlbnNpb25faW5pdChFd2tfRXh0ZW5zaW9uICpleHRlbnNpb24pCisgKiB7
CisgKiAgICAvLyBwcm92aWRlIEV3a19FeHRlbnNpb25fQ2xpZW50IGNhbGxiYWNrcyBhcyBjbGll
bnQuCisgKiAgICBld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQoZXh0ZW5zaW9uLCAmY2xpZW50KTsK
KyAqIH0KKyAqIEBlbmRjb2RlCisgKgorICogQW5kIGNvbXBpbGVzIEMgb3IgQysrIGZpbGVzIGFz
IHNoYXJlZCBvYmplY3QgbGlrZSBiZWxvdzoKKyAqCisgKiBAdmVyYmF0aW0KKyAqIGdjYyAtbyBs
aWJzYW1wbGUuc28gc2FtcGxlLmMgLXNoYXJlZCAtZlBJQyBgcGtnLWNvbmZpZyAtLWNmbGFncyAt
LWxpYnMgZWluYSBld2Via2l0Mi1leHRlbnNpb25gCisgKiBAZW5kdmVyYmF0aW0KKyAqIAorICog
VGhlbiwgaW5zdGFsbCB0aGF0IG9iamVjdCBpbnRvIHRoZSBwYXRoIHdoaWNoIGV3a19jb250ZXh0
X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCgpIHNwZWNpZmllcy4KKyAqCisgKiBAc2VlIGV3a19j
b250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aAorICogQHNlZSBld2tfZXh0ZW5zaW9uX2Ns
aWVudF9zZXQKKyAqIEBzZWUgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uCisgKi8K
KworI2lmbmRlZiBFV2ViS2l0X0V4dGVuc2lvbl9oCisjZGVmaW5lIEVXZWJLaXRfRXh0ZW5zaW9u
X2gKKworI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKworI2VuZGlmIC8vIEVXZWJLaXRfRXh0
ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
OGZhOWJhOWVmYTQ3YTE1ZDY5ZWM1ZTJlM2RkZTE5NmIzODEzMzRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19l
eHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorCisjaW5jbHVkZSAiTW9kdWxlLmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgorI2luY2x1ZGUgIldLQnVu
ZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShX
S0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIEV3a0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lQYWdlKFdLQnVu
ZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRs
ZVJlZiwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBFd2tFeHRlbnNpb246OmRpZFJlY2VpdmVNZXNzYWdlVG9Q
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0V3a0V4dGVuc2lv
bjo6RXdrRXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCit7CisgICAgV0tCdW5kbGVD
bGllbnRWMSB3a0J1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgMSwgLy8g
dmVyc2lvbgorICAgICAgICAgICAgdGhpcywgLy8gY2xpZW50SW5mbworICAgICAgICB9LAorICAg
ICAgICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCisgICAgICAgIDAs
IC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAKKyAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UsCisg
ICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlCisgICAgfTsKKyAgICBXS0J1bmRsZVNldENs
aWVudCh0b0FQSShidW5kbGUpLCAmd2tCdW5kbGVDbGllbnQuYmFzZSk7Cit9CisKK0V3a0V4dGVu
c2lvbjo6fkV3a0V4dGVuc2lvbigpCit7Cit9CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjphcHBlbmQo
RXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMuYXBwZW5kKGNs
aWVudCk7Cit9CisKK3ZvaWQgZXdrX2V4dGVuc2lvbl9jbGllbnRfc2V0KEV3a19FeHRlbnNpb24q
IGV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihleHRlbnNpb24pOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGNsaWVudCk7CisKKyAgICBleHRlbnNpb24tPmFwcGVuZChjbGllbnQpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZs
L2V3a19leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJmNmQzYjk2MmZlZmYyNTg4
M2I0ZGNjYzljYzc0ZTIxNGI3ZGJmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2V4dGVuc2lvbi5oCisgKiBAYnJpZWYg
ICBEZXNjcmliZXMgdGhlIEV3a19FeHRlbnNpb24gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2V4
dGVuc2lvbl9oCisjZGVmaW5lIGV3a19leHRlbnNpb25faAorCisjaW5jbHVkZSA8RWluYS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3Ry
dWN0IEV3a1BhZ2UgRXdrX1BhZ2U7CisKKy8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5zaW9uLgor
ICovCit0eXBlZGVmIHN0cnVjdCBFd2tFeHRlbnNpb24gRXdrX0V4dGVuc2lvbjsKKworLyoqCisg
KiBEZWNsYXJlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbi4KKyAqCisgKiBAYnJp
ZWYgIFR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGVudHJ5IG9mIHRoZSBleHRlbnNpb24uCisgKgor
ICovCit0eXBlZGVmIHZvaWQgKigqRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uKShF
d2tfRXh0ZW5zaW9uICpidW5kbGUsIHZvaWQgKnJlc2VydmVkKTsKKworc3RydWN0IEV3a0V4dGVu
c2lvbkNsaWVudCB7CisgICAgaW50IHZlcnNpb247CisgICAgdm9pZCAqZGF0YTsKK307Cit0eXBl
ZGVmIHN0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgRXdrX0V4dGVuc2lvbl9DbGllbnQ7CisKK0VB
UEkgdm9pZCBld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9u
LCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAqY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19leHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25f
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjYzc4ODcwOWZjOWNjODhj
MGMxYzkzNDc1MDRlMjY1Y2JjZWM0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRl
LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKyNk
ZWZpbmUgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK30KKworY2xhc3Mg
RXdrRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZSopOworICAgIH5Fd2tFeHRlbnNpb24oKTsKKworICAgIHZvaWQgYXBw
ZW5kKEV3a19FeHRlbnNpb25fQ2xpZW50Kik7CisKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29u
c3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVm
LCBXS1N0cmluZ1JlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgV0tT
dHJpbmdSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopOworCitwcml2YXRlOgorICAgIFZlY3Rv
cjxFd2tfRXh0ZW5zaW9uX0NsaWVudCo+IG1fY2xpZW50czsKK307CisKKyNlbmRpZiAvLyBld2tf
ZXh0ZW5zaW9uX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDk5OWNmOTQ1MTI1MmFi
NDc2YTQyMzVjNjQ3YWUwYWI5ODc3ZTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZsLmgi
CisKKyNpbmNsdWRlICJNb2R1bGUuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNp
bmNsdWRlICJld2tfZXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRl
LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRXh0ZW5zaW9uTWFuYWdlckVmbCYg
RXh0ZW5zaW9uTWFuYWdlckVmbDo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD4gZXh0ZW5zaW9uTWFuYWdlcjsKKyAgICByZXR1cm4gZXh0
ZW5zaW9uTWFuYWdlcjsKK30KKworRXh0ZW5zaW9uTWFuYWdlckVmbDo6RXh0ZW5zaW9uTWFuYWdl
ckVmbCgpCit7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZShXS0J1
bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAgICBtX2V4dGVuc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7CisKKyAgICBT
dHJpbmcgZXh0ZW5zaW9uc0RpcmVjdG9yeSA9IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4odXNlckRhdGEpKS0+c3RyaW5nKCk7CisgICAgaWYgKGV4dGVuc2lvbnNEaXJlY3RvcnkuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhz
ID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShleHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiou
c28iKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkg
eworICAgICAgICAgICAgYXV0byBtb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obW9k
dWxlUGF0aHNbaV0pOworICAgICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXpl
X0Z1bmN0aW9uIGluaXRpYWxpemVGdW5jdGlvbiA9IG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPEV3
a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbj4oImV3a19leHRlbnNpb25faW5pdCIpOwor
ICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBpbml0aWFsaXplRnVuY3Rpb24obV9leHRlbnNpb24uZ2V0KCks
IG51bGxwdHIgLyogcmVzZXJ2ZWQgZm9yIHRoZSBmdXR1cmUgKi8pOworICAgICAgICAgICAgbV9l
eHRlbnNpb25Nb2R1bGVzLmFwcGVuZChtb2R1bGUucmVsZWFzZSgpKTsKKyAgICAgICAgfQorICAg
IH0KKworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRl
bnNpb25NYW5hZ2VyRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI0N2QyNGVlMTMzMzRkZmY2YmFjZGE3ODUw
Njc4OWUzMjE5NDkxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBF
eHRlbnNpb25NYW5hZ2VyRWZsX2gKKyNkZWZpbmUgRXh0ZW5zaW9uTWFuYWdlckVmbF9oCisKKyNp
bmNsdWRlICJXS0J1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xh
c3MgRXdrRXh0ZW5zaW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9kdWxlOwor
CitjbGFzcyBFeHRlbnNpb25NYW5hZ2VyRWZsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShF
eHRlbnNpb25NYW5hZ2VyRWZsKTsKKworcHVibGljOgorICAgIFdLX0VYUE9SVCBzdGF0aWMgRXh0
ZW5zaW9uTWFuYWdlckVmbCYgc2hhcmVkKCk7CisgICAgV0tfRVhQT1JUIHZvaWQgaW5pdGlhbGl6
ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKTsKK3ByaXZhdGU6CisgICAgRXh0ZW5zaW9uTWFuYWdl
ckVmbCgpOworCisgICAgVmVjdG9yPFdlYktpdDo6TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1bGVz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFd2tFeHRlbnNpb24+IG1fZXh0ZW5zaW9uOworCisgICAg
ZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEV4dGVuc2lvbk1hbmFnZXJFZmw+OworfTsKKwor
fQorCisjZW5kaWYgLy8gRXh0ZW5zaW9uTWFuYWdlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDM5ZDdiNTkyMjcwM2FkMjZjMDEwYTU5MzUxM2VmYmE4OGYzYzlmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0
ZWRCdW5kbGVNYWluLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVmbC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0J1
bmRsZUluaXRpYWxpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworI2lmIGRlZmlu
ZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQorZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkKKyNlbHNlCitleHRlcm4gIkMiCisjZW5kaWYKK3ZvaWQgV0tCdW5kbGVJbml0aWFsaXpl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIEV4dGVuc2lv
bk1hbmFnZXJFZmw6OnNoYXJlZCgpLmluaXRpYWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIv
U291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NjE2Y2RjMmY5Mzk1ZWJlNzI5NmQwNTQ4ZmVjODAxZmM1MWU4M2M0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpAQCAtMCwwICsx
LDggQEAKK3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACitpbmNsdWRlZGlyPSR7cHJlZml4
fS9pbmNsdWRlCisKK05hbWU6IGV3ZWJraXQyLWV4dGVuc2lvbgorRGVzY3JpcHRpb246IEV4dGVu
c2lvbiBmb3IgV2ViS2l0Mi9FRkwoZXdlYmtpdDIpCitWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9O
QAorUmVxdWlyZXM6IGVpbmEKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBV
VF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYjhiYzllNWU4ZWI4MmQ5NzE1
MTZmZTdmYmY2NDdmODNkNTE0ZmYzLi5kZjQ2YThhODBkZGNiYWJhZDdkMDkwZWRkNzVhNzNhYjBi
ZTliNWY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDctMTUgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEludHJvZHVjZSBFV2ViS2l0X0V4dGVuc2lvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0OiBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIGludG8gRUZMV2ViS2l0MlB1YmxpY0FQ
SQorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weTogQWRkZWQgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyBpbnRvIEVGTCBl
eGNlcHRpb25zLgorCiAyMDE0LTA3LTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXaW5dIFJlbW92ZSB1c2VzIG9mICdiYXNoJyBpbiBidWlsZCBzeXN0
ZW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRj
aGxpc3QgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0Cmlu
ZGV4IDliMGIyNzY3OTU4Y2Q0YTVkMjJhYmUxN2ViMGUxZWE1ODcyMDI2MDguLmU4OTZkYzQwZjEx
Y2MwZjZkMmM2NjhmNWRlZmEyOGQ1Zjk3NTJkNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdApAQCAtMTA3LDcgKzEwNyw4IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICByInxMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvIiwKICAgICAgICAg
fSwKICAgICAgICAgIkVGTFdlYktpdDJQdWJsaWNBUEkiOiB7Ci0gICAgICAgICAgICAiZmlsZW5h
bWUiOiByIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsLyIKKyAgICAgICAgICAgICJm
aWxlbmFtZSI6IHIiU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsLyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsLyIKICAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvIiwKICAgICAgICAgfSwKICAgICAgICAgIkVGTFdlYktpdDJQbGF0
Zm9ybVNwZWNpZmljIjogewpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5Cmlu
ZGV4IDZlMzQ0Y2Q4NDA4MjNlOTE5ZmNiYmY1YzE1Zjg5ZWQ1MDVmNTVjNWMuLjMxOTBkYjFmY2Ez
M2FhMGM5ZjdhYWM2ODg5ZDY5MmMwMjU0MDE3NWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkKQEAgLTE5MCw2ICsxOTAsNyBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIg
PSBbCiAgICAgICAjIGJvdGggbG93ZXItY2FzZWQgYW5kIGNhbWVsLWNhc2VkLCB1bmRlcnNjb3Jl
LXNwYXJhdGVkCiAgICAgICAjIHZhbHVlcy4KICAgICAgICJTb3VyY2UvV2ViS2l0L2VmbC9ld2sv
IiwKKyAgICAgICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvIiwKICAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iXSwKICAgICAg
WyItcmVhZGFiaWxpdHkvbmFtaW5nIiwKICAgICAgICItcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25h
bWUiXSksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235204</attachid>
            <date>2014-07-20 22:51:36 -0700</date>
            <delta_ts>2014-07-20 23:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140721145119.patch</filename>
            <type>text/plain</type>
            <size>40725</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTg4MmNhMWE2NWE4Y2Vl
MzAxOWQyY2VjNWU4NzhlYTE1Yzk0YTUwNy4uMzI3MTM5ZjcyN2ViMzQ0ZTg3MGRhMjM0ODQ0Nzhh
ODI3NDliNDFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA3LTIwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBld2tfY29u
dGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisg
ICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qg
d2l0aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90
IGV4cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNp
b24sIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUg
RVdlYktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpF
d2tDb250ZXh0KToKKyAgICAgICAgKGluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChFd2tD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIgZG9lcyBu
b3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5zdGVhZCwg
RXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OmV4
dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHA6IFJlbmFtZWQgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgg
dG8gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6
RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbik6Cisg
ICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpF
eHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZsKToKKyAgICAgICAgKFdlYktp
dDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVu
ZGxlSW5pdGlhbGl6ZSk6CisgICAgICAgICogZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbjog
QWRkZWQuCisKIDIwMTQtMDctMjAgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2FibGUgZmYvcncgYmFzZWQgb24gY2FuUGxheUZhc3RGb3J3YXJkIGFuZCBj
YW5QbGF5RmFzdFJld2luZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYzgyNzM4NGIw
ZGM2ZjI4MDFkMTVjZGE5ZTQ4YjQ5NDg3NzBjYTM2Ni4uNWQzMzkzNDY3NmZmYjA4ZjcwYjNlOTI3
Zjk4MWQ1ZmQxMzk2YmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3Myw2ICsx
NzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTE5NSw2ICsxOTcs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKIApAQCAtMjQzLDYgKzI0Niw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3Vw
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC0zNTUsNiArMzU5LDcgQEAgc2V0
KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiApCiAKIGNvbmZpZ3VyZV9maWxlKGVmbC9ld2Vi
a2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBP
TkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBAT05MWSkKIGNv
bmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9E
SVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlIEBPTkxZKQogY29uZmlndXJlX2Zp
bGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZSBAT05MWSkKIApAQCAtMzk1
LDEzICs0MDAsMjcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193aW5kb3dfZmVhdHVyZXMuaCIKICkK
IAorc2V0KEVXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRl
bnNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgiCispCisKK2luc3RhbGwoRklMRVMg
JHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQy
X0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9L2V4dGVuc2lvbikKKwogaW5zdGFsbChGSUxF
UyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9O
IGxpYi9wa2djb25maWcpCitpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBp
bnN0YWxsKEZJTEVTCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdl
YktpdDJDb25maWcuY21ha2UKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2Vm
bC9FV2ViS2l0MkNvbmZpZ1ZlcnNpb24uY21ha2UKICAgICAgICAgREVTVElOQVRJT04gbGliL2Nt
YWtlL0VXZWJLaXQyKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElO
QVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01B
Sk9SfSkKK3NldChJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RBTExfRElS
fS9ld2Via2l0Mi0wLyIgQ0FDSEUgUEFUSCAiV2hldGhlciB0byBpbnN0YWxsIGluamVjdGVkIGJ1
bmRsZSIpCisKK2FkZF9saWJyYXJ5KGV3a0luamVjdGVkQnVuZGxlIFNIQVJFRCAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcCIpCit0YXJn
ZXRfbGlua19saWJyYXJpZXMoZXdrSW5qZWN0ZWRCdW5kbGUgV2ViS2l0MikKKworaW5zdGFsbChU
QVJHRVRTIGV3a0luamVjdGVkQnVuZGxlIERFU1RJTkFUSU9OICIke0lOSkVDVEVEX0JVTkRMRV9J
TlNUQUxMX0RJUn0iKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQogICAgIGxpc3QoQVBQ
RU5EIFBsdWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFUwpAQCAtNDQyLDE2ICs0NjEsMTgg
QEAgc2V0KEVXSzJVbml0VGVzdHNfTElCUkFSSUVTCiAKIHNldChXRUJLSVQyX0VGTF9URVNUX0RJ
UiAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMiKQogc2V0KFRFU1RfUkVT
T1VSQ0VTX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9yZXNvdXJjZXMpCi1zZXQoVEVTVF9J
TkpFQ1RFRF9CVU5ETEVfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L0luamVjdGVkQnVuZGxl
KQorc2V0KFRFU1RfSU5KRUNURURfQlVORExFX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9l
eHRlbnNpb25zKQogc2V0KFdFQktJVDJfRUZMX1RFU1RfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZ
ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJL0VXZWJLaXQy
KQogCiBhZGRfZGVmaW5pdGlvbnMoLURURVNUX1JFU09VUkNFU19ESVI9XCIke1RFU1RfUkVTT1VS
Q0VTX0RJUn1cIgogICAgIC1EVEVTVF9MSUJfRElSPVwiJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9E
SVJFQ1RPUll9XCIKICAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCiAgICAg
LURMSUJFWEVDRElSPVwiJHtFWEVDX0lOU1RBTExfRElSfVwiCisgICAgLURJTkpFQ1RFREJVTkRM
RURJUj1cIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9LyR7SU5KRUNURURfQlVORExFX0lOU1RBTExf
RElSfVwiCiAgICAgLURXRUJQUk9DRVNTTkFNRT1cIldlYlByb2Nlc3NcIgogICAgIC1EUExVR0lO
UFJPQ0VTU05BTUU9XCJQbHVnaW5Qcm9jZXNzXCIKICAgICAtRE5FVFdPUktQUk9DRVNTTkFNRT1c
Ik5ldHdvcmtQcm9jZXNzXCIKKyAgICAtRElOSkVDVEVEQlVORExFTkFNRT1cImxpYmV3a0luamVj
dGVkQnVuZGxlLnNvXCIKICkKIAogYWRkX2xpYnJhcnkoZXdrMlVuaXRUZXN0VXRpbHMKQEAgLTUw
Myw4ICs1MjQsNyBAQCBpZiAoRU5BQkxFX0FQSV9URVNUUykKICAgICAgICAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKCR7dGVzdE5hbWV9ICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9IGV3azJVbml0
VGVzdFV0aWxzKQogICAgIGVuZGZvcmVhY2ggKCkKIAotICAgIGFkZF9saWJyYXJ5KGV3azJVbml0
VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJ
Un0vaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHApCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFdlYktpdDIpCisgICAgYWRkX2xpYnJh
cnkoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVTYW1wbGUgU0hBUkVEICR7VEVTVF9JTkpFQ1RF
RF9CVU5ETEVfRElSfS9leHRlbnNpb25fc2FtcGxlLmNwcCkKIGVuZGlmICgpCiAKIGlmIChFTkFC
TEVfU1BFTExDSEVDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcAppbmRleCA0NDhjNmE0MmMyNDA1M2I2OGZjM2U1ZTYyNzFjYzg2MmJjM2Q4
ZTBjLi43YTg4NDg2NTEyZjg2YjM2Y2Y2YzgwMzc3ODY2ZjIyYWIzYjQyZTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgQ29udGV4dE1hcCYgY29udGV4dE1hcCgpCiAgICAgcmV0
dXJuIG1hcDsKIH0KIAotRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4
dCkKK0V3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uc1BhdGgpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
ZGF0YWJhc2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RXdrRGF0YWJhc2VNYW5hZ2VyPihXS0Nv
bnRleHRHZXREYXRhYmFzZU1hbmFnZXIoY29udGV4dCkpKQogICAgICwgbV9zdG9yYWdlTWFuYWdl
cihzdGQ6Om1ha2VfdW5pcXVlPEV3a1N0b3JhZ2VNYW5hZ2VyPihXS0NvbnRleHRHZXRLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyKGNvbnRleHQpKSkKQEAgLTc0LDYgKzc0LDcgQEAgRXdrQ29udGV4dDo6
RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCkKICAgICAsIG1fcmVxdWVzdE1hbmFnZXJD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4oY29udGV4dCkp
CiAgICAgLCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0SGlzdG9yeUNs
aWVudEVmbD4oY29udGV4dCkpCiAgICAgLCBtX2pzR2xvYmFsQ29udGV4dChudWxscHRyKQorICAg
ICwgbV9leHRlbnNpb25zUGF0aChleHRlbnNpb25zUGF0aCkKIHsKICAgICBDb250ZXh0TWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gY29udGV4dE1hcCgpLmFkZChjb250ZXh0LCB0aGlzKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtOTYsNiArOTcsMTcg
QEAgRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCkKIAogICAgIG1f
Y2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID0gbnVsbHB0cjsK
ICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS51c2VyRGF0YSA9IG51
bGxwdHI7CisKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNsaWVudDsKKyAg
ICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworCisgICAgY2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDE7CisgICAgY2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY2xp
ZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlOworICAgIGNsaWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEgPSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CisK
KyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZj
bGllbnQuYmFzZSk7CiB9CiAKIEV3a0NvbnRleHQ6On5Fd2tDb250ZXh0KCkKQEAgLTEyMSwxNCAr
MTMzLDM3IEBAIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKCkKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGUo
KSkuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCitzdGF0aWMgU3RyaW5nIGluamVj
dGVkQnVuZGxlUGF0aCgpCit7CisgICAgU3RyaW5nIGJ1bmRsZVBhdGg7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGJ1bmRsZURpcmVjdG9yeSA9IGdldGVudigiV0VCS0lUX0lOSkVDVEVEX0JVTkRM
RV9QQVRIIik7CisKKyAgICBpZiAoYnVuZGxlRGlyZWN0b3J5KSB7CisgICAgICAgIGJ1bmRsZVBh
dGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChi
dW5kbGVEaXJlY3RvcnkpLCBJTkpFQ1RFREJVTkRMRU5BTUUpOworICAgICAgICBpZiAoV2ViQ29y
ZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBidW5kbGVQYXRo
OworICAgIH0KKworICAgIGJ1bmRsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoU3RyaW5nOjpmcm9tVVRGOChURVNUX0xJQl9ESVIpLCBJTkpFQ1RFREJVTkRMRU5BTUUp
OworICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGgpKQorICAgICAgICByZXR1
cm4gYnVuZGxlUGF0aDsKKworICAgIGJ1bmRsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChJTkpFQ1RFREJVTkRMRURJUiksIElOSkVDVEVE
QlVORExFTkFNRSk7CisgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aCkpCisg
ICAgICAgIHJldHVybiBidW5kbGVQYXRoOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitQ
YXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbnNQYXRoKQogeyAgIAotICAgIGlmICghZmlsZUV4aXN0cyhpbmplY3RlZEJ1bmRsZVBh
dGgpKQorICAgIFN0cmluZyBidW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoKCk7CisgICAg
aWYgKCFidW5kbGVQYXRoKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBwYXRoID0gYWRvcHRXSyh0b0NvcGllZEFQSShpbmplY3RlZEJ1bmRsZVBhdGgp
KTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFkb3B0V0sodG9Db3BpZWRB
UEkoYnVuZGxlUGF0aCkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFk
b3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSku
Z2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0Nv
bnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKHBhdGguZ2V0KCkpKS5nZXQoKSwgZXh0
ZW5zaW9uc1BhdGgpKTsKIH0KIAogRXdrQ29udGV4dCogRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRl
eHQoKQpAQCAtMzY1LDYgKzQwMCwxMSBAQCB2b2lkIEV3a0NvbnRleHQ6OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXSwogICAgIHRv
RXdrQ29udGV4dChjbGllbnRJbmZvKS0+cHJvY2Vzc1JlY2VpdmVkTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHksIHJldHVybkRhdGEpOwogfQogCitXS1R5
cGVSZWYgRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
KFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V0tUeXBlUmVmPih0b0NvcGllZEFQSSh0b0V3a0NvbnRleHQoY2xpZW50SW5mbykt
PmV4dGVuc2lvbnNQYXRoKCkpKTsKK30KKwogdm9pZCBFd2tDb250ZXh0OjpzZXRNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVk
X0J1bmRsZV9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCiB7CiAgICAgbV9jYWxsYmFja0Zv
ck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNlckRhdGEgPSB1c2VyRGF0YTsKQEAgLTM3Miwx
OSArNDEyLDYgQEAgdm9pZCBFd2tDb250ZXh0OjpzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
Q2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0kKICAgICBpZiAobV9jYWxsYmFja0Zv
ck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sgPT0gY2FsbGJhY2spCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUuY2FsbGJhY2spIHsKLSAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBj
bGllbnQ7Ci0gICAgICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KLSAg
ICAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgICAgIGNsaWVudC5iYXNlLmNsaWVu
dEluZm8gPSB0aGlzOwotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLSAgICAgICAg
Y2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwotCi0gICAgICAg
IFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVu
dC5iYXNlKTsKLSAgICB9IGVsc2UgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCBudWxscHRyKTsKLQogICAgIG1f
Y2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID0gY2FsbGJhY2s7
CiB9CiAKQEAgLTQzNCw3ICs0NjEsNyBAQCBFd2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3KCkK
ICAgICByZXR1cm4gRXdrQ29udGV4dDo6Y3JlYXRlKCkubGVha1JlZigpOwogfQogCi1Fd2tfQ29u
dGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgoY29uc3QgY2hh
ciogcGF0aCkKK0V3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3Bh
dGgoY29uc3QgY2hhciogcGF0aCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocGF0aCwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dC5oCmluZGV4IGJjN2IwNTRjN2ZkZmQ4OTUwZTdiNjM2MmJiNzJmNDRkZTNm
NDE5MTYuLmUxNzY3MGI5MTVjODliZGNmNjVjYzFjMDQ3YjZlZTM0MTVmMWFhNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMTY5LDcg
KzE2OSw3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KHZvaWQp
OwogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9u
IGZhaWx1cmUKICAqCiAgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKLSAqIEBzZWUgZXdrX2NvbnRl
eHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgKKyAqIEBzZWUgZXdrX2NvbnRleHRfbmV3
X3dpdGhfZXh0ZW5zaW9uc19wYXRoCiAgKi8KIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0
X25ldyh2b2lkKTsKIApAQCAtMTc4LDE0ICsxNzgsMTcgQEAgRUFQSSBFd2tfQ29udGV4dCAqZXdr
X2NvbnRleHRfbmV3KHZvaWQpOwogICoKICAqIFRoZSByZXR1cm5lZCBFd2tfQ29udGV4dCBvYmpl
Y3QgQGIgc2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVyIHVzZS4KICAqCi0gKiBAcGFyYW0gcGF0aCBw
YXRoIG9mIGluamVjdGVkIGJ1bmRsZSBsaWJyYXJ5CisgKiBAcGFyYW0gcGF0aCBkaXJlY3Rvcnkg
cGF0aCBvZiBleHRlbnNpb25zCiAgKgogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3Qgb24g
c3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqCisgKiBAbm90ZSBBbGwgc2hhcmVkIG9i
amVjdHMgd2hpY2ggaGF2ZSBld2tfZXh0ZW5zaW9uX2luaXQoKSBpbiB0aGUgZ2l2ZW4gQGEgcGF0
aCB3aWxsIGJlIGxvYWRlZC4KKyAqCiAgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKICAqIEBzZWUg
ZXdrX2NvbnRleHRfbmV3CisgKiBAc2VlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlv
bgogICovCi1FQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9i
dW5kbGVfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKK0VBUEkgRXdrX0NvbnRleHQgKmV3a19jb250
ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKIAogLyoqCiAg
KiBHZXRzIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBtYW5hZ2VyIGluc3RhbmNlIGZvciB0aGlzIEBh
IGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggMTcyOWM0YTEyYTIyN2ZjMGEzMmQ0YTk3NTYxNmI2
MDVhN2Y5ZDQ1OS4uZWZmOWU4ZDA5ZGVkMDU2MzU1Yjg2MjEwZmRlY2VhY2U3YjQzNzg0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X3ByaXZhdGUuaApAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElnbm9y
ZVRMU0Vycm9ycyhFd2tfVExTX0Vycm9yX1BvbGljeSBUTFNFcnJvclBvbGljeSkgY29uc3Q7CiAK
KyAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGgoKSB7IHJldHVybiBtX2V4dGVuc2lvbnNQYXRoOyB9
CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIHNldEFkZGl0aW9u
YWxQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCkBAIC05NiwxMSArOTgsMTIgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVm
KiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgV0tUeXBl
UmVmIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHZvaWQgc2V0TWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVf
Q2IsIHZvaWQqKTsKICAgICB2b2lkIHByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tU
eXBlUmVmKiByZXR1cm5EYXRhKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFd2tDb250ZXh0
KFdLQ29udGV4dFJlZik7CisgICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRSZWYsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGggPSBTdHJpbmcoKSk7CiAKICAgICB2b2lkIGVuc3Vy
ZUZhdmljb25EYXRhYmFzZSgpOwogCkBAIC0xMjEsNiArMTI0LDcgQEAgcHJpdmF0ZToKIAogICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBtX2pzR2xvYmFsQ29udGV4dDsKIAorICAgIFN0cmluZyBtX2V4
dGVuc2lvbnNQYXRoOwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2Vf
RnJvbV9JbmplY3RlZF9CdW5kbGVfQ2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRh
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5q
ZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2Ft
cGxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1Yzcz
MzNlYzVkNGVkMzhkYTljMDYyNDBhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Jbmpl
Y3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJ
bml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNl
ckRhdGEpCi17Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVu
c2lvbl9zYW1wbGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
ZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjU5NzE4ZWJiNDAy
MzY3NDU0MGFkZjQxZjRjY2ZkZjRmOWZkMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxl
LmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkVXZWJLaXRfRXh0ZW5zaW9uLmgiCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordm9pZCBld2tfZXh0
ZW5zaW9uX2luaXQoRXdrX0V4dGVuc2lvbiAqKQoreworfQorCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCmluZGV4IDNmMTQ3MGEwOWRhYzgxNTQ3
YzZhNWY2MTg4YjNjMTg2ODM2ZWUxNjEuLjhhMzYyOTY1ZTIxZWRiNWQ1MThkNDU3MDE3ZDIzOTFi
ZTdlNGUxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKQEAgLTIzMCw5ICsyMzAsOSBAQCBU
RVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXcpCiAgICAgZXdrX29iamVjdF91
bnJlZihjb250ZXh0KTsKIH0KIAotVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRf
bmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgpCitURVNUX0YoRVdLMkNvbnRleHRUZXN0LCBl
d2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgpCiB7Ci0gICAgRXdrX0NvbnRleHQq
IGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aChlbnZp
cm9ubWVudC0+aW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSk7CisgICAgRXdrX0NvbnRleHQqIGNvbnRl
eHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoZW52aXJvbm1lbnQtPmlu
amVjdGVkQnVuZGxlU2FtcGxlKCkpOwogICAgIEFTU0VSVF9UUlVFKGNvbnRleHQpOwogICAgIGV3
a19vYmplY3RfdW5yZWYoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4
dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZjM3MDg4YWM1MGU3ODljN2M5ZGFjOTk2ZDkxMTRlNDgz
Njg2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBFV2ViS2l0X0V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBDb250YWlu
cyB0aGUgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGV3ZWJraXQyLWV4dGVuc2lv
bi4KKyAqCisgKiBFV2ViS2l0X0V4dGVuc2lvbiBpcyB0aGUgd2F5IHRvIGV4dGVuZCBXZWJQcm9j
ZXNzIG9mIGV3ZWJraXQyLgorICoKKyAqIEluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgZXh0ZW5zaW9u
LCAKKyAqIEZpcnN0LCBld2tfZXh0ZW5zaW9uX2luaXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiB0
aGUgc2hhcmVkIG9iamVjdCBsaWtlIGJlbG93OgorICoKKyAqIEBjb2RlCisgKiAjaW5jbHVkZSAi
RVdlYktpdF9FeHRlbnNpb24uaCIKKyAqIAorICogdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdr
X0V4dGVuc2lvbiAqZXh0ZW5zaW9uKQorICogeworICogICAgLy8gcHJvdmlkZSBFd2tfRXh0ZW5z
aW9uX0NsaWVudCBjYWxsYmFja3MgYXMgY2xpZW50LgorICogICAgZXdrX2V4dGVuc2lvbl9jbGll
bnRfc2V0KGV4dGVuc2lvbiwgJmNsaWVudCk7CisgKiB9CisgKiBAZW5kY29kZQorICoKKyAqIEFu
ZCBjb21waWxlcyBDIG9yIEMrKyBmaWxlcyBhcyBzaGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6Cisg
KgorICogQHZlcmJhdGltCisgKiBnY2MgLW8gbGlic2FtcGxlLnNvIHNhbXBsZS5jIC1zaGFyZWQg
LWZQSUMgYHBrZy1jb25maWcgLS1jZmxhZ3MgLS1saWJzIGVpbmEgZXdlYmtpdDItZXh0ZW5zaW9u
YAorICogQGVuZHZlcmJhdGltCisgKiAKKyAqIFRoZW4sIGluc3RhbGwgdGhhdCBvYmplY3QgaW50
byB0aGUgcGF0aCB3aGljaCBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoKSBz
cGVjaWZpZXMuCisgKgorICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3Bh
dGgKKyAqIEBzZWUgZXdrX2V4dGVuc2lvbl9jbGllbnRfc2V0CisgKiBAc2VlIEV3a19FeHRlbnNp
b25fSW5pdGlhbGl6ZV9GdW5jdGlvbgorICovCisKKyNpZm5kZWYgRVdlYktpdF9FeHRlbnNpb25f
aAorI2RlZmluZSBFV2ViS2l0X0V4dGVuc2lvbl9oCisKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9u
LmgiCisKKyNlbmRpZiAvLyBFV2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdr
X2V4dGVuc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU1ZmJiNWFmYjBhMjZkMDQ4NGM1YjNlMDFlZjIz
YzI5ZDFjZjEwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKworI2lu
Y2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCitFd2tFeHRlbnNpb246OkV3a0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQor
eworfQorCitFd2tFeHRlbnNpb246On5Fd2tFeHRlbnNpb24oKQoreworfQorCit2b2lkIGV3a19l
eHRlbnNpb25fY2xpZW50X3NldChFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24sIEV3a19FeHRlbnNp
b25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXh0
ZW5zaW9uKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjbGllbnQpOworCisgICAg
ZXh0ZW5zaW9uLT5zZXRDbGllbnQoY2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVu
c2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRiZjZkM2I5NjJmZWZmMjU4ODNiNGRjY2M5Y2M3NGUyMTRiN2Ri
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBmaWxlICAgIGV3a19leHRlbnNpb24uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2tf
RXh0ZW5zaW9uIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19leHRlbnNpb25faAorI2RlZmluZSBl
d2tfZXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBFd2tQYWdlIEV3a19QYWdl
OworCisvKioKKyAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg
RXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CisKKy8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5z
aW9uX0luaXRpYWxpemVfRnVuY3Rpb24uCisgKgorICogQGJyaWVmICBUeXBlIGRlZmluaXRpb24g
Zm9yIHRoZSBlbnRyeSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqLwordHlwZWRlZiB2b2lkICoo
KkV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbikoRXdrX0V4dGVuc2lvbiAqYnVuZGxl
LCB2b2lkICpyZXNlcnZlZCk7CisKK3N0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgeworICAgIGlu
dCB2ZXJzaW9uOworICAgIHZvaWQgKmRhdGE7Cit9OwordHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5z
aW9uQ2xpZW50IEV3a19FeHRlbnNpb25fQ2xpZW50OworCitFQVBJIHZvaWQgZXdrX2V4dGVuc2lv
bl9jbGllbnRfc2V0KEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9DbGll
bnQgKmNsaWVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAv
LyBld2tfZXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3By
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZDcyNjgyMTU4ODdjM2Q3ZThlOTBkNDY4YjgzOGYwOThhYWZk
NDQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19leHRlbnNpb25f
cHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgSW5qZWN0ZWRCdW5kbGU7Cit9CisKK2NsYXNzIEV3a0V4dGVuc2lvbiB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGUqKTsK
KyAgICB+RXdrRXh0ZW5zaW9uKCk7CisKKyAgICB2b2lkIHNldENsaWVudChFd2tfRXh0ZW5zaW9u
X0NsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKK3ByaXZhdGU6CisgICAg
RXdrX0V4dGVuc2lvbl9DbGllbnQqIG1fY2xpZW50OworfTsKKworI2VuZGlmIC8vIGV3a19leHRl
bnNpb25fcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZs
L0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OTk5Y2Y5NDUxMjUyYWI0NzZh
NDIzNWM2NDdhZTBhYjk4NzdlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4dGVuc2lvbk1hbmFnZXJFZmwuaCIKKwor
I2luY2x1ZGUgIk1vZHVsZS5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1
ZGUgImV3a19leHRlbnNpb24uaCIKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCIK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFeHRlbnNpb25NYW5hZ2VyRWZsJiBFeHRl
bnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxF
eHRlbnNpb25NYW5hZ2VyRWZsPiBleHRlbnNpb25NYW5hZ2VyOworICAgIHJldHVybiBleHRlbnNp
b25NYW5hZ2VyOworfQorCitFeHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZs
KCkKK3sKK30KKwordm9pZCBFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIG1fZXh0ZW5zaW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxFd2tFeHRlbnNpb24+KHRvSW1wbChidW5kbGUpKTsKKworICAgIFN0cmlu
ZyBleHRlbnNpb25zRGlyZWN0b3J5ID0gdG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPih1
c2VyRGF0YSkpLT5zdHJpbmcoKTsKKyAgICBpZiAoZXh0ZW5zaW9uc0RpcmVjdG9yeS5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBX
ZWJDb3JlOjpsaXN0RGlyZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIp
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKSB7Cisg
ICAgICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQ
YXRoc1tpXSk7CisgICAgICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVu
Y3Rpb24gaW5pdGlhbGl6ZUZ1bmN0aW9uID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8RXdrX0V4
dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uPigiZXdrX2V4dGVuc2lvbl9pbml0Iik7CisgICAg
ICAgICAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5nZXQoKSwgbnVs
bHB0ciAvKiByZXNlcnZlZCBmb3IgdGhlIGZ1dHVyZSAqLyk7CisgICAgICAgICAgICBtX2V4dGVu
c2lvbk1vZHVsZXMuYXBwZW5kKG1vZHVsZS5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQor
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVu
c2lvbk1hbmFnZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lv
bk1hbmFnZXJFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjQ3ZDI0ZWUxMzMzNGRmZjZiYWNkYTc4NTA2Nzg5
ZTMyMTk0OTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9l
ZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4dGVu
c2lvbk1hbmFnZXJFZmxfaAorI2RlZmluZSBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKKworI2luY2x1
ZGUgIldLQnVuZGxlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitjbGFzcyBF
d2tFeHRlbnNpb247CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNb2R1bGU7CisKK2Ns
YXNzIEV4dGVuc2lvbk1hbmFnZXJFZmwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4dGVu
c2lvbk1hbmFnZXJFZmwpOworCitwdWJsaWM6CisgICAgV0tfRVhQT1JUIHN0YXRpYyBFeHRlbnNp
b25NYW5hZ2VyRWZsJiBzaGFyZWQoKTsKKyAgICBXS19FWFBPUlQgdm9pZCBpbml0aWFsaXplKFdL
QnVuZGxlUmVmLCBXS1R5cGVSZWYpOworcHJpdmF0ZToKKyAgICBFeHRlbnNpb25NYW5hZ2VyRWZs
KCk7CisKKyAgICBWZWN0b3I8V2ViS2l0OjpNb2R1bGUqPiBtX2V4dGVuc2lvbk1vZHVsZXM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEV3a0V4dGVuc2lvbj4gbV9leHRlbnNpb247CisKKyAgICBmcmll
bmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD47Cit9OworCit9CisK
KyNlbmRpZiAvLyBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZWZsL1dlYkVmbEluamVjdGVkQnVuZGxlTWFpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjEwMzlkN2I1OTIyNzAzYWQyNmMwMTBhNTkzNTEzZWZiYTg4ZjNjOWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJFZmxJbmplY3RlZEJ1
bmRsZU1haW4uY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZsLmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxl
SW5pdGlhbGl6ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisjaWYgZGVmaW5lZChX
SU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KQorI2Vsc2UKK2V4dGVybiAiQyIKKyNlbmRpZgordm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgRXh0ZW5zaW9uTWFu
YWdlckVmbDo6c2hhcmVkKCkuaW5pdGlhbGl6ZShidW5kbGUsIHVzZXJEYXRhKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTZj
ZGMyZjkzOTVlYmU3Mjk2ZDA1NDhmZWM4MDFmYzUxZTgzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCkBAIC0wLDAgKzEsOCBA
QAorcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJWEAKK2luY2x1ZGVkaXI9JHtwcmVmaXh9L2lu
Y2x1ZGUKKworTmFtZTogZXdlYmtpdDItZXh0ZW5zaW9uCitEZXNjcmlwdGlvbjogRXh0ZW5zaW9u
IGZvciBXZWJLaXQyL0VGTChld2Via2l0MikKK1ZlcnNpb246IEBQUk9KRUNUX1ZFUlNJT05ACitS
ZXF1aXJlczogZWluYQorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05B
TUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JAL2V4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZjMWZhYmJmNjU3YWRiZDkxZDY3OWFi
MDM1ZTgxNWIzZmFkNDYwMjkuLjRmYzIwNGZlMTJhZmZjMjQ2ODgxODVlNjYxN2Q0ZjRmZGUwZTFl
ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxNC0wNy0yMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNlIEVXZWJLaXRfRXh0ZW5zaW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ5MjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3Q6CisgICAgICAgIEFkZGVkIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8gaW50byBFRkxXZWJLaXQyUHVi
bGljQVBJLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToKKyAg
ICAgICAgQWRkZWQgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsLyBpbnRvIEVGTCBleGNlcHRpb25zLgorCiAyMDE0LTA3LTIwICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdCBmb3IgPHJkYXI6Ly9wcm9ibGVtcy8xNzc0
MjYxMT4gLVtfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBpbWFnZV0gaXMgb2Z0ZW4gZW1wdHkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3Qg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0CmluZGV4IDU0
OTNjNTk0YWEzOGNkY2UxZTkzMmYyNzZmMjgzNGU1MTViYThlMWIuLjM0M2MzYjg1MTNkZjU5NWJj
ODA3NjBkNTUyYjI1MGJlZWZkZjI3NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3dhdGNobGlzdApAQCAtMTA3LDcgKzEwNyw4IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICByInxMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvIiwKICAgICAgICAgfSwKICAg
ICAgICAgIkVGTFdlYktpdDJQdWJsaWNBUEkiOiB7Ci0gICAgICAgICAgICAiZmlsZW5hbWUiOiBy
IlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsLyIKKyAgICAgICAgICAgICJmaWxlbmFt
ZSI6IHIiU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyIK
KyAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsLyIKICAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvIiwKICAgICAgICAgfSwKICAgICAgICAgIkVGTFdlYktpdDJQbGF0Zm9ybVNw
ZWNpZmljIjogewpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDcz
ZjM5OTVjNmRkMDcyYzgxMjBhYzY5NjE4MTc2OGY1NTlmMWZlNTMuLjllMjBhYzM3ZDgyMmVjMmQz
OGFlZmZkNjVhNTJiYTUxNTc0MDNhMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkKQEAgLTE4OSw2ICsxODksNyBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAg
ICAgKFsjIFRoZSBFRkwgQVBJcyB1c2UgRUZMIG5hbWluZyBzdHlsZSwgd2hpY2ggaW5jbHVkZXMK
ICAgICAgICMgYm90aCBsb3dlci1jYXNlZCBhbmQgY2FtZWwtY2FzZWQsIHVuZGVyc2NvcmUtc3Bh
cmF0ZWQKICAgICAgICMgdmFsdWVzLgorICAgICAgIlNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8iLAogICAgICAgIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsLyJdLAogICAgICBbIi1yZWFkYWJpbGl0eS9uYW1pbmciLAogICAgICAgIi1yZWFk
YWJpbGl0eS9wYXJhbWV0ZXJfbmFtZSJdKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235207</attachid>
            <date>2014-07-20 23:44:27 -0700</date>
            <delta_ts>2014-07-21 01:49:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140721154410.patch</filename>
            <type>text/plain</type>
            <size>40645</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTg4MmNhMWE2NWE4Y2Vl
MzAxOWQyY2VjNWU4NzhlYTE1Yzk0YTUwNy4uMzI3MTM5ZjcyN2ViMzQ0ZTg3MGRhMjM0ODQ0Nzhh
ODI3NDliNDFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA3LTIwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBld2tfY29u
dGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisg
ICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qg
d2l0aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90
IGV4cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNp
b24sIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUg
RVdlYktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpF
d2tDb250ZXh0KToKKyAgICAgICAgKGluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChFd2tD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIgZG9lcyBu
b3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5zdGVhZCwg
RXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OmV4
dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHA6IFJlbmFtZWQgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgg
dG8gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6
RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbik6Cisg
ICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpF
eHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZsKToKKyAgICAgICAgKFdlYktp
dDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVu
ZGxlSW5pdGlhbGl6ZSk6CisgICAgICAgICogZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbjog
QWRkZWQuCisKIDIwMTQtMDctMjAgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2FibGUgZmYvcncgYmFzZWQgb24gY2FuUGxheUZhc3RGb3J3YXJkIGFuZCBj
YW5QbGF5RmFzdFJld2luZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYzgyNzM4NGIw
ZGM2ZjI4MDFkMTVjZGE5ZTQ4YjQ5NDg3NzBjYTM2Ni4uNWQzMzkzNDY3NmZmYjA4ZjcwYjNlOTI3
Zjk4MWQ1ZmQxMzk2YmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3Myw2ICsx
NzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTE5NSw2ICsxOTcs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKIApAQCAtMjQzLDYgKzI0Niw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3Vw
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC0zNTUsNiArMzU5LDcgQEAgc2V0
KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiApCiAKIGNvbmZpZ3VyZV9maWxlKGVmbC9ld2Vi
a2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBP
TkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBAT05MWSkKIGNv
bmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9E
SVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlIEBPTkxZKQogY29uZmlndXJlX2Zp
bGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZSBAT05MWSkKIApAQCAtMzk1
LDEzICs0MDAsMjcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193aW5kb3dfZmVhdHVyZXMuaCIKICkK
IAorc2V0KEVXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRl
bnNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgiCispCisKK2luc3RhbGwoRklMRVMg
JHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQy
X0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9L2V4dGVuc2lvbikKKwogaW5zdGFsbChGSUxF
UyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9O
IGxpYi9wa2djb25maWcpCitpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBp
bnN0YWxsKEZJTEVTCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdl
YktpdDJDb25maWcuY21ha2UKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2Vm
bC9FV2ViS2l0MkNvbmZpZ1ZlcnNpb24uY21ha2UKICAgICAgICAgREVTVElOQVRJT04gbGliL2Nt
YWtlL0VXZWJLaXQyKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElO
QVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01B
Sk9SfSkKK3NldChJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RBTExfRElS
fS9ld2Via2l0Mi0wLyIgQ0FDSEUgUEFUSCAiV2hldGhlciB0byBpbnN0YWxsIGluamVjdGVkIGJ1
bmRsZSIpCisKK2FkZF9saWJyYXJ5KGV3a0luamVjdGVkQnVuZGxlIFNIQVJFRCAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcCIpCit0YXJn
ZXRfbGlua19saWJyYXJpZXMoZXdrSW5qZWN0ZWRCdW5kbGUgV2ViS2l0MikKKworaW5zdGFsbChU
QVJHRVRTIGV3a0luamVjdGVkQnVuZGxlIERFU1RJTkFUSU9OICIke0lOSkVDVEVEX0JVTkRMRV9J
TlNUQUxMX0RJUn0iKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQogICAgIGxpc3QoQVBQ
RU5EIFBsdWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFUwpAQCAtNDQyLDE2ICs0NjEsMTgg
QEAgc2V0KEVXSzJVbml0VGVzdHNfTElCUkFSSUVTCiAKIHNldChXRUJLSVQyX0VGTF9URVNUX0RJ
UiAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMiKQogc2V0KFRFU1RfUkVT
T1VSQ0VTX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9yZXNvdXJjZXMpCi1zZXQoVEVTVF9J
TkpFQ1RFRF9CVU5ETEVfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L0luamVjdGVkQnVuZGxl
KQorc2V0KFRFU1RfSU5KRUNURURfQlVORExFX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9l
eHRlbnNpb25zKQogc2V0KFdFQktJVDJfRUZMX1RFU1RfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZ
ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJL0VXZWJLaXQy
KQogCiBhZGRfZGVmaW5pdGlvbnMoLURURVNUX1JFU09VUkNFU19ESVI9XCIke1RFU1RfUkVTT1VS
Q0VTX0RJUn1cIgogICAgIC1EVEVTVF9MSUJfRElSPVwiJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9E
SVJFQ1RPUll9XCIKICAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCiAgICAg
LURMSUJFWEVDRElSPVwiJHtFWEVDX0lOU1RBTExfRElSfVwiCisgICAgLURJTkpFQ1RFREJVTkRM
RURJUj1cIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9LyR7SU5KRUNURURfQlVORExFX0lOU1RBTExf
RElSfVwiCiAgICAgLURXRUJQUk9DRVNTTkFNRT1cIldlYlByb2Nlc3NcIgogICAgIC1EUExVR0lO
UFJPQ0VTU05BTUU9XCJQbHVnaW5Qcm9jZXNzXCIKICAgICAtRE5FVFdPUktQUk9DRVNTTkFNRT1c
Ik5ldHdvcmtQcm9jZXNzXCIKKyAgICAtRElOSkVDVEVEQlVORExFTkFNRT1cImxpYmV3a0luamVj
dGVkQnVuZGxlLnNvXCIKICkKIAogYWRkX2xpYnJhcnkoZXdrMlVuaXRUZXN0VXRpbHMKQEAgLTUw
Myw4ICs1MjQsNyBAQCBpZiAoRU5BQkxFX0FQSV9URVNUUykKICAgICAgICAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKCR7dGVzdE5hbWV9ICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9IGV3azJVbml0
VGVzdFV0aWxzKQogICAgIGVuZGZvcmVhY2ggKCkKIAotICAgIGFkZF9saWJyYXJ5KGV3azJVbml0
VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJ
Un0vaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHApCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFdlYktpdDIpCisgICAgYWRkX2xpYnJh
cnkoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVTYW1wbGUgU0hBUkVEICR7VEVTVF9JTkpFQ1RF
RF9CVU5ETEVfRElSfS9leHRlbnNpb25fc2FtcGxlLmNwcCkKIGVuZGlmICgpCiAKIGlmIChFTkFC
TEVfU1BFTExDSEVDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcAppbmRleCA0NDhjNmE0MmMyNDA1M2I2OGZjM2U1ZTYyNzFjYzg2MmJjM2Q4
ZTBjLi5iMDg4MGJlN2RmM2RlZmVkOGZlZjcwNzUyZWIxZGJjYzQwYjcwYmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgQ29udGV4dE1hcCYgY29udGV4dE1hcCgpCiAgICAgcmV0
dXJuIG1hcDsKIH0KIAotRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4
dCkKK0V3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uc1BhdGgpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
ZGF0YWJhc2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RXdrRGF0YWJhc2VNYW5hZ2VyPihXS0Nv
bnRleHRHZXREYXRhYmFzZU1hbmFnZXIoY29udGV4dCkpKQogICAgICwgbV9zdG9yYWdlTWFuYWdl
cihzdGQ6Om1ha2VfdW5pcXVlPEV3a1N0b3JhZ2VNYW5hZ2VyPihXS0NvbnRleHRHZXRLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyKGNvbnRleHQpKSkKQEAgLTc0LDYgKzc0LDcgQEAgRXdrQ29udGV4dDo6
RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCkKICAgICAsIG1fcmVxdWVzdE1hbmFnZXJD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4oY29udGV4dCkp
CiAgICAgLCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0SGlzdG9yeUNs
aWVudEVmbD4oY29udGV4dCkpCiAgICAgLCBtX2pzR2xvYmFsQ29udGV4dChudWxscHRyKQorICAg
ICwgbV9leHRlbnNpb25zUGF0aChleHRlbnNpb25zUGF0aCkKIHsKICAgICBDb250ZXh0TWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gY29udGV4dE1hcCgpLmFkZChjb250ZXh0LCB0aGlzKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtOTYsNiArOTcsMTcg
QEAgRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCkKIAogICAgIG1f
Y2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID0gbnVsbHB0cjsK
ICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS51c2VyRGF0YSA9IG51
bGxwdHI7CisKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNsaWVudDsKKyAg
ICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworCisgICAgY2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDE7CisgICAgY2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY2xp
ZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlOworICAgIGNsaWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGEgPSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CisK
KyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZj
bGllbnQuYmFzZSk7CiB9CiAKIEV3a0NvbnRleHQ6On5Fd2tDb250ZXh0KCkKQEAgLTEyMSwxNCAr
MTMzLDM3IEBAIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKCkKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGUo
KSkuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCitzdGF0aWMgU3RyaW5nIGluamVj
dGVkQnVuZGxlUGF0aCgpCit7CisgICAgU3RyaW5nIGJ1bmRsZVBhdGg7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGJ1bmRsZURpcmVjdG9yeSA9IGdldGVudigiV0VCS0lUX0lOSkVDVEVEX0JVTkRM
RV9QQVRIIik7CisKKyAgICBpZiAoYnVuZGxlRGlyZWN0b3J5KSB7CisgICAgICAgIGJ1bmRsZVBh
dGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChi
dW5kbGVEaXJlY3RvcnkpLCBJTkpFQ1RFREJVTkRMRU5BTUUpOworICAgICAgICBpZiAoV2ViQ29y
ZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBidW5kbGVQYXRo
OworICAgIH0KKworICAgIGJ1bmRsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoU3RyaW5nOjpmcm9tVVRGOChURVNUX0xJQl9ESVIpLCBJTkpFQ1RFREJVTkRMRU5BTUUp
OworICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGgpKQorICAgICAgICByZXR1
cm4gYnVuZGxlUGF0aDsKKworICAgIGJ1bmRsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChJTkpFQ1RFREJVTkRMRURJUiksIElOSkVDVEVE
QlVORExFTkFNRSk7CisgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aCkpCisg
ICAgICAgIHJldHVybiBidW5kbGVQYXRoOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitQ
YXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbnNQYXRoKQogeyAgIAotICAgIGlmICghZmlsZUV4aXN0cyhpbmplY3RlZEJ1bmRsZVBh
dGgpKQorICAgIFN0cmluZyBidW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoKCk7CisgICAg
aWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBwYXRoID0gYWRvcHRXSyh0b0NvcGllZEFQSShpbmplY3RlZEJ1
bmRsZVBhdGgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFkb3B0V0so
dG9Db3BpZWRBUEkoYnVuZGxlUGF0aCkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tD
b250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRo
LmdldCgpKSkuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRv
cHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKHBhdGguZ2V0KCkpKS5n
ZXQoKSwgZXh0ZW5zaW9uc1BhdGgpKTsKIH0KIAogRXdrQ29udGV4dCogRXdrQ29udGV4dDo6ZGVm
YXVsdENvbnRleHQoKQpAQCAtMzY1LDYgKzQwMCwxMSBAQCB2b2lkIEV3a0NvbnRleHQ6OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBX
SwogICAgIHRvRXdrQ29udGV4dChjbGllbnRJbmZvKS0+cHJvY2Vzc1JlY2VpdmVkTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHksIHJldHVybkRhdGEpOwog
fQogCitXS1R5cGVSZWYgRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPih0b0NvcGllZEFQSSh0b0V3a0NvbnRleHQoY2xp
ZW50SW5mbyktPmV4dGVuc2lvbnNQYXRoKCkpKTsKK30KKwogdm9pZCBFd2tDb250ZXh0OjpzZXRN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9t
X0luamVjdGVkX0J1bmRsZV9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCiB7CiAgICAgbV9j
YWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNlckRhdGEgPSB1c2VyRGF0YTsK
QEAgLTM3MiwxOSArNDEyLDYgQEAgdm9pZCBFd2tDb250ZXh0OjpzZXRNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0kKICAgICBpZiAobV9j
YWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sgPT0gY2FsbGJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUuY2FsbGJhY2spIHsKLSAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRWMSBjbGllbnQ7Ci0gICAgICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50
KSk7Ci0KLSAgICAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgICAgIGNsaWVudC5i
YXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsK
LSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUgPSBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwot
Ci0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQo
KSwgJmNsaWVudC5iYXNlKTsKLSAgICB9IGVsc2UgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgV0tD
b250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCBudWxscHRyKTsK
LQogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID0g
Y2FsbGJhY2s7CiB9CiAKQEAgLTQzNCw3ICs0NjEsNyBAQCBFd2tfQ29udGV4dCogZXdrX2NvbnRl
eHRfbmV3KCkKICAgICByZXR1cm4gRXdrQ29udGV4dDo6Y3JlYXRlKCkubGVha1JlZigpOwogfQog
Ci1Fd2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgo
Y29uc3QgY2hhciogcGF0aCkKK0V3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXdfd2l0aF9leHRl
bnNpb25zX3BhdGgoY29uc3QgY2hhciogcGF0aCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwocGF0aCwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IGJjN2IwNTRjN2ZkZmQ4OTUwZTdiNjM2MmJi
NzJmNDRkZTNmNDE5MTYuLmUxNzY3MGI5MTVjODliZGNmNjVjYzFjMDQ3YjZlZTM0MTVmMWFhNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApA
QCAtMTY5LDcgKzE2OSw3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KHZvaWQpOwogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3Qgb24gc3VjY2VzcyBvciBA
YyBOVUxMIG9uIGZhaWx1cmUKICAqCiAgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKLSAqIEBzZWUg
ZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgKKyAqIEBzZWUgZXdrX2Nv
bnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoCiAgKi8KIEVBUEkgRXdrX0NvbnRleHQgKmV3
a19jb250ZXh0X25ldyh2b2lkKTsKIApAQCAtMTc4LDE0ICsxNzgsMTcgQEAgRUFQSSBFd2tfQ29u
dGV4dCAqZXdrX2NvbnRleHRfbmV3KHZvaWQpOwogICoKICAqIFRoZSByZXR1cm5lZCBFd2tfQ29u
dGV4dCBvYmplY3QgQGIgc2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVyIHVzZS4KICAqCi0gKiBAcGFy
YW0gcGF0aCBwYXRoIG9mIGluamVjdGVkIGJ1bmRsZSBsaWJyYXJ5CisgKiBAcGFyYW0gcGF0aCBk
aXJlY3RvcnkgcGF0aCBvZiBleHRlbnNpb25zCiAgKgogICogQHJldHVybiBFd2tfQ29udGV4dCBv
YmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqCisgKiBAbm90ZSBBbGwg
c2hhcmVkIG9iamVjdHMgd2hpY2ggaGF2ZSBld2tfZXh0ZW5zaW9uX2luaXQoKSBpbiB0aGUgZ2l2
ZW4gQGEgcGF0aCB3aWxsIGJlIGxvYWRlZC4KKyAqCiAgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYK
ICAqIEBzZWUgZXdrX2NvbnRleHRfbmV3CisgKiBAc2VlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6
ZV9GdW5jdGlvbgogICovCi1FQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0aF9p
bmplY3RlZF9idW5kbGVfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKK0VBUEkgRXdrX0NvbnRleHQg
KmV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChjb25zdCBjaGFyICpwYXRoKTsK
IAogLyoqCiAgKiBHZXRzIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBtYW5hZ2VyIGluc3RhbmNlIGZv
ciB0aGlzIEBhIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggMTcyOWM0YTEyYTIyN2ZjMGEzMmQ0
YTk3NTYxNmI2MDVhN2Y5ZDQ1OS4uZWZmOWU4ZDA5ZGVkMDU2MzU1Yjg2MjEwZmRlY2VhY2U3YjQz
Nzg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaApAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldElnbm9yZVRMU0Vycm9ycyhFd2tfVExTX0Vycm9yX1BvbGljeSBUTFNFcnJvclBvbGljeSkg
Y29uc3Q7CiAKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGgoKSB7IHJldHVybiBtX2V4dGVuc2lv
bnNQYXRoOyB9CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIHNl
dEFkZGl0aW9uYWxQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCkBAIC05NiwxMSAr
OTgsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29u
dGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwg
V0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0
aWMgV0tUeXBlUmVmIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0Nv
bnRleHRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHZvaWQgc2V0TWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3Rl
ZF9CdW5kbGVfQ2IsIHZvaWQqKTsKICAgICB2b2lkIHByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBF
d2tDb250ZXh0KFdLQ29udGV4dFJlZik7CisgICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRl
eHRSZWYsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGggPSBTdHJpbmcoKSk7CiAKICAgICB2
b2lkIGVuc3VyZUZhdmljb25EYXRhYmFzZSgpOwogCkBAIC0xMjEsNiArMTI0LDcgQEAgcHJpdmF0
ZToKIAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2pzR2xvYmFsQ29udGV4dDsKIAorICAgIFN0
cmluZyBtX2V4dGVuc2lvbnNQYXRoOwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0
X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVfQ2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQq
IHVzZXJEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9i
dW5kbGVfc2FtcGxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZh
YzZiYWE1YzczMzNlYzVkNGVkMzhkYTljMDYyNDBhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBF
bGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6
ZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQg
V0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpCi17Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjU5
NzE4ZWJiNDAyMzY3NDU0MGFkZjQxZjRjY2ZkZjRmOWZkMmI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNp
b25fc2FtcGxlLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkVXZWJLaXRfRXh0ZW5z
aW9uLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordm9p
ZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVuc2lvbiAqKQoreworfQorCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCmluZGV4IDNmMTQ3MGEw
OWRhYzgxNTQ3YzZhNWY2MTg4YjNjMTg2ODM2ZWUxNjEuLjhhMzYyOTY1ZTIxZWRiNWQ1MThkNDU3
MDE3ZDIzOTFiZTdlNGUxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKQEAgLTIzMCw5ICsy
MzAsOSBAQCBURVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXcpCiAgICAgZXdr
X29iamVjdF91bnJlZihjb250ZXh0KTsKIH0KIAotVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdr
X2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgpCitURVNUX0YoRVdLMkNvbnRl
eHRUZXN0LCBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgpCiB7Ci0gICAgRXdr
X0NvbnRleHQqIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVf
cGF0aChlbnZpcm9ubWVudC0+aW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSk7CisgICAgRXdrX0NvbnRl
eHQqIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoZW52aXJv
bm1lbnQtPmluamVjdGVkQnVuZGxlU2FtcGxlKCkpOwogICAgIEFTU0VSVF9UUlVFKGNvbnRleHQp
OwogICAgIGV3a19vYmplY3RfdW5yZWYoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9F
V2ViS2l0X0V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZjM3MDg4YWM1MGU3ODljN2M5ZGFjOTk2
ZDkxMTRlNDgzNjg2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAZmlsZSAgICBFV2ViS2l0X0V4dGVuc2lvbi5oCisgKiBAYnJpZWYg
ICBDb250YWlucyB0aGUgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGV3ZWJraXQy
LWV4dGVuc2lvbi4KKyAqCisgKiBFV2ViS2l0X0V4dGVuc2lvbiBpcyB0aGUgd2F5IHRvIGV4dGVu
ZCBXZWJQcm9jZXNzIG9mIGV3ZWJraXQyLgorICoKKyAqIEluIG9yZGVyIHRvIGNyZWF0ZSB0aGUg
ZXh0ZW5zaW9uLCAKKyAqIEZpcnN0LCBld2tfZXh0ZW5zaW9uX2luaXQgbXVzdCBiZSBpbXBsZW1l
bnRlZCBpbiB0aGUgc2hhcmVkIG9iamVjdCBsaWtlIGJlbG93OgorICoKKyAqIEBjb2RlCisgKiAj
aW5jbHVkZSAiRVdlYktpdF9FeHRlbnNpb24uaCIKKyAqIAorICogdm9pZCBld2tfZXh0ZW5zaW9u
X2luaXQoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uKQorICogeworICogICAgLy8gcHJvdmlkZSBF
d2tfRXh0ZW5zaW9uX0NsaWVudCBjYWxsYmFja3MgYXMgY2xpZW50LgorICogICAgZXdrX2V4dGVu
c2lvbl9jbGllbnRfc2V0KGV4dGVuc2lvbiwgJmNsaWVudCk7CisgKiB9CisgKiBAZW5kY29kZQor
ICoKKyAqIEFuZCBjb21waWxlcyBDIG9yIEMrKyBmaWxlcyBhcyBzaGFyZWQgb2JqZWN0IGxpa2Ug
YmVsb3c6CisgKgorICogQHZlcmJhdGltCisgKiBnY2MgLW8gbGlic2FtcGxlLnNvIHNhbXBsZS5j
IC1zaGFyZWQgLWZQSUMgYHBrZy1jb25maWcgLS1jZmxhZ3MgLS1saWJzIGVpbmEgZXdlYmtpdDIt
ZXh0ZW5zaW9uYAorICogQGVuZHZlcmJhdGltCisgKiAKKyAqIFRoZW4sIGluc3RhbGwgdGhhdCBv
YmplY3QgaW50byB0aGUgcGF0aCB3aGljaCBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25z
X3BhdGgoKSBzcGVjaWZpZXMuCisgKgorICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRl
bnNpb25zX3BhdGgKKyAqIEBzZWUgZXdrX2V4dGVuc2lvbl9jbGllbnRfc2V0CisgKiBAc2VlIEV3
a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbgorICovCisKKyNpZm5kZWYgRVdlYktpdF9F
eHRlbnNpb25faAorI2RlZmluZSBFV2ViS2l0X0V4dGVuc2lvbl9oCisKKyNpbmNsdWRlICJld2tf
ZXh0ZW5zaW9uLmgiCisKKyNlbmRpZiAvLyBFV2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4
dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU1ZmJiNWFmYjBhMjZkMDQ4NGM1
YjNlMDFlZjIzYzI5ZDFjZjEwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb24u
aCIKKworI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitFd2tFeHRlbnNpb246OkV3a0V4dGVuc2lvbihJbmplY3RlZEJ1bmRsZSog
YnVuZGxlKQoreworfQorCitFd2tFeHRlbnNpb246On5Fd2tFeHRlbnNpb24oKQoreworfQorCit2
b2lkIGV3a19leHRlbnNpb25fY2xpZW50X3NldChFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24sIEV3
a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oZXh0ZW5zaW9uKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjbGllbnQp
OworCisgICAgZXh0ZW5zaW9uLT5zZXRDbGllbnQoY2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwv
ZXdrX2V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiZjZkM2I5NjJmZWZmMjU4ODNiNGRjY2M5Y2M3
NGUyMTRiN2RiZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvKioKKyAqIEBmaWxlICAgIGV3a19leHRlbnNpb24uaAorICogQGJyaWVmICAgRGVzY3JpYmVz
IHRoZSBFd2tfRXh0ZW5zaW9uIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19leHRlbnNpb25faAor
I2RlZmluZSBld2tfZXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBFd2tQYWdl
IEV3a19QYWdlOworCisvKioKKyAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbi4KKyAqLwordHlwZWRl
ZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CisKKy8qKgorICogRGVjbGFyZSBF
d2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24uCisgKgorICogQGJyaWVmICBUeXBlIGRl
ZmluaXRpb24gZm9yIHRoZSBlbnRyeSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqLwordHlwZWRl
ZiB2b2lkICooKkV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbikoRXdrX0V4dGVuc2lv
biAqYnVuZGxlLCB2b2lkICpyZXNlcnZlZCk7CisKK3N0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQg
eworICAgIGludCB2ZXJzaW9uOworICAgIHZvaWQgKmRhdGE7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
RXdrRXh0ZW5zaW9uQ2xpZW50IEV3a19FeHRlbnNpb25fQ2xpZW50OworCitFQVBJIHZvaWQgZXdr
X2V4dGVuc2lvbl9jbGllbnRfc2V0KEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbiwgRXdrX0V4dGVu
c2lvbl9DbGllbnQgKmNsaWVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK
KyNlbmRpZiAvLyBld2tfZXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDcyNjgyMTU4ODdjM2Q3ZThlOTBkNDY4Yjgz
OGYwOThhYWZkNDQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19l
eHRlbnNpb25fcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgSW5qZWN0ZWRCdW5kbGU7Cit9CisKK2NsYXNzIEV3a0V4dGVuc2lv
biB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGUqKTsKKyAgICB+RXdrRXh0ZW5zaW9uKCk7CisKKyAgICB2b2lkIHNldENsaWVudChFd2tf
RXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKK3ByaXZh
dGU6CisgICAgRXdrX0V4dGVuc2lvbl9DbGllbnQqIG1fY2xpZW50OworfTsKKworI2VuZGlmIC8v
IGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OTk5Y2Y5NDUx
MjUyYWI0NzZhNDIzNWM2NDdhZTBhYjk4NzdlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcApAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4dGVuc2lvbk1hbmFnZXJF
ZmwuaCIKKworI2luY2x1ZGUgIk1vZHVsZS5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5o
IgorI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uX3By
aXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFeHRlbnNpb25NYW5hZ2Vy
RWZsJiBFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxFeHRlbnNpb25NYW5hZ2VyRWZsPiBleHRlbnNpb25NYW5hZ2VyOworICAgIHJldHVy
biBleHRlbnNpb25NYW5hZ2VyOworfQorCitFeHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25N
YW5hZ2VyRWZsKCkKK3sKK30KKwordm9pZCBFeHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXpl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIG1fZXh0ZW5z
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxFd2tFeHRlbnNpb24+KHRvSW1wbChidW5kbGUpKTsKKwor
ICAgIFN0cmluZyBleHRlbnNpb25zRGlyZWN0b3J5ID0gdG9JbXBsKHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPih1c2VyRGF0YSkpLT5zdHJpbmcoKTsKKyAgICBpZiAoZXh0ZW5zaW9uc0RpcmVjdG9y
eS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxl
UGF0aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmlu
ZygiKi5zbyIpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNb
aV0pKSB7CisgICAgICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxl
Pihtb2R1bGVQYXRoc1tpXSk7CisgICAgICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBFd2tfRXh0ZW5zaW9uX0luaXRp
YWxpemVfRnVuY3Rpb24gaW5pdGlhbGl6ZUZ1bmN0aW9uID0gbW9kdWxlLT5mdW5jdGlvblBvaW50
ZXI8RXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uPigiZXdrX2V4dGVuc2lvbl9pbml0
Iik7CisgICAgICAgICAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5n
ZXQoKSwgbnVsbHB0ciAvKiByZXNlcnZlZCBmb3IgdGhlIGZ1dHVyZSAqLyk7CisgICAgICAgICAg
ICBtX2V4dGVuc2lvbk1vZHVsZXMuYXBwZW5kKG1vZHVsZS5yZWxlYXNlKCkpOworICAgICAgICB9
CisgICAgfQorCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
ZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZs
L0V4dGVuc2lvbk1hbmFnZXJFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjQ3ZDI0ZWUxMzMzNGRmZjZiYWNk
YTc4NTA2Nzg5ZTMyMTk0OTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEV4dGVuc2lvbk1hbmFnZXJFZmxfaAorI2RlZmluZSBFeHRlbnNpb25NYW5hZ2VyRWZsX2gK
KworI2luY2x1ZGUgIldLQnVuZGxlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CitjbGFzcyBFd2tFeHRlbnNpb247CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNb2R1
bGU7CisKK2NsYXNzIEV4dGVuc2lvbk1hbmFnZXJFZmwgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEV4dGVuc2lvbk1hbmFnZXJFZmwpOworCitwdWJsaWM6CisgICAgV0tfRVhQT1JUIHN0YXRp
YyBFeHRlbnNpb25NYW5hZ2VyRWZsJiBzaGFyZWQoKTsKKyAgICBXS19FWFBPUlQgdm9pZCBpbml0
aWFsaXplKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpOworcHJpdmF0ZToKKyAgICBFeHRlbnNpb25N
YW5hZ2VyRWZsKCk7CisKKyAgICBWZWN0b3I8V2ViS2l0OjpNb2R1bGUqPiBtX2V4dGVuc2lvbk1v
ZHVsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV3a0V4dGVuc2lvbj4gbV9leHRlbnNpb247CisK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD47Cit9
OworCit9CisKKyNlbmRpZiAvLyBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYkVmbEluamVjdGVkQnVuZGxlTWFpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNlYWY4YzAzZDIyYzU3N2FkMDU3OTliZDMwMWNmYWVkYmJkNGJiY2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJFZmxJ
bmplY3RlZEJ1bmRsZU1haW4uY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZsLmgiCisjaW5jbHVkZSA8V2ViS2l0
L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitleHRl
cm4gIkMiIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBl
UmVmIHVzZXJEYXRhKQoreworICAgIEV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCgpLmluaXRp
YWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9l
ZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQy
LWV4dGVuc2lvbi5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjE2Y2RjMmY5Mzk1ZWJlNzI5NmQwNTQ4ZmVj
ODAxZmM1MWU4M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJr
aXQyLWV4dGVuc2lvbi5wYy5pbgpAQCAtMCwwICsxLDggQEAKK3ByZWZpeD1AQ01BS0VfSU5TVEFM
TF9QUkVGSVhACitpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNsdWRlCisKK05hbWU6IGV3ZWJraXQy
LWV4dGVuc2lvbgorRGVzY3JpcHRpb246IEV4dGVuc2lvbiBmb3IgV2ViS2l0Mi9FRkwoZXdlYmtp
dDIpCitWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAorUmVxdWlyZXM6IGVpbmEKK0NmbGFnczog
LUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01B
Sk9SQC9leHRlbnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmYzFmYWJiZjY1N2FkYmQ5MWQ2NzlhYjAzNWU4MTViM2ZhZDQ2MDI5Li40ZmMy
MDRmZTEyYWZmYzI0Njg4MTg1ZTY2MTdkNGY0ZmRlMGUxZWY2IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDct
MjAgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
IEludHJvZHVjZSBFV2ViS2l0X0V4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0
Y2hsaXN0OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvIGludG8gRUZMV2ViS2l0MlB1YmxpY0FQSS4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgIEFkZGVkIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8gaW50byBFRkwgZXhjZXB0aW9u
cy4KKwogMjAxNC0wNy0yMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRlc3QgZm9yIDxyZGFyOi8vcHJvYmxlbXMvMTc3NDI2MTE+IC1bX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gaW1hZ2VdIGlzIG9mdGVuIGVtcHR5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY29uZmlnL3dhdGNobGlzdAppbmRleCA1NDkzYzU5NGFhMzhjZGNlMWU5MzJmMjc2
ZjI4MzRlNTE1YmE4ZTFiLi4zNDNjM2I4NTEzZGY1OTViYzgwNzYwZDU1MmIyNTBiZWVmZGYyNzYx
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hs
aXN0CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QK
QEAgLTEwNyw3ICsxMDcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgciJ8TGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsLyIsCiAgICAgICAgIH0sCiAgICAgICAgICJFRkxXZWJLaXQyUHVibGlj
QVBJIjogewotICAgICAgICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC8iCisgICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8iCisgICAgICAgICAgICAgICAgICAgICAg
ICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iCiAgICAgICAgICAgICAgICAg
ICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsLyIsCiAgICAgICAg
IH0sCiAgICAgICAgICJFRkxXZWJLaXQyUGxhdGZvcm1TcGVjaWZpYyI6IHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCA3M2YzOTk1YzZkZDA3MmM4MTIwYWM2OTYx
ODE3NjhmNTU5ZjFmZTUzLi45ZTIwYWMzN2Q4MjJlYzJkMzhhZWZmZDY1YTUyYmE1MTU3NDAzYTM4
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0xODksNiArMTg5
LDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgIChbIyBUaGUgRUZMIEFQSXMgdXNl
IEVGTCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1ZGVzCiAgICAgICAjIGJvdGggbG93ZXItY2Fz
ZWQgYW5kIGNhbWVsLWNhc2VkLCB1bmRlcnNjb3JlLXNwYXJhdGVkCiAgICAgICAjIHZhbHVlcy4K
KyAgICAgICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwv
IiwKICAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iXSwKICAgICAgWyIt
cmVhZGFiaWxpdHkvbmFtaW5nIiwKICAgICAgICItcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUi
XSksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235212</attachid>
            <date>2014-07-21 01:50:06 -0700</date>
            <delta_ts>2014-07-21 06:52:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140721174949.patch</filename>
            <type>text/plain</type>
            <size>40676</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTg4MmNhMWE2NWE4Y2Vl
MzAxOWQyY2VjNWU4NzhlYTE1Yzk0YTUwNy4uMzI3MTM5ZjcyN2ViMzQ0ZTg3MGRhMjM0ODQ0Nzhh
ODI3NDliNDFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA3LTIwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBld2tfY29u
dGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisg
ICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qg
d2l0aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90
IGV4cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNp
b24sIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUg
RVdlYktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpF
d2tDb250ZXh0KToKKyAgICAgICAgKGluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChFd2tD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIgZG9lcyBu
b3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5zdGVhZCwg
RXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OmV4
dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHA6IFJlbmFtZWQgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgg
dG8gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6
RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbik6Cisg
ICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpF
eHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZsKToKKyAgICAgICAgKFdlYktp
dDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVu
ZGxlSW5pdGlhbGl6ZSk6CisgICAgICAgICogZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbjog
QWRkZWQuCisKIDIwMTQtMDctMjAgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2FibGUgZmYvcncgYmFzZWQgb24gY2FuUGxheUZhc3RGb3J3YXJkIGFuZCBj
YW5QbGF5RmFzdFJld2luZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYzgyNzM4NGIw
ZGM2ZjI4MDFkMTVjZGE5ZTQ4YjQ5NDg3NzBjYTM2Ni4uZDhiZDIwNTYxOGIzOGIwZWM0MzdmODBi
Y2ZlNmUzMTRmMGI1ZWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3Myw2ICsx
NzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTE5NSw2ICsxOTcs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKIApAQCAtMjQzLDYgKzI0Niw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3Vw
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC0zNTUsNiArMzU5LDcgQEAgc2V0
KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiApCiAKIGNvbmZpZ3VyZV9maWxlKGVmbC9ld2Vi
a2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBP
TkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBAT05MWSkKIGNv
bmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9E
SVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlIEBPTkxZKQogY29uZmlndXJlX2Zp
bGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZSBAT05MWSkKIApAQCAtMzk1
LDEzICs0MDAsMjcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193aW5kb3dfZmVhdHVyZXMuaCIKICkK
IAorc2V0KEVXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRl
bnNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgiCispCisKK2luc3RhbGwoRklMRVMg
JHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQy
X0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9L2V4dGVuc2lvbikKKwogaW5zdGFsbChGSUxF
UyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9O
IGxpYi9wa2djb25maWcpCitpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBp
bnN0YWxsKEZJTEVTCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdl
YktpdDJDb25maWcuY21ha2UKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2Vm
bC9FV2ViS2l0MkNvbmZpZ1ZlcnNpb24uY21ha2UKICAgICAgICAgREVTVElOQVRJT04gbGliL2Nt
YWtlL0VXZWJLaXQyKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElO
QVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01B
Sk9SfSkKK3NldChJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RBTExfRElS
fS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS8iIENBQ0hF
IFBBVEggIldoZXRoZXIgdG8gaW5zdGFsbCBpbmplY3RlZCBidW5kbGUiKQorCithZGRfbGlicmFy
eShld2tJbmplY3RlZEJ1bmRsZSBTSEFSRUQgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZs
L1dlYkVmbEluamVjdGVkQnVuZGxlTWFpbi5jcHAiKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3
a0luamVjdGVkQnVuZGxlIFdlYktpdDIpCisKK2luc3RhbGwoVEFSR0VUUyBld2tJbmplY3RlZEJ1
bmRsZSBERVNUSU5BVElPTiAiJHtJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVJ9IikKIAogaWYg
KEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICBsaXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lO
Q0xVREVfRElSRUNUT1JJRVMKQEAgLTQ0MiwxNiArNDYxLDE4IEBAIHNldChFV0syVW5pdFRlc3Rz
X0xJQlJBUklFUwogCiBzZXQoV0VCS0lUMl9FRkxfVEVTVF9ESVIgIiR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzIikKIHNldChURVNUX1JFU09VUkNFU19ESVIgJHtXRUJLSVQy
X0VGTF9URVNUX0RJUn0vcmVzb3VyY2VzKQotc2V0KFRFU1RfSU5KRUNURURfQlVORExFX0RJUiAk
e1dFQktJVDJfRUZMX1RFU1RfRElSfS9JbmplY3RlZEJ1bmRsZSkKK3NldChURVNUX0lOSkVDVEVE
X0JVTkRMRV9ESVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vZXh0ZW5zaW9ucykKIHNldChXRUJL
SVQyX0VGTF9URVNUX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX1JVTlRJTUVfT1VU
UFVUX0RJUkVDVE9SWX0vVGVzdFdlYktpdEFQSS9FV2ViS2l0MikKIAogYWRkX2RlZmluaXRpb25z
KC1EVEVTVF9SRVNPVVJDRVNfRElSPVwiJHtURVNUX1JFU09VUkNFU19ESVJ9XCIKICAgICAtRFRF
U1RfTElCX0RJUj1cIiR7Q01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZfVwiCiAgICAgLURH
VEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQogICAgIC1ETElCRVhFQ0RJUj1cIiR7RVhF
Q19JTlNUQUxMX0RJUn1cIgorICAgIC1ESU5KRUNURURCVU5ETEVESVI9XCIke0NNQUtFX0lOU1RB
TExfUFJFRklYfS8ke0lOSkVDVEVEX0JVTkRMRV9JTlNUQUxMX0RJUn1cIgogICAgIC1EV0VCUFJP
Q0VTU05BTUU9XCJXZWJQcm9jZXNzXCIKICAgICAtRFBMVUdJTlBST0NFU1NOQU1FPVwiUGx1Z2lu
UHJvY2Vzc1wiCiAgICAgLURORVRXT1JLUFJPQ0VTU05BTUU9XCJOZXR3b3JrUHJvY2Vzc1wiCisg
ICAgLURJTkpFQ1RFREJVTkRMRU5BTUU9XCJsaWJld2tJbmplY3RlZEJ1bmRsZS5zb1wiCiApCiAK
IGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdFV0aWxzCkBAIC01MDMsOCArNTI0LDcgQEAgaWYgKEVO
QUJMRV9BUElfVEVTVFMpCiAgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3ROYW1l
fSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRlc3RVdGlscykKICAgICBlbmRm
b3JlYWNoICgpCiAKLSAgICBhZGRfbGlicmFyeShld2syVW5pdFRlc3RJbmplY3RlZEJ1bmRsZVNh
bXBsZSBTSEFSRUQgJHtURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVJ9L2luamVjdGVkX2J1bmRsZV9z
YW1wbGUuY3BwKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhld2syVW5pdFRlc3RJbmplY3Rl
ZEJ1bmRsZVNhbXBsZSBXZWJLaXQyKQorICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVj
dGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vZXh0ZW5z
aW9uX3NhbXBsZS5jcHApCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NQRUxMQ0hFQ0spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXgg
NDQ4YzZhNDJjMjQwNTNiNjhmYzNlNWU2MjcxY2M4NjJiYzNkOGUwYy4uYjA4ODBiZTdkZjNkZWZl
ZDhmZWY3MDc1MmViMWRiY2M0MGI3MGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW5s
aW5lIENvbnRleHRNYXAmIGNvbnRleHRNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLUV3a0Nv
bnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCitFd2tDb250ZXh0OjpFd2tD
b250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRo
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RhdGFiYXNlTWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPEV3a0RhdGFiYXNlTWFuYWdlcj4oV0tDb250ZXh0R2V0RGF0YWJhc2VNYW5h
Z2VyKGNvbnRleHQpKSkKICAgICAsIG1fc3RvcmFnZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxF
d2tTdG9yYWdlTWFuYWdlcj4oV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihjb250
ZXh0KSkpCkBAIC03NCw2ICs3NCw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0
UmVmIGNvbnRleHQpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9oaXN0b3J5Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+KGNvbnRleHQpKQog
ICAgICwgbV9qc0dsb2JhbENvbnRleHQobnVsbHB0cikKKyAgICAsIG1fZXh0ZW5zaW9uc1BhdGgo
ZXh0ZW5zaW9uc1BhdGgpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNv
bnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTk2LDYgKzk3LDE3IEBAIEV3a0NvbnRleHQ6OkV3a0Nv
bnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgbV9jYWxsYmFja0Zvck1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNlckRhdGEgPSBudWxscHRyOworCisgICAgV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAs
IHNpemVvZihjbGllbnQpKTsKKworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxOworICAgIGNs
aWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOworICAgIGNsaWVudC5kaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
OworICAgIGNsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlID0gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAg
ICBjbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gZ2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOworCisgICAgV0tDb250ZXh0U2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogfQogCiBF
d2tDb250ZXh0Ojp+RXdrQ29udGV4dCgpCkBAIC0xMjEsMTQgKzEzMywzNyBAQCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiB9CiAKLVBh
c3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5q
ZWN0ZWRCdW5kbGVQYXRoKQorc3RhdGljIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGgoKQorewor
ICAgIFN0cmluZyBidW5kbGVQYXRoOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBidW5kbGVEaXJl
Y3RvcnkgPSBnZXRlbnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIpOworCisgICAgaWYg
KGJ1bmRsZURpcmVjdG9yeSkgeworICAgICAgICBidW5kbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoYnVuZGxlRGlyZWN0b3J5KSwgSU5K
RUNURURCVU5ETEVOQU1FKTsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxl
UGF0aCkpCisgICAgICAgICAgICByZXR1cm4gYnVuZGxlUGF0aDsKKyAgICB9CisKKyAgICBidW5k
bGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVU
RjgoVEVTVF9MSUJfRElSKSwgSU5KRUNURURCVU5ETEVOQU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6
ZmlsZUV4aXN0cyhidW5kbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CisKKyAg
ICBidW5kbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6
ZnJvbVVURjgoSU5KRUNURURCVU5ETEVESVIpLCBJTkpFQ1RFREJVTkRMRU5BTUUpOworICAgIGlm
IChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGgpKQorICAgICAgICByZXR1cm4gYnVuZGxl
UGF0aDsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBFd2tDb250ZXh0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKIHsgICAK
LSAgICBpZiAoIWZpbGVFeGlzdHMoaW5qZWN0ZWRCdW5kbGVQYXRoKSkKKyAgICBTdHJpbmcgYnVu
ZGxlUGF0aCA9IGluamVjdGVkQnVuZGxlUGF0aCgpOworICAgIGlmIChidW5kbGVQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
cGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9wdFdLKHRvQ29waWVkQVBJKGJ1bmRsZVBh
dGgpKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29u
dGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgocGF0aC5nZXQoKSkpLmdldCgpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRl
V2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCksIGV4dGVuc2lvbnNQYXRo
KSk7CiB9CiAKIEV3a0NvbnRleHQqIEV3a0NvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkKQEAgLTM2
NSw2ICs0MDAsMTEgQEAgdm9pZCBFd2tDb250ZXh0OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0sKICAgICB0b0V3a0NvbnRleHQo
Y2xpZW50SW5mbyktPnByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVz
c2FnZU5hbWUsIG1lc3NhZ2VCb2R5LCByZXR1cm5EYXRhKTsKIH0KIAorV0tUeXBlUmVmIEV3a0Nv
bnRleHQ6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdL
VHlwZVJlZj4odG9Db3BpZWRBUEkodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT5leHRlbnNpb25z
UGF0aCgpKSk7Cit9CisKIHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVfQ2Ig
Y2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQogewogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLnVzZXJEYXRhID0gdXNlckRhdGE7CkBAIC0zNzIsMTkgKzQxMiw2IEBA
IHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKEV3
a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JCiAgICAgaWYgKG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID09IGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNr
KSB7Ci0gICAgICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OwotICAg
ICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotCi0gICAgICAgIGNsaWVu
dC5iYXNlLnZlcnNpb24gPSAxOwotICAgICAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhp
czsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0g
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0gICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAgICAgICBXS0NvbnRleHRT
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0g
ICAgfSBlbHNlIGlmICghY2FsbGJhY2spCi0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgbnVsbHB0cik7Ci0KICAgICBtX2NhbGxiYWNrRm9y
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IGNhbGxiYWNrOwogfQogCkBAIC00
MzQsNyArNDYxLDcgQEAgRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X25ldygpCiAgICAgcmV0dXJu
IEV3a0NvbnRleHQ6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKIH0KIAotRXdrX0NvbnRleHQqIGV3a19j
b250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIqIHBhdGgpCitF
d2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGNvbnN0IGNo
YXIqIHBhdGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBhdGgsIG51
bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaAppbmRleCBiYzdiMDU0YzdmZGZkODk1MGU3YjYzNjJiYjcyZjQ0ZGUzZjQxOTE2Li5lMTc2
NzBiOTE1Yzg5YmRjZjY1Y2MxYzA0N2I2ZWUzNDE1ZjFhYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBF
QVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCh2b2lkKTsKICAqIEByZXR1
cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCiAg
KgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCi0gKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRo
X2luamVjdGVkX2J1bmRsZV9wYXRoCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVu
c2lvbnNfcGF0aAogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXcodm9pZCk7
CiAKQEAgLTE3OCwxNCArMTc4LDE3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25l
dyh2b2lkKTsKICAqCiAgKiBUaGUgcmV0dXJuZWQgRXdrX0NvbnRleHQgb2JqZWN0IEBiIHNob3Vs
ZCBiZSB1bnJlZidlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIHBhdGggcGF0aCBvZiBpbmpl
Y3RlZCBidW5kbGUgbGlicmFyeQorICogQHBhcmFtIHBhdGggZGlyZWN0b3J5IHBhdGggb2YgZXh0
ZW5zaW9ucwogICoKICAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3Ig
QGMgTlVMTCBvbiBmYWlsdXJlCiAgKgorICogQG5vdGUgQWxsIHNoYXJlZCBvYmplY3RzIHdoaWNo
IGhhdmUgZXdrX2V4dGVuc2lvbl9pbml0KCkgaW4gdGhlIGdpdmVuIEBhIHBhdGggd2lsbCBiZSBs
b2FkZWQuCisgKgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCiAgKiBAc2VlIGV3a19jb250ZXh0
X25ldworICogQHNlZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24KICAqLwotRUFQ
SSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgo
Y29uc3QgY2hhciAqcGF0aCk7CitFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qKgogICogR2V0cyB0aGUg
YXBwbGljYXRpb24gY2FjaGUgbWFuYWdlciBpbnN0YW5jZSBmb3IgdGhpcyBAYSBjb250ZXh0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oCmluZGV4IDE3MjljNGExMmEyMjdmYzBhMzJkNGE5NzU2MTZiNjA1YTdmOWQ0NTku
LmE1MDk4MGQzNzM5ODdiOGQ4MmFjY2YwNWU0MDVlM2Y3YjExYWMyOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgK
QEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMo
RXdrX1RMU19FcnJvcl9Qb2xpY3kgVExTRXJyb3JQb2xpY3kpIGNvbnN0OwogCisgICAgU3RyaW5n
IGV4dGVuc2lvbnNQYXRoKCkgeyByZXR1cm4gbV9leHRlbnNpb25zUGF0aDsgfQorCiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1Z2luUGF0
aChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpAQCAtOTYsMTEgKzk4LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29u
dGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0
YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxs
YmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiLCB2b2lkKik7
CiAgICAgdm9pZCBwcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3Ry
aW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0
dXJuRGF0YSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRS
ZWYpOworICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZpY29uRGF0
YWJhc2UoKTsKIApAQCAtMTIxLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAKICAgICBKU0dsb2JhbENv
bnRleHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiAKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zUGF0
aDsKKwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9Jbmpl
Y3RlZF9CdW5kbGVfQ2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0ZWRCdW5k
bGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1YzczMzNlYzVkNGVk
MzhkYTljMDYyNDBhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRs
ZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJbml0aWFsaXpl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCi17
Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1w
bGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9u
cy9leHRlbnNpb25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODkxNjY2NDk1ZTBlMzg2ZTZkMzQ4
OWUyMDc5NTFjNWQ1MDc3MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiRVdlYktpdF9FeHRlbnNpb24uaCIKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit2b2lkIGV3a19leHRlbnNp
b25faW5pdChFd2tfRXh0ZW5zaW9uICopCit7Cit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXggM2YxNDcwYTA5ZGFjODE1NDdjNmE1
ZjYxODhiM2MxODY4MzZlZTE2MS4uOGEzNjI5NjVlMjFlZGI1ZDUxOGQ0NTcwMTdkMjM5MWJlN2U0
ZTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAtMjMwLDkgKzIzMCw5IEBAIFRFU1Rf
RihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X25ldykKICAgICBld2tfb2JqZWN0X3VucmVm
KGNvbnRleHQpOwogfQogCi1URVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXdf
d2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCkKK1RFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19j
b250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCkKIHsKLSAgICBFd2tfQ29udGV4dCogY29u
dGV4dCA9IGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGVudmlyb25t
ZW50LT5pbmplY3RlZEJ1bmRsZVNhbXBsZSgpKTsKKyAgICBFd2tfQ29udGV4dCogY29udGV4dCA9
IGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChlbnZpcm9ubWVudC0+aW5qZWN0
ZWRCdW5kbGVTYW1wbGUoKSk7CiAgICAgQVNTRVJUX1RSVUUoY29udGV4dCk7CiAgICAgZXdrX29i
amVjdF91bnJlZihjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5z
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFmMzcwODhhYzUwZTc4OWM3YzlkYWM5OTZkOTExNGU0ODM2ODY3
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioK
KyAqIEBmaWxlICAgIEVXZWJLaXRfRXh0ZW5zaW9uLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRo
ZSBoZWFkZXIgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgZXdlYmtpdDItZXh0ZW5zaW9uLgor
ICoKKyAqIEVXZWJLaXRfRXh0ZW5zaW9uIGlzIHRoZSB3YXkgdG8gZXh0ZW5kIFdlYlByb2Nlc3Mg
b2YgZXdlYmtpdDIuCisgKgorICogSW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBleHRlbnNpb24sIAor
ICogRmlyc3QsIGV3a19leHRlbnNpb25faW5pdCBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBz
aGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6CisgKgorICogQGNvZGUKKyAqICNpbmNsdWRlICJFV2Vi
S2l0X0V4dGVuc2lvbi5oIgorICogCisgKiB2b2lkIGV3a19leHRlbnNpb25faW5pdChFd2tfRXh0
ZW5zaW9uICpleHRlbnNpb24pCisgKiB7CisgKiAgICAvLyBwcm92aWRlIEV3a19FeHRlbnNpb25f
Q2xpZW50IGNhbGxiYWNrcyBhcyBjbGllbnQuCisgKiAgICBld2tfZXh0ZW5zaW9uX2NsaWVudF9z
ZXQoZXh0ZW5zaW9uLCAmY2xpZW50KTsKKyAqIH0KKyAqIEBlbmRjb2RlCisgKgorICogQW5kIGNv
bXBpbGVzIEMgb3IgQysrIGZpbGVzIGFzIHNoYXJlZCBvYmplY3QgbGlrZSBiZWxvdzoKKyAqCisg
KiBAdmVyYmF0aW0KKyAqIGdjYyAtbyBsaWJzYW1wbGUuc28gc2FtcGxlLmMgLXNoYXJlZCAtZlBJ
QyBgcGtnLWNvbmZpZyAtLWNmbGFncyAtLWxpYnMgZWluYSBld2Via2l0Mi1leHRlbnNpb25gCisg
KiBAZW5kdmVyYmF0aW0KKyAqIAorICogVGhlbiwgaW5zdGFsbCB0aGF0IG9iamVjdCBpbnRvIHRo
ZSBwYXRoIHdoaWNoIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCgpIHNwZWNp
Zmllcy4KKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aAor
ICogQHNlZSBld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQKKyAqIEBzZWUgRXdrX0V4dGVuc2lvbl9J
bml0aWFsaXplX0Z1bmN0aW9uCisgKi8KKworI2lmbmRlZiBFV2ViS2l0X0V4dGVuc2lvbl9oCisj
ZGVmaW5lIEVXZWJLaXRfRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIK
KworI2VuZGlmIC8vIEVXZWJLaXRfRXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTVmYmI1YWZiMGEyNmQwNDg0YzViM2UwMWVmMjNjMjlk
MWNmMTA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorCisjaW5jbHVk
ZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K0V3a0V4dGVuc2lvbjo6RXdrRXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCit7Cit9
CisKK0V3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbigpCit7Cit9CisKK3ZvaWQgZXdrX2V4dGVu
c2lvbl9jbGllbnRfc2V0KEV3a19FeHRlbnNpb24qIGV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9D
bGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihleHRlbnNp
b24pOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBleHRl
bnNpb24tPnNldENsaWVudChjbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGJmNmQzYjk2MmZlZmYyNTg4M2I0ZGNjYzljYzc0ZTIxNGI3ZGJmMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZp
bGUgICAgZXdrX2V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19FeHRl
bnNpb24gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9oCisjZGVmaW5lIGV3a19l
eHRlbnNpb25faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IEV3a1BhZ2UgRXdrX1BhZ2U7CisK
Ky8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5zaW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBFd2tF
eHRlbnNpb24gRXdrX0V4dGVuc2lvbjsKKworLyoqCisgKiBEZWNsYXJlIEV3a19FeHRlbnNpb25f
SW5pdGlhbGl6ZV9GdW5jdGlvbi4KKyAqCisgKiBAYnJpZWYgIFR5cGUgZGVmaW5pdGlvbiBmb3Ig
dGhlIGVudHJ5IG9mIHRoZSBleHRlbnNpb24uCisgKgorICovCit0eXBlZGVmIHZvaWQgKigqRXdr
X0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uKShFd2tfRXh0ZW5zaW9uICpidW5kbGUsIHZv
aWQgKnJlc2VydmVkKTsKKworc3RydWN0IEV3a0V4dGVuc2lvbkNsaWVudCB7CisgICAgaW50IHZl
cnNpb247CisgICAgdm9pZCAqZGF0YTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tFeHRlbnNpb25D
bGllbnQgRXdrX0V4dGVuc2lvbl9DbGllbnQ7CisKK0VBUEkgdm9pZCBld2tfZXh0ZW5zaW9uX2Ns
aWVudF9zZXQoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAq
Y2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3
a19leHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlkNzI2ODIxNTg4N2MzZDdlOGU5MGQ0NjhiODM4ZjA5OGFhZmQ0NDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2V4dGVuc2lvbl9wcml2
YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBJbmplY3RlZEJ1bmRsZTsKK30KKworY2xhc3MgRXdrRXh0ZW5zaW9uIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSopOworICAg
IH5Fd2tFeHRlbnNpb24oKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KEV3a19FeHRlbnNpb25fQ2xp
ZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKworcHJpdmF0ZToKKyAgICBFd2tf
RXh0ZW5zaW9uX0NsaWVudCogbV9jbGllbnQ7Cit9OworCisjZW5kaWYgLy8gZXdrX2V4dGVuc2lv
bl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4
dGVuc2lvbk1hbmFnZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0
ZW5zaW9uTWFuYWdlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhNjQwZWM3OTJmZTAyOTc3ZWQxMjMz
YzQxNDllMTc5YmFmNDRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVmbC5oIgorCisjaW5j
bHVkZSAiTW9kdWxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
ZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V4dGVuc2lvbk1hbmFnZXJFZmwmIEV4dGVuc2lv
bk1hbmFnZXJFZmw6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV4dGVu
c2lvbk1hbmFnZXJFZmw+IGV4dGVuc2lvbk1hbmFnZXI7CisgICAgcmV0dXJuIGV4dGVuc2lvbk1h
bmFnZXI7Cit9CisKK0V4dGVuc2lvbk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwoKQor
eworfQorCit2b2lkIEV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgbV9leHRlbnNpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPEV3a0V4dGVuc2lvbj4odG9JbXBsKGJ1bmRsZSkpOworCisgICAgU3RyaW5nIGV4
dGVuc2lvbnNEaXJlY3RvcnkgPSB0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KHVzZXJE
YXRhKSktPnN0cmluZygpOworICAgIEFTU0VSVCghZXh0ZW5zaW9uc0RpcmVjdG9yeS5pc0VtcHR5
KCkpOworCisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpsaXN0RGly
ZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKSB7CisgICAgICAgICAgICBhdXRv
IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAg
ICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24gaW5pdGlhbGl6
ZUZ1bmN0aW9uID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8RXdrX0V4dGVuc2lvbl9Jbml0aWFs
aXplX0Z1bmN0aW9uPigiZXdrX2V4dGVuc2lvbl9pbml0Iik7CisgICAgICAgICAgICBpZiAoIWlu
aXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5nZXQoKSwgbnVsbHB0ciAvKiByZXNlcnZl
ZCBmb3IgdGhlIGZ1dHVyZSAqLyk7CisgICAgICAgICAgICBtX2V4dGVuc2lvbk1vZHVsZXMuYXBw
ZW5kKG1vZHVsZS5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQorfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjI0N2QyNGVlMTMzMzRkZmY2YmFjZGE3ODUwNjc4OWUzMjE5NDkxNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFn
ZXJFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeHRlbnNpb25NYW5hZ2VyRWZsX2gK
KyNkZWZpbmUgRXh0ZW5zaW9uTWFuYWdlckVmbF9oCisKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xhc3MgRXdrRXh0ZW5zaW9uOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9kdWxlOworCitjbGFzcyBFeHRlbnNpb25NYW5h
Z2VyRWZsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeHRlbnNpb25NYW5hZ2VyRWZsKTsK
KworcHVibGljOgorICAgIFdLX0VYUE9SVCBzdGF0aWMgRXh0ZW5zaW9uTWFuYWdlckVmbCYgc2hh
cmVkKCk7CisgICAgV0tfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBl
UmVmKTsKK3ByaXZhdGU6CisgICAgRXh0ZW5zaW9uTWFuYWdlckVmbCgpOworCisgICAgVmVjdG9y
PFdlYktpdDo6TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1bGVzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxFd2tFeHRlbnNpb24+IG1fZXh0ZW5zaW9uOworCisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVz
dHJveWVkPEV4dGVuc2lvbk1hbmFnZXJFZmw+OworfTsKKworfQorCisjZW5kaWYgLy8gRXh0ZW5z
aW9uTWFuYWdlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWFmOGMwM2Qy
MmM1NzdhZDA1Nzk5YmQzMDFjZmFlZGJiZDRiYmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9u
TWFuYWdlckVmbC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUluaXRpYWxpemUuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZXh0ZXJuICJDIiB2b2lkIFdLQnVuZGxlSW5pdGlh
bGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAgICBFeHRl
bnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKS5pbml0aWFsaXplKGJ1bmRsZSwgdXNlckRhdGEpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5p
biBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjYxNmNkYzJmOTM5NWViZTcyOTZkMDU0OGZlYzgwMWZjNTFlODNjNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KQEAgLTAs
MCArMSw4IEBACitwcmVmaXg9QENNQUtFX0lOU1RBTExfUFJFRklYQAoraW5jbHVkZWRpcj0ke3By
ZWZpeH0vaW5jbHVkZQorCitOYW1lOiBld2Via2l0Mi1leHRlbnNpb24KK0Rlc2NyaXB0aW9uOiBF
eHRlbnNpb24gZm9yIFdlYktpdDIvRUZMKGV3ZWJraXQyKQorVmVyc2lvbjogQFBST0pFQ1RfVkVS
U0lPTkAKK1JlcXVpcmVzOiBlaW5hCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9AV2ViS2l0Ml9P
VVRQVVRfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpPUkAvZXh0ZW5zaW9uCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmMxZmFiYmY2NTdhZGJk
OTFkNjc5YWIwMzVlODE1YjNmYWQ0NjAyOS4uNGZjMjA0ZmUxMmFmZmMyNDY4ODE4NWU2NjE3ZDRm
NGZkZTBlMWVmNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA3LTIwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1Y2UgRVdlYktpdF9FeHRlbnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDky
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdDoKKyAgICAgICAgQWRkZWQgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyBpbnRvIEVGTFdl
YktpdDJQdWJsaWNBUEkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvIGludG8gRUZMIGV4Y2VwdGlvbnMuCisKIDIwMTQtMDctMjAgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXN0IGZvciA8cmRhcjovL3Byb2Js
ZW1zLzE3NzQyNjExPiAtW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGltYWdlXSBpcyBvZnRlbiBl
bXB0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dh
dGNobGlzdCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QK
aW5kZXggNTQ5M2M1OTRhYTM4Y2RjZTFlOTMyZjI3NmYyODM0ZTUxNWJhOGUxYi4uMzQzYzNiODUx
M2RmNTk1YmM4MDc2MGQ1NTJiMjUwYmVlZmRmMjc2MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdAorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0CkBAIC0xMDcsNyArMTA3LDggQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgIHIifExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC8iLAogICAgICAg
ICB9LAogICAgICAgICAiRUZMV2ViS2l0MlB1YmxpY0FQSSI6IHsKLSAgICAgICAgICAgICJmaWxl
bmFtZSI6IHIiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvIgorICAgICAgICAgICAg
ImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvIgorICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvIgogICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC8iLAogICAgICAgICB9LAogICAgICAgICAiRUZMV2ViS2l0MlBs
YXRmb3JtU3BlY2lmaWMiOiB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkK
aW5kZXggNzNmMzk5NWM2ZGQwNzJjODEyMGFjNjk2MTgxNzY4ZjU1OWYxZmU1My4uOWUyMGFjMzdk
ODIyZWMyZDM4YWVmZmQ2NWE1MmJhNTE1NzQwM2EzOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weQpAQCAtMTg5LDYgKzE4OSw3IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklF
UiA9IFsKICAgICAoWyMgVGhlIEVGTCBBUElzIHVzZSBFRkwgbmFtaW5nIHN0eWxlLCB3aGljaCBp
bmNsdWRlcwogICAgICAgIyBib3RoIGxvd2VyLWNhc2VkIGFuZCBjYW1lbC1jYXNlZCwgdW5kZXJz
Y29yZS1zcGFyYXRlZAogICAgICAgIyB2YWx1ZXMuCisgICAgICAiU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyIsCiAgICAgICAiU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyIsCiAgICAg
ICAiLXJlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lIl0pLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235217</attachid>
            <date>2014-07-21 06:53:06 -0700</date>
            <delta_ts>2014-08-15 00:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140721225249.patch</filename>
            <type>text/plain</type>
            <size>43090</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTg4MmNhMWE2NWE4Y2Vl
MzAxOWQyY2VjNWU4NzhlYTE1Yzk0YTUwNy4uMzI3MTM5ZjcyN2ViMzQ0ZTg3MGRhMjM0ODQ0Nzhh
ODI3NDliNDFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA3LTIwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBld2tfY29u
dGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisg
ICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qg
d2l0aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90
IGV4cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNp
b24sIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUg
RVdlYktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpF
d2tDb250ZXh0KToKKyAgICAgICAgKGluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChFd2tD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIgZG9lcyBu
b3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5zdGVhZCwg
RXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OmV4
dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHA6IFJlbmFtZWQgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgg
dG8gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6
RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbik6Cisg
ICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpF
eHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZsKToKKyAgICAgICAgKFdlYktp
dDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQnVu
ZGxlSW5pdGlhbGl6ZSk6CisgICAgICAgICogZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbjog
QWRkZWQuCisKIDIwMTQtMDctMjAgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2FibGUgZmYvcncgYmFzZWQgb24gY2FuUGxheUZhc3RGb3J3YXJkIGFuZCBj
YW5QbGF5RmFzdFJld2luZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYzgyNzM4NGIw
ZGM2ZjI4MDFkMTVjZGE5ZTQ4YjQ5NDg3NzBjYTM2Ni4uZDhiZDIwNTYxOGIzOGIwZWM0MzdmODBi
Y2ZlNmUzMTRmMGI1ZWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3Myw2ICsx
NzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTE5NSw2ICsxOTcs
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKIApAQCAtMjQzLDYgKzI0Niw3IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3Vw
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC0zNTUsNiArMzU5LDcgQEAgc2V0
KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiApCiAKIGNvbmZpZ3VyZV9maWxlKGVmbC9ld2Vi
a2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBP
TkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBAT05MWSkKIGNv
bmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9E
SVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlIEBPTkxZKQogY29uZmlndXJlX2Zp
bGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZSBAT05MWSkKIApAQCAtMzk1
LDEzICs0MDAsMjcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193aW5kb3dfZmVhdHVyZXMuaCIKICkK
IAorc2V0KEVXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRl
bnNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgiCispCisKK2luc3RhbGwoRklMRVMg
JHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQy
X0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9L2V4dGVuc2lvbikKKwogaW5zdGFsbChGSUxF
UyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9O
IGxpYi9wa2djb25maWcpCitpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBp
bnN0YWxsKEZJTEVTCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdl
YktpdDJDb25maWcuY21ha2UKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2Vm
bC9FV2ViS2l0MkNvbmZpZ1ZlcnNpb24uY21ha2UKICAgICAgICAgREVTVElOQVRJT04gbGliL2Nt
YWtlL0VXZWJLaXQyKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElO
QVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01B
Sk9SfSkKK3NldChJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RBTExfRElS
fS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS8iIENBQ0hF
IFBBVEggIldoZXRoZXIgdG8gaW5zdGFsbCBpbmplY3RlZCBidW5kbGUiKQorCithZGRfbGlicmFy
eShld2tJbmplY3RlZEJ1bmRsZSBTSEFSRUQgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZs
L1dlYkVmbEluamVjdGVkQnVuZGxlTWFpbi5jcHAiKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3
a0luamVjdGVkQnVuZGxlIFdlYktpdDIpCisKK2luc3RhbGwoVEFSR0VUUyBld2tJbmplY3RlZEJ1
bmRsZSBERVNUSU5BVElPTiAiJHtJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVJ9IikKIAogaWYg
KEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICBsaXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lO
Q0xVREVfRElSRUNUT1JJRVMKQEAgLTQ0MiwxNiArNDYxLDE4IEBAIHNldChFV0syVW5pdFRlc3Rz
X0xJQlJBUklFUwogCiBzZXQoV0VCS0lUMl9FRkxfVEVTVF9ESVIgIiR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzIikKIHNldChURVNUX1JFU09VUkNFU19ESVIgJHtXRUJLSVQy
X0VGTF9URVNUX0RJUn0vcmVzb3VyY2VzKQotc2V0KFRFU1RfSU5KRUNURURfQlVORExFX0RJUiAk
e1dFQktJVDJfRUZMX1RFU1RfRElSfS9JbmplY3RlZEJ1bmRsZSkKK3NldChURVNUX0lOSkVDVEVE
X0JVTkRMRV9ESVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vZXh0ZW5zaW9ucykKIHNldChXRUJL
SVQyX0VGTF9URVNUX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX1JVTlRJTUVfT1VU
UFVUX0RJUkVDVE9SWX0vVGVzdFdlYktpdEFQSS9FV2ViS2l0MikKIAogYWRkX2RlZmluaXRpb25z
KC1EVEVTVF9SRVNPVVJDRVNfRElSPVwiJHtURVNUX1JFU09VUkNFU19ESVJ9XCIKICAgICAtRFRF
U1RfTElCX0RJUj1cIiR7Q01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZfVwiCiAgICAgLURH
VEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQogICAgIC1ETElCRVhFQ0RJUj1cIiR7RVhF
Q19JTlNUQUxMX0RJUn1cIgorICAgIC1ESU5KRUNURURCVU5ETEVESVI9XCIke0NNQUtFX0lOU1RB
TExfUFJFRklYfS8ke0lOSkVDVEVEX0JVTkRMRV9JTlNUQUxMX0RJUn1cIgogICAgIC1EV0VCUFJP
Q0VTU05BTUU9XCJXZWJQcm9jZXNzXCIKICAgICAtRFBMVUdJTlBST0NFU1NOQU1FPVwiUGx1Z2lu
UHJvY2Vzc1wiCiAgICAgLURORVRXT1JLUFJPQ0VTU05BTUU9XCJOZXR3b3JrUHJvY2Vzc1wiCisg
ICAgLURJTkpFQ1RFREJVTkRMRU5BTUU9XCJsaWJld2tJbmplY3RlZEJ1bmRsZS5zb1wiCiApCiAK
IGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdFV0aWxzCkBAIC01MDMsOCArNTI0LDcgQEAgaWYgKEVO
QUJMRV9BUElfVEVTVFMpCiAgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3ROYW1l
fSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRlc3RVdGlscykKICAgICBlbmRm
b3JlYWNoICgpCiAKLSAgICBhZGRfbGlicmFyeShld2syVW5pdFRlc3RJbmplY3RlZEJ1bmRsZVNh
bXBsZSBTSEFSRUQgJHtURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVJ9L2luamVjdGVkX2J1bmRsZV9z
YW1wbGUuY3BwKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhld2syVW5pdFRlc3RJbmplY3Rl
ZEJ1bmRsZVNhbXBsZSBXZWJLaXQyKQorICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVj
dGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vZXh0ZW5z
aW9uX3NhbXBsZS5jcHApCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NQRUxMQ0hFQ0spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXgg
NDQ4YzZhNDJjMjQwNTNiNjhmYzNlNWU2MjcxY2M4NjJiYzNkOGUwYy4uYjA4ODBiZTdkZjNkZWZl
ZDhmZWY3MDc1MmViMWRiY2M0MGI3MGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW5s
aW5lIENvbnRleHRNYXAmIGNvbnRleHRNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLUV3a0Nv
bnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCitFd2tDb250ZXh0OjpFd2tD
b250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRo
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RhdGFiYXNlTWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPEV3a0RhdGFiYXNlTWFuYWdlcj4oV0tDb250ZXh0R2V0RGF0YWJhc2VNYW5h
Z2VyKGNvbnRleHQpKSkKICAgICAsIG1fc3RvcmFnZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxF
d2tTdG9yYWdlTWFuYWdlcj4oV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihjb250
ZXh0KSkpCkBAIC03NCw2ICs3NCw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0
UmVmIGNvbnRleHQpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9oaXN0b3J5Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+KGNvbnRleHQpKQog
ICAgICwgbV9qc0dsb2JhbENvbnRleHQobnVsbHB0cikKKyAgICAsIG1fZXh0ZW5zaW9uc1BhdGgo
ZXh0ZW5zaW9uc1BhdGgpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNv
bnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTk2LDYgKzk3LDE3IEBAIEV3a0NvbnRleHQ6OkV3a0Nv
bnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgbV9jYWxsYmFja0Zvck1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNlckRhdGEgPSBudWxscHRyOworCisgICAgV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAs
IHNpemVvZihjbGllbnQpKTsKKworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxOworICAgIGNs
aWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOworICAgIGNsaWVudC5kaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
OworICAgIGNsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlID0gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAg
ICBjbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gZ2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOworCisgICAgV0tDb250ZXh0U2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogfQogCiBF
d2tDb250ZXh0Ojp+RXdrQ29udGV4dCgpCkBAIC0xMjEsMTQgKzEzMywzNyBAQCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiB9CiAKLVBh
c3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5q
ZWN0ZWRCdW5kbGVQYXRoKQorc3RhdGljIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGgoKQorewor
ICAgIFN0cmluZyBidW5kbGVQYXRoOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBidW5kbGVEaXJl
Y3RvcnkgPSBnZXRlbnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIpOworCisgICAgaWYg
KGJ1bmRsZURpcmVjdG9yeSkgeworICAgICAgICBidW5kbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoYnVuZGxlRGlyZWN0b3J5KSwgSU5K
RUNURURCVU5ETEVOQU1FKTsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxl
UGF0aCkpCisgICAgICAgICAgICByZXR1cm4gYnVuZGxlUGF0aDsKKyAgICB9CisKKyAgICBidW5k
bGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVU
RjgoVEVTVF9MSUJfRElSKSwgSU5KRUNURURCVU5ETEVOQU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6
ZmlsZUV4aXN0cyhidW5kbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CisKKyAg
ICBidW5kbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6
ZnJvbVVURjgoSU5KRUNURURCVU5ETEVESVIpLCBJTkpFQ1RFREJVTkRMRU5BTUUpOworICAgIGlm
IChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGgpKQorICAgICAgICByZXR1cm4gYnVuZGxl
UGF0aDsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBFd2tDb250ZXh0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKIHsgICAK
LSAgICBpZiAoIWZpbGVFeGlzdHMoaW5qZWN0ZWRCdW5kbGVQYXRoKSkKKyAgICBTdHJpbmcgYnVu
ZGxlUGF0aCA9IGluamVjdGVkQnVuZGxlUGF0aCgpOworICAgIGlmIChidW5kbGVQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
cGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9wdFdLKHRvQ29waWVkQVBJKGJ1bmRsZVBh
dGgpKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29u
dGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgocGF0aC5nZXQoKSkpLmdldCgpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRl
V2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCksIGV4dGVuc2lvbnNQYXRo
KSk7CiB9CiAKIEV3a0NvbnRleHQqIEV3a0NvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkKQEAgLTM2
NSw2ICs0MDAsMTEgQEAgdm9pZCBFd2tDb250ZXh0OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0sKICAgICB0b0V3a0NvbnRleHQo
Y2xpZW50SW5mbyktPnByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVz
c2FnZU5hbWUsIG1lc3NhZ2VCb2R5LCByZXR1cm5EYXRhKTsKIH0KIAorV0tUeXBlUmVmIEV3a0Nv
bnRleHQ6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdL
VHlwZVJlZj4odG9Db3BpZWRBUEkodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT5leHRlbnNpb25z
UGF0aCgpKSk7Cit9CisKIHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVfQ2Ig
Y2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQogewogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLnVzZXJEYXRhID0gdXNlckRhdGE7CkBAIC0zNzIsMTkgKzQxMiw2IEBA
IHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKEV3
a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JCiAgICAgaWYgKG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID09IGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNr
KSB7Ci0gICAgICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OwotICAg
ICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotCi0gICAgICAgIGNsaWVu
dC5iYXNlLnZlcnNpb24gPSAxOwotICAgICAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhp
czsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0g
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0gICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAgICAgICBXS0NvbnRleHRT
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0g
ICAgfSBlbHNlIGlmICghY2FsbGJhY2spCi0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgbnVsbHB0cik7Ci0KICAgICBtX2NhbGxiYWNrRm9y
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IGNhbGxiYWNrOwogfQogCkBAIC00
MzQsNyArNDYxLDcgQEAgRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X25ldygpCiAgICAgcmV0dXJu
IEV3a0NvbnRleHQ6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKIH0KIAotRXdrX0NvbnRleHQqIGV3a19j
b250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIqIHBhdGgpCitF
d2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGNvbnN0IGNo
YXIqIHBhdGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBhdGgsIG51
bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaAppbmRleCBiYzdiMDU0YzdmZGZkODk1MGU3YjYzNjJiYjcyZjQ0ZGUzZjQxOTE2Li5lMTc2
NzBiOTE1Yzg5YmRjZjY1Y2MxYzA0N2I2ZWUzNDE1ZjFhYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBF
QVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCh2b2lkKTsKICAqIEByZXR1
cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCiAg
KgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCi0gKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRo
X2luamVjdGVkX2J1bmRsZV9wYXRoCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVu
c2lvbnNfcGF0aAogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXcodm9pZCk7
CiAKQEAgLTE3OCwxNCArMTc4LDE3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25l
dyh2b2lkKTsKICAqCiAgKiBUaGUgcmV0dXJuZWQgRXdrX0NvbnRleHQgb2JqZWN0IEBiIHNob3Vs
ZCBiZSB1bnJlZidlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIHBhdGggcGF0aCBvZiBpbmpl
Y3RlZCBidW5kbGUgbGlicmFyeQorICogQHBhcmFtIHBhdGggZGlyZWN0b3J5IHBhdGggb2YgZXh0
ZW5zaW9ucwogICoKICAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3Ig
QGMgTlVMTCBvbiBmYWlsdXJlCiAgKgorICogQG5vdGUgQWxsIHNoYXJlZCBvYmplY3RzIHdoaWNo
IGhhdmUgZXdrX2V4dGVuc2lvbl9pbml0KCkgaW4gdGhlIGdpdmVuIEBhIHBhdGggd2lsbCBiZSBs
b2FkZWQuCisgKgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCiAgKiBAc2VlIGV3a19jb250ZXh0
X25ldworICogQHNlZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24KICAqLwotRUFQ
SSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgo
Y29uc3QgY2hhciAqcGF0aCk7CitFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qKgogICogR2V0cyB0aGUg
YXBwbGljYXRpb24gY2FjaGUgbWFuYWdlciBpbnN0YW5jZSBmb3IgdGhpcyBAYSBjb250ZXh0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oCmluZGV4IDE3MjljNGExMmEyMjdmYzBhMzJkNGE5NzU2MTZiNjA1YTdmOWQ0NTku
LmE1MDk4MGQzNzM5ODdiOGQ4MmFjY2YwNWU0MDVlM2Y3YjExYWMyOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgK
QEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMo
RXdrX1RMU19FcnJvcl9Qb2xpY3kgVExTRXJyb3JQb2xpY3kpIGNvbnN0OwogCisgICAgU3RyaW5n
IGV4dGVuc2lvbnNQYXRoKCkgeyByZXR1cm4gbV9leHRlbnNpb25zUGF0aDsgfQorCiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1Z2luUGF0
aChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpAQCAtOTYsMTEgKzk4LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29u
dGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0
YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxs
YmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiLCB2b2lkKik7
CiAgICAgdm9pZCBwcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3Ry
aW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0
dXJuRGF0YSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRS
ZWYpOworICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZpY29uRGF0
YWJhc2UoKTsKIApAQCAtMTIxLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAKICAgICBKU0dsb2JhbENv
bnRleHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiAKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zUGF0
aDsKKwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9Jbmpl
Y3RlZF9CdW5kbGVfQ2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0ZWRCdW5k
bGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1YzczMzNlYzVkNGVk
MzhkYTljMDYyNDBhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRs
ZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJbml0aWFsaXpl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCi17
Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1w
bGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9u
cy9leHRlbnNpb25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODkxNjY2NDk1ZTBlMzg2ZTZkMzQ4
OWUyMDc5NTFjNWQ1MDc3MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiRVdlYktpdF9FeHRlbnNpb24uaCIKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit2b2lkIGV3a19leHRlbnNp
b25faW5pdChFd2tfRXh0ZW5zaW9uICopCit7Cit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXggM2YxNDcwYTA5ZGFjODE1NDdjNmE1
ZjYxODhiM2MxODY4MzZlZTE2MS4uOGEzNjI5NjVlMjFlZGI1ZDUxOGQ0NTcwMTdkMjM5MWJlN2U0
ZTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAtMjMwLDkgKzIzMCw5IEBAIFRFU1Rf
RihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X25ldykKICAgICBld2tfb2JqZWN0X3VucmVm
KGNvbnRleHQpOwogfQogCi1URVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXdf
d2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCkKK1RFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19j
b250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCkKIHsKLSAgICBFd2tfQ29udGV4dCogY29u
dGV4dCA9IGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGVudmlyb25t
ZW50LT5pbmplY3RlZEJ1bmRsZVNhbXBsZSgpKTsKKyAgICBFd2tfQ29udGV4dCogY29udGV4dCA9
IGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChlbnZpcm9ubWVudC0+aW5qZWN0
ZWRCdW5kbGVTYW1wbGUoKSk7CiAgICAgQVNTRVJUX1RSVUUoY29udGV4dCk7CiAgICAgZXdrX29i
amVjdF91bnJlZihjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5z
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzFmMzcwODhhYzUwZTc4OWM3YzlkYWM5OTZkOTExNGU0ODM2ODY3
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioK
KyAqIEBmaWxlICAgIEVXZWJLaXRfRXh0ZW5zaW9uLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRo
ZSBoZWFkZXIgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgZXdlYmtpdDItZXh0ZW5zaW9uLgor
ICoKKyAqIEVXZWJLaXRfRXh0ZW5zaW9uIGlzIHRoZSB3YXkgdG8gZXh0ZW5kIFdlYlByb2Nlc3Mg
b2YgZXdlYmtpdDIuCisgKgorICogSW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBleHRlbnNpb24sIAor
ICogRmlyc3QsIGV3a19leHRlbnNpb25faW5pdCBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBz
aGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6CisgKgorICogQGNvZGUKKyAqICNpbmNsdWRlICJFV2Vi
S2l0X0V4dGVuc2lvbi5oIgorICogCisgKiB2b2lkIGV3a19leHRlbnNpb25faW5pdChFd2tfRXh0
ZW5zaW9uICpleHRlbnNpb24pCisgKiB7CisgKiAgICAvLyBwcm92aWRlIEV3a19FeHRlbnNpb25f
Q2xpZW50IGNhbGxiYWNrcyBhcyBjbGllbnQuCisgKiAgICBld2tfZXh0ZW5zaW9uX2NsaWVudF9z
ZXQoZXh0ZW5zaW9uLCAmY2xpZW50KTsKKyAqIH0KKyAqIEBlbmRjb2RlCisgKgorICogQW5kIGNv
bXBpbGVzIEMgb3IgQysrIGZpbGVzIGFzIHNoYXJlZCBvYmplY3QgbGlrZSBiZWxvdzoKKyAqCisg
KiBAdmVyYmF0aW0KKyAqIGdjYyAtbyBsaWJzYW1wbGUuc28gc2FtcGxlLmMgLXNoYXJlZCAtZlBJ
QyBgcGtnLWNvbmZpZyAtLWNmbGFncyAtLWxpYnMgZWluYSBld2Via2l0Mi1leHRlbnNpb25gCisg
KiBAZW5kdmVyYmF0aW0KKyAqIAorICogVGhlbiwgaW5zdGFsbCB0aGF0IG9iamVjdCBpbnRvIHRo
ZSBwYXRoIHdoaWNoIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCgpIHNwZWNp
Zmllcy4KKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aAor
ICogQHNlZSBld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQKKyAqIEBzZWUgRXdrX0V4dGVuc2lvbl9J
bml0aWFsaXplX0Z1bmN0aW9uCisgKi8KKworI2lmbmRlZiBFV2ViS2l0X0V4dGVuc2lvbl9oCisj
ZGVmaW5lIEVXZWJLaXRfRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIK
KworI2VuZGlmIC8vIEVXZWJLaXRfRXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTVmYmI1YWZiMGEyNmQwNDg0YzViM2UwMWVmMjNjMjlk
MWNmMTA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorCisjaW5jbHVk
ZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K0V3a0V4dGVuc2lvbjo6RXdrRXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCit7Cit9
CisKK0V3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbigpCit7Cit9CisKK3ZvaWQgZXdrX2V4dGVu
c2lvbl9jbGllbnRfc2V0KEV3a19FeHRlbnNpb24qIGV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9D
bGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihleHRlbnNp
b24pOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBleHRl
bnNpb24tPnNldENsaWVudChjbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGJmNmQzYjk2MmZlZmYyNTg4M2I0ZGNjYzljYzc0ZTIxNGI3ZGJmMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZp
bGUgICAgZXdrX2V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19FeHRl
bnNpb24gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9oCisjZGVmaW5lIGV3a19l
eHRlbnNpb25faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IEV3a1BhZ2UgRXdrX1BhZ2U7CisK
Ky8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5zaW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBFd2tF
eHRlbnNpb24gRXdrX0V4dGVuc2lvbjsKKworLyoqCisgKiBEZWNsYXJlIEV3a19FeHRlbnNpb25f
SW5pdGlhbGl6ZV9GdW5jdGlvbi4KKyAqCisgKiBAYnJpZWYgIFR5cGUgZGVmaW5pdGlvbiBmb3Ig
dGhlIGVudHJ5IG9mIHRoZSBleHRlbnNpb24uCisgKgorICovCit0eXBlZGVmIHZvaWQgKigqRXdr
X0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uKShFd2tfRXh0ZW5zaW9uICpidW5kbGUsIHZv
aWQgKnJlc2VydmVkKTsKKworc3RydWN0IEV3a0V4dGVuc2lvbkNsaWVudCB7CisgICAgaW50IHZl
cnNpb247CisgICAgdm9pZCAqZGF0YTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tFeHRlbnNpb25D
bGllbnQgRXdrX0V4dGVuc2lvbl9DbGllbnQ7CisKK0VBUEkgdm9pZCBld2tfZXh0ZW5zaW9uX2Ns
aWVudF9zZXQoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAq
Y2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3
a19leHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlkNzI2ODIxNTg4N2MzZDdlOGU5MGQ0NjhiODM4ZjA5OGFhZmQ0NDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2V4dGVuc2lvbl9wcml2
YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBJbmplY3RlZEJ1bmRsZTsKK30KKworY2xhc3MgRXdrRXh0ZW5zaW9uIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSopOworICAg
IH5Fd2tFeHRlbnNpb24oKTsKKworICAgIHZvaWQgc2V0Q2xpZW50KEV3a19FeHRlbnNpb25fQ2xp
ZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKworcHJpdmF0ZToKKyAgICBFd2tf
RXh0ZW5zaW9uX0NsaWVudCogbV9jbGllbnQ7Cit9OworCisjZW5kaWYgLy8gZXdrX2V4dGVuc2lv
bl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4
dGVuc2lvbk1hbmFnZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0
ZW5zaW9uTWFuYWdlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhNjQwZWM3OTJmZTAyOTc3ZWQxMjMz
YzQxNDllMTc5YmFmNDRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVmbC5oIgorCisjaW5j
bHVkZSAiTW9kdWxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
ZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V4dGVuc2lvbk1hbmFnZXJFZmwmIEV4dGVuc2lv
bk1hbmFnZXJFZmw6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV4dGVu
c2lvbk1hbmFnZXJFZmw+IGV4dGVuc2lvbk1hbmFnZXI7CisgICAgcmV0dXJuIGV4dGVuc2lvbk1h
bmFnZXI7Cit9CisKK0V4dGVuc2lvbk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwoKQor
eworfQorCit2b2lkIEV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgbV9leHRlbnNpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPEV3a0V4dGVuc2lvbj4odG9JbXBsKGJ1bmRsZSkpOworCisgICAgU3RyaW5nIGV4
dGVuc2lvbnNEaXJlY3RvcnkgPSB0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KHVzZXJE
YXRhKSktPnN0cmluZygpOworICAgIEFTU0VSVCghZXh0ZW5zaW9uc0RpcmVjdG9yeS5pc0VtcHR5
KCkpOworCisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjpsaXN0RGly
ZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKSB7CisgICAgICAgICAgICBhdXRv
IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAg
ICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24gaW5pdGlhbGl6
ZUZ1bmN0aW9uID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8RXdrX0V4dGVuc2lvbl9Jbml0aWFs
aXplX0Z1bmN0aW9uPigiZXdrX2V4dGVuc2lvbl9pbml0Iik7CisgICAgICAgICAgICBpZiAoIWlu
aXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5nZXQoKSwgbnVsbHB0ciAvKiByZXNlcnZl
ZCBmb3IgdGhlIGZ1dHVyZSAqLyk7CisgICAgICAgICAgICBtX2V4dGVuc2lvbk1vZHVsZXMuYXBw
ZW5kKG1vZHVsZS5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQorfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjI0N2QyNGVlMTMzMzRkZmY2YmFjZGE3ODUwNjc4OWUzMjE5NDkxNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFn
ZXJFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeHRlbnNpb25NYW5hZ2VyRWZsX2gK
KyNkZWZpbmUgRXh0ZW5zaW9uTWFuYWdlckVmbF9oCisKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xhc3MgRXdrRXh0ZW5zaW9uOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9kdWxlOworCitjbGFzcyBFeHRlbnNpb25NYW5h
Z2VyRWZsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeHRlbnNpb25NYW5hZ2VyRWZsKTsK
KworcHVibGljOgorICAgIFdLX0VYUE9SVCBzdGF0aWMgRXh0ZW5zaW9uTWFuYWdlckVmbCYgc2hh
cmVkKCk7CisgICAgV0tfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBl
UmVmKTsKK3ByaXZhdGU6CisgICAgRXh0ZW5zaW9uTWFuYWdlckVmbCgpOworCisgICAgVmVjdG9y
PFdlYktpdDo6TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1bGVzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxFd2tFeHRlbnNpb24+IG1fZXh0ZW5zaW9uOworCisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVz
dHJveWVkPEV4dGVuc2lvbk1hbmFnZXJFZmw+OworfTsKKworfQorCisjZW5kaWYgLy8gRXh0ZW5z
aW9uTWFuYWdlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWFmOGMwM2Qy
MmM1NzdhZDA1Nzk5YmQzMDFjZmFlZGJiZDRiYmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9u
TWFuYWdlckVmbC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUluaXRpYWxpemUuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZXh0ZXJuICJDIiB2b2lkIFdLQnVuZGxlSW5pdGlh
bGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAgICBFeHRl
bnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKS5pbml0aWFsaXplKGJ1bmRsZSwgdXNlckRhdGEpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5p
biBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjYxNmNkYzJmOTM5NWViZTcyOTZkMDU0OGZlYzgwMWZjNTFlODNjNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KQEAgLTAs
MCArMSw4IEBACitwcmVmaXg9QENNQUtFX0lOU1RBTExfUFJFRklYQAoraW5jbHVkZWRpcj0ke3By
ZWZpeH0vaW5jbHVkZQorCitOYW1lOiBld2Via2l0Mi1leHRlbnNpb24KK0Rlc2NyaXB0aW9uOiBF
eHRlbnNpb24gZm9yIFdlYktpdDIvRUZMKGV3ZWJraXQyKQorVmVyc2lvbjogQFBST0pFQ1RfVkVS
U0lPTkAKK1JlcXVpcmVzOiBlaW5hCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9AV2ViS2l0Ml9P
VVRQVVRfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpPUkAvZXh0ZW5zaW9uCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmMxZmFiYmY2NTdhZGJk
OTFkNjc5YWIwMzVlODE1YjNmYWQ0NjAyOS4uYjVlMjU1Y2RjZmM2OWQ3YTQyMzM1ODlmMzM5Zjli
NzE2NTQ0ZmQzYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA3LTIxICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1Y2UgRVdlYktpdF9FeHRlbnNp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDky
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvZWZsL21haW4uYzogQWRkZWQgeCBvcHRpb24gdG8gdGVzdCBleHRlbnNpb24gcGF0
aAorICAgICAgICAod2luZG93X2NyZWF0ZSk6CisgICAgICAgIChlbG1fbWFpbik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdDoKKyAgICAgICAgQWRk
ZWQgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyBpbnRv
IEVGTFdlYktpdDJQdWJsaWNBUEkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvIGludG8gRUZMIGV4Y2VwdGlvbnMuCisKIDIwMTQtMDctMjAgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXN0IGZvciA8cmRhcjov
L3Byb2JsZW1zLzE3NzQyNjExPiAtW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGltYWdlXSBpcyBv
ZnRlbiBlbXB0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBiL1Rv
b2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXggMzk3ZjU4ZDZiNzU1MGVkZDQwNDYyNDAy
ZTkzZDIyYTY3NDAwZDI1Yy4uYzk3MWQwYzVhN2IwYWU0ZDU4YzdlY2Q0YTRmYzQ1YTFmZDNkN2Qw
YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyBpbnQgdmVyYm9z
ZSA9IDE7CiBzdGF0aWMgRWluYV9MaXN0ICp3aW5kb3dzID0gTlVMTDsKIHN0YXRpYyBjaGFyICpl
dmFzX2VuZ2luZV9uYW1lID0gTlVMTDsKIHN0YXRpYyBjaGFyICp1c2VyX2FnZW50X3N0cmluZyA9
IE5VTEw7CitzdGF0aWMgY2hhciAqZXh0ZW5zaW9uc19wYXRoID0gTlVMTDsKIHN0YXRpYyBjaGFy
ICpiYWNrZ3JvdW5kX2NvbG9yX3N0cmluZyA9IE5VTEw7CiBzdGF0aWMgRWluYV9Cb29sIGVuY29k
aW5nX2RldGVjdG9yX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVpbmFfQm9vbCBmcmFt
ZV9mbGF0dGVuaW5nX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwpAQCAtMTQ5LDYgKzE1MCw4IEBAIHN0
YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9ucyA9IHsKICAgICAgICAgICAgICgncycsICJ3
aW5kb3ctc2l6ZSIsICJXaW5kb3cgc2l6ZSBpbiBmb2xsb3dpbmcgZm9ybWF0ICh3aWR0aCl4KGhl
aWdodCkuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9TVFIKICAgICAgICAgICAgICgn
dScsICJ1c2VyLWFnZW50IiwgIlVzZXIgYWdlbnQgdG8gc2V0LiIpLAorICAgICAgICBFQ09SRV9H
RVRPUFRfU1RPUkVfU1RSCisgICAgICAgICAgICAoJ3gnLCAiZXh0ZW5zaW9ucy1wYXRoIiwgIlRo
ZSBwYXRoIHdoaWNoIGV4dGVuc2lvbnMgYXJlIHN0b3JlZC4iKSwKICAgICAgICAgRUNPUkVfR0VU
T1BUX1NUT1JFX0RPVUJMRQogICAgICAgICAgICAgKCdyJywgImRldmljZS1waXhlbC1yYXRpbyIs
ICJSYXRpbyBiZXR3ZWVuIHRoZSBDU1MgdW5pdHMgYW5kIGRldmljZSBwaXhlbHMuIiksCiAgICAg
ICAgIEVDT1JFX0dFVE9QVF9DQUxMQkFDS19OT0FSR1MKQEAgLTE5MjUsNyArMTkyOCwxNCBAQCBz
dGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2
YXNfZ2V0KHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgRXZhc19TbWFydCAqc21hcnQgPSBldmFz
X3NtYXJ0X2NsYXNzX25ldygmZXdrVmlld0NsYXNzLT5zYyk7Ci0gICAgRXdrX0NvbnRleHQgKmNv
bnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2NvbnRl
eHRfZGVmYXVsdF9nZXQoKTsKKyAgICBFd2tfQ29udGV4dCAqY29udGV4dDsKKyAgICBpZiAob3Bl
bmVyKQorICAgICAgICBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKTsKKyAg
ICBlbHNlIGlmIChleHRlbnNpb25zX3BhdGgpCisgICAgICAgIGNvbnRleHQgPSBld2tfY29udGV4
dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoZXh0ZW5zaW9uc19wYXRoKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvbnRleHQgPSBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOworCiAgICAgRXdrX1Bh
Z2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9wZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9w
ZW5lcikgOiBld2tfcGFnZV9ncm91cF9jcmVhdGUoIiIpOwogICAgIHdpbmRvdy0+ZXdrX3ZpZXcg
PSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAK
QEAgLTIwNTEsNiArMjA2MSw3IEBAIGVsbV9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg
ICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIoZXZhc19lbmdpbmVfbmFtZSksCiAgICAgICAg
IEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIod2luZG93X3NpemVfc3RyaW5nKSwKICAgICAgICAgRUNP
UkVfR0VUT1BUX1ZBTFVFX1NUUih1c2VyX2FnZW50X3N0cmluZyksCisgICAgICAgIEVDT1JFX0dF
VE9QVF9WQUxVRV9TVFIoZXh0ZW5zaW9uc19wYXRoKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZB
TFVFX0RPVUJMRShkZXZpY2VfcGl4ZWxfcmF0aW8pLAogICAgICAgICBFQ09SRV9HRVRPUFRfVkFM
VUVfQk9PTChxdWl0T3B0aW9uKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0woZW5j
b2RpbmdfZGV0ZWN0b3JfZW5hYmxlZCksCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL3dhdGNobGlzdAppbmRleCA1NDkzYzU5NGFhMzhjZGNlMWU5MzJmMjc2ZjI4MzRl
NTE1YmE4ZTFiLi4zNDNjM2I4NTEzZGY1OTViYzgwNzYwZDU1MmIyNTBiZWVmZGYyNzYxIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKQEAgLTEw
Nyw3ICsxMDcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgciJ8TGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsLyIsCiAgICAgICAgIH0sCiAgICAgICAgICJFRkxXZWJLaXQyUHVibGljQVBJIjog
ewotICAgICAgICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC8iCisgICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8iCisgICAgICAgICAgICAgICAgICAgICAgICByInxT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iCiAgICAgICAgICAgICAgICAgICAgICAg
ICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsLyIsCiAgICAgICAgIH0sCiAg
ICAgICAgICJFRkxXZWJLaXQyUGxhdGZvcm1TcGVjaWZpYyI6IHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCA3M2YzOTk1YzZkZDA3MmM4MTIwYWM2OTYxODE3Njhm
NTU5ZjFmZTUzLi45ZTIwYWMzN2Q4MjJlYzJkMzhhZWZmZDY1YTUyYmE1MTU3NDAzYTM4IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0xODksNiArMTg5LDcgQEAg
X1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgIChbIyBUaGUgRUZMIEFQSXMgdXNlIEVGTCBu
YW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1ZGVzCiAgICAgICAjIGJvdGggbG93ZXItY2FzZWQgYW5k
IGNhbWVsLWNhc2VkLCB1bmRlcnNjb3JlLXNwYXJhdGVkCiAgICAgICAjIHZhbHVlcy4KKyAgICAg
ICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIiwKICAg
ICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iXSwKICAgICAgWyItcmVhZGFi
aWxpdHkvbmFtaW5nIiwKICAgICAgICItcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUiXSksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236643</attachid>
            <date>2014-08-15 00:02:02 -0700</date>
            <delta_ts>2014-08-26 07:34:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140815160151.patch</filename>
            <type>text/plain</type>
            <size>44263</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTBjMzkwYjYwMjEwNmU0
ODJkYTU0YzQyMWUzZGI0NTU4YTI0YmZlYy4uOGVlY2E0NGE5NmViMDJkYmYzOGI2MGVkZjEyNDZm
OGU3NzVhZjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE0LTA4LTE0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBld2tfY29u
dGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisg
ICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qg
d2l0aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90
IGV4cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNp
b24sIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUg
RVdlYktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpF
d2tDb250ZXh0KToKKyAgICAgICAgKGluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChFd2tD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIgZG9lcyBu
b3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5zdGVhZCwg
RXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OmV4
dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNp
b25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHA6IFJlbmFtZWQgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgg
dG8gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6
RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6fkV3a0V4dGVuc2lvbik6Cisg
ICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9hZGQpOgorICAgICAgICAoZXdrX2V4dGVuc2lv
bl9jbGllbnRfZGVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAo
RXdrRXh0ZW5zaW9uOjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL0V4dGVu
c2lvbk1hbmFnZXJFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RXh0ZW5zaW9uTWFu
YWdlckVmbDo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6
RXh0ZW5zaW9uTWFuYWdlckVmbCk6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lvbk1hbmFnZXJF
Zmw6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFn
ZXJFZmwuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViRWZsSW5qZWN0ZWRC
dW5kbGVNYWluLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZUluaXRpYWxpemUpOgorICAg
ICAgICAqIGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW46IEFkZGVkLgorCiAyMDE0LTA4LTEz
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBDU1NfU0NST0xMX1NOQVAgZm9yIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBh
OGJlZDM1ZGQ0ODM1NWUyMmE1MWJlNGRjMGJkNmU1ODdmMGI5NDUxLi4wMzRjN2NjZTNjYjJjYzlm
YWYxNTM0ODk5MDgzNDg4NTA3MGJmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAt
MTczLDYgKzE3Myw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nl
c3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAogICAgIFdlYlByb2Nlc3Mv
Q29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuY3BwCiAKKyAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKKwogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcAogCiAgICAgV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApAQCAtMTk1
LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9l
ZmwvV2ViUGFnZUVmbC5jcHAKIAorICAgIFdlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJF
ZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZpbHRlcnNXZWJQcm9jZXNzRWZsLmNw
cAogICAgIFdlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAogCkBAIC0yNDMsNiAr
MjQ2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKKyAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIgogICAgICIke1dFQktJVDJfRElS
fS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKQEAgLTM1Niw2ICszNjAs
NyBAQCBzZXQoV0VCS0lUMl9FWFRSQV9ERVBFTkRFTkNJRVMKICkKIAogY29uZmlndXJlX2ZpbGUo
ZWZsL2V3ZWJraXQyLnBjLmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtp
dDIucGMgQE9OTFkpCitjb25maWd1cmVfZmlsZShlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmlu
ICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjIEBP
TkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlLmluICR7Q01BS0Vf
QklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWcuY21ha2UgQE9OTFkpCiBjb25m
aWd1cmVfZmlsZShlZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlLmluICR7Q01BS0VfQklO
QVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlIEBPTkxZKQog
Y29uZmlndXJlX2ZpbGUoVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaC5pbiAke0RFUklWRURf
U09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZS9FV2ViS2l0Mi5oKQpAQCAtMzk2LDEzICs0MDEs
MjcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193aW5kb3dfZmVhdHVyZXMuaCIKICkKIAorc2V0KEVX
ZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaCIK
KyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgiCispCisKK2luc3RhbGwoRklMRVMgJHtFV2ViS2l0
Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0tJHtQ
Uk9KRUNUX1ZFUlNJT05fTUFKT1J9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0V4dGVuc2lv
bl9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0tJHtQ
Uk9KRUNUX1ZFUlNJT05fTUFKT1J9L2V4dGVuc2lvbikKKwogaW5zdGFsbChGSUxFUyAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9OIGxpYi9wa2dj
b25maWcpCitpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdl
YmtpdDItZXh0ZW5zaW9uLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBpbnN0YWxsKEZJ
TEVTCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25m
aWcuY21ha2UKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9FV2ViS2l0
MkNvbmZpZ1ZlcnNpb24uY21ha2UKICAgICAgICAgREVTVElOQVRJT04gbGliL2NtYWtlL0VXZWJL
aXQyKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJT04gaW5j
bHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKK3Nl
dChJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RBTExfRElSfS8ke1dlYktp
dDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS8iIENBQ0hFIFBBVEggIldo
ZXRoZXIgdG8gaW5zdGFsbCBpbmplY3RlZCBidW5kbGUiKQorCithZGRfbGlicmFyeShld2tJbmpl
Y3RlZEJ1bmRsZSBTSEFSRUQgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsL1dlYkVmbElu
amVjdGVkQnVuZGxlTWFpbi5jcHAiKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3a0luamVjdGVk
QnVuZGxlIFdlYktpdDIpCisKK2luc3RhbGwoVEFSR0VUUyBld2tJbmplY3RlZEJ1bmRsZSBERVNU
SU5BVElPTiAiJHtJTkpFQ1RFRF9CVU5ETEVfSU5TVEFMTF9ESVJ9IikKIAogaWYgKEVOQUJMRV9Q
TFVHSU5fUFJPQ0VTUykKICAgICBsaXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElS
RUNUT1JJRVMKQEAgLTQ0MywxNiArNDYyLDE4IEBAIHNldChFV0syVW5pdFRlc3RzX0xJQlJBUklF
UwogCiBzZXQoV0VCS0lUMl9FRkxfVEVTVF9ESVIgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzIikKIHNldChURVNUX1JFU09VUkNFU19ESVIgJHtXRUJLSVQyX0VGTF9URVNU
X0RJUn0vcmVzb3VyY2VzKQotc2V0KFRFU1RfSU5KRUNURURfQlVORExFX0RJUiAke1dFQktJVDJf
RUZMX1RFU1RfRElSfS9JbmplY3RlZEJ1bmRsZSkKK3NldChURVNUX0lOSkVDVEVEX0JVTkRMRV9E
SVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vZXh0ZW5zaW9ucykKIHNldChXRUJLSVQyX0VGTF9U
RVNUX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vVGVzdFdlYktpdEFQSS9FV2ViS2l0MikKIAogYWRkX2RlZmluaXRpb25zKC1EVEVTVF9S
RVNPVVJDRVNfRElSPVwiJHtURVNUX1JFU09VUkNFU19ESVJ9XCIKICAgICAtRFRFU1RfTElCX0RJ
Uj1cIiR7Q01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZfVwiCiAgICAgLURHVEVTVF9MSU5L
RURfQVNfU0hBUkVEX0xJQlJBUlk9MQogICAgIC1ETElCRVhFQ0RJUj1cIiR7RVhFQ19JTlNUQUxM
X0RJUn1cIgorICAgIC1ESU5KRUNURURCVU5ETEVESVI9XCIke0NNQUtFX0lOU1RBTExfUFJFRklY
fS8ke0lOSkVDVEVEX0JVTkRMRV9JTlNUQUxMX0RJUn1cIgogICAgIC1EV0VCUFJPQ0VTU05BTUU9
XCJXZWJQcm9jZXNzXCIKICAgICAtRFBMVUdJTlBST0NFU1NOQU1FPVwiUGx1Z2luUHJvY2Vzc1wi
CiAgICAgLURORVRXT1JLUFJPQ0VTU05BTUU9XCJOZXR3b3JrUHJvY2Vzc1wiCisgICAgLURJTkpF
Q1RFREJVTkRMRU5BTUU9XCJsaWJld2tJbmplY3RlZEJ1bmRsZS5zb1wiCiApCiAKIGFkZF9saWJy
YXJ5KGV3azJVbml0VGVzdFV0aWxzCkBAIC01MDQsOCArNTI1LDcgQEAgaWYgKEVOQUJMRV9BUElf
VEVTVFMpCiAgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3ROYW1lfSAke0VXSzJV
bml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRlc3RVdGlscykKICAgICBlbmRmb3JlYWNoICgp
CiAKLSAgICBhZGRfbGlicmFyeShld2syVW5pdFRlc3RJbmplY3RlZEJ1bmRsZVNhbXBsZSBTSEFS
RUQgJHtURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVJ9L2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3Bw
KQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhld2syVW5pdFRlc3RJbmplY3RlZEJ1bmRsZVNh
bXBsZSBXZWJLaXQyKQorICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxl
U2FtcGxlIFNIQVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vZXh0ZW5zaW9uX3NhbXBs
ZS5jcHApCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NQRUxMQ0hFQ0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggNjY2Nzc1NDE5
NmU0MTUwMmZkMTM5MWRlZTI1NTUzNGQ0NTliZDliYy4uYWY1MmZiZGMzMTZhODFhY2QwNmVmMmMy
NDU4NjRjNTE4OGRjZmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW5saW5lIENvbnRl
eHRNYXAmIGNvbnRleHRNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLUV3a0NvbnRleHQ6OkV3
a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCitFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdL
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoKQogICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RhdGFiYXNlTWFuYWdlcihzdGQ6Om1ha2VfdW5p
cXVlPEV3a0RhdGFiYXNlTWFuYWdlcj4oV0tDb250ZXh0R2V0RGF0YWJhc2VNYW5hZ2VyKGNvbnRl
eHQpKSkKICAgICAsIG1fc3RvcmFnZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxFd2tTdG9yYWdl
TWFuYWdlcj4oV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihjb250ZXh0KSkpCkBA
IC03Myw2ICs3Myw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UmVxdWVz
dE1hbmFnZXJDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9q
c0dsb2JhbENvbnRleHQobnVsbHB0cikKKyAgICAsIG1fZXh0ZW5zaW9uc1BhdGgoZXh0ZW5zaW9u
c1BhdGgpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNvbnRleHRNYXAo
KS5hZGQoY29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKQEAgLTk1LDYgKzk2LDE3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tD
b250ZXh0UmVmIGNvbnRleHQpCiAKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZS5jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUudXNlckRhdGEgPSBudWxscHRyOworCisgICAgV0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihj
bGllbnQpKTsKKworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxOworICAgIGNsaWVudC5iYXNl
LmNsaWVudEluZm8gPSB0aGlzOworICAgIGNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIGNs
aWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBjbGllbnQu
Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gZ2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhOworCisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogfQogCiBFd2tDb250ZXh0
Ojp+RXdrQ29udGV4dCgpCkBAIC0xMjAsMTQgKzEzMiwzNyBAQCBQYXNzUmVmUHRyPEV3a0NvbnRl
eHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250
ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8
RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5k
bGVQYXRoKQorc3RhdGljIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGgoKQoreworICAgIFN0cmlu
ZyBidW5kbGVQYXRoOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBidW5kbGVEaXJlY3RvcnkgPSBn
ZXRlbnYoIldFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIpOworCisgICAgaWYgKGJ1bmRsZURp
cmVjdG9yeSkgeworICAgICAgICBidW5kbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoYnVuZGxlRGlyZWN0b3J5KSwgSU5KRUNURURCVU5E
TEVOQU1FKTsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aCkpCisg
ICAgICAgICAgICByZXR1cm4gYnVuZGxlUGF0aDsKKyAgICB9CisKKyAgICBidW5kbGVQYXRoID0g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoVEVTVF9M
SUJfRElSKSwgSU5KRUNURURCVU5ETEVOQU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0
cyhidW5kbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGg7CisKKyAgICBidW5kbGVQ
YXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgo
SU5KRUNURURCVU5ETEVESVIpLCBJTkpFQ1RFREJVTkRMRU5BTUUpOworICAgIGlmIChXZWJDb3Jl
OjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGgpKQorICAgICAgICByZXR1cm4gYnVuZGxlUGF0aDsKKwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250
ZXh0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKIHsgICAKLSAgICBpZiAo
IWZpbGVFeGlzdHMoaW5qZWN0ZWRCdW5kbGVQYXRoKSkKKyAgICBTdHJpbmcgYnVuZGxlUGF0aCA9
IGluamVjdGVkQnVuZGxlUGF0aCgpOworICAgIGlmIChidW5kbGVQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFk
b3B0V0sodG9Db3BpZWRBUEkoaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9wdFdLKHRvQ29waWVkQVBJKGJ1bmRsZVBhdGgpKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0
ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgocGF0aC5nZXQoKSkpLmdldCgpKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVj
dGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCksIGV4dGVuc2lvbnNQYXRoKSk7CiB9CiAK
IEV3a0NvbnRleHQqIEV3a0NvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkKQEAgLTM2NCw2ICszOTks
MTEgQEAgdm9pZCBFd2tDb250ZXh0OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0sKICAgICB0b0V3a0NvbnRleHQoY2xpZW50SW5m
byktPnByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUs
IG1lc3NhZ2VCb2R5LCByZXR1cm5EYXRhKTsKIH0KIAorV0tUeXBlUmVmIEV3a0NvbnRleHQ6Omdl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLVHlwZVJlZj4o
dG9Db3BpZWRBUEkodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT5leHRlbnNpb25zUGF0aCgpKSk7
Cit9CisKIHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxi
YWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVfQ2IgY2FsbGJhY2ss
IHZvaWQqIHVzZXJEYXRhKQogewogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlLnVzZXJEYXRhID0gdXNlckRhdGE7CkBAIC0zNzEsMTkgKzQxMSw2IEBAIHZvaWQgRXdr
Q29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0
X01lc3NhZ2VfRnJvbV9JCiAgICAgaWYgKG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlLmNhbGxiYWNrID09IGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNrKSB7Ci0gICAg
ICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OwotICAgICAgICBtZW1z
ZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotCi0gICAgICAgIGNsaWVudC5iYXNlLnZl
cnNpb24gPSAxOwotICAgICAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKLSAgICAg
ICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0gICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAgICAgICBXS0NvbnRleHRTZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0gICAgfSBlbHNl
IGlmICghY2FsbGJhY2spCi0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50
KG1fY29udGV4dC5nZXQoKSwgbnVsbHB0cik7Ci0KICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IGNhbGxiYWNrOwogfQogCkBAIC00MzMsNyArNDYw
LDcgQEAgRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X25ldygpCiAgICAgcmV0dXJuIEV3a0NvbnRl
eHQ6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKIH0KIAotRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X25l
d193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIqIHBhdGgpCitFd2tfQ29udGV4
dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGNvbnN0IGNoYXIqIHBhdGgp
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBhdGgsIG51bGxwdHIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRl
eCBiYzdiMDU0YzdmZGZkODk1MGU3YjYzNjJiYjcyZjQ0ZGUzZjQxOTE2Li5lMTc2NzBiOTE1Yzg5
YmRjZjY1Y2MxYzA0N2I2ZWUzNDE1ZjFhYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBFQVBJIEV3a19D
b250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCh2b2lkKTsKICAqIEByZXR1cm4gRXdrX0Nv
bnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCiAgKgogICogQHNl
ZSBld2tfb2JqZWN0X3VucmVmCi0gKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVk
X2J1bmRsZV9wYXRoCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0
aAogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXcodm9pZCk7CiAKQEAgLTE3
OCwxNCArMTc4LDE3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ldyh2b2lkKTsK
ICAqCiAgKiBUaGUgcmV0dXJuZWQgRXdrX0NvbnRleHQgb2JqZWN0IEBiIHNob3VsZCBiZSB1bnJl
ZidlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIHBhdGggcGF0aCBvZiBpbmplY3RlZCBidW5k
bGUgbGlicmFyeQorICogQHBhcmFtIHBhdGggZGlyZWN0b3J5IHBhdGggb2YgZXh0ZW5zaW9ucwog
ICoKICAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBv
biBmYWlsdXJlCiAgKgorICogQG5vdGUgQWxsIHNoYXJlZCBvYmplY3RzIHdoaWNoIGhhdmUgZXdr
X2V4dGVuc2lvbl9pbml0KCkgaW4gdGhlIGdpdmVuIEBhIHBhdGggd2lsbCBiZSBsb2FkZWQuCisg
KgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCiAgKiBAc2VlIGV3a19jb250ZXh0X25ldworICog
QHNlZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24KICAqLwotRUFQSSBFd2tfQ29u
dGV4dCAqZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgoY29uc3QgY2hh
ciAqcGF0aCk7CitFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNp
b25zX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qKgogICogR2V0cyB0aGUgYXBwbGljYXRp
b24gY2FjaGUgbWFuYWdlciBpbnN0YW5jZSBmb3IgdGhpcyBAYSBjb250ZXh0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
CmluZGV4IDE3MjljNGExMmEyMjdmYzBhMzJkNGE5NzU2MTZiNjA1YTdmOWQ0NTkuLmE1MDk4MGQz
NzM5ODdiOGQ4MmFjY2YwNWU0MDVlM2Y3YjExYWMyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKQEAgLTg2LDYg
Kzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoRXdrX1RMU19F
cnJvcl9Qb2xpY3kgVExTRXJyb3JQb2xpY3kpIGNvbnN0OwogCisgICAgU3RyaW5nIGV4dGVuc2lv
bnNQYXRoKCkgeyByZXR1cm4gbV9leHRlbnNpb25zUGF0aDsgfQorCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1Z2luUGF0aChjb25zdCBT
dHJpbmcmKTsKICNlbmRpZgpAQCAtOTYsMTEgKzk4LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwg
V0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmplY3RlZEJ1bmRs
ZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tf
Q29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiLCB2b2lkKik7CiAgICAgdm9p
ZCBwcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSk7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRSZWYpOworICAg
IGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bnNQYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZpY29uRGF0YWJhc2UoKTsK
IApAQCAtMTIxLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYg
bV9qc0dsb2JhbENvbnRleHQ7CiAKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zUGF0aDsKKwogICAg
IHN0cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5k
bGVfQ2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0
ZWRfYnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1YzczMzNlYzVkNGVkMzhkYTljMDYy
NDBhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3Rl
ZF9idW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCi17Ci19Ci0KLSNp
ZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNp
b25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODkxNjY2NDk1ZTBlMzg2ZTZkMzQ4OWUyMDc5NTFj
NWQ1MDc3MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApAQCAtMCwwICsxLDM4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiRVdlYktpdF9FeHRlbnNpb24uaCIKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit2b2lkIGV3a19leHRlbnNpb25faW5pdChF
d2tfRXh0ZW5zaW9uICopCit7Cit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXggM2YxNDcwYTA5ZGFjODE1NDdjNmE1ZjYxODhiM2Mx
ODY4MzZlZTE2MS4uOGEzNjI5NjVlMjFlZGI1ZDUxOGQ0NTcwMTdkMjM5MWJlN2U0ZTE4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAtMjMwLDkgKzIzMCw5IEBAIFRFU1RfRihFV0syQ29u
dGV4dFRlc3QsIGV3a19jb250ZXh0X25ldykKICAgICBld2tfb2JqZWN0X3VucmVmKGNvbnRleHQp
OwogfQogCi1URVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXdfd2l0aF9pbmpl
Y3RlZF9idW5kbGVfcGF0aCkKK1RFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X25l
d193aXRoX2V4dGVuc2lvbnNfcGF0aCkKIHsKLSAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IGV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGVudmlyb25tZW50LT5pbmpl
Y3RlZEJ1bmRsZVNhbXBsZSgpKTsKKyAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IGV3a19jb250
ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChlbnZpcm9ubWVudC0+aW5qZWN0ZWRCdW5kbGVT
YW1wbGUoKSk7CiAgICAgQVNTRVJUX1RSVUUoY29udGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJl
Zihjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjVlMTc3ZGY0NjA5ZTVmZDM1MmRkOTZhZDA3MDU2YWQ5NGU1YWE5NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxl
ICAgIEVXZWJLaXRfRXh0ZW5zaW9uLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBoZWFkZXIg
ZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgZXdlYmtpdDItZXh0ZW5zaW9uLgorICoKKyAqIEVX
ZWJLaXRfRXh0ZW5zaW9uIGlzIHRoZSB3YXkgdG8gZXh0ZW5kIFdlYlByb2Nlc3Mgb2YgZXdlYmtp
dDIuCisgKgorICogSW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBleHRlbnNpb24sIAorICogRmlyc3Qs
IGV3a19leHRlbnNpb25faW5pdCBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBzaGFyZWQgb2Jq
ZWN0IGxpa2UgYmVsb3c6CisgKgorICogQGNvZGUKKyAqICNpbmNsdWRlICJFV2ViS2l0X0V4dGVu
c2lvbi5oIgorICogCisgKiB2b2lkIGV3a19leHRlbnNpb25faW5pdChFd2tfRXh0ZW5zaW9uICpl
eHRlbnNpb24pCisgKiB7CisgKiAgICAvLyBwcm92aWRlIEV3a19FeHRlbnNpb25fQ2xpZW50IGNh
bGxiYWNrcyBhcyBjbGllbnQuCisgKiAgICBld2tfZXh0ZW5zaW9uX2NsaWVudF9hZGQoZXh0ZW5z
aW9uLCAmY2xpZW50KTsKKyAqIH0KKyAqIEBlbmRjb2RlCisgKgorICogQW5kIGNvbXBpbGVzIEMg
b3IgQysrIGZpbGVzIGFzIHNoYXJlZCBvYmplY3QgbGlrZSBiZWxvdzoKKyAqCisgKiBAdmVyYmF0
aW0KKyAqIGdjYyAtbyBsaWJzYW1wbGUuc28gc2FtcGxlLmMgLXNoYXJlZCAtZlBJQyBgcGtnLWNv
bmZpZyAtLWNmbGFncyAtLWxpYnMgZWluYSBld2Via2l0Mi1leHRlbnNpb25gCisgKiBAZW5kdmVy
YmF0aW0KKyAqIAorICogVGhlbiwgaW5zdGFsbCB0aGF0IG9iamVjdCBpbnRvIHRoZSBwYXRoIHdo
aWNoIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCgpIHNwZWNpZmllcy4KKyAq
CisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aAorICogQHNlZSBl
d2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQKKyAqIEBzZWUgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXpl
X0Z1bmN0aW9uCisgKi8KKworI2lmbmRlZiBFV2ViS2l0X0V4dGVuc2lvbl9oCisjZGVmaW5lIEVX
ZWJLaXRfRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKworI2VuZGlm
IC8vIEVXZWJLaXRfRXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42Y2QzNTY5ZGJhYTJmMzU1MDA0MDI1NjUzYmE1ZGUxYThlMTgwNjVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorCisjaW5jbHVkZSAiZXdrX2V4
dGVuc2lvbl9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a0V4dGVu
c2lvbjo6RXdrRXh0ZW5zaW9uKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCit7Cit9CisKK0V3a0V4
dGVuc2lvbjo6fkV3a0V4dGVuc2lvbigpCit7Cit9CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjphcHBl
bmQoRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMuYXBwZW5k
KGNsaWVudCk7Cit9CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpyZW1vdmUoRXdrX0V4dGVuc2lvbl9D
bGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMucmVtb3ZlKG1fY2xpZW50cy5maW5kKGNs
aWVudCkpOworfQorCit2b2lkIGV3a19leHRlbnNpb25fY2xpZW50X2FkZChFd2tfRXh0ZW5zaW9u
KiBleHRlbnNpb24sIEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oZXh0ZW5zaW9uKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihjbGllbnQpOworCisgICAgZXh0ZW5zaW9uLT5hcHBlbmQoY2xpZW50KTsKK30KKwor
dm9pZCBld2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwoRXdrX0V4dGVuc2lvbiogZXh0ZW5zaW9uLCBF
d2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGV4dGVuc2lvbik7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY2xpZW50
KTsKKworICAgIGV4dGVuc2lvbi0+cmVtb3ZlKGNsaWVudCk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lv
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3
a19leHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGVjYjg3OGQ2ODcxZGM0NjI5NWE1OGEyZmY1OTA1
YjFkODI3ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfZXh0ZW5zaW9uLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0
aGUgRXdrX0V4dGVuc2lvbiBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfZXh0ZW5zaW9uX2gKKyNk
ZWZpbmUgZXdrX2V4dGVuc2lvbl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgRXdrUGFnZSBF
d2tfUGFnZTsKKworLyoqCisgKiBEZWNsYXJlIEV3a19FeHRlbnNpb24uCisgKi8KK3R5cGVkZWYg
c3RydWN0IEV3a0V4dGVuc2lvbiBFd2tfRXh0ZW5zaW9uOworCisvKioKKyAqIERlY2xhcmUgRXdr
X0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uLgorICoKKyAqIEBicmllZiAgVHlwZSBkZWZp
bml0aW9uIGZvciB0aGUgZW50cnkgb2YgdGhlIGV4dGVuc2lvbi4KKyAqCisgKi8KK3R5cGVkZWYg
dm9pZCAqKCpFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24pKEV3a19FeHRlbnNpb24g
KmJ1bmRsZSwgdm9pZCAqcmVzZXJ2ZWQpOworCitzdHJ1Y3QgRXdrRXh0ZW5zaW9uQ2xpZW50IHsK
KyAgICBpbnQgdmVyc2lvbjsKKyAgICB2b2lkICpkYXRhOworfTsKK3R5cGVkZWYgc3RydWN0IEV3
a0V4dGVuc2lvbkNsaWVudCBFd2tfRXh0ZW5zaW9uX0NsaWVudDsKKworLyoqCisgKiBBZGQgKHJl
Z2lzdGVyKSBhIGNsaWVudCB3aGljaCBjb250YWlucyBhIHNldmVyYWwgY2FsbGJhY2tzIHRvIHRo
ZSBleHRlbnNpb24uCisgKgorICogQHBhcmFtIGV4dGVuc2lvbiBleHRlbnNpb24gdG8gYXR0YWNo
IGNsaWVudCB0bworICogQHBhcmFtIGNsaWVudCBjbGllbnQgdG8gYWRkIHRvIHRoZSBleHRlbnNp
b24KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFkZCBhIGNsaWVudCwgd2hpY2ggY29udGFpbnMgc2V2
ZXJhbCBjYWxsYmFja3MgcmVjZWl2aW5nIGV2ZW50cworICogaW4gV2ViUHJvY2VzcyBzaWRlLCB0
byBhIEBwIGV4dGVuc2lvbi4KKyAqCisgKiBAc2VlIGV3a19leHRlbnNpb25fY2xpZW50X2RlbAor
ICovCitFQVBJIHZvaWQgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKEV3a19FeHRlbnNpb24gKmV4
dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9DbGllbnQgKmNsaWVudCk7CisKKy8qKgorICogRGVsZXRl
IGEgY2xpZW50IGZyb20gdGhlIGV4dGVuc2lvbi4KKyAqCisgKiBAcGFyYW0gZXh0ZW5zaW9uIGV4
dGVuc2lvbiB0byBkZWxldGUgY2xpZW50IHRvCisgKiBAcGFyYW0gY2xpZW50IGNsaWVudCB3aGlj
aCBjb250YWlucyB2ZXJzaW9uLCBkYXRhIGFuZCBjYWxsYmFja3MuCisgKi8KK0VBUEkgdm9pZCBl
d2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uLCBFd2tfRXh0
ZW5zaW9uX0NsaWVudCAqY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8vIGV3a19leHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19l
eHRlbnNpb25fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMjRlMWVhNGFiM2Y3OTI3ZTYzODM4MTQz
Y2U0YjM5ZWNlNjgyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdr
X2V4dGVuc2lvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK30KKworY2xhc3MgRXdrRXh0ZW5z
aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZSopOworICAgIH5Fd2tFeHRlbnNpb24oKTsKKworICAgIHZvaWQgYXBwZW5kKEV3a19F
eHRlbnNpb25fQ2xpZW50KiBjbGllbnQpOworICAgIHZvaWQgcmVtb3ZlKEV3a19FeHRlbnNpb25f
Q2xpZW50KiBjbGllbnQpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxFd2tfRXh0ZW5zaW9uX0Ns
aWVudCo+IG1fY2xpZW50czsKK307CisKKyNlbmRpZiAvLyBld2tfZXh0ZW5zaW9uX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFu
YWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5h
Z2VyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NGE2NDBlYzc5MmZlMDI5NzdlZDEyMzNjNDE0OWUxNzli
YWY0NGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwv
RXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZsLmgiCisKKyNpbmNsdWRlICJNb2R1
bGUuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJld2tfZXh0ZW5z
aW9uLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworRXh0ZW5zaW9uTWFuYWdlckVmbCYgRXh0ZW5zaW9uTWFuYWdlckVm
bDo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdl
ckVmbD4gZXh0ZW5zaW9uTWFuYWdlcjsKKyAgICByZXR1cm4gZXh0ZW5zaW9uTWFuYWdlcjsKK30K
KworRXh0ZW5zaW9uTWFuYWdlckVmbDo6RXh0ZW5zaW9uTWFuYWdlckVmbCgpCit7Cit9CisKK3Zv
aWQgRXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdL
VHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAgICBtX2V4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7CisKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc0Rp
cmVjdG9yeSA9IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4odXNlckRhdGEpKS0+c3Ry
aW5nKCk7CisgICAgQVNTRVJUKCFleHRlbnNpb25zRGlyZWN0b3J5LmlzRW1wdHkoKSk7CisKKyAg
ICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkoZXh0
ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6
ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpIHsKKyAgICAgICAgICAgIGF1dG8gbW9kdWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgICAgIGlm
ICghbW9kdWxlLT5sb2FkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbiBpbml0aWFsaXplRnVuY3Rpb24g
PSBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rp
b24+KCJld2tfZXh0ZW5zaW9uX2luaXQiKTsKKyAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZUZ1
bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaW5pdGlhbGl6
ZUZ1bmN0aW9uKG1fZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyIC8qIHJlc2VydmVkIGZvciB0aGUg
ZnV0dXJlICovKTsKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uTW9kdWxlcy5hcHBlbmQobW9kdWxl
LnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MjQ3ZDI0ZWUxMzMzNGRmZjZiYWNkYTc4NTA2Nzg5ZTMyMTk0OTE3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4dGVuc2lvbk1hbmFnZXJFZmxfaAorI2RlZmluZSBF
eHRlbnNpb25NYW5hZ2VyRWZsX2gKKworI2luY2x1ZGUgIldLQnVuZGxlLmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCitjbGFzcyBFd2tFeHRlbnNpb247CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBNb2R1bGU7CisKK2NsYXNzIEV4dGVuc2lvbk1hbmFnZXJFZmwgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4dGVuc2lvbk1hbmFnZXJFZmwpOworCitwdWJsaWM6
CisgICAgV0tfRVhQT1JUIHN0YXRpYyBFeHRlbnNpb25NYW5hZ2VyRWZsJiBzaGFyZWQoKTsKKyAg
ICBXS19FWFBPUlQgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpOworcHJp
dmF0ZToKKyAgICBFeHRlbnNpb25NYW5hZ2VyRWZsKCk7CisKKyAgICBWZWN0b3I8V2ViS2l0OjpN
b2R1bGUqPiBtX2V4dGVuc2lvbk1vZHVsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV3a0V4dGVu
c2lvbj4gbV9leHRlbnNpb247CisKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RXh0
ZW5zaW9uTWFuYWdlckVmbD47Cit9OworCit9CisKKyNlbmRpZiAvLyBFeHRlbnNpb25NYW5hZ2Vy
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYkVmbElu
amVjdGVkQnVuZGxlTWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJF
ZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYWY4YzAzZDIyYzU3N2FkMDU3
OTliZDMwMWNmYWVkYmJkNGJiY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2VmbC9XZWJFZmxJbmplY3RlZEJ1bmRsZU1haW4uY3BwCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZs
LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitleHRlcm4gIkMiIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIEV4dGVuc2lvbk1hbmFn
ZXJFZmw6OnNoYXJlZCgpLmluaXRpYWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNl
L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjE2Y2Rj
MmY5Mzk1ZWJlNzI5NmQwNTQ4ZmVjODAxZmM1MWU4M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpAQCAtMCwwICsxLDggQEAK
K3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACitpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNs
dWRlCisKK05hbWU6IGV3ZWJraXQyLWV4dGVuc2lvbgorRGVzY3JpcHRpb246IEV4dGVuc2lvbiBm
b3IgV2ViS2l0Mi9FRkwoZXdlYmtpdDIpCitWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAorUmVx
dWlyZXM6IGVpbmEKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1F
QC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODAxNTcxMWE2NDI4YWEyMTk5ZTE1YzUx
NmRlNWYyMjE5MzFlODhkLi5kYjdiYTljM2MyNjczNDY2MGNlMzA5NGQwNDRjNjFmMGIyMjA5YmM5
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTQtMDgtMTQgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdIEludHJvZHVjZSBFV2ViS2l0X0V4dGVuc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9l
ZmwvbWFpbi5jOiBBZGRlZCB4IG9wdGlvbiB0byB0ZXN0IGV4dGVuc2lvbiBwYXRoCisgICAgICAg
ICh3aW5kb3dfY3JlYXRlKToKKyAgICAgICAgKGVsbV9tYWluKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0OgorICAgICAgICBBZGRlZCBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIGludG8gRUZMV2ViS2l0
MlB1YmxpY0FQSS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6
CisgICAgICAgIEFkZGVkIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2VmbC8gaW50byBFRkwgZXhjZXB0aW9ucy4KKwogMjAxNC0wOC0xMyAgQWtvcyBLaXNzICA8
YWtpc3NAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtFRkxdIEJ1bXAgdXAgYW5kIHBhdGNo
IGRlcGVuZGVuY2llcyB0byBhbGxvdyBidWlsZGluZyBmb3IgYWFyY2g2NApkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMKaW5kZXggNTZmY2Y0NzA3YmMyZTA1YTc3OWIyNTc0MDBhODdlNTIxMDNlY2VhYy4uMTNhOTcx
MTcwMTgxMDU5MWI4NWQxMmU1OThmY2NkN2I4MjgxNTVlMyAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBA
IC00Niw2ICs0Niw3IEBAIHN0YXRpYyBpbnQgdmVyYm9zZSA9IDE7CiBzdGF0aWMgRWluYV9MaXN0
ICp3aW5kb3dzID0gTlVMTDsKIHN0YXRpYyBjaGFyICpldmFzX2VuZ2luZV9uYW1lID0gTlVMTDsK
IHN0YXRpYyBjaGFyICp1c2VyX2FnZW50X3N0cmluZyA9IE5VTEw7CitzdGF0aWMgY2hhciAqZXh0
ZW5zaW9uc19wYXRoID0gTlVMTDsKIHN0YXRpYyBjaGFyICpiYWNrZ3JvdW5kX2NvbG9yX3N0cmlu
ZyA9IE5VTEw7CiBzdGF0aWMgRWluYV9Cb29sIGVuY29kaW5nX2RldGVjdG9yX2VuYWJsZWQgPSBF
SU5BX0ZBTFNFOwogc3RhdGljIEVpbmFfQm9vbCBmcmFtZV9mbGF0dGVuaW5nX2VuYWJsZWQgPSBF
SU5BX0ZBTFNFOwpAQCAtMTQ5LDYgKzE1MCw4IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQg
b3B0aW9ucyA9IHsKICAgICAgICAgICAgICgncycsICJ3aW5kb3ctc2l6ZSIsICJXaW5kb3cgc2l6
ZSBpbiBmb2xsb3dpbmcgZm9ybWF0ICh3aWR0aCl4KGhlaWdodCkuIiksCiAgICAgICAgIEVDT1JF
X0dFVE9QVF9TVE9SRV9TVFIKICAgICAgICAgICAgICgndScsICJ1c2VyLWFnZW50IiwgIlVzZXIg
YWdlbnQgdG8gc2V0LiIpLAorICAgICAgICBFQ09SRV9HRVRPUFRfU1RPUkVfU1RSCisgICAgICAg
ICAgICAoJ3gnLCAiZXh0ZW5zaW9ucy1wYXRoIiwgIlRoZSBwYXRoIHdoaWNoIGV4dGVuc2lvbnMg
YXJlIHN0b3JlZC4iKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX0RPVUJMRQogICAgICAg
ICAgICAgKCdyJywgImRldmljZS1waXhlbC1yYXRpbyIsICJSYXRpbyBiZXR3ZWVuIHRoZSBDU1Mg
dW5pdHMgYW5kIGRldmljZSBwaXhlbHMuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9DQUxMQkFD
S19OT0FSR1MKQEAgLTE5MjYsNyArMTkyOSwxNCBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndp
bmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
CiAgICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdpbmRvdy0+ZWxtX3dpbmRv
dyk7CiAgICAgRXZhc19TbWFydCAqc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmZXdrVmll
d0NsYXNzLT5zYyk7Ci0gICAgRXdrX0NvbnRleHQgKmNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmll
d19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKKyAgICBF
d2tfQ29udGV4dCAqY29udGV4dDsKKyAgICBpZiAob3BlbmVyKQorICAgICAgICBjb250ZXh0ID0g
ZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKTsKKyAgICBlbHNlIGlmIChleHRlbnNpb25zX3Bh
dGgpCisgICAgICAgIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3Bh
dGgoZXh0ZW5zaW9uc19wYXRoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQgPSBld2tfY29u
dGV4dF9kZWZhdWx0X2dldCgpOworCiAgICAgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9w
ZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5lcikgOiBld2tfcGFnZV9ncm91cF9j
cmVhdGUoIiIpOwogICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZh
cywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAKQEAgLTIwNTIsNiArMjA2Miw3IEBAIGVs
bV9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxV
RV9TVFIoZXZhc19lbmdpbmVfbmFtZSksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIo
d2luZG93X3NpemVfc3RyaW5nKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1NUUih1c2Vy
X2FnZW50X3N0cmluZyksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIoZXh0ZW5zaW9u
c19wYXRoKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0RPVUJMRShkZXZpY2VfcGl4ZWxf
cmF0aW8pLAogICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfQk9PTChxdWl0T3B0aW9uKSwKICAg
ICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0woZW5jb2RpbmdfZGV0ZWN0b3JfZW5hYmxlZCks
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hs
aXN0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdAppbmRl
eCA1NDkzYzU5NGFhMzhjZGNlMWU5MzJmMjc2ZjI4MzRlNTE1YmE4ZTFiLi4zNDNjM2I4NTEzZGY1
OTViYzgwNzYwZDU1MmIyNTBiZWVmZGYyNzYxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKQEAgLTEwNyw3ICsxMDcsOCBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgciJ8TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLyIsCiAgICAgICAgIH0s
CiAgICAgICAgICJFRkxXZWJLaXQyUHVibGljQVBJIjogewotICAgICAgICAgICAgImZpbGVuYW1l
IjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iCisgICAgICAgICAgICAiZmls
ZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC8iCisgICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC8iCiAgICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsLyIsCiAgICAgICAgIH0sCiAgICAgICAgICJFRkxXZWJLaXQyUGxhdGZv
cm1TcGVjaWZpYyI6IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRl
eCBmZWNmZTA0ZjBmNzM4OTg5YTk2OTY3Y2FmODZiMDhiYzUwYmFjOWM4Li5iZjQ2MzY1YzZkNGE3
MDM2MDIwNWZmNDgwNjkxNDM2OTNkODY4ZDY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5CkBAIC0xOTAsNiArMTkwLDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0g
WwogICAgIChbIyBUaGUgRUZMIEFQSXMgdXNlIEVGTCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1
ZGVzCiAgICAgICAjIGJvdGggbG93ZXItY2FzZWQgYW5kIGNhbWVsLWNhc2VkLCB1bmRlcnNjb3Jl
LXNwYXJhdGVkCiAgICAgICAjIHZhbHVlcy4KKyAgICAgICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIiwKICAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC8iXSwKICAgICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nIiwKICAgICAgICIt
cmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUiXSksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237149</attachid>
            <date>2014-08-26 07:34:53 -0700</date>
            <delta_ts>2014-09-01 17:24:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140826233444.patch</filename>
            <type>text/plain</type>
            <size>44290</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmY2YzdkZmEyOTRhYzU4
YmM3YjE2NGVmMjg3OTBhMzQ5YzJkN2Q0OS4uYzEwOTUxYWU0Yzk4OGVlZTEzN2U0OTE3OWUzZjkw
NjlmYTk2MDc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE0LTA4LTI2ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAorICAgICAgICBbRUZMXSBJbnRyb2R1
Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV3ZWJLaXQyIGRvZXMgbm90IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gZXh0ZW5kIFdlYlByb2Nlc3MuCisgICAgICAgIEFsdGhvdWdoIHRoZXJlIGlzIGV3a19jb250
ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKCkgaW4gZXdlYmtpdDIgQVBJcywKKyAg
ICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBjYW4gbm90IG1ha2UgYnVuZGxlIG9iamVjdCB3
aXRob3V0IHRvdWNoaW5nIFdLIEFQSXMKKyAgICAgICAgd2hpY2ggZXdlYmtpdDIgZG9lcyBub3Qg
ZXhwb3NlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBFV2ViS2l0X0V4dGVuc2lv
biwgYmFzaWMgc3RydWN0dXJlIGZvciB0aGUgZXh0ZW5zaW9uIG9mIFdlYlByb2Nlc3MuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgQWRkZWQgZmlsZXMgZm9yIHRoZSBF
V2ViS2l0X0V4dGVuc2lvbiBhbmQgaW5zdGFsbCB0aGVtIHByb3Blcmx5LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKEV3a0NvbnRleHQ6OkV3
a0NvbnRleHQpOgorICAgICAgICAoYnVuZGxlUGF0aEZvckV4dGVuc2lvbik6CisgICAgICAgIChF
d2tDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OnNldE1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayk6CisgICAgICAgIChld2tfY29udGV4dF9uZXdf
d2l0aF9leHRlbnNpb25zX3BhdGgpOgorICAgICAgICBEZWxldGVkIGJlY2F1c2UgZXdlYmtpdDIg
ZG9lcyBub3QgaGF2ZSBhIHdheSB0byBtYWtlIGluamVjdGVkIGJ1bmRsZS4KKyAgICAgICAgSW5z
dGVhZCwgRXdrX0V4dGVuc2lvbiB3aWxsIGNvdmVyIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdGllcy4K
KyAgICAgICAgKGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3
a0NvbnRleHQ6OmV4dGVuc2lvbnNQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9z
YW1wbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHA6IFJlbmFtZWQg
ZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGggdG8gZXdrX2NvbnRleHRf
bmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoLgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRl
bnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6YXBwZW5kKToKKyAgICAg
ICAgKEV3a0V4dGVuc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKGV3a19leHRlbnNpb25fY2xpZW50
X2FkZCk6CisgICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OkV3a0V4dGVuc2lvbik6
CisgICAgICAgIChFd2tFeHRlbnNpb246On5Fd2tFeHRlbnNpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6RXh0ZW5zaW9uTWFuYWdlckVmbDo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6RXh0ZW5z
aW9uTWFuYWdlckVmbDo6RXh0ZW5zaW9uTWFuYWdlckVmbCk6CisgICAgICAgIChXZWJLaXQ6OkV4
dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZs
L0V4dGVuc2lvbk1hbmFnZXJFZmwuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9lZmwv
V2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZUlu
aXRpYWxpemUpOgorICAgICAgICAqIGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW46IEFkZGVk
LgorCisyMDE0LTA4LTI2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKwog
ICAgICAgICBbRUZMXSBCdWlsZCBicmVhayB1c2luZyBjbGFuZwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjQ1CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggMDUxMjc5Yjk2ZGI3MmMxYzhlMDIxMzYzY2ViYmM0ODgwNmZkMjM3YS4uN2Ni
YWFhMjdkODFlNmU1ZTk2MDMzNjYxODIyMDhlNjExNTVkNjNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKQEAgLTE3Myw2ICsxNzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAg
ICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAog
CisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3Bw
CisKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5j
cHAKIAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5p
eC5jcHAKQEAgLTE5NSw2ICsxOTcsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2VmbC9FeHRl
bnNpb25NYW5hZ2VyRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2Vi
UHJvY2Vzc0VmbC5jcHAKICAgICBXZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAK
IApAQCAtMjQzLDYgKzI0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3Vu
aXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBA
IC0zNTYsNiArMzYwLDcgQEAgc2V0KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiApCiAKIGNv
bmZpZ3VyZV9maWxlKGVmbC9ld2Via2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktp
dDIvZWZsL2V3ZWJraXQyLnBjIEBPTkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4
dGVuc2lvbi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4
dGVuc2lvbi5wYyBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFr
ZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtl
IEBPTkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5p
biAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5j
bWFrZSBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgu
aW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUvRVdlYktpdDIuaCkKQEAg
LTM5NywxMyArNDAyLDI3IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2luZG93X2ZlYXR1cmVzLmgi
CiApCiAKK3NldChFV2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSUworICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRf
RXh0ZW5zaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oIgorKQorCitpbnN0YWxsKEZJ
TEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VU
UFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKK2luc3RhbGwoRklMRVMgJHtFV2Vi
S2l0Ml9FeHRlbnNpb25fSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VU
UFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS9leHRlbnNpb24pCisKIGluc3RhbGwo
RklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBERVNUSU5B
VElPTiBsaWIvcGtnY29uZmlnKQoraW5zdGFsbChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dl
YktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmln
KQogaW5zdGFsbChGSUxFUwogICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZs
L0VXZWJLaXQyQ29uZmlnLmNtYWtlCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlCiAgICAgICAgIERFU1RJTkFUSU9OIGxp
Yi9jbWFrZS9FV2ViS2l0MikKIAotaW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0hFQURFUlN9IERF
U1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lP
Tl9NQUpPUn0pCitzZXQoRVdFQktJVF9FWFRFTlNJT05fSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RB
TExfRElSfS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS8i
IENBQ0hFIFBBVEggIkFic29sdXRlIHBhdGggdG8gaW5zdGFsbCBpbmplY3RlZCBidW5kbGUgd2hp
Y2ggY29udHJvbHMgdGhlIGV4dGVuc2lvbiBsaWJyYXJ5IikKKworYWRkX2xpYnJhcnkoZXdlYmtp
dF9leHRlbnNpb24gU0hBUkVEICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbC9XZWJJbmpl
Y3RlZEJ1bmRsZU1haW5FZmwuY3BwIikKK3RhcmdldF9saW5rX2xpYnJhcmllcyhld2Via2l0X2V4
dGVuc2lvbiBXZWJLaXQyKQorCitpbnN0YWxsKFRBUkdFVFMgZXdlYmtpdF9leHRlbnNpb24gREVT
VElOQVRJT04gIiR7RVdFQktJVF9FWFRFTlNJT05fSU5TVEFMTF9ESVJ9IikKIAogaWYgKEVOQUJM
RV9QTFVHSU5fUFJPQ0VTUykKICAgICBsaXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lOQ0xVREVf
RElSRUNUT1JJRVMKQEAgLTQ0NCwxNiArNDYzLDE4IEBAIHNldChFV0syVW5pdFRlc3RzX0xJQlJB
UklFUwogCiBzZXQoV0VCS0lUMl9FRkxfVEVTVF9ESVIgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzIikKIHNldChURVNUX1JFU09VUkNFU19ESVIgJHtXRUJLSVQyX0VGTF9U
RVNUX0RJUn0vcmVzb3VyY2VzKQotc2V0KFRFU1RfSU5KRUNURURfQlVORExFX0RJUiAke1dFQktJ
VDJfRUZMX1RFU1RfRElSfS9JbmplY3RlZEJ1bmRsZSkKK3NldChURVNUX0VYVEVOU0lPTlNfRElS
ICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L2V4dGVuc2lvbnMpCiBzZXQoV0VCS0lUMl9FRkxfVEVT
VF9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RP
Ull9L1Rlc3RXZWJLaXRBUEkvRVdlYktpdDIpCiAKIGFkZF9kZWZpbml0aW9ucygtRFRFU1RfUkVT
T1VSQ0VTX0RJUj1cIiR7VEVTVF9SRVNPVVJDRVNfRElSfVwiCiAgICAgLURURVNUX0xJQl9ESVI9
XCIke0NNQUtFX0xJQlJBUllfT1VUUFVUX0RJUkVDVE9SWX1cIgogICAgIC1ER1RFU1RfTElOS0VE
X0FTX1NIQVJFRF9MSUJSQVJZPTEKICAgICAtRExJQkVYRUNESVI9XCIke0VYRUNfSU5TVEFMTF9E
SVJ9XCIKKyAgICAtREVXRUJLSVRFWFRFTlNJT05ESVI9XCIke0NNQUtFX0lOU1RBTExfUFJFRklY
fS8ke0VXRUJLSVRfRVhURU5TSU9OX0lOU1RBTExfRElSfVwiCiAgICAgLURXRUJQUk9DRVNTTkFN
RT1cIldlYlByb2Nlc3NcIgogICAgIC1EUExVR0lOUFJPQ0VTU05BTUU9XCJQbHVnaW5Qcm9jZXNz
XCIKICAgICAtRE5FVFdPUktQUk9DRVNTTkFNRT1cIk5ldHdvcmtQcm9jZXNzXCIKKyAgICAtREJV
TkRMRU5BTUVGT1JFWFRFTlNJT049XCJsaWJld2Via2l0X2V4dGVuc2lvbi5zb1wiCiAgICAgLURH
VEVTVF9IQVNfUlRUST0wCiApCiAKQEAgLTUwNiw4ICs1MjcsNyBAQCBpZiAoRU5BQkxFX0FQSV9U
RVNUUykKICAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdE5hbWV9ICR7RVdLMlVu
aXRUZXN0c19MSUJSQVJJRVN9IGV3azJVbml0VGVzdFV0aWxzKQogICAgIGVuZGZvcmVhY2ggKCkK
IAotICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFNIQVJF
RCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAp
Ci0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2Ft
cGxlIFdlYktpdDIpCisgICAgYWRkX2xpYnJhcnkoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVT
YW1wbGUgU0hBUkVEICR7VEVTVF9FWFRFTlNJT05TX0RJUn0vZXh0ZW5zaW9uX3NhbXBsZS5jcHAp
CiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NQRUxMQ0hFQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggNjY2Nzc1NDE5NmU0MTUw
MmZkMTM5MWRlZTI1NTUzNGQ0NTliZDliYy4uZWRkZDNkZmE2MDIwMTQ4YWNiYTkxZDE3NDhmNmE2
OTU4YjJlODY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW5saW5lIENvbnRleHRNYXAm
IGNvbnRleHRNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLUV3a0NvbnRleHQ6OkV3a0NvbnRl
eHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCitFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoKQogICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RhdGFiYXNlTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEV3
a0RhdGFiYXNlTWFuYWdlcj4oV0tDb250ZXh0R2V0RGF0YWJhc2VNYW5hZ2VyKGNvbnRleHQpKSkK
ICAgICAsIG1fc3RvcmFnZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxFd2tTdG9yYWdlTWFuYWdl
cj4oV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihjb250ZXh0KSkpCkBAIC03Myw2
ICs3Myw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAg
ICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9qc0dsb2Jh
bENvbnRleHQobnVsbHB0cikKKyAgICAsIG1fZXh0ZW5zaW9uc1BhdGgoZXh0ZW5zaW9uc1BhdGgp
CiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNvbnRleHRNYXAoKS5hZGQo
Y29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKQEAgLTk1LDYgKzk2LDE3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0
UmVmIGNvbnRleHQpCiAKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZS5jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUudXNlckRhdGEgPSBudWxscHRyOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnRWMSBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQp
KTsKKworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAxOworICAgIGNsaWVudC5iYXNlLmNsaWVu
dEluZm8gPSB0aGlzOworICAgIGNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIGNsaWVudC5k
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBjbGllbnQuZ2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhOworCisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwogfQogCiBFd2tDb250ZXh0Ojp+RXdr
Q29udGV4dCgpCkBAIC0xMjAsMTQgKzEzMiwyOCBAQCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3
a0NvbnRleHQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFk
b3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8RXdrQ29u
dGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRo
KQorc3RhdGljIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCkKK3sKKyAgICBTdHJpbmcg
YnVuZGxlUGF0aEZvckV4dGVuc2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChTdHJpbmc6OmZyb21VVEY4KFRFU1RfTElCX0RJUiksIEJVTkRMRU5BTUVGT1JFWFRFTlNJT04p
OworICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pKQor
ICAgICAgICByZXR1cm4gYnVuZGxlUGF0aEZvckV4dGVuc2lvbjsKKworICAgIGJ1bmRsZVBhdGhG
b3JFeHRlbnNpb24gPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpm
cm9tVVRGOChFV0VCS0lURVhURU5TSU9ORElSKSwgQlVORExFTkFNRUZPUkVYVEVOU0lPTik7Cisg
ICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aEZvckV4dGVuc2lvbikpCisgICAg
ICAgIHJldHVybiBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uOworCisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Cit9CisKK1Bhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGgpCiB7ICAgCi0gICAgaWYgKCFmaWxlRXhpc3RzKGlu
amVjdGVkQnVuZGxlUGF0aCkpCisgICAgU3RyaW5nIGJ1bmRsZVBhdGggPSBidW5kbGVQYXRoRm9y
RXh0ZW5zaW9uKCk7CisgICAgaWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwYXRoID0gYWRvcHRXSyh0b0Nv
cGllZEFQSShpbmplY3RlZEJ1bmRsZVBhdGgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gcGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoYnVuZGxlUGF0aCkpOwogCi0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVj
dGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQ
YXRoKHBhdGguZ2V0KCkpKS5nZXQoKSwgZXh0ZW5zaW9uc1BhdGgpKTsKIH0KIAogRXdrQ29udGV4
dCogRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKQpAQCAtMzY0LDYgKzM5MCwxMSBAQCB2b2lk
IEV3a0NvbnRleHQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tDb250ZXh0UmVmLCBXSwogICAgIHRvRXdrQ29udGV4dChjbGllbnRJbmZvKS0+cHJvY2Vz
c1JlY2VpdmVkTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJv
ZHksIHJldHVybkRhdGEpOwogfQogCitXS1R5cGVSZWYgRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPih0b0NvcGllZEFQ
SSh0b0V3a0NvbnRleHQoY2xpZW50SW5mbyktPmV4dGVuc2lvbnNQYXRoKCkpKTsKK30KKwogdm9p
ZCBFd2tDb250ZXh0OjpzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0Nv
bnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiBjYWxsYmFjaywgdm9pZCogdXNl
ckRhdGEpCiB7CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNl
ckRhdGEgPSB1c2VyRGF0YTsKQEAgLTM3MSwxOSArNDAyLDYgQEAgdm9pZCBFd2tDb250ZXh0Ojpz
ZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9G
cm9tX0kKICAgICBpZiAobV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2Fs
bGJhY2sgPT0gY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9jYWxsYmFj
a0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2spIHsKLSAgICAgICAgV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7Ci0gICAgICAgIG1lbXNldCgmY2xpZW50
LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KLSAgICAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDE7
Ci0gICAgICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZTsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlOwotCi0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKLSAgICB9IGVsc2UgaWYgKCFjYWxs
YmFjaykKLSAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0
LmdldCgpLCBudWxscHRyKTsKLQogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlLmNhbGxiYWNrID0gY2FsbGJhY2s7CiB9CiAKQEAgLTQzMyw3ICs0NTEsNyBAQCBFd2tf
Q29udGV4dCogZXdrX2NvbnRleHRfbmV3KCkKICAgICByZXR1cm4gRXdrQ29udGV4dDo6Y3JlYXRl
KCkubGVha1JlZigpOwogfQogCi1Fd2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5q
ZWN0ZWRfYnVuZGxlX3BhdGgoY29uc3QgY2hhciogcGF0aCkKK0V3a19Db250ZXh0KiBld2tfY29u
dGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciogcGF0aCkKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGF0aCwgbnVsbHB0cik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IGJjN2IwNTRj
N2ZkZmQ4OTUwZTdiNjM2MmJiNzJmNDRkZTNmNDE5MTYuLmUxNzY3MGI5MTVjODliZGNmNjVjYzFj
MDQ3YjZlZTM0MTVmMWFhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3
a19jb250ZXh0X2RlZmF1bHRfZ2V0KHZvaWQpOwogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmpl
Y3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqCiAgKiBAc2VlIGV3a19vYmpl
Y3RfdW5yZWYKLSAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3Bh
dGgKKyAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoCiAgKi8KIEVB
UEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ldyh2b2lkKTsKIApAQCAtMTc4LDE0ICsxNzgs
MTcgQEAgRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3KHZvaWQpOwogICoKICAqIFRo
ZSByZXR1cm5lZCBFd2tfQ29udGV4dCBvYmplY3QgQGIgc2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVy
IHVzZS4KICAqCi0gKiBAcGFyYW0gcGF0aCBwYXRoIG9mIGluamVjdGVkIGJ1bmRsZSBsaWJyYXJ5
CisgKiBAcGFyYW0gcGF0aCBkaXJlY3RvcnkgcGF0aCBvZiBleHRlbnNpb25zCiAgKgogICogQHJl
dHVybiBFd2tfQ29udGV4dCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUK
ICAqCisgKiBAbm90ZSBBbGwgc2hhcmVkIG9iamVjdHMgd2hpY2ggaGF2ZSBld2tfZXh0ZW5zaW9u
X2luaXQoKSBpbiB0aGUgZ2l2ZW4gQGEgcGF0aCB3aWxsIGJlIGxvYWRlZC4KKyAqCiAgKiBAc2Vl
IGV3a19vYmplY3RfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRleHRfbmV3CisgKiBAc2VlIEV3a19F
eHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbgogICovCi1FQVBJIEV3a19Db250ZXh0ICpld2tf
Y29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aChjb25zdCBjaGFyICpwYXRoKTsK
K0VBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChj
b25zdCBjaGFyICpwYXRoKTsKIAogLyoqCiAgKiBHZXRzIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBt
YW5hZ2VyIGluc3RhbmNlIGZvciB0aGlzIEBhIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggMTcy
OWM0YTEyYTIyN2ZjMGEzMmQ0YTk3NTYxNmI2MDVhN2Y5ZDQ1OS4uOGFjZmVhZGQ1ZGIyZmNlMjMz
NGQ0NWNjZmQzMGJmZTFlMmI0ZDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtODYsNiArODYsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhFd2tfVExTX0Vycm9yX1BvbGlj
eSBUTFNFcnJvclBvbGljeSkgY29uc3Q7CiAKKyAgICBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQ
YXRoKCkgeyByZXR1cm4gbV9leHRlbnNpb25zUGF0aDsgfQorCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1Z2luUGF0aChjb25zdCBTdHJp
bmcmKTsKICNlbmRpZgpAQCAtOTYsMTEgKzk4LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29u
dGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiLCB2b2lkKik7CiAgICAgdm9pZCBw
cm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSk7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRSZWYpOworICAgIGV4
cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQ
YXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZpY29uRGF0YWJhc2UoKTsKIApA
QCAtMTIxLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9q
c0dsb2JhbENvbnRleHQ7CiAKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zUGF0aDsKKwogICAgIHN0
cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVf
Q2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRf
YnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1YzczMzNlYzVkNGVkMzhkYTljMDYyNDBh
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9i
dW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4
dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCi17Ci19Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25f
c2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGQzYjQ0Y2IyZjAwM2QyZTA1NWY4ODE0MDhiNDc4ZmE4
YzNlNGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApAQCAtMCwwICsxLDM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkVXZWJLaXRfRXh0
ZW5zaW9uLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
dm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVuc2lvbiAqKQoreworfQorCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCmluZGV4IDNmMTQ3
MGEwOWRhYzgxNTQ3YzZhNWY2MTg4YjNjMTg2ODM2ZWUxNjEuLjhhMzYyOTY1ZTIxZWRiNWQ1MThk
NDU3MDE3ZDIzOTFiZTdlNGUxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKQEAgLTIzMCw5
ICsyMzAsOSBAQCBURVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXcpCiAgICAg
ZXdrX29iamVjdF91bnJlZihjb250ZXh0KTsKIH0KIAotVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwg
ZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgpCitURVNUX0YoRVdLMkNv
bnRleHRUZXN0LCBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgpCiB7Ci0gICAg
RXdrX0NvbnRleHQqIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5k
bGVfcGF0aChlbnZpcm9ubWVudC0+aW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSk7CisgICAgRXdrX0Nv
bnRleHQqIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoZW52
aXJvbm1lbnQtPmluamVjdGVkQnVuZGxlU2FtcGxlKCkpOwogICAgIEFTU0VSVF9UUlVFKGNvbnRl
eHQpOwogICAgIGV3a19vYmplY3RfdW5yZWYoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRl
bnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9FV2ViS2l0X0V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YmUzNTMzNTE2NGUwZjc0MzQ3Mzhh
Mjk5YTg0NjM1NWMzMGYxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaApAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBFV2ViS2l0X0V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgaGVhZGVy
IGZpbGVzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGV3ZWJraXQyLWV4dGVuc2lvbi4KKyAqCisgKiBF
V2ViS2l0X0V4dGVuc2lvbiBpcyB0aGUgd2F5IHRvIGV4dGVuZCBXZWJQcm9jZXNzIG9mIGV3ZWJr
aXQyLgorICoKKyAqIEluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgZXh0ZW5zaW9uLCAKKyAqIEZpcnN0
LCBld2tfZXh0ZW5zaW9uX2luaXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgc2hhcmVkIG9i
amVjdCBsaWtlIGJlbG93OgorICoKKyAqIEBjb2RlCisgKiAjaW5jbHVkZSAiRVdlYktpdF9FeHRl
bnNpb24uaCIKKyAqIAorICogdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVuc2lvbiAq
ZXh0ZW5zaW9uKQorICogeworICogICAgLy8gcHJvdmlkZSBFd2tfRXh0ZW5zaW9uX0NsaWVudCBj
YWxsYmFja3MgYXMgY2xpZW50LgorICogICAgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKGV4dGVu
c2lvbiwgJmNsaWVudCk7CisgKiB9CisgKiBAZW5kY29kZQorICoKKyAqIEFuZCBjb21waWxlcyBD
IG9yIEMrKyBmaWxlcyBhcyBzaGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6CisgKgorICogQHZlcmJh
dGltCisgKiBnY2MgLW8gbGlic2FtcGxlLnNvIHNhbXBsZS5jIC1zaGFyZWQgLWZQSUMgYHBrZy1j
b25maWcgLS1jZmxhZ3MgLS1saWJzIGVpbmEgZXdlYmtpdDItZXh0ZW5zaW9uYAorICogQGVuZHZl
cmJhdGltCisgKiAKKyAqIFRoZW4sIGluc3RhbGwgdGhhdCBvYmplY3QgaW50byB0aGUgcGF0aCB3
aGljaCBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoKSBzcGVjaWZpZXMuCisg
KgorICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgKKyAqIEBzZWUg
ZXdrX2V4dGVuc2lvbl9jbGllbnRfc2V0CisgKiBAc2VlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6
ZV9GdW5jdGlvbgorICovCisKKyNpZm5kZWYgRVdlYktpdF9FeHRlbnNpb25faAorI2RlZmluZSBF
V2ViS2l0X0V4dGVuc2lvbl9oCisKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uLmgiCisKKyNlbmRp
ZiAvLyBFV2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWJkNzQzMDBkYWQ5ZDU3OGMxMGQ3ZTlmZjkxMjBiNjUwNWYyODk1NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3
a19leHRlbnNpb24uaCIKKworI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIEV3a0V4dGVuc2lvbjo6YXBwZW5kKEV3a19F
eHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLmFwcGVuZChjbGllbnQp
OworfQorCit2b2lkIEV3a0V4dGVuc2lvbjo6cmVtb3ZlKEV3a19FeHRlbnNpb25fQ2xpZW50KiBj
bGllbnQpCit7CisgICAgbV9jbGllbnRzLnJlbW92ZShtX2NsaWVudHMuZmluZChjbGllbnQpKTsK
K30KKworRWluYV9Cb29sIGV3a19leHRlbnNpb25fY2xpZW50X2FkZChFd2tfRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGV4dGVuc2lvbiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChjbGllbnQsIGZhbHNlKTsKKworICAgIGV4dGVuc2lvbi0+YXBw
ZW5kKGNsaWVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19leHRl
bnNpb25fY2xpZW50X2RlbChFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24sIEV3a19FeHRlbnNpb25f
Q2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV4
dGVuc2lvbiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjbGll
bnQsIGZhbHNlKTsKKworICAgIGV4dGVuc2lvbi0+cmVtb3ZlKGNsaWVudCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVk
NzhiOGJmMjY0NTM3MTlhNWE5YzIyNWM1OWJhZmUzYmI2YjQyNzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4
dGVuc2lvbi5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvKioKKyAqIEBmaWxlICAgIGV3a19leHRlbnNpb24uaAorICogQGJyaWVmICAgRGVzY3Jp
YmVzIHRoZSBFd2tfRXh0ZW5zaW9uIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19leHRlbnNpb25f
aAorI2RlZmluZSBld2tfZXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBFd2tQ
YWdlIEV3a19QYWdlOworCisvKioKKyAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbi4KKyAqLwordHlw
ZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CisKKy8qKgorICogRGVjbGFy
ZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24uCisgKgorICogQGJyaWVmICBUeXBl
IGRlZmluaXRpb24gZm9yIHRoZSBlbnRyeSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIEBwYXJh
bSBleHRlbnNpb24gdGhlIGV4dGVuc2lvbiBpbnN0YW5jZSBoZWxwcyB0aGUgY29tbXVuaWNhdGlv
biBiZXR3ZWVuIFdlYlByb2Nlc3MgYW5kIHlvdXIgZXh0ZW5zaW9uIGxpYnJhcnkuCisgKiBAcGFy
YW0gcmVzZXJ2ZWQgZXh0cmEgcGFyYW1ldGVyIGZvciB0aGUgZnV0dXJlLiBOVUxMIGlzIGZpbmUs
IG5vdy4KKyAqCisgKi8KK3R5cGVkZWYgdm9pZCAqKCpFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVf
RnVuY3Rpb24pKEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbiwgdm9pZCAqcmVzZXJ2ZWQpOworCitz
dHJ1Y3QgRXdrRXh0ZW5zaW9uQ2xpZW50IHsKKyAgICBpbnQgdmVyc2lvbjsKKyAgICB2b2lkICpk
YXRhOworfTsKK3R5cGVkZWYgc3RydWN0IEV3a0V4dGVuc2lvbkNsaWVudCBFd2tfRXh0ZW5zaW9u
X0NsaWVudDsKKworLyoqCisgKiBBZGQgKHJlZ2lzdGVyKSBhIGNsaWVudCB3aGljaCBjb250YWlu
cyBhIHNldmVyYWwgY2FsbGJhY2tzIHRvIHRoZSBleHRlbnNpb24uCisgKgorICogQHBhcmFtIGV4
dGVuc2lvbiBleHRlbnNpb24gdG8gYXR0YWNoIGNsaWVudCB0bworICogQHBhcmFtIGNsaWVudCBj
bGllbnQgdG8gYWRkIHRvIHRoZSBleHRlbnNpb24KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFkZCBh
IGNsaWVudCwgd2hpY2ggY29udGFpbnMgc2V2ZXJhbCBjYWxsYmFja3MgcmVjZWl2aW5nIGV2ZW50
cworICogZnJvbSBXZWJQcm9jZXNzIHNpZGUsIHRvIGEgQHAgZXh0ZW5zaW9uLgorICoKKyAqIEBz
ZWUgZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19leHRl
bnNpb25fY2xpZW50X2FkZChFd2tfRXh0ZW5zaW9uICpleHRlbnNpb24sIEV3a19FeHRlbnNpb25f
Q2xpZW50ICpjbGllbnQpOworCisvKioKKyAqIERlbGV0ZSBhIGNsaWVudCBmcm9tIHRoZSBleHRl
bnNpb24uCisgKgorICogQHBhcmFtIGV4dGVuc2lvbiBleHRlbnNpb24gdG8gZGVsZXRlIGNsaWVu
dAorICogQHBhcmFtIGNsaWVudCBjbGllbnQgd2hpY2ggY29udGFpbnMgdmVyc2lvbiwgZGF0YSBh
bmQgY2FsbGJhY2tzLgorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2NsaWVudF9k
ZWwoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAqY2xpZW50
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19leHRl
bnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY2NTFmYTgzNTFhNDZjMTc4Nzg5MjY3M2M3N2U4Y2JjM2ZjM2M1YmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gK
KyNkZWZpbmUgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK30KKworY2xh
c3MgRXdrRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZSopIHsgfQorICAgIH5Fd2tFeHRlbnNpb24oKSB7IH0KKworICAg
IHZvaWQgYXBwZW5kKEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpOworICAgIHZvaWQgcmVt
b3ZlKEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpOworCitwcml2YXRlOgorICAgIFZlY3Rv
cjxFd2tfRXh0ZW5zaW9uX0NsaWVudCo+IG1fY2xpZW50czsKK307CisKKyNlbmRpZiAvLyBld2tf
ZXh0ZW5zaW9uX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGY5NmM0YmI2NzhhNjQ2
OGUzYjRhNjBkODc3OTA2NzkwOGVhMzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZsLmgiCisKKyNpbmNsdWRlICJNb2R1bGUuaCIK
KyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uLmgi
CisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworRXh0ZW5zaW9uTWFuYWdlckVmbCYgRXh0ZW5zaW9uTWFuYWdlckVmbDo6c2hh
cmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD4g
ZXh0ZW5zaW9uTWFuYWdlcjsKKyAgICByZXR1cm4gZXh0ZW5zaW9uTWFuYWdlcjsKK30KKworRXh0
ZW5zaW9uTWFuYWdlckVmbDo6RXh0ZW5zaW9uTWFuYWdlckVmbCgpCit7Cit9CisKK3ZvaWQgRXh0
ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJl
ZiB1c2VyRGF0YSkKK3sKKyAgICBBU1NFUlQoIW1fZXh0ZW5zaW9uKTsKKworICAgIG1fZXh0ZW5z
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxFd2tFeHRlbnNpb24+KHRvSW1wbChidW5kbGUpKTsKKwor
ICAgIFN0cmluZyBleHRlbnNpb25zRGlyZWN0b3J5ID0gdG9JbXBsKHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPih1c2VyRGF0YSkpLT5zdHJpbmcoKTsKKyAgICBBU1NFUlQoIWV4dGVuc2lvbnNEaXJl
Y3RvcnkuaXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gV2Vi
Q29yZTo6bGlzdERpcmVjdG9yeShleHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkgeworICAg
ICAgICAgICAgYXV0byBtb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0
aHNbaV0pOworICAgICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0
aW9uIGluaXRpYWxpemVGdW5jdGlvbiA9IG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPEV3a19FeHRl
bnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbj4oImV3a19leHRlbnNpb25faW5pdCIpOworICAgICAg
ICAgICAgaWYgKCFpbml0aWFsaXplRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBpbml0aWFsaXplRnVuY3Rpb24obV9leHRlbnNpb24uZ2V0KCksIG51bGxw
dHIgLyogcmVzZXJ2ZWQgZm9yIHRoZSBmdXR1cmUgKi8pOworICAgICAgICAgICAgbV9leHRlbnNp
b25Nb2R1bGVzLmFwcGVuZChtb2R1bGUucmVsZWFzZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9u
TWFuYWdlckVmbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFu
YWdlckVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmODJlNTliNTk3ZTI0MzYzZmJmNzI0YTlmNTIyMjkwNzZi
OTk3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRXh0ZW5zaW9uTWFuYWdlckVmbF9oCisjZGVmaW5lIEV4
dGVuc2lvbk1hbmFnZXJFZmxfaAorCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK2NsYXNzIEV3a0V4dGVuc2lvbjsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIE1vZHVsZTsKKworY2xhc3MgRXh0ZW5zaW9uTWFuYWdlckVmbCB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXh0ZW5zaW9uTWFuYWdlckVmbCk7CisKK3B1YmxpYzoK
KyAgICBXS19FWFBPUlQgc3RhdGljIEV4dGVuc2lvbk1hbmFnZXJFZmwmIHNoYXJlZCgpOworICAg
IFdLX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZik7Citwcml2
YXRlOgorICAgIEV4dGVuc2lvbk1hbmFnZXJFZmwoKTsKKworICAgIFZlY3RvcjxXZWJLaXQ6Ok1v
ZHVsZSo+IG1fZXh0ZW5zaW9uTW9kdWxlczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXdrRXh0ZW5z
aW9uPiBtX2V4dGVuc2lvbjsKKworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxFeHRl
bnNpb25NYW5hZ2VyRWZsPjsKK307CisKK30KKworI2VuZGlmIC8vIEV4dGVuc2lvbk1hbmFnZXJF
ZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViSW5qZWN0
ZWRCdW5kbGVNYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYklu
amVjdGVkQnVuZGxlTWFpbkVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YzEwMGVjOTg0ZmUzODM0NGFh
MTMxMjdiM2VlMTA5YjRkZWNiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvZWZsL1dlYkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHAKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIkV4dGVuc2lvbk1hbmFnZXJFZmwuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tC
dW5kbGVJbml0aWFsaXplLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2V4dGVybiAi
QyIgdm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYg
dXNlckRhdGEpCit7CisgICAgRXh0ZW5zaW9uTWFuYWdlckVmbDo6c2hhcmVkKCkuaW5pdGlhbGl6
ZShidW5kbGUsIHVzZXJEYXRhKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2VmbC9l
d2Via2l0Mi1leHRlbnNpb24ucGMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0
ZW5zaW9uLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTZjZGMyZjkzOTVlYmU3Mjk2ZDA1NDhmZWM4MDFm
YzUxZTgzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDIt
ZXh0ZW5zaW9uLnBjLmluCkBAIC0wLDAgKzEsOCBAQAorcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BS
RUZJWEAKK2luY2x1ZGVkaXI9JHtwcmVmaXh9L2luY2x1ZGUKKworTmFtZTogZXdlYmtpdDItZXh0
ZW5zaW9uCitEZXNjcmlwdGlvbjogRXh0ZW5zaW9uIGZvciBXZWJLaXQyL0VGTChld2Via2l0MikK
K1ZlcnNpb246IEBQUk9KRUNUX1ZFUlNJT05ACitSZXF1aXJlczogZWluYQorQ2ZsYWdzOiAtSSR7
aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JA
L2V4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGJiNWNmZGFhYjA1MzQ2ZDM1ZjA2YmQyNjEzZDhiYjI3NmIzYTY5ZjUuLjA5YzQxZWE1
MjZiODQ5NDcwMDkyNjQ0MTgxNTAyMzRkZGY2NWJhY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wOC0yNiAg
Unl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gSW50
cm9kdWNlIEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6IEFkZGVkIHggb3B0aW9u
IHRvIHRlc3QgZXh0ZW5zaW9uIHBhdGguCisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKyAgICAg
ICAgKGVsbV9tYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
d2F0Y2hsaXN0OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvIGludG8gRUZMV2ViS2l0MlB1YmxpY0FQSS4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgIEFkZGVkIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8gaW50byBFRkwgZXhjZXB0
aW9ucy4KKwogMjAxNC0wOC0yNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgYSBsaXR0bGUgbW9yZSBhY2NpZGVudGFsbHkgbGFuZGVkIGNvZGUg
ZnJvbSByMTcyODkxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXggNDg5YjE3ZWRmNjc2NDJiOGNkM2Zj
NzQzODE1NDRhYTYyZDE3NTliNi4uMWQ1NWU5YTk2YjYyNmZkOGE3OTQwYjBjNjIzM2NjNzZmYWY2
MDAyOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBAIC00OCw2ICs0OCw3IEBAIHN0YXRpYyBpbnQgdmVy
Ym9zZSA9IDE7CiBzdGF0aWMgRWluYV9MaXN0ICp3aW5kb3dzID0gTlVMTDsKIHN0YXRpYyBjaGFy
ICpldmFzX2VuZ2luZV9uYW1lID0gTlVMTDsKIHN0YXRpYyBjaGFyICp1c2VyX2FnZW50X3N0cmlu
ZyA9IE5VTEw7CitzdGF0aWMgY2hhciAqZXh0ZW5zaW9uc19wYXRoID0gTlVMTDsKIHN0YXRpYyBj
aGFyICpiYWNrZ3JvdW5kX2NvbG9yX3N0cmluZyA9IE5VTEw7CiBzdGF0aWMgRWluYV9Cb29sIGVu
Y29kaW5nX2RldGVjdG9yX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVpbmFfQm9vbCBm
cmFtZV9mbGF0dGVuaW5nX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwpAQCAtMTU3LDYgKzE1OCw4IEBA
IHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9ucyA9IHsKICAgICAgICAgICAgICgncycs
ICJ3aW5kb3ctc2l6ZSIsICJXaW5kb3cgc2l6ZSBpbiBmb2xsb3dpbmcgZm9ybWF0ICh3aWR0aCl4
KGhlaWdodCkuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9TVFIKICAgICAgICAgICAg
ICgndScsICJ1c2VyLWFnZW50IiwgIlVzZXIgYWdlbnQgdG8gc2V0LiIpLAorICAgICAgICBFQ09S
RV9HRVRPUFRfU1RPUkVfU1RSCisgICAgICAgICAgICAoJ3gnLCAiZXh0ZW5zaW9ucy1wYXRoIiwg
IlRoZSBwYXRoIHdoaWNoIGV4dGVuc2lvbnMgYXJlIHN0b3JlZC4iKSwKICAgICAgICAgRUNPUkVf
R0VUT1BUX1NUT1JFX0RPVUJMRQogICAgICAgICAgICAgKCdyJywgImRldmljZS1waXhlbC1yYXRp
byIsICJSYXRpbyBiZXR3ZWVuIHRoZSBDU1MgdW5pdHMgYW5kIGRldmljZSBwaXhlbHMuIiksCiAg
ICAgICAgIEVDT1JFX0dFVE9QVF9DQUxMQkFDS19OT0FSR1MKQEAgLTIxMDMsNyArMjEwNiwxNCBA
QCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5l
ciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0
X2V2YXNfZ2V0KHdpbmRvdy0+ZWxtX3dpbmRvdyk7CiAgICAgRXZhc19TbWFydCAqc21hcnQgPSBl
dmFzX3NtYXJ0X2NsYXNzX25ldygmZXdrVmlld0NsYXNzLT5zYyk7Ci0gICAgRXdrX0NvbnRleHQg
KmNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2Nv
bnRleHRfZGVmYXVsdF9nZXQoKTsKKyAgICBFd2tfQ29udGV4dCAqY29udGV4dDsKKyAgICBpZiAo
b3BlbmVyKQorICAgICAgICBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKTsK
KyAgICBlbHNlIGlmIChleHRlbnNpb25zX3BhdGgpCisgICAgICAgIGNvbnRleHQgPSBld2tfY29u
dGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoZXh0ZW5zaW9uc19wYXRoKTsKKyAgICBlbHNl
CisgICAgICAgIGNvbnRleHQgPSBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOworCiAgICAgRXdr
X1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9wZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0
KG9wZW5lcikgOiBld2tfcGFnZV9ncm91cF9jcmVhdGUoIiIpOwogICAgIHdpbmRvdy0+ZXdrX3Zp
ZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7
CiAKQEAgLTIyMzQsNiArMjI0NCw3IEBAIGVsbV9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
CiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIoZXZhc19lbmdpbmVfbmFtZSksCiAgICAg
ICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIod2luZG93X3NpemVfc3RyaW5nKSwKICAgICAgICAg
RUNPUkVfR0VUT1BUX1ZBTFVFX1NUUih1c2VyX2FnZW50X3N0cmluZyksCisgICAgICAgIEVDT1JF
X0dFVE9QVF9WQUxVRV9TVFIoZXh0ZW5zaW9uc19wYXRoKSwKICAgICAgICAgRUNPUkVfR0VUT1BU
X1ZBTFVFX0RPVUJMRShkZXZpY2VfcGl4ZWxfcmF0aW8pLAogICAgICAgICBFQ09SRV9HRVRPUFRf
VkFMVUVfQk9PTChxdWl0T3B0aW9uKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wo
ZW5jb2RpbmdfZGV0ZWN0b3JfZW5hYmxlZCksCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3dhdGNobGlzdAppbmRleCBhNjVlNTdhZjlmYzE0MDBiMjdjMGMzNTJjNDAw
ZTU1NTJkOTlkYTMyLi5lZDgwMmUzMDBlNGYzZjE1ZDdhNGNhNTRhNWYwMjdlNzI4N2Y4MzRhIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKQEAg
LTEwNyw3ICsxMDcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgciJ8TGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsLyIsCiAgICAgICAgIH0sCiAgICAgICAgICJFRkxXZWJLaXQyUHVibGljQVBJ
IjogewotICAgICAgICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC8iCisgICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8iCisgICAgICAgICAgICAgICAgICAgICAgICBy
InxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iCiAgICAgICAgICAgICAgICAgICAg
ICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsLyIsCiAgICAgICAgIH0s
CiAgICAgICAgICJFRkxXZWJLaXQyUGxhdGZvcm1TcGVjaWZpYyI6IHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCAyNTNlYjIzZDRkZWE0YzQ3MGI1YzI3Mzk4OGMw
ZTVjNWNjZmJkYzZjLi4yMzIxYmNkMDMxNDc2YmI1NzFiZjk5NzA1OWNhZjI5YzcwNzZhMDIwIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0xOTAsNiArMTkwLDcg
QEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgIChbIyBUaGUgRUZMIEFQSXMgdXNlIEVG
TCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1ZGVzCiAgICAgICAjIGJvdGggbG93ZXItY2FzZWQg
YW5kIGNhbWVsLWNhc2VkLCB1bmRlcnNjb3JlLXNwYXJhdGVkCiAgICAgICAjIHZhbHVlcy4KKyAg
ICAgICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIiwK
ICAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iXSwKICAgICAgWyItcmVh
ZGFiaWxpdHkvbmFtaW5nIiwKICAgICAgICItcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUiXSks
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237470</attachid>
            <date>2014-09-01 17:24:27 -0700</date>
            <delta_ts>2014-09-22 01:27:03 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug-134921-20140902092420.patch</filename>
            <type>text/plain</type>
            <size>44263</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDQ1YTQ0ODQ1MDRjYjI2
YzIxZTdhZDJmOTE0M2UzZjE3ZTVmZjMzMi4uMmI2NzNmYWZkZWQxZTBjYmY1YTkwZTZiMDIyNDY4
OTY5OGYzMmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE0LTA5LTAxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNl
IEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFd2ViS2l0MiBkb2VzIG5vdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHRv
IGV4dGVuZCBXZWJQcm9jZXNzLgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBld2tfY29udGV4
dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisgICAg
ICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qgd2l0
aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90IGV4
cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNpb24s
IGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUgRVdl
YktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tD
b250ZXh0KToKKyAgICAgICAgKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdr
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAgICAgIChFd2tDb250ZXh0OjpzZXRNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dp
dGhfZXh0ZW5zaW9uc19wYXRoKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIGV3ZWJraXQyIGRv
ZXMgbm90IGhhdmUgYSB3YXkgdG8gbWFrZSBpbmplY3RlZCBidW5kbGUuCisgICAgICAgIEluc3Rl
YWQsIEV3a19FeHRlbnNpb24gd2lsbCBjb3ZlciB0aGUgc2FtZSBmdW5jdGlvbmFsaXRpZXMuCisg
ICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChFd2tD
b250ZXh0OjpleHRlbnNpb25zUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2Ft
cGxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwOiBSZW5hbWVkIGV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoIHRvIGV3a19jb250ZXh0X25l
d193aXRoX2V4dGVuc2lvbnNfcGF0aC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OmFwcGVuZCk6CisgICAgICAg
IChFd2tFeHRlbnNpb246OnJlbW92ZSk6CisgICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9h
ZGQpOgorICAgICAgICAoZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjpFd2tFeHRlbnNpb24pOgor
ICAgICAgICAoRXdrRXh0ZW5zaW9uOjp+RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lv
bk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpFeHRl
bnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL1dl
YkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0
aWFsaXplKToKKyAgICAgICAgKiBlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluOiBBZGRlZC4K
KwogMjAxNC0wOS0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgdHdvIHVudXNlZCBXZWJLaXQyIFBERi1yZWxhdGVkIHByZWZlcmVuY2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDA1MTI3OWI5NmRiNzJjMWM4ZTAyMTM2M2Nl
YmJjNDg4MDZmZDIzN2EuLjdjYmFhYTI3ZDgxZTZlNWU5NjAzMzY2MTgyMjA4ZTYxMTU1ZDYzZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNzMsNiArMTczLDggQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2ll
TWFuYWdlclNvdXAuY3BwCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENv
b2tpZUphclNxbGl0ZS5jcHAKIAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9ld2tfZXh0ZW5zaW9uLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwv
SW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
dW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCkBAIC0xOTUsNiArMTk3LDcgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JF
ZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAogCisgICAg
V2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKICAgICBXZWJQcm9jZXNzL2Vm
bC9TZWNjb21wRmlsdGVyc1dlYlByb2Nlc3NFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc01haW5FZmwuY3BwCiAKQEAgLTI0Myw2ICsyNDYsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9l
ZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy91bml4IgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzIgpAQCAtMzU2LDYgKzM2MCw3IEBAIHNldChXRUJLSVQyX0VYVFJBX0RF
UEVOREVOQ0lFUwogKQogCiBjb25maWd1cmVfZmlsZShlZmwvZXdlYmtpdDIucGMuaW4gJHtDTUFL
RV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBAT05MWSkKK2NvbmZpZ3VyZV9m
aWxlKGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJL
aXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMgQE9OTFkpCiBjb25maWd1cmVfZmlsZShlZmwv
RVdlYktpdDJDb25maWcuY21ha2UuaW4gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9F
V2ViS2l0MkNvbmZpZy5jbWFrZSBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNv
bmZpZ1ZlcnNpb24uY21ha2UuaW4gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9FV2Vi
S2l0MkNvbmZpZ1ZlcnNpb24uY21ha2UgQE9OTFkpCiBjb25maWd1cmVfZmlsZShVSVByb2Nlc3Mv
QVBJL2VmbC9FV2ViS2l0Mi5oLmluICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9pbmNs
dWRlL0VXZWJLaXQyLmgpCkBAIC0zOTcsMTMgKzQwMiwyNyBAQCBzZXQoRVdlYktpdDJfSEVBREVS
UwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3dpbmRvd19mZWF0dXJlcy5oIgogKQogCitzZXQoRVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlMK
KyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24u
aCIKKykKKworaW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGlu
Y2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCitp
bnN0YWxsKEZJTEVTICR7RVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlN9IERFU1RJTkFUSU9OIGlu
Y2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0vZXh0
ZW5zaW9uKQorCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwv
ZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKK2luc3RhbGwoRklMRVMgJHtD
TUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMgREVTVElO
QVRJT04gbGliL3BrZ2NvbmZpZykKIGluc3RhbGwoRklMRVMKICAgICAgICAgJHtDTUFLRV9CSU5B
UllfRElSfS9XZWJLaXQyL2VmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZQogICAgICAgICAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZQogICAg
ICAgICBERVNUSU5BVElPTiBsaWIvY21ha2UvRVdlYktpdDIpCiAKLWluc3RhbGwoRklMRVMgJHtF
V2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRfTkFN
RX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQorc2V0KEVXRUJLSVRfRVhURU5TSU9OX0lOU1RB
TExfRElSICIke0xJQl9JTlNUQUxMX0RJUn0vJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pF
Q1RfVkVSU0lPTl9NQUpPUn0vIiBDQUNIRSBQQVRIICJBYnNvbHV0ZSBwYXRoIHRvIGluc3RhbGwg
aW5qZWN0ZWQgYnVuZGxlIHdoaWNoIGNvbnRyb2xzIHRoZSBleHRlbnNpb24gbGlicmFyeSIpCisK
K2FkZF9saWJyYXJ5KGV3ZWJraXRfZXh0ZW5zaW9uIFNIQVJFRCAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9lZmwvV2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNwcCIpCit0YXJnZXRfbGlua19s
aWJyYXJpZXMoZXdlYmtpdF9leHRlbnNpb24gV2ViS2l0MikKKworaW5zdGFsbChUQVJHRVRTIGV3
ZWJraXRfZXh0ZW5zaW9uIERFU1RJTkFUSU9OICIke0VXRUJLSVRfRVhURU5TSU9OX0lOU1RBTExf
RElSfSIpCiAKIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1MpCiAgICAgbGlzdChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC00NDQsMTYgKzQ2MywxOCBAQCBzZXQo
RVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKIAogc2V0KFdFQktJVDJfRUZMX1RFU1RfRElSICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cyIpCiBzZXQoVEVTVF9SRVNPVVJDRVNf
RElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Jlc291cmNlcykKLXNldChURVNUX0lOSkVDVEVE
X0JVTkRMRV9ESVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vSW5qZWN0ZWRCdW5kbGUpCitzZXQo
VEVTVF9FWFRFTlNJT05TX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9leHRlbnNpb25zKQog
c2V0KFdFQktJVDJfRUZMX1RFU1RfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJL0VXZWJLaXQyKQogCiBhZGRfZGVm
aW5pdGlvbnMoLURURVNUX1JFU09VUkNFU19ESVI9XCIke1RFU1RfUkVTT1VSQ0VTX0RJUn1cIgog
ICAgIC1EVEVTVF9MSUJfRElSPVwiJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUll9XCIK
ICAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCiAgICAgLURMSUJFWEVDRElS
PVwiJHtFWEVDX0lOU1RBTExfRElSfVwiCisgICAgLURFV0VCS0lURVhURU5TSU9ORElSPVwiJHtD
TUFLRV9JTlNUQUxMX1BSRUZJWH0vJHtFV0VCS0lUX0VYVEVOU0lPTl9JTlNUQUxMX0RJUn1cIgog
ICAgIC1EV0VCUFJPQ0VTU05BTUU9XCJXZWJQcm9jZXNzXCIKICAgICAtRFBMVUdJTlBST0NFU1NO
QU1FPVwiUGx1Z2luUHJvY2Vzc1wiCiAgICAgLURORVRXT1JLUFJPQ0VTU05BTUU9XCJOZXR3b3Jr
UHJvY2Vzc1wiCisgICAgLURCVU5ETEVOQU1FRk9SRVhURU5TSU9OPVwibGliZXdlYmtpdF9leHRl
bnNpb24uc29cIgogICAgIC1ER1RFU1RfSEFTX1JUVEk9MAogKQogCkBAIC01MDYsOCArNTI3LDcg
QEAgaWYgKEVOQUJMRV9BUElfVEVTVFMpCiAgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygk
e3Rlc3ROYW1lfSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRlc3RVdGlscykK
ICAgICBlbmRmb3JlYWNoICgpCiAKLSAgICBhZGRfbGlicmFyeShld2syVW5pdFRlc3RJbmplY3Rl
ZEJ1bmRsZVNhbXBsZSBTSEFSRUQgJHtURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVJ9L2luamVjdGVk
X2J1bmRsZV9zYW1wbGUuY3BwKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhld2syVW5pdFRl
c3RJbmplY3RlZEJ1bmRsZVNhbXBsZSBXZWJLaXQyKQorICAgIGFkZF9saWJyYXJ5KGV3azJVbml0
VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAke1RFU1RfRVhURU5TSU9OU19ESVJ9L2V4
dGVuc2lvbl9zYW1wbGUuY3BwKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9TUEVMTENIRUNLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmlu
ZGV4IDY2Njc3NTQxOTZlNDE1MDJmZDEzOTFkZWUyNTU1MzRkNDU5YmQ5YmMuLmVkZGQzZGZhNjAy
MDE0OGFjYmE5MWQxNzQ4ZjZhNjk1OGIyZTg2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGlj
IGlubGluZSBDb250ZXh0TWFwJiBjb250ZXh0TWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1F
d2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQorRXdrQ29udGV4dDo6
RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25z
UGF0aCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kYXRhYmFzZU1hbmFnZXIo
c3RkOjptYWtlX3VuaXF1ZTxFd2tEYXRhYmFzZU1hbmFnZXI+KFdLQ29udGV4dEdldERhdGFiYXNl
TWFuYWdlcihjb250ZXh0KSkpCiAgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlx
dWU8RXdrU3RvcmFnZU1hbmFnZXI+KFdLQ29udGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIo
Y29udGV4dCkpKQpAQCAtNzMsNiArNzMsNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29u
dGV4dFJlZiBjb250ZXh0KQogICAgICwgbV9yZXF1ZXN0TWFuYWdlckNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1faGlzdG9y
eUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRIaXN0b3J5Q2xpZW50RWZsPihjb250ZXh0
KSkKICAgICAsIG1fanNHbG9iYWxDb250ZXh0KG51bGxwdHIpCisgICAgLCBtX2V4dGVuc2lvbnNQ
YXRoKGV4dGVuc2lvbnNQYXRoKQogewogICAgIENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBjb250ZXh0TWFwKCkuYWRkKGNvbnRleHQsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC05NSw2ICs5NiwxNyBAQCBFd2tDb250ZXh0OjpF
d2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogCiAgICAgbV9jYWxsYmFja0Zvck1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2FsbGJhY2tG
b3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLnVzZXJEYXRhID0gbnVsbHB0cjsKKworICAgIFdL
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50
LCAwLCBzaXplb2YoY2xpZW50KSk7CisKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAg
ICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZTsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZSA9IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7
CisgICAgY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKKworICAgIFdLQ29udGV4dFNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIH0K
IAogRXdrQ29udGV4dDo6fkV3a0NvbnRleHQoKQpAQCAtMTIwLDE0ICsxMzIsMjggQEAgUGFzc1Jl
ZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKS5nZXQoKSkpOwogfQog
Ci1QYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IGluamVjdGVkQnVuZGxlUGF0aCkKK3N0YXRpYyBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVuc2lv
bigpCit7CisgICAgU3RyaW5nIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24gPSBXZWJDb3JlOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChURVNUX0xJQl9ESVIpLCBCVU5E
TEVOQU1FRk9SRVhURU5TSU9OKTsKKyAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhidW5kbGVQ
YXRoRm9yRXh0ZW5zaW9uKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb247
CisKKyAgICBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoRVdFQktJVEVYVEVOU0lPTkRJUiksIEJVTkRMRU5B
TUVGT1JFWFRFTlNJT04pOworICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKGJ1bmRsZVBhdGhG
b3JFeHRlbnNpb24pKQorICAgICAgICByZXR1cm4gYnVuZGxlUGF0aEZvckV4dGVuc2lvbjsKKwor
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3
a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoKQogeyAgIAotICAg
IGlmICghZmlsZUV4aXN0cyhpbmplY3RlZEJ1bmRsZVBhdGgpKQorICAgIFN0cmluZyBidW5kbGVQ
YXRoID0gYnVuZGxlUGF0aEZvckV4dGVuc2lvbigpOworICAgIGlmIChidW5kbGVQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
cGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9wdFdLKHRvQ29waWVkQVBJKGJ1bmRsZVBh
dGgpKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29u
dGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgocGF0aC5nZXQoKSkpLmdldCgpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRl
V2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCksIGV4dGVuc2lvbnNQYXRo
KSk7CiB9CiAKIEV3a0NvbnRleHQqIEV3a0NvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkKQEAgLTM2
NCw2ICszOTAsMTEgQEAgdm9pZCBFd2tDb250ZXh0OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0sKICAgICB0b0V3a0NvbnRleHQo
Y2xpZW50SW5mbyktPnByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVz
c2FnZU5hbWUsIG1lc3NhZ2VCb2R5LCByZXR1cm5EYXRhKTsKIH0KIAorV0tUeXBlUmVmIEV3a0Nv
bnRleHQ6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdL
VHlwZVJlZj4odG9Db3BpZWRBUEkodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT5leHRlbnNpb25z
UGF0aCgpKSk7Cit9CisKIHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVfQ2Ig
Y2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQogewogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLnVzZXJEYXRhID0gdXNlckRhdGE7CkBAIC0zNzEsMTkgKzQwMiw2IEBA
IHZvaWQgRXdrQ29udGV4dDo6c2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKEV3
a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JCiAgICAgaWYgKG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID09IGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNr
KSB7Ci0gICAgICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OwotICAg
ICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotCi0gICAgICAgIGNsaWVu
dC5iYXNlLnZlcnNpb24gPSAxOwotICAgICAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhp
czsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0g
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0gICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLQotICAgICAgICBXS0NvbnRleHRT
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0g
ICAgfSBlbHNlIGlmICghY2FsbGJhY2spCi0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgbnVsbHB0cik7Ci0KICAgICBtX2NhbGxiYWNrRm9y
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IGNhbGxiYWNrOwogfQogCkBAIC00
MzMsNyArNDUxLDcgQEAgRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X25ldygpCiAgICAgcmV0dXJu
IEV3a0NvbnRleHQ6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKIH0KIAotRXdrX0NvbnRleHQqIGV3a19j
b250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIqIHBhdGgpCitF
d2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGNvbnN0IGNo
YXIqIHBhdGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBhdGgsIG51
bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaAppbmRleCBiYzdiMDU0YzdmZGZkODk1MGU3YjYzNjJiYjcyZjQ0ZGUzZjQxOTE2Li5lMTc2
NzBiOTE1Yzg5YmRjZjY1Y2MxYzA0N2I2ZWUzNDE1ZjFhYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBAQCBF
QVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCh2b2lkKTsKICAqIEByZXR1
cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCiAg
KgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCi0gKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRo
X2luamVjdGVkX2J1bmRsZV9wYXRoCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVu
c2lvbnNfcGF0aAogICovCiBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXcodm9pZCk7
CiAKQEAgLTE3OCwxNCArMTc4LDE3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25l
dyh2b2lkKTsKICAqCiAgKiBUaGUgcmV0dXJuZWQgRXdrX0NvbnRleHQgb2JqZWN0IEBiIHNob3Vs
ZCBiZSB1bnJlZidlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIHBhdGggcGF0aCBvZiBpbmpl
Y3RlZCBidW5kbGUgbGlicmFyeQorICogQHBhcmFtIHBhdGggZGlyZWN0b3J5IHBhdGggb2YgZXh0
ZW5zaW9ucwogICoKICAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3Ig
QGMgTlVMTCBvbiBmYWlsdXJlCiAgKgorICogQG5vdGUgQWxsIHNoYXJlZCBvYmplY3RzIHdoaWNo
IGhhdmUgZXdrX2V4dGVuc2lvbl9pbml0KCkgaW4gdGhlIGdpdmVuIEBhIHBhdGggd2lsbCBiZSBs
b2FkZWQuCisgKgogICogQHNlZSBld2tfb2JqZWN0X3VucmVmCiAgKiBAc2VlIGV3a19jb250ZXh0
X25ldworICogQHNlZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24KICAqLwotRUFQ
SSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgo
Y29uc3QgY2hhciAqcGF0aCk7CitFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0
aF9leHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiAKIC8qKgogICogR2V0cyB0aGUg
YXBwbGljYXRpb24gY2FjaGUgbWFuYWdlciBpbnN0YW5jZSBmb3IgdGhpcyBAYSBjb250ZXh0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oCmluZGV4IDE3MjljNGExMmEyMjdmYzBhMzJkNGE5NzU2MTZiNjA1YTdmOWQ0NTku
LjMyZDIzZWQ5YjQzZGU4Zjg0M2MyZmJhY2Y3NDUyNWQ0YWUyOTFlZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgK
QEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMo
RXdrX1RMU19FcnJvcl9Qb2xpY3kgVExTRXJyb3JQb2xpY3kpIGNvbnN0OwogCisgICAgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25zUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uc1BhdGg7
IH0KKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgc2V0QWRkaXRp
b25hbFBsdWdpblBhdGgoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKQEAgLTk2LDExICs5OCwxMiBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVm
LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVS
ZWYqIHJldHVybkRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyBXS1R5
cGVSZWYgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgdm9pZCBzZXRNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRs
ZV9DYiwgdm9pZCopOwogICAgIHZvaWQgcHJvY2Vzc1JlY2VpdmVkTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBX
S1R5cGVSZWYqIHJldHVybkRhdGEpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEV3a0NvbnRl
eHQoV0tDb250ZXh0UmVmKTsKKyAgICBleHBsaWNpdCBFd2tDb250ZXh0KFdLQ29udGV4dFJlZiwg
Y29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCA9IFN0cmluZygpKTsKIAogICAgIHZvaWQgZW5z
dXJlRmF2aWNvbkRhdGFiYXNlKCk7CiAKQEAgLTEyMSw2ICsxMjQsOCBAQCBwcml2YXRlOgogCiAg
ICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fanNHbG9iYWxDb250ZXh0OwogCisgICAgU3RyaW5nIG1f
ZXh0ZW5zaW9uc1BhdGg7CisKICAgICBzdHJ1Y3QgewogICAgICAgICBFd2tfQ29udGV4dF9NZXNz
YWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiIGNhbGxiYWNrOwogICAgICAgICB2b2lkKiB1c2Vy
RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L0luamVjdGVkQnVuZGxlL2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxl
X3NhbXBsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0Y2UxM2I2YWM2YmFh
NWM3MzMzZWM1ZDRlZDM4ZGE5YzA2MjQwYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
SW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUluaXRpYWxpemUuaD4K
LQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi12b2lkIFdLQnVu
ZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiBpbml0aWFsaXphdGlv
blVzZXJEYXRhKQotewotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9l
eHRlbnNpb25fc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRkM2I0NGNi
MmYwMDNkMmUwNTVmODgxNDA4YjQ3OGZhOGMzZTRjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3Nh
bXBsZS5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKK3ZvaWQgZXdrX2V4dGVuc2lvbl9pbml0KEV3a19FeHRl
bnNpb24gKikKK3sKK30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml9jb250ZXh0LmNwcAppbmRleCAzZjE0NzBhMDlkYWM4MTU0N2M2YTVmNjE4OGIzYzE4NjgzNmVl
MTYxLi44YTM2Mjk2NWUyMWVkYjVkNTE4ZDQ1NzAxN2QyMzkxYmU3ZTRlMThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbnRleHQuY3BwCkBAIC0yMzAsOSArMjMwLDkgQEAgVEVTVF9GKEVXSzJDb250ZXh0VGVz
dCwgZXdrX2NvbnRleHRfbmV3KQogICAgIGV3a19vYmplY3RfdW5yZWYoY29udGV4dCk7CiB9CiAK
LVRFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1
bmRsZV9wYXRoKQorVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfbmV3X3dpdGhf
ZXh0ZW5zaW9uc19wYXRoKQogewotICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX2NvbnRl
eHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgoZW52aXJvbm1lbnQtPmluamVjdGVkQnVu
ZGxlU2FtcGxlKCkpOworICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3
X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGVudmlyb25tZW50LT5pbmplY3RlZEJ1bmRsZVNhbXBsZSgp
KTsKICAgICBBU1NFUlRfVFJVRShjb250ZXh0KTsKICAgICBld2tfb2JqZWN0X3VucmVmKGNvbnRl
eHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOGJlMzUzMzUxNjRlMGY3NDM0NzM4YTI5OWE4NDYzNTVjMzBmMWU0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VX
ZWJLaXRfRXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgRVdlYktpdF9FeHRlbnNpb24uaAorICogQGJy
aWVmICAgQ29udGFpbnMgdGhlIGhlYWRlciBmaWxlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBld2Vi
a2l0Mi1leHRlbnNpb24uCisgKgorICogRVdlYktpdF9FeHRlbnNpb24gaXMgdGhlIHdheSB0byBl
eHRlbmQgV2ViUHJvY2VzcyBvZiBld2Via2l0Mi4KKyAqCisgKiBJbiBvcmRlciB0byBjcmVhdGUg
dGhlIGV4dGVuc2lvbiwgCisgKiBGaXJzdCwgZXdrX2V4dGVuc2lvbl9pbml0IG11c3QgYmUgaW1w
bGVtZW50ZWQgaW4gdGhlIHNoYXJlZCBvYmplY3QgbGlrZSBiZWxvdzoKKyAqCisgKiBAY29kZQor
ICogI2luY2x1ZGUgIkVXZWJLaXRfRXh0ZW5zaW9uLmgiCisgKiAKKyAqIHZvaWQgZXdrX2V4dGVu
c2lvbl9pbml0KEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbikKKyAqIHsKKyAqICAgIC8vIHByb3Zp
ZGUgRXdrX0V4dGVuc2lvbl9DbGllbnQgY2FsbGJhY2tzIGFzIGNsaWVudC4KKyAqICAgIGV3a19l
eHRlbnNpb25fY2xpZW50X2FkZChleHRlbnNpb24sICZjbGllbnQpOworICogfQorICogQGVuZGNv
ZGUKKyAqCisgKiBBbmQgY29tcGlsZXMgQyBvciBDKysgZmlsZXMgYXMgc2hhcmVkIG9iamVjdCBs
aWtlIGJlbG93OgorICoKKyAqIEB2ZXJiYXRpbQorICogZ2NjIC1vIGxpYnNhbXBsZS5zbyBzYW1w
bGUuYyAtc2hhcmVkIC1mUElDIGBwa2ctY29uZmlnIC0tY2ZsYWdzIC0tbGlicyBlaW5hIGV3ZWJr
aXQyLWV4dGVuc2lvbmAKKyAqIEBlbmR2ZXJiYXRpbQorICogCisgKiBUaGVuLCBpbnN0YWxsIHRo
YXQgb2JqZWN0IGludG8gdGhlIHBhdGggd2hpY2ggZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5z
aW9uc19wYXRoKCkgc3BlY2lmaWVzLgorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhf
ZXh0ZW5zaW9uc19wYXRoCisgKiBAc2VlIGV3a19leHRlbnNpb25fY2xpZW50X3NldAorICogQHNl
ZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24KKyAqLworCisjaWZuZGVmIEVXZWJL
aXRfRXh0ZW5zaW9uX2gKKyNkZWZpbmUgRVdlYktpdF9FeHRlbnNpb25faAorCisjaW5jbHVkZSAi
ZXdrX2V4dGVuc2lvbi5oIgorCisjZW5kaWYgLy8gRVdlYktpdF9FeHRlbnNpb25faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3
a19leHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZDc0MzAwZGFkOWQ1Nzhj
MTBkN2U5ZmY5MTIwYjY1MDVmMjg5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJld2tf
ZXh0ZW5zaW9uX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBF
d2tFeHRlbnNpb246OmFwcGVuZChFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAg
IG1fY2xpZW50cy5hcHBlbmQoY2xpZW50KTsKK30KKwordm9pZCBFd2tFeHRlbnNpb246OnJlbW92
ZShFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUo
bV9jbGllbnRzLmZpbmQoY2xpZW50KSk7Cit9CisKK0VpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2Ns
aWVudF9hZGQoRXdrX0V4dGVuc2lvbiogZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCog
Y2xpZW50KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChleHRlbnNpb24s
IGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2xpZW50LCBmYWxz
ZSk7CisKKyAgICBleHRlbnNpb24tPmFwcGVuZChjbGllbnQpOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK0VpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwoRXdrX0V4dGVuc2lvbiog
ZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChleHRlbnNpb24sIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY2xpZW50LCBmYWxzZSk7CisKKyAgICBleHRlbnNpb24tPnJl
bW92ZShjbGllbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19l
eHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDc4YjhiZjI2NDUzNzE5YTVhOWMyMjVjNTliYWZlM2Ji
NmI0Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMCwwICsxLDg5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfZXh0ZW5z
aW9uLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrX0V4dGVuc2lvbiBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfZXh0ZW5zaW9uX2gKKyNkZWZpbmUgZXdrX2V4dGVuc2lvbl9oCisKKyNp
bmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKwordHlwZWRlZiBzdHJ1Y3QgRXdrUGFnZSBFd2tfUGFnZTsKKworLyoqCisgKiBEZWNsYXJl
IEV3a19FeHRlbnNpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IEV3a0V4dGVuc2lvbiBFd2tfRXh0
ZW5zaW9uOworCisvKioKKyAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0
aW9uLgorICoKKyAqIEBicmllZiAgVHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZW50cnkgb2YgdGhl
IGV4dGVuc2lvbi4KKyAqCisgKiBAcGFyYW0gZXh0ZW5zaW9uIHRoZSBleHRlbnNpb24gaW5zdGFu
Y2UgaGVscHMgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiBXZWJQcm9jZXNzIGFuZCB5b3VyIGV4
dGVuc2lvbiBsaWJyYXJ5LgorICogQHBhcmFtIHJlc2VydmVkIGV4dHJhIHBhcmFtZXRlciBmb3Ig
dGhlIGZ1dHVyZS4gTlVMTCBpcyBmaW5lLCBub3cuCisgKgorICovCit0eXBlZGVmIHZvaWQgKigq
RXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uKShFd2tfRXh0ZW5zaW9uICpleHRlbnNp
b24sIHZvaWQgKnJlc2VydmVkKTsKKworc3RydWN0IEV3a0V4dGVuc2lvbkNsaWVudCB7CisgICAg
aW50IHZlcnNpb247CisgICAgdm9pZCAqZGF0YTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tFeHRl
bnNpb25DbGllbnQgRXdrX0V4dGVuc2lvbl9DbGllbnQ7CisKKy8qKgorICogQWRkIChyZWdpc3Rl
cikgYSBjbGllbnQgd2hpY2ggY29udGFpbnMgYSBzZXZlcmFsIGNhbGxiYWNrcyB0byB0aGUgZXh0
ZW5zaW9uLgorICoKKyAqIEBwYXJhbSBleHRlbnNpb24gZXh0ZW5zaW9uIHRvIGF0dGFjaCBjbGll
bnQgdG8KKyAqIEBwYXJhbSBjbGllbnQgY2xpZW50IHRvIGFkZCB0byB0aGUgZXh0ZW5zaW9uCisg
KgorICogVGhpcyBmdW5jdGlvbiBhZGQgYSBjbGllbnQsIHdoaWNoIGNvbnRhaW5zIHNldmVyYWwg
Y2FsbGJhY2tzIHJlY2VpdmluZyBldmVudHMKKyAqIGZyb20gV2ViUHJvY2VzcyBzaWRlLCB0byBh
IEBwIGV4dGVuc2lvbi4KKyAqCisgKiBAc2VlIGV3a19leHRlbnNpb25fY2xpZW50X2RlbAorICov
CitFQVBJIEVpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2NsaWVudF9hZGQoRXdrX0V4dGVuc2lvbiAq
ZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAqY2xpZW50KTsKKworLyoqCisgKiBEZWxl
dGUgYSBjbGllbnQgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIEBwYXJhbSBleHRlbnNpb24g
ZXh0ZW5zaW9uIHRvIGRlbGV0ZSBjbGllbnQKKyAqIEBwYXJhbSBjbGllbnQgY2xpZW50IHdoaWNo
IGNvbnRhaW5zIHZlcnNpb24sIGRhdGEgYW5kIGNhbGxiYWNrcy4KKyAqLworRUFQSSBFaW5hX0Jv
b2wgZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsKEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbiwgRXdr
X0V4dGVuc2lvbl9DbGllbnQgKmNsaWVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisKKyNlbmRpZiAvLyBld2tfZXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjUxZmE4MzUxYTQ2YzE3ODc4OTI2
NzNjNzdlOGNiYzNmYzNjNWJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19leHRlbnNpb25fcHJpdmF0ZV9o
CisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
SW5qZWN0ZWRCdW5kbGU7Cit9CisKK2NsYXNzIEV3a0V4dGVuc2lvbiB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGUqKSB7IH0KKyAgICB+
RXdrRXh0ZW5zaW9uKCkgeyB9CisKKyAgICB2b2lkIGFwcGVuZChFd2tfRXh0ZW5zaW9uX0NsaWVu
dCogY2xpZW50KTsKKyAgICB2b2lkIHJlbW92ZShFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50
KTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8RXdrX0V4dGVuc2lvbl9DbGllbnQqPiBtX2NsaWVu
dHM7Cit9OworCisjZW5kaWYgLy8gZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDBmOTZjNGJiNjc4YTY0NjhlM2I0YTYwZDg3NzkwNjc5MDhlYTMxYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFn
ZXJFZmwuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVmbC5o
IgorCisjaW5jbHVkZSAiTW9kdWxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisj
aW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V4dGVuc2lvbk1hbmFnZXJFZmwm
IEV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEV4dGVuc2lvbk1hbmFnZXJFZmw+IGV4dGVuc2lvbk1hbmFnZXI7CisgICAgcmV0dXJuIGV4
dGVuc2lvbk1hbmFnZXI7Cit9CisKK0V4dGVuc2lvbk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFn
ZXJFZmwoKQoreworfQorCit2b2lkIEV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxpemUoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgQVNTRVJUKCFtX2V4
dGVuc2lvbik7CisKKyAgICBtX2V4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RXdrRXh0ZW5z
aW9uPih0b0ltcGwoYnVuZGxlKSk7CisKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc0RpcmVjdG9yeSA9
IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4odXNlckRhdGEpKS0+c3RyaW5nKCk7Cisg
ICAgQVNTRVJUKCFleHRlbnNpb25zRGlyZWN0b3J5LmlzRW1wdHkoKSk7CisKKyAgICBWZWN0b3I8
U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkoZXh0ZW5zaW9uc0Rp
cmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
b2R1bGVQYXRocy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0
cyhtb2R1bGVQYXRoc1tpXSkpIHsKKyAgICAgICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgICAgIGlmICghbW9kdWxl
LT5sb2FkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIEV3a19F
eHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbiBpbml0aWFsaXplRnVuY3Rpb24gPSBtb2R1bGUt
PmZ1bmN0aW9uUG9pbnRlcjxFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24+KCJld2tf
ZXh0ZW5zaW9uX2luaXQiKTsKKyAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZUZ1bmN0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaW5pdGlhbGl6ZUZ1bmN0aW9u
KG1fZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyIC8qIHJlc2VydmVkIGZvciB0aGUgZnV0dXJlICov
KTsKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uTW9kdWxlcy5hcHBlbmQobW9kdWxlLnJlbGVhc2Uo
KSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjgyZTU5YjU5
N2UyNDM2M2ZiZjcyNGE5ZjUyMjI5MDc2Yjk5NzNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4dGVuc2lv
bk1hbmFnZXJFZmxfaAorI2RlZmluZSBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKKworI2luY2x1ZGUg
IldLQnVuZGxlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitjbGFzcyBFd2tF
eHRlbnNpb247CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBNb2R1bGU7CisKK2NsYXNz
IEV4dGVuc2lvbk1hbmFnZXJFZmwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4dGVuc2lv
bk1hbmFnZXJFZmwpOworCitwdWJsaWM6CisgICAgV0tfRVhQT1JUIHN0YXRpYyBFeHRlbnNpb25N
YW5hZ2VyRWZsJiBzaGFyZWQoKTsKKyAgICBXS19FWFBPUlQgdm9pZCBpbml0aWFsaXplKFdLQnVu
ZGxlUmVmLCBXS1R5cGVSZWYpOworcHJpdmF0ZToKKyAgICBFeHRlbnNpb25NYW5hZ2VyRWZsKCk7
CisKKyAgICBWZWN0b3I8V2ViS2l0OjpNb2R1bGUqPiBtX2V4dGVuc2lvbk1vZHVsZXM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEV3a0V4dGVuc2lvbj4gbV9leHRlbnNpb247CisKKyAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD47Cit9OworCit9CisKKyNl
bmRpZiAvLyBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZWZsL1dlYkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJbmplY3RlZEJ1bmRsZU1haW5FZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxNmMxMDBlYzk4NGZlMzgzNDRhYTEzMTI3YjNlZTEwOWI0ZGVjYmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJbmplY3RlZEJ1bmRsZU1h
aW5FZmwuY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZs
LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitleHRlcm4gIkMiIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQoreworICAgIEV4dGVuc2lvbk1hbmFn
ZXJFZmw6OnNoYXJlZCgpLmluaXRpYWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNl
L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjE2Y2Rj
MmY5Mzk1ZWJlNzI5NmQwNTQ4ZmVjODAxZmM1MWU4M2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpAQCAtMCwwICsxLDggQEAK
K3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACitpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNs
dWRlCisKK05hbWU6IGV3ZWJraXQyLWV4dGVuc2lvbgorRGVzY3JpcHRpb246IEV4dGVuc2lvbiBm
b3IgV2ViS2l0Mi9FRkwoZXdlYmtpdDIpCitWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAorUmVx
dWlyZXM6IGVpbmEKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1F
QC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YjQ1MTI3ZGY2NTFkNDQyNDRlMzM2MmE1
ZDAxZGI3MDE4MjIxOGI5Li5lYzk4ZDE4ZWIxNWJkMzU1YzU5OWQwMmQyM2NhMzYyOTQ2MjVjOWEy
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTQtMDktMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQGdtYWlsLmNv
bT4KKworICAgICAgICBbRUZMXSBJbnRyb2R1Y2UgRVdlYktpdF9FeHRlbnNpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDkyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZs
L21haW4uYzogQWRkZWQgeCBvcHRpb24gdG8gdGVzdCBleHRlbnNpb24gcGF0aC4KKyAgICAgICAg
KHdpbmRvd19jcmVhdGUpOgorICAgICAgICAoZWxtX21haW4pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3Q6CisgICAgICAgIEFkZGVkIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8gaW50byBFRkxXZWJLaXQy
UHVibGljQVBJLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToK
KyAgICAgICAgQWRkZWQgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsLyBpbnRvIEVGTCBleGNlcHRpb25zLgorCiAyMDE0LTA5LTAxICBCcmlhbiBKLiBCdXJn
ICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBQcm92aWRlIGNvbHVtbiBudW1i
ZXJzIHRvIERUcmFjZSB3aWxsRXhlY3V0ZS9kaWRFeGVjdXRlIHByb2JlcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMKaW5kZXggNDg5YjE3ZWRmNjc2NDJiOGNkM2ZjNzQzODE1NDRhYTYyZDE3NTliNi4uMWQ1NWU5
YTk2YjYyNmZkOGE3OTQwYjBjNjIzM2NjNzZmYWY2MDAyOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBA
IC00OCw2ICs0OCw3IEBAIHN0YXRpYyBpbnQgdmVyYm9zZSA9IDE7CiBzdGF0aWMgRWluYV9MaXN0
ICp3aW5kb3dzID0gTlVMTDsKIHN0YXRpYyBjaGFyICpldmFzX2VuZ2luZV9uYW1lID0gTlVMTDsK
IHN0YXRpYyBjaGFyICp1c2VyX2FnZW50X3N0cmluZyA9IE5VTEw7CitzdGF0aWMgY2hhciAqZXh0
ZW5zaW9uc19wYXRoID0gTlVMTDsKIHN0YXRpYyBjaGFyICpiYWNrZ3JvdW5kX2NvbG9yX3N0cmlu
ZyA9IE5VTEw7CiBzdGF0aWMgRWluYV9Cb29sIGVuY29kaW5nX2RldGVjdG9yX2VuYWJsZWQgPSBF
SU5BX0ZBTFNFOwogc3RhdGljIEVpbmFfQm9vbCBmcmFtZV9mbGF0dGVuaW5nX2VuYWJsZWQgPSBF
SU5BX0ZBTFNFOwpAQCAtMTU3LDYgKzE1OCw4IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQg
b3B0aW9ucyA9IHsKICAgICAgICAgICAgICgncycsICJ3aW5kb3ctc2l6ZSIsICJXaW5kb3cgc2l6
ZSBpbiBmb2xsb3dpbmcgZm9ybWF0ICh3aWR0aCl4KGhlaWdodCkuIiksCiAgICAgICAgIEVDT1JF
X0dFVE9QVF9TVE9SRV9TVFIKICAgICAgICAgICAgICgndScsICJ1c2VyLWFnZW50IiwgIlVzZXIg
YWdlbnQgdG8gc2V0LiIpLAorICAgICAgICBFQ09SRV9HRVRPUFRfU1RPUkVfU1RSCisgICAgICAg
ICAgICAoJ3gnLCAiZXh0ZW5zaW9ucy1wYXRoIiwgIlRoZSBwYXRoIHdoaWNoIGV4dGVuc2lvbnMg
YXJlIHN0b3JlZC4iKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX0RPVUJMRQogICAgICAg
ICAgICAgKCdyJywgImRldmljZS1waXhlbC1yYXRpbyIsICJSYXRpbyBiZXR3ZWVuIHRoZSBDU1Mg
dW5pdHMgYW5kIGRldmljZSBwaXhlbHMuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9DQUxMQkFD
S19OT0FSR1MKQEAgLTIxMDMsNyArMjEwNiwxNCBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndp
bmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
CiAgICAgRXZhcyAqZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdpbmRvdy0+ZWxtX3dpbmRv
dyk7CiAgICAgRXZhc19TbWFydCAqc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmZXdrVmll
d0NsYXNzLT5zYyk7Ci0gICAgRXdrX0NvbnRleHQgKmNvbnRleHQgPSBvcGVuZXIgPyBld2tfdmll
d19jb250ZXh0X2dldChvcGVuZXIpIDogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKKyAgICBF
d2tfQ29udGV4dCAqY29udGV4dDsKKyAgICBpZiAob3BlbmVyKQorICAgICAgICBjb250ZXh0ID0g
ZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKTsKKyAgICBlbHNlIGlmIChleHRlbnNpb25zX3Bh
dGgpCisgICAgICAgIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3Bh
dGgoZXh0ZW5zaW9uc19wYXRoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQgPSBld2tfY29u
dGV4dF9kZWZhdWx0X2dldCgpOworCiAgICAgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCA9IG9w
ZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5lcikgOiBld2tfcGFnZV9ncm91cF9j
cmVhdGUoIiIpOwogICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSBld2tfdmlld19zbWFydF9hZGQoZXZh
cywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CiAKQEAgLTIyMzQsNiArMjI0NCw3IEBAIGVs
bV9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxV
RV9TVFIoZXZhc19lbmdpbmVfbmFtZSksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIo
d2luZG93X3NpemVfc3RyaW5nKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1NUUih1c2Vy
X2FnZW50X3N0cmluZyksCisgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIoZXh0ZW5zaW9u
c19wYXRoKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0RPVUJMRShkZXZpY2VfcGl4ZWxf
cmF0aW8pLAogICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfQk9PTChxdWl0T3B0aW9uKSwKICAg
ICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0woZW5jb2RpbmdfZGV0ZWN0b3JfZW5hYmxlZCks
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hs
aXN0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdAppbmRl
eCBmNjYwNjQ5YjY0YjBkNDc1YWE5MDRiMTc3NjA0MTIyYmYwNjk3MmU5Li43MTg5OTc4NDk5NTli
OGY3MzhiZDIwMzEwNWEyZDVmYzhjODM4MWRiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKQEAgLTEwNyw3ICsxMDcsOCBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgciJ8TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLyIsCiAgICAgICAgIH0s
CiAgICAgICAgICJFRkxXZWJLaXQyUHVibGljQVBJIjogewotICAgICAgICAgICAgImZpbGVuYW1l
IjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC8iCisgICAgICAgICAgICAiZmls
ZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC8iCisgICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC8iCiAgICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsLyIsCiAgICAgICAgIH0sCiAgICAgICAgICJFRkxXZWJLaXQyUGxhdGZv
cm1TcGVjaWZpYyI6IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRl
eCAyNTNlYjIzZDRkZWE0YzQ3MGI1YzI3Mzk4OGMwZTVjNWNjZmJkYzZjLi4yMzIxYmNkMDMxNDc2
YmI1NzFiZjk5NzA1OWNhZjI5YzcwNzZhMDIwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5CkBAIC0xOTAsNiArMTkwLDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0g
WwogICAgIChbIyBUaGUgRUZMIEFQSXMgdXNlIEVGTCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1
ZGVzCiAgICAgICAjIGJvdGggbG93ZXItY2FzZWQgYW5kIGNhbWVsLWNhc2VkLCB1bmRlcnNjb3Jl
LXNwYXJhdGVkCiAgICAgICAjIHZhbHVlcy4KKyAgICAgICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIiwKICAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC8iXSwKICAgICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nIiwKICAgICAgICIt
cmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUiXSksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238465</attachid>
            <date>2014-09-22 01:27:14 -0700</date>
            <delta_ts>2014-09-25 21:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140922172710.patch</filename>
            <type>text/plain</type>
            <size>46316</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZkZmVmMmM3NDYxMTI1
MzA4ZmMwNDhmN2RmMzcyY2YzNmRiNTA5Yi4uNDc4NTkwZGRiMDk3M2UyZGIzMzUwODllZTdmM2Zi
ZDQ2MWQ3MTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE0LTA5LTIyICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNl
IEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFd2ViS2l0MiBkb2VzIG5vdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHRv
IGV4dGVuZCBXZWJQcm9jZXNzLgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBld2tfY29udGV4
dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisgICAg
ICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qgd2l0
aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90IGV4
cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNpb24s
IGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUgRVdl
YktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tD
b250ZXh0KToKKyAgICAgICAgKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdr
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAgICAgIChFd2tDb250ZXh0OjpzZXRNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dp
dGhfZXh0ZW5zaW9uc19wYXRoKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIGV3ZWJraXQyIGRv
ZXMgbm90IGhhdmUgYSB3YXkgdG8gbWFrZSBpbmplY3RlZCBidW5kbGUuCisgICAgICAgIEluc3Rl
YWQsIEV3a19FeHRlbnNpb24gd2lsbCBjb3ZlciB0aGUgc2FtZSBmdW5jdGlvbmFsaXRpZXMuCisg
ICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChFd2tD
b250ZXh0OjpleHRlbnNpb25zUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVu
dmlyb25tZW50OjpleHRlbnNpb25TYW1wbGUpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0sy
VW5pdFRlc3RFbnZpcm9ubWVudDo6aW5qZWN0ZWRCdW5kbGVTYW1wbGUpOiBSZW5hbWVkIGluamVj
dGVkQnVuZGxlU2FtcGxlIHRvIGV4dGVuc2lvblNhbXBsZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2Ft
cGxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwOiBSZW5hbWVkIGV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoIHRvIGV3a19jb250ZXh0X25l
d193aXRoX2V4dGVuc2lvbnNfcGF0aC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OmFwcGVuZCk6CisgICAgICAg
IChFd2tFeHRlbnNpb246OnJlbW92ZSk6CisgICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9h
ZGQpOgorICAgICAgICAoZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjpFd2tFeHRlbnNpb24pOgor
ICAgICAgICAoRXdrRXh0ZW5zaW9uOjp+RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lv
bk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpFeHRl
bnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL1dl
YkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0
aWFsaXplKToKKyAgICAgICAgKiBlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluOiBBZGRlZC4K
KwogMjAxNC0wOS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBXZWJDb250ZW50IGNyYXNoIGluIFdlYktpdDo6V2ViUGFnZTo6ZXhwYW5kZWRSYW5nZUZyb21I
YW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMDFlMzRlYTBiZjlmODhmYjZmZTk2
YTQ2OWEzZTIyMzYxZjBhOGQxYy4uZDZlM2MwYjEyOTI4MzM5M2ZlMGJmYjgwM2U1MTNmOGRhM2I5
ZGFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3NSw2ICsxNzUsOCBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJD
b29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRT
b3VwQ29va2llSmFyU3FsaXRlLmNwcAogCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTE5Nyw2ICsxOTksNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3Bl
Y3RvckVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCiAK
KyAgICBXZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAogICAgIFdlYlByb2Nl
c3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBXZWJQcm9jZXNzL2Vm
bC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKIApAQCAtMjQ1LDYgKzI0OCw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC0zNTgsNiArMzYyLDcgQEAgc2V0KFdFQktJVDJfRVhU
UkFfREVQRU5ERU5DSUVTCiApCiAKIGNvbmZpZ3VyZV9maWxlKGVmbC9ld2Via2l0Mi5wYy5pbiAk
e0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBPTkxZKQorY29uZmln
dXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBAT05MWSkKIGNvbmZpZ3VyZV9maWxl
KGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIv
ZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlIEBPTkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJL
aXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZs
L0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZSBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKFVJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmguaW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9
L2luY2x1ZGUvRVdlYktpdDIuaCkKQEAgLTM5OSwxMyArNDA0LDI3IEBAIHNldChFV2ViS2l0Ml9I
RUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2luZG93X2ZlYXR1cmVzLmgiCiApCiAKK3NldChFV2ViS2l0Ml9FeHRlbnNpb25fSEVB
REVSUworICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVu
c2lvbi5oIgorKQorCitpbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJ
T04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9S
fSkKK2luc3RhbGwoRklMRVMgJHtFV2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSU30gREVTVElOQVRJ
T04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9S
fS9leHRlbnNpb24pCisKIGluc3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQy
L2VmbC9ld2Via2l0Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQoraW5zdGFsbChGSUxF
UyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBE
RVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQogaW5zdGFsbChGSUxFUwogICAgICAgICAke0NNQUtF
X0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlCiAgICAgICAgICR7
Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtl
CiAgICAgICAgIERFU1RJTkFUSU9OIGxpYi9jbWFrZS9FV2ViS2l0MikKIAotaW5zdGFsbChGSUxF
UyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX09VVFBV
VF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCitzZXQoRVdFQktJVF9FWFRFTlNJT05f
TUFOQUdFUl9JTlNUQUxMX0RJUiAiJHtMSUJfSU5TVEFMTF9ESVJ9LyR7V2ViS2l0Ml9PVVRQVVRf
TkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9LyIgQ0FDSEUgUEFUSCAiQWJzb2x1dGUgcGF0
aCB0byBpbnN0YWxsIGluamVjdGVkIGJ1bmRsZSB3aGljaCBjb250cm9scyB0aGUgZXh0ZW5zaW9u
IGxpYnJhcnkiKQorCithZGRfbGlicmFyeShld2Via2l0X2V4dGVuc2lvbl9tYW5hZ2VyIFNIQVJF
RCAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwvV2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZs
LmNwcCIpCit0YXJnZXRfbGlua19saWJyYXJpZXMoZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlciBX
ZWJLaXQyKQorCitpbnN0YWxsKFRBUkdFVFMgZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlciBERVNU
SU5BVElPTiAiJHtFV0VCS0lUX0VYVEVOU0lPTl9NQU5BR0VSX0lOU1RBTExfRElSfSIpCiAKIGlm
IChFTkFCTEVfUExVR0lOX1BST0NFU1MpCiAgICAgbGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc19J
TkNMVURFX0RJUkVDVE9SSUVTCkBAIC00NDYsMTYgKzQ2NSwxOCBAQCBzZXQoRVdLMlVuaXRUZXN0
c19MSUJSQVJJRVMKIAogc2V0KFdFQktJVDJfRUZMX1RFU1RfRElSICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cyIpCiBzZXQoVEVTVF9SRVNPVVJDRVNfRElSICR7V0VCS0lU
Ml9FRkxfVEVTVF9ESVJ9L3Jlc291cmNlcykKLXNldChURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVIg
JHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vSW5qZWN0ZWRCdW5kbGUpCitzZXQoVEVTVF9FWFRFTlNJ
T05TX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9leHRlbnNpb25zKQogc2V0KFdFQktJVDJf
RUZMX1RFU1RfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJL0VXZWJLaXQyKQogCiBhZGRfZGVmaW5pdGlvbnMoLURU
RVNUX1JFU09VUkNFU19ESVI9XCIke1RFU1RfUkVTT1VSQ0VTX0RJUn1cIgogICAgIC1EVEVTVF9M
SUJfRElSPVwiJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUll9XCIKICAgICAtREdURVNU
X0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xCiAgICAgLURMSUJFWEVDRElSPVwiJHtFWEVDX0lO
U1RBTExfRElSfVwiCisgICAgLURFWFRFTlNJT05NQU5BR0VSRElSPVwiJHtDTUFLRV9JTlNUQUxM
X1BSRUZJWH0vJHtFV0VCS0lUX0VYVEVOU0lPTl9NQU5BR0VSX0lOU1RBTExfRElSfVwiCiAgICAg
LURXRUJQUk9DRVNTTkFNRT1cIldlYlByb2Nlc3NcIgogICAgIC1EUExVR0lOUFJPQ0VTU05BTUU9
XCJQbHVnaW5Qcm9jZXNzXCIKICAgICAtRE5FVFdPUktQUk9DRVNTTkFNRT1cIk5ldHdvcmtQcm9j
ZXNzXCIKKyAgICAtREVYVEVOU0lPTk1BTkFHRVJOQU1FPVwibGliZXdlYmtpdF9leHRlbnNpb25f
bWFuYWdlci5zb1wiCiAgICAgLURHVEVTVF9IQVNfUlRUST0wCiApCiAKQEAgLTUwOCw4ICs1Mjks
NyBAQCBpZiAoRU5BQkxFX0FQSV9URVNUUykKICAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KCR7dGVzdE5hbWV9ICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9IGV3azJVbml0VGVzdFV0aWxz
KQogICAgIGVuZGZvcmVhY2ggKCkKIAotICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVj
dGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vaW5qZWN0
ZWRfYnVuZGxlX3NhbXBsZS5jcHApCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3azJVbml0
VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFdlYktpdDIpCisgICAgYWRkX2xpYnJhcnkoZXdrMlVu
aXRUZXN0RXh0ZW5zaW9uU2FtcGxlIFNIQVJFRCAke1RFU1RfRVhURU5TSU9OU19ESVJ9L2V4dGVu
c2lvbl9zYW1wbGUuY3BwKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9TUEVMTENIRUNLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4
IDY2Njc3NTQxOTZlNDE1MDJmZDEzOTFkZWUyNTU1MzRkNDU5YmQ5YmMuLmVmY2ExMmY0YmY0OGEx
YTdiZWJjY2JkNGE2ODhkMDcwYWVjZWM4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlu
bGluZSBDb250ZXh0TWFwJiBjb250ZXh0TWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1Fd2tD
b250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQorRXdrQ29udGV4dDo6RXdr
Q29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0
aCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kYXRhYmFzZU1hbmFnZXIoc3Rk
OjptYWtlX3VuaXF1ZTxFd2tEYXRhYmFzZU1hbmFnZXI+KFdLQ29udGV4dEdldERhdGFiYXNlTWFu
YWdlcihjb250ZXh0KSkpCiAgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
RXdrU3RvcmFnZU1hbmFnZXI+KFdLQ29udGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoY29u
dGV4dCkpKQpAQCAtNzMsNiArNzMsNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4
dFJlZiBjb250ZXh0KQogICAgICwgbV9yZXF1ZXN0TWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1faGlzdG9yeUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRIaXN0b3J5Q2xpZW50RWZsPihjb250ZXh0KSkK
ICAgICAsIG1fanNHbG9iYWxDb250ZXh0KG51bGxwdHIpCisgICAgLCBtX2V4dGVuc2lvbnNQYXRo
KGV4dGVuc2lvbnNQYXRoKQogewogICAgIENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBj
b250ZXh0TWFwKCkuYWRkKGNvbnRleHQsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC05NSw2ICs5NiwxNyBAQCBFd2tDb250ZXh0OjpFd2tD
b250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogCiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2FsbGJhY2tGb3JN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlLnVzZXJEYXRhID0gbnVsbHB0cjsKKworICAgIFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAw
LCBzaXplb2YoY2xpZW50KSk7CisKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBj
bGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZTsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSA9IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Cisg
ICAgY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKKworICAgIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIH0KIAog
RXdrQ29udGV4dDo6fkV3a0NvbnRleHQoKQpAQCAtMTIwLDE0ICsxMzIsMjggQEAgUGFzc1JlZlB0
cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKS5nZXQoKSkpOwogfQogCi1Q
YXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlu
amVjdGVkQnVuZGxlUGF0aCkKK3N0YXRpYyBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVuc2lvbigp
Cit7CisgICAgU3RyaW5nIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24gPSBXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoU3RyaW5nOjpmcm9tVVRGOChURVNUX0xJQl9ESVIpLCBFWFRFTlNJ
T05NQU5BR0VSTkFNRSk7CisgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aEZv
ckV4dGVuc2lvbikpCisgICAgICAgIHJldHVybiBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uOworCisg
ICAgYnVuZGxlUGF0aEZvckV4dGVuc2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChTdHJpbmc6OmZyb21VVEY4KEVYVEVOU0lPTk1BTkFHRVJESVIpLCBFWFRFTlNJT05NQU5B
R0VSTkFNRSk7CisgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aEZvckV4dGVu
c2lvbikpCisgICAgICAgIHJldHVybiBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uOworCisgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK1Bhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGgpCiB7ICAgCi0gICAgaWYgKCFm
aWxlRXhpc3RzKGluamVjdGVkQnVuZGxlUGF0aCkpCisgICAgU3RyaW5nIGJ1bmRsZVBhdGggPSBi
dW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCk7CisgICAgaWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwYXRoID0g
YWRvcHRXSyh0b0NvcGllZEFQSShpbmplY3RlZEJ1bmRsZVBhdGgpKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gcGF0aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoYnVuZGxlUGF0aCkpOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3Jl
YXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCkpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5q
ZWN0ZWRCdW5kbGVQYXRoKHBhdGguZ2V0KCkpKS5nZXQoKSwgZXh0ZW5zaW9uc1BhdGgpKTsKIH0K
IAogRXdrQ29udGV4dCogRXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKQpAQCAtMzY0LDYgKzM5
MCwxMSBAQCB2b2lkIEV3a0NvbnRleHQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXSwogICAgIHRvRXdrQ29udGV4dChjbGllbnRJ
bmZvKS0+cHJvY2Vzc1JlY2VpdmVkTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFt
ZSwgbWVzc2FnZUJvZHksIHJldHVybkRhdGEpOwogfQogCitXS1R5cGVSZWYgRXdrQ29udGV4dDo6
Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tUeXBlUmVm
Pih0b0NvcGllZEFQSSh0b0V3a0NvbnRleHQoY2xpZW50SW5mbyktPmV4dGVuc2lvbnNQYXRoKCkp
KTsKK30KKwogdm9pZCBFd2tDb250ZXh0OjpzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2Fs
bGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiBjYWxsYmFj
aywgdm9pZCogdXNlckRhdGEpCiB7CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUudXNlckRhdGEgPSB1c2VyRGF0YTsKQEAgLTM3MSwxOSArNDAyLDYgQEAgdm9pZCBF
d2tDb250ZXh0OjpzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRl
eHRfTWVzc2FnZV9Gcm9tX0kKICAgICBpZiAobV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUuY2FsbGJhY2sgPT0gY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2spIHsKLSAg
ICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7Ci0gICAgICAgIG1l
bXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KLSAgICAgICAgY2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDE7Ci0gICAgICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNl
aXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwotCi0gICAgICAgIFdLQ29udGV4dFNldEluamVj
dGVkQnVuZGxlQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKLSAgICB9IGVs
c2UgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQobV9jb250ZXh0LmdldCgpLCBudWxscHRyKTsKLQogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlLmNhbGxiYWNrID0gY2FsbGJhY2s7CiB9CiAKQEAgLTQzMyw3ICs0
NTEsNyBAQCBFd2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3KCkKICAgICByZXR1cm4gRXdrQ29u
dGV4dDo6Y3JlYXRlKCkubGVha1JlZigpOwogfQogCi1Fd2tfQ29udGV4dCogZXdrX2NvbnRleHRf
bmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgoY29uc3QgY2hhciogcGF0aCkKK0V3a19Db250
ZXh0KiBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciogcGF0
aCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGF0aCwgbnVsbHB0cik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmlu
ZGV4IGJjN2IwNTRjN2ZkZmQ4OTUwZTdiNjM2MmJiNzJmNDRkZTNmNDE5MTYuLmUxNzY3MGI5MTVj
ODliZGNmNjVjYzFjMDQ3YjZlZTM0MTVmMWFhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIEVBUEkgRXdr
X0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KHZvaWQpOwogICogQHJldHVybiBFd2tf
Q29udGV4dCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqCiAgKiBA
c2VlIGV3a19vYmplY3RfdW5yZWYKLSAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgKKyAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19w
YXRoCiAgKi8KIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ldyh2b2lkKTsKIApAQCAt
MTc4LDE0ICsxNzgsMTcgQEAgRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3KHZvaWQp
OwogICoKICAqIFRoZSByZXR1cm5lZCBFd2tfQ29udGV4dCBvYmplY3QgQGIgc2hvdWxkIGJlIHVu
cmVmJ2VkIGFmdGVyIHVzZS4KICAqCi0gKiBAcGFyYW0gcGF0aCBwYXRoIG9mIGluamVjdGVkIGJ1
bmRsZSBsaWJyYXJ5CisgKiBAcGFyYW0gcGF0aCBkaXJlY3RvcnkgcGF0aCBvZiBleHRlbnNpb25z
CiAgKgogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxM
IG9uIGZhaWx1cmUKICAqCisgKiBAbm90ZSBBbGwgc2hhcmVkIG9iamVjdHMgd2hpY2ggaGF2ZSBl
d2tfZXh0ZW5zaW9uX2luaXQoKSBpbiB0aGUgZ2l2ZW4gQGEgcGF0aCB3aWxsIGJlIGxvYWRlZC4K
KyAqCiAgKiBAc2VlIGV3a19vYmplY3RfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRleHRfbmV3Cisg
KiBAc2VlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbgogICovCi1FQVBJIEV3a19D
b250ZXh0ICpld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aChjb25zdCBj
aGFyICpwYXRoKTsKK0VBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ld193aXRoX2V4dGVu
c2lvbnNfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKIAogLyoqCiAgKiBHZXRzIHRoZSBhcHBsaWNh
dGlvbiBjYWNoZSBtYW5hZ2VyIGluc3RhbmNlIGZvciB0aGlzIEBhIGNvbnRleHQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRl
LmgKaW5kZXggMTcyOWM0YTEyYTIyN2ZjMGEzMmQ0YTk3NTYxNmI2MDVhN2Y5ZDQ1OS4uMzJkMjNl
ZDliNDNkZThmODQzYzJmYmFjZjc0NTI1ZDRhZTI5MWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtODYs
NiArODYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhFd2tfVExT
X0Vycm9yX1BvbGljeSBUTFNFcnJvclBvbGljeSkgY29uc3Q7CiAKKyAgICBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbnNQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25zUGF0aDsgfQorCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1
Z2luUGF0aChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpAQCAtOTYsMTEgKzk4LDEyIEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0
dXJuRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLVHlwZVJlZiBn
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGVDYWxsYmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiLCB2
b2lkKik7CiAgICAgdm9pZCBwcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJl
ZiogcmV0dXJuRGF0YSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0Nv
bnRleHRSZWYpOworICAgIGV4cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZp
Y29uRGF0YWJhc2UoKTsKIApAQCAtMTIxLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAKICAgICBKU0ds
b2JhbENvbnRleHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiAKKyAgICBTdHJpbmcgbV9leHRlbnNp
b25zUGF0aDsKKwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2VfRnJv
bV9JbmplY3RlZF9CdW5kbGVfQ2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0
ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1YzczMzNl
YzVkNGVkMzhkYTljMDYyNDBhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3Rl
ZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJbml0
aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRh
dGEpCi17Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCmluZGV4IDgz
Nzc0ODFmNjY0YmNmOTYwYzIwYjU2YTE4MGIxODc3MThhNjg0Y2EuLmE2MGI1YTdhZDdhODI4OTVj
NzQyNjBkODM3ZTk0NmZkMzA3MjY4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCkBAIC00Myw5ICs0Myw5IEBAIGNvbnN0
IGNoYXIqIEVXSzJVbml0VGVzdEVudmlyb25tZW50OjpkZWZhdWx0VGhlbWUoKSBjb25zdAogICAg
IHJldHVybiBURVNUX1RIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIjsKIH0KIAotY29uc3QgY2hhciog
RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OmluamVjdGVkQnVuZGxlU2FtcGxlKCkgY29uc3QKK2Nv
bnN0IGNoYXIqIEVXSzJVbml0VGVzdEVudmlyb25tZW50OjpleHRlbnNpb25TYW1wbGUoKSBjb25z
dAogewotICAgIHJldHVybiBURVNUX0xJQl9ESVIgIi9saWJld2syVW5pdFRlc3RJbmplY3RlZEJ1
bmRsZVNhbXBsZS5zbyI7CisgICAgcmV0dXJuIFRFU1RfTElCX0RJUiAiL2xpYmV3azJVbml0VGVz
dEV4dGVuc2lvblNhbXBsZS5zbyI7CiB9CiAKIENTdHJpbmcgRVdLMlVuaXRUZXN0RW52aXJvbm1l
bnQ6OnVybEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RFbnZpcm9ubWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5oCmluZGV4IDVmOWUyMjE1
ZGJjYTUxNzZiYzM3ZGNhOTRjN2IyNTQzNWRkYmYyNmUuLmViNTViZjhmOTk1MWU5YThhZTUwNmI3
OGRkODJmZDMwOTMzZDBiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEVudmlyb25tZW50LmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgY2hhciogZGVmYXVsdFRlc3RQYWdlVXJsKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciog
ZGVmYXVsdFRoZW1lKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogaW5qZWN0ZWRCdW5kbGVTYW1w
bGUoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb25TYW1wbGUoKSBjb25zdDsKICAg
ICBDU3RyaW5nIHVybEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlKTsKICAgICBDU3Ry
aW5nIHBhdGhGb3JSZXNvdXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSk7CiAgICAgQ1N0cmluZyBw
YXRoRm9yVGhlbWUoY29uc3QgY2hhciogdGhlbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0
ZW5zaW9uX3NhbXBsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRkM2I0NGNiMmYwMDNkMmUwNTVmODgxNDA4
YjQ3OGZhOGMzZTRjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJFV2Vi
S2l0X0V4dGVuc2lvbi5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK3ZvaWQgZXdrX2V4dGVuc2lvbl9pbml0KEV3a19FeHRlbnNpb24gKikKK3sKK30KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAppbmRl
eCAzZjE0NzBhMDlkYWM4MTU0N2M2YTVmNjE4OGIzYzE4NjgzNmVlMTYxLi5jNjQ0N2U0MzhiMzk5
M2ViNDE1MGQyNjdjMzMzMmRkYzY5NWRkOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCkBA
IC0yMzAsOSArMjMwLDkgQEAgVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfbmV3
KQogICAgIGV3a19vYmplY3RfdW5yZWYoY29udGV4dCk7CiB9CiAKLVRFU1RfRihFV0syQ29udGV4
dFRlc3QsIGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKQorVEVTVF9G
KEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKQog
ewotICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0
ZWRfYnVuZGxlX3BhdGgoZW52aXJvbm1lbnQtPmluamVjdGVkQnVuZGxlU2FtcGxlKCkpOworICAg
IEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19w
YXRoKGVudmlyb25tZW50LT5leHRlbnNpb25TYW1wbGUoKSk7CiAgICAgQVNTRVJUX1RSVUUoY29u
dGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJlZihjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4
dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhiZTM1MzM1MTY0ZTBmNzQzNDcz
OGEyOTlhODQ2MzU1YzMwZjFlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBm
aWxlICAgIEVXZWJLaXRfRXh0ZW5zaW9uLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBoZWFk
ZXIgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgZXdlYmtpdDItZXh0ZW5zaW9uLgorICoKKyAq
IEVXZWJLaXRfRXh0ZW5zaW9uIGlzIHRoZSB3YXkgdG8gZXh0ZW5kIFdlYlByb2Nlc3Mgb2YgZXdl
YmtpdDIuCisgKgorICogSW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBleHRlbnNpb24sIAorICogRmly
c3QsIGV3a19leHRlbnNpb25faW5pdCBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBzaGFyZWQg
b2JqZWN0IGxpa2UgYmVsb3c6CisgKgorICogQGNvZGUKKyAqICNpbmNsdWRlICJFV2ViS2l0X0V4
dGVuc2lvbi5oIgorICogCisgKiB2b2lkIGV3a19leHRlbnNpb25faW5pdChFd2tfRXh0ZW5zaW9u
ICpleHRlbnNpb24pCisgKiB7CisgKiAgICAvLyBwcm92aWRlIEV3a19FeHRlbnNpb25fQ2xpZW50
IGNhbGxiYWNrcyBhcyBjbGllbnQuCisgKiAgICBld2tfZXh0ZW5zaW9uX2NsaWVudF9hZGQoZXh0
ZW5zaW9uLCAmY2xpZW50KTsKKyAqIH0KKyAqIEBlbmRjb2RlCisgKgorICogQW5kIGNvbXBpbGVz
IEMgb3IgQysrIGZpbGVzIGFzIHNoYXJlZCBvYmplY3QgbGlrZSBiZWxvdzoKKyAqCisgKiBAdmVy
YmF0aW0KKyAqIGdjYyAtbyBsaWJzYW1wbGUuc28gc2FtcGxlLmMgLXNoYXJlZCAtZlBJQyBgcGtn
LWNvbmZpZyAtLWNmbGFncyAtLWxpYnMgZWluYSBld2Via2l0Mi1leHRlbnNpb25gCisgKiBAZW5k
dmVyYmF0aW0KKyAqIAorICogVGhlbiwgaW5zdGFsbCB0aGF0IG9iamVjdCBpbnRvIHRoZSBwYXRo
IHdoaWNoIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aCgpIHNwZWNpZmllcy4K
KyAqCisgKiBAc2VlIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aAorICogQHNl
ZSBld2tfZXh0ZW5zaW9uX2NsaWVudF9zZXQKKyAqIEBzZWUgRXdrX0V4dGVuc2lvbl9Jbml0aWFs
aXplX0Z1bmN0aW9uCisgKi8KKworI2lmbmRlZiBFV2ViS2l0X0V4dGVuc2lvbl9oCisjZGVmaW5l
IEVXZWJLaXRfRXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKworI2Vu
ZGlmIC8vIEVXZWJLaXRfRXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YmQ3NDMwMGRhZDlkNTc4YzEwZDdlOWZmOTEyMGI2NTA1ZjI4OTU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
ZXdrX2V4dGVuc2lvbi5oIgorCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjphcHBlbmQoRXdr
X0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMuYXBwZW5kKGNsaWVu
dCk7Cit9CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpyZW1vdmUoRXdrX0V4dGVuc2lvbl9DbGllbnQq
IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMucmVtb3ZlKG1fY2xpZW50cy5maW5kKGNsaWVudCkp
OworfQorCitFaW5hX0Jvb2wgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKEV3a19FeHRlbnNpb24q
IGV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXh0ZW5zaW9uLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGNsaWVudCwgZmFsc2UpOworCisgICAgZXh0ZW5zaW9uLT5h
cHBlbmQoY2xpZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2V4
dGVuc2lvbl9jbGllbnRfZGVsKEV3a19FeHRlbnNpb24qIGV4dGVuc2lvbiwgRXdrX0V4dGVuc2lv
bl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
ZXh0ZW5zaW9uLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNs
aWVudCwgZmFsc2UpOworCisgICAgZXh0ZW5zaW9uLT5yZW1vdmUoY2xpZW50KTsKKworICAgIHJl
dHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWQ3OGI4YmYyNjQ1MzcxOWE1YTljMjI1YzU5YmFmZTNiYjZiNDI3OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tf
ZXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBEZXNj
cmliZXMgdGhlIEV3a19FeHRlbnNpb24gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lv
bl9oCisjZGVmaW5lIGV3a19leHRlbnNpb25faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IEV3
a1BhZ2UgRXdrX1BhZ2U7CisKKy8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5zaW9uLgorICovCit0
eXBlZGVmIHN0cnVjdCBFd2tFeHRlbnNpb24gRXdrX0V4dGVuc2lvbjsKKworLyoqCisgKiBEZWNs
YXJlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbi4KKyAqCisgKiBAYnJpZWYgIFR5
cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGVudHJ5IG9mIHRoZSBleHRlbnNpb24uCisgKgorICogQHBh
cmFtIGV4dGVuc2lvbiB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlIGhlbHBzIHRoZSBjb21tdW5pY2F0
aW9uIGJldHdlZW4gV2ViUHJvY2VzcyBhbmQgeW91ciBleHRlbnNpb24gbGlicmFyeS4KKyAqIEBw
YXJhbSByZXNlcnZlZCBleHRyYSBwYXJhbWV0ZXIgZm9yIHRoZSBmdXR1cmUuIE5VTEwgaXMgZmlu
ZSwgbm93LgorICoKKyAqLwordHlwZWRlZiB2b2lkICooKkV3a19FeHRlbnNpb25fSW5pdGlhbGl6
ZV9GdW5jdGlvbikoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uLCB2b2lkICpyZXNlcnZlZCk7CisK
K3N0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgeworICAgIGludCB2ZXJzaW9uOworICAgIHZvaWQg
KmRhdGE7Cit9OwordHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uQ2xpZW50IEV3a19FeHRlbnNp
b25fQ2xpZW50OworCisvKioKKyAqIEFkZCAocmVnaXN0ZXIpIGEgY2xpZW50IHdoaWNoIGNvbnRh
aW5zIGEgc2V2ZXJhbCBjYWxsYmFja3MgdG8gdGhlIGV4dGVuc2lvbi4KKyAqCisgKiBAcGFyYW0g
ZXh0ZW5zaW9uIGV4dGVuc2lvbiB0byBhdHRhY2ggY2xpZW50IHRvCisgKiBAcGFyYW0gY2xpZW50
IGNsaWVudCB0byBhZGQgdG8gdGhlIGV4dGVuc2lvbgorICoKKyAqIFRoaXMgZnVuY3Rpb24gYWRk
IGEgY2xpZW50LCB3aGljaCBjb250YWlucyBzZXZlcmFsIGNhbGxiYWNrcyByZWNlaXZpbmcgZXZl
bnRzCisgKiBmcm9tIFdlYlByb2Nlc3Mgc2lkZSwgdG8gYSBAcCBleHRlbnNpb24uCisgKgorICog
QHNlZSBld2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2V4
dGVuc2lvbl9jbGllbnRfYWRkKEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbiwgRXdrX0V4dGVuc2lv
bl9DbGllbnQgKmNsaWVudCk7CisKKy8qKgorICogRGVsZXRlIGEgY2xpZW50IGZyb20gdGhlIGV4
dGVuc2lvbi4KKyAqCisgKiBAcGFyYW0gZXh0ZW5zaW9uIGV4dGVuc2lvbiB0byBkZWxldGUgY2xp
ZW50CisgKiBAcGFyYW0gY2xpZW50IGNsaWVudCB3aGljaCBjb250YWlucyB2ZXJzaW9uLCBkYXRh
IGFuZCBjYWxsYmFja3MuCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19leHRlbnNpb25fY2xpZW50
X2RlbChFd2tfRXh0ZW5zaW9uICpleHRlbnNpb24sIEV3a19FeHRlbnNpb25fQ2xpZW50ICpjbGll
bnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2V4
dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjY1MWZhODM1MWE0NmMxNzg3ODkyNjczYzc3ZThjYmMzZmMzYzViYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfZXh0ZW5zaW9uX3ByaXZhdGVf
aAorI2RlZmluZSBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlOworfQorCitj
bGFzcyBFd2tFeHRlbnNpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IEV3a0V4dGVuc2lvbihX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlKikgeyB9CisgICAgfkV3a0V4dGVuc2lvbigpIHsgfQorCisg
ICAgdm9pZCBhcHBlbmQoRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCk7CisgICAgdm9pZCBy
ZW1vdmUoRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCk7CisKK3ByaXZhdGU6CisgICAgVmVj
dG9yPEV3a19FeHRlbnNpb25fQ2xpZW50Kj4gbV9jbGllbnRzOworfTsKKworI2VuZGlmIC8vIGV3
a19leHRlbnNpb25fcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZjk2YzRiYjY3OGE2
NDY4ZTNiNGE2MGQ4Nzc5MDY3OTA4ZWEzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkV4dGVuc2lvbk1hbmFnZXJFZmwuaCIKKworI2luY2x1ZGUgIk1vZHVsZS5o
IgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb24u
aCIKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitFeHRlbnNpb25NYW5hZ2VyRWZsJiBFeHRlbnNpb25NYW5hZ2VyRWZsOjpz
aGFyZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFeHRlbnNpb25NYW5hZ2VyRWZs
PiBleHRlbnNpb25NYW5hZ2VyOworICAgIHJldHVybiBleHRlbnNpb25NYW5hZ2VyOworfQorCitF
eHRlbnNpb25NYW5hZ2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZsKCkKK3sKK30KKwordm9pZCBF
eHRlbnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBl
UmVmIHVzZXJEYXRhKQoreworICAgIEFTU0VSVCghbV9leHRlbnNpb24pOworCisgICAgbV9leHRl
bnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEV3a0V4dGVuc2lvbj4odG9JbXBsKGJ1bmRsZSkpOwor
CisgICAgU3RyaW5nIGV4dGVuc2lvbnNEaXJlY3RvcnkgPSB0b0ltcGwoc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KHVzZXJEYXRhKSktPnN0cmluZygpOworICAgIEFTU0VSVCghZXh0ZW5zaW9uc0Rp
cmVjdG9yeS5pc0VtcHR5KCkpOworCisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBX
ZWJDb3JlOjpsaXN0RGlyZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIp
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKSB7Cisg
ICAgICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQ
YXRoc1tpXSk7CisgICAgICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVu
Y3Rpb24gaW5pdGlhbGl6ZUZ1bmN0aW9uID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8RXdrX0V4
dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uPigiZXdrX2V4dGVuc2lvbl9pbml0Iik7CisgICAg
ICAgICAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5nZXQoKSwgbnVs
bHB0ciAvKiByZXNlcnZlZCBmb3IgdGhlIGZ1dHVyZSAqLyk7CisgICAgICAgICAgICBtX2V4dGVu
c2lvbk1vZHVsZXMuYXBwZW5kKG1vZHVsZS5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNp
b25NYW5hZ2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25N
YW5hZ2VyRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY4MmU1OWI1OTdlMjQzNjNmYmY3MjRhOWY1MjIyOTA3
NmI5OTczZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZs
L0V4dGVuc2lvbk1hbmFnZXJFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKKyNkZWZpbmUg
RXh0ZW5zaW9uTWFuYWdlckVmbF9oCisKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xhc3MgRXdrRXh0ZW5zaW9uOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTW9kdWxlOworCitjbGFzcyBFeHRlbnNpb25NYW5hZ2VyRWZsIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeHRlbnNpb25NYW5hZ2VyRWZsKTsKKworcHVibGlj
OgorICAgIFdLX0VYUE9SVCBzdGF0aWMgRXh0ZW5zaW9uTWFuYWdlckVmbCYgc2hhcmVkKCk7Cisg
ICAgV0tfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKTsKK3By
aXZhdGU6CisgICAgRXh0ZW5zaW9uTWFuYWdlckVmbCgpOworCisgICAgVmVjdG9yPFdlYktpdDo6
TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1bGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFd2tFeHRl
bnNpb24+IG1fZXh0ZW5zaW9uOworCisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEV4
dGVuc2lvbk1hbmFnZXJFZmw+OworfTsKKworfQorCisjZW5kaWYgLy8gRXh0ZW5zaW9uTWFuYWdl
ckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJbmpl
Y3RlZEJ1bmRsZU1haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2Vi
SW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTZjMTAwZWM5ODRmZTM4MzQ0
YWExMzEyN2IzZWUxMDliNGRlY2JhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9lZmwvV2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNwcApAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVmbC5oIgorI2luY2x1ZGUgPFdlYktpdC9X
S0J1bmRsZUluaXRpYWxpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZXh0ZXJu
ICJDIiB2b2lkIFdLQnVuZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJl
ZiB1c2VyRGF0YSkKK3sKKyAgICBFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKS5pbml0aWFs
aXplKGJ1bmRsZSwgdXNlckRhdGEpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvZWZs
L2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1l
eHRlbnNpb24ucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYxNmNkYzJmOTM5NWViZTcyOTZkMDU0OGZlYzgw
MWZjNTFlODNjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0
Mi1leHRlbnNpb24ucGMuaW4KQEAgLTAsMCArMSw4IEBACitwcmVmaXg9QENNQUtFX0lOU1RBTExf
UFJFRklYQAoraW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZQorCitOYW1lOiBld2Via2l0Mi1l
eHRlbnNpb24KK0Rlc2NyaXB0aW9uOiBFeHRlbnNpb24gZm9yIFdlYktpdDIvRUZMKGV3ZWJraXQy
KQorVmVyc2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1JlcXVpcmVzOiBlaW5hCitDZmxhZ3M6IC1J
JHtpbmNsdWRlZGlyfS9AV2ViS2l0Ml9PVVRQVVRfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpP
UkAvZXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZjcxYjMzNGQwZWY1OWM1YjEyNDYzNGVmYTMzYzM4MTVmNjNlZGFhYi4uNWE3NjU1
NjM3ZmI3NGZiNGRlNTJkYTk3MDM2Yzc5M2I3NDUzMTNkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTIy
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50
cm9kdWNlIEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6IEFkZGVkIHggb3B0aW9u
IHRvIHRlc3QgZXh0ZW5zaW9uIHBhdGguCisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKyAgICAg
ICAgKGVsbV9tYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
d2F0Y2hsaXN0OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvIGludG8gRUZMV2ViS2l0MlB1YmxpY0FQSS4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgIEFkZGVkIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8gaW50byBFRkwgZXhjZXB0
aW9ucy4KKwogMjAxNC0wOS0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIE1ha2UgcG9zc2libGUgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Pj4KZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFp
bi5jCmluZGV4IDgzOGE0NjAxNDhiZmE0MDgyNTdiYzYwZmEwYjU0NjRlODY1YTlkYWQuLjg1MWVl
ZTBjNGMzMTgwZjdkNzc3ZGZmNDNlNGE4MGFkMmQwOTVkNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpA
QCAtNDgsNiArNDgsNyBAQCBzdGF0aWMgaW50IHZlcmJvc2UgPSAxOwogc3RhdGljIEVpbmFfTGlz
dCAqd2luZG93cyA9IE5VTEw7CiBzdGF0aWMgY2hhciAqZXZhc19lbmdpbmVfbmFtZSA9IE5VTEw7
CiBzdGF0aWMgY2hhciAqdXNlcl9hZ2VudF9zdHJpbmcgPSBOVUxMOworc3RhdGljIGNoYXIgKmV4
dGVuc2lvbnNfcGF0aCA9IE5VTEw7CiBzdGF0aWMgY2hhciAqYmFja2dyb3VuZF9jb2xvcl9zdHJp
bmcgPSBOVUxMOwogc3RhdGljIEVpbmFfQm9vbCBlbmNvZGluZ19kZXRlY3Rvcl9lbmFibGVkID0g
RUlOQV9GQUxTRTsKIHN0YXRpYyBFaW5hX0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkID0g
RUlOQV9GQUxTRTsKQEAgLTE1Nyw2ICsxNTgsOCBAQCBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0
IG9wdGlvbnMgPSB7CiAgICAgICAgICAgICAoJ3MnLCAid2luZG93LXNpemUiLCAiV2luZG93IHNp
emUgaW4gZm9sbG93aW5nIGZvcm1hdCAod2lkdGgpeChoZWlnaHQpLiIpLAogICAgICAgICBFQ09S
RV9HRVRPUFRfU1RPUkVfU1RSCiAgICAgICAgICAgICAoJ3UnLCAidXNlci1hZ2VudCIsICJVc2Vy
IGFnZW50IHRvIHNldC4iKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX1NUUgorICAgICAg
ICAgICAgKCd4JywgImV4dGVuc2lvbnMtcGF0aCIsICJUaGUgcGF0aCB3aGljaCBleHRlbnNpb25z
IGFyZSBzdG9yZWQuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9ET1VCTEUKICAgICAg
ICAgICAgICgncicsICJkZXZpY2UtcGl4ZWwtcmF0aW8iLCAiUmF0aW8gYmV0d2VlbiB0aGUgQ1NT
IHVuaXRzIGFuZCBkZXZpY2UgcGl4ZWxzLiIpLAogICAgICAgICBFQ09SRV9HRVRPUFRfQ0FMTEJB
Q0tfTk9BUkdTCkBAIC0yMTQ2LDcgKzIxNDksMTQgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3
aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvcGVuZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkK
IAogICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3aW5kb3ctPmVsbV93aW5k
b3cpOwogICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmV3a1Zp
ZXdDbGFzcy0+c2MpOwotICAgIEV3a19Db250ZXh0ICpjb250ZXh0ID0gb3BlbmVyID8gZXdrX3Zp
ZXdfY29udGV4dF9nZXQob3BlbmVyKSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisgICAg
RXdrX0NvbnRleHQgKmNvbnRleHQ7CisgICAgaWYgKG9wZW5lcikKKyAgICAgICAgY29udGV4dCA9
IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcik7CisgICAgZWxzZSBpZiAoZXh0ZW5zaW9uc19w
YXRoKQorICAgICAgICBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19w
YXRoKGV4dGVuc2lvbnNfcGF0aCk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0ID0gZXdrX2Nv
bnRleHRfZGVmYXVsdF9nZXQoKTsKKwogICAgIEV3a19QYWdlX0dyb3VwICpwYWdlR3JvdXAgPSBv
cGVuZXIgPyBld2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVuZXIpIDogZXdrX3BhZ2VfZ3JvdXBf
Y3JlYXRlKCIiKTsKICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2
YXMsIHNtYXJ0LCBjb250ZXh0LCBwYWdlR3JvdXApOwogCkBAIC0yMjc4LDYgKzIyODgsNyBAQCBl
bG1fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICBFQ09SRV9HRVRPUFRfVkFM
VUVfU1RSKGV2YXNfZW5naW5lX25hbWUpLAogICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RS
KHdpbmRvd19zaXplX3N0cmluZyksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIodXNl
cl9hZ2VudF9zdHJpbmcpLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKGV4dGVuc2lv
bnNfcGF0aCksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9ET1VCTEUoZGV2aWNlX3BpeGVs
X3JhdGlvKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wocXVpdE9wdGlvbiksCiAg
ICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKGVuY29kaW5nX2RldGVjdG9yX2VuYWJsZWQp
LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNo
bGlzdCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKaW5k
ZXggZTk1OTY4YWU5ZmJlMGM5ZjJkOWM5MjJlMzFlNzU0M2Q1YmIzNTQxZi4uOGY4ODRkMDRmMjVi
ZDMzODljOGNiNTY4NGFlOThmNmViODY3ZTU0YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0CkBAIC0xMDcsNyArMTA3LDggQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgIHIifExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC8iLAogICAgICAgICB9
LAogICAgICAgICAiRUZMV2ViS2l0MlB1YmxpY0FQSSI6IHsKLSAgICAgICAgICAgICJmaWxlbmFt
ZSI6IHIiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvIgorICAgICAgICAgICAgImZp
bGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvIgorICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvIgogICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC8iLAogICAgICAgICB9LAogICAgICAgICAiRUZMV2ViS2l0MlBsYXRm
b3JtU3BlY2lmaWMiOiB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5k
ZXggMjUzZWIyM2Q0ZGVhNGM0NzBiNWMyNzM5ODhjMGU1YzVjY2ZiZGM2Yy4uMjMyMWJjZDAzMTQ3
NmJiNTcxYmY5OTcwNTljYWYyOWM3MDc2YTAyMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlci5weQpAQCAtMTkwLDYgKzE5MCw3IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9
IFsKICAgICAoWyMgVGhlIEVGTCBBUElzIHVzZSBFRkwgbmFtaW5nIHN0eWxlLCB3aGljaCBpbmNs
dWRlcwogICAgICAgIyBib3RoIGxvd2VyLWNhc2VkIGFuZCBjYW1lbC1jYXNlZCwgdW5kZXJzY29y
ZS1zcGFyYXRlZAogICAgICAgIyB2YWx1ZXMuCisgICAgICAiU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyIsCiAgICAgICAiU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyIsCiAgICAgICAi
LXJlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lIl0pLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238694</attachid>
            <date>2014-09-25 21:19:44 -0700</date>
            <delta_ts>2014-10-02 01:55:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20140926131943.patch</filename>
            <type>text/plain</type>
            <size>46496</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODcxOTkxNGVlOWMwOTM4
Zjg2MTY2MWI0YjhmZmVjZTZhMWNmM2Q1Ni4uMWVkOWI1MjZkYTk1OGFlMjE5YWY2MzQ2Y2Y2NDU2
ZjJjOTdhN2JmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE0LTA5LTI1ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNl
IEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFV2ViS2l0MiBkb2VzIG5vdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHRv
IGV4dGVuZCBXZWJQcm9jZXNzLgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBld2tfY29udGV4
dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisgICAg
ICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qgd2l0
aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90IGV4
cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNpb24s
IGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUgRVdl
YktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tD
b250ZXh0KToKKyAgICAgICAgKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdr
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAgICAgIChFd2tDb250ZXh0OjpzZXRNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dp
dGhfZXh0ZW5zaW9uc19wYXRoKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIGV3ZWJraXQyIGRv
ZXMgbm90IGhhdmUgYSB3YXkgdG8gbWFrZSBpbmplY3RlZCBidW5kbGUuCisgICAgICAgIEluc3Rl
YWQsIEV3a19FeHRlbnNpb24gd2lsbCBjb3ZlciB0aGUgc2FtZSBmdW5jdGlvbmFsaXRpZXMuCisg
ICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChFd2tD
b250ZXh0OjpleHRlbnNpb25zUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVu
dmlyb25tZW50OjpleHRlbnNpb25TYW1wbGUpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0sy
VW5pdFRlc3RFbnZpcm9ubWVudDo6aW5qZWN0ZWRCdW5kbGVTYW1wbGUpOiBSZW5hbWVkIGluamVj
dGVkQnVuZGxlU2FtcGxlIHRvIGV4dGVuc2lvblNhbXBsZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2Ft
cGxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwOiBSZW5hbWVkIGV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoIHRvIGV3a19jb250ZXh0X25l
d193aXRoX2V4dGVuc2lvbnNfcGF0aC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OmFwcGVuZCk6CisgICAgICAg
IChFd2tFeHRlbnNpb246OnJlbW92ZSk6CisgICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9h
ZGQpOgorICAgICAgICAoZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjpFd2tFeHRlbnNpb24pOgor
ICAgICAgICAoRXdrRXh0ZW5zaW9uOjp+RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lv
bk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpFeHRl
bnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL1dl
YkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0
aWFsaXplKToKKyAgICAgICAgKiBlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluOiBBZGRlZC4K
KwogMjAxNC0wOS0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBDbGVhbiB1cCB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IGYwN2ZiNjM5MTE1ZWIxNDI2OWNkYzE2NzJjMDc5NGMxYmNkMGIzNTMu
LmMxODEyMzIzNjY5NjdlZGNlMTkzODFmOTdiYjUzNmZlYTc3ZTFlZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xNzUsNiArMTc1LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5j
cHAKIAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVF
ZmwuY3BwCiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94
eVVuaXguY3BwCkBAIC0xOTcsNiArMTk5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2Vm
bC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0
ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBXZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVm
bC5jcHAKIApAQCAtMjQ1LDYgKzI0OCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9l
ZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MiCkBAIC0zNTgsNiArMzYyLDcgQEAgc2V0KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiAp
CiAKIGNvbmZpZ3VyZV9maWxlKGVmbC9ld2Via2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBPTkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJr
aXQyLWV4dGVuc2lvbi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJr
aXQyLWV4dGVuc2lvbi5wYyBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZp
Zy5jbWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmln
LmNtYWtlIEBPTkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5j
bWFrZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVy
c2lvbi5jbWFrZSBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmguaW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUvRVdlYktpdDIu
aCkKQEAgLTM5OSwxMyArNDA0LDI3IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2luZG93X2ZlYXR1
cmVzLmgiCiApCiAKK3NldChFV2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSUworICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VX
ZWJLaXRfRXh0ZW5zaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oIgorKQorCitpbnN0
YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktp
dDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKK2luc3RhbGwoRklMRVMg
JHtFV2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktp
dDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS9leHRlbnNpb24pCisKIGlu
c3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBE
RVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQoraW5zdGFsbChGSUxFUyAke0NNQUtFX0JJTkFSWV9E
SVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBERVNUSU5BVElPTiBsaWIvcGtn
Y29uZmlnKQogaW5zdGFsbChGSUxFUwogICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktp
dDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0v
V2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlCiAgICAgICAgIERFU1RJTkFU
SU9OIGxpYi9jbWFrZS9FV2ViS2l0MikKIAotaW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0hFQURF
UlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1Rf
VkVSU0lPTl9NQUpPUn0pCitzZXQoRVdFQktJVF9FWFRFTlNJT05fTUFOQUdFUl9JTlNUQUxMX0RJ
UiAiJHtMSUJfSU5TVEFMTF9ESVJ9LyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0tJHtQUk9KRUNUX1ZF
UlNJT05fTUFKT1J9LyIgQ0FDSEUgUEFUSCAiQWJzb2x1dGUgcGF0aCB0byBpbnN0YWxsIGluamVj
dGVkIGJ1bmRsZSB3aGljaCBjb250cm9scyB0aGUgZXh0ZW5zaW9uIGxpYnJhcnkiKQorCithZGRf
bGlicmFyeShld2Via2l0X2V4dGVuc2lvbl9tYW5hZ2VyIFNIQVJFRCAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9lZmwvV2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNwcCIpCit0YXJnZXRfbGlu
a19saWJyYXJpZXMoZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlciBXZWJLaXQyKQorCitpbnN0YWxs
KFRBUkdFVFMgZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlciBERVNUSU5BVElPTiAiJHtFV0VCS0lU
X0VYVEVOU0lPTl9NQU5BR0VSX0lOU1RBTExfRElSfSIpCiAKIGlmIChFTkFCTEVfUExVR0lOX1BS
T0NFU1MpCiAgICAgbGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVT
CkBAIC00NDYsMTYgKzQ2NSwxOCBAQCBzZXQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKIAogc2V0
KFdFQktJVDJfRUZMX1RFU1RfRElSICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cyIpCiBzZXQoVEVTVF9SRVNPVVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Jl
c291cmNlcykKLXNldChURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVIgJHtXRUJLSVQyX0VGTF9URVNU
X0RJUn0vSW5qZWN0ZWRCdW5kbGUpCitzZXQoVEVTVF9FWFRFTlNJT05TX0RJUiAke1dFQktJVDJf
RUZMX1RFU1RfRElSfS9leHRlbnNpb25zKQogc2V0KFdFQktJVDJfRUZMX1RFU1RfUlVOVElNRV9P
VVRQVVRfRElSRUNUT1JZICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2Vi
S2l0QVBJL0VXZWJLaXQyKQogCiBhZGRfZGVmaW5pdGlvbnMoLURURVNUX1JFU09VUkNFU19ESVI9
XCIke1RFU1RfUkVTT1VSQ0VTX0RJUn1cIgogICAgIC1EVEVTVF9MSUJfRElSPVwiJHtDTUFLRV9M
SUJSQVJZX09VVFBVVF9ESVJFQ1RPUll9XCIKICAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURf
TElCUkFSWT0xCiAgICAgLURMSUJFWEVDRElSPVwiJHtFWEVDX0lOU1RBTExfRElSfVwiCisgICAg
LURFWFRFTlNJT05NQU5BR0VSRElSPVwiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vJHtFV0VCS0lU
X0VYVEVOU0lPTl9NQU5BR0VSX0lOU1RBTExfRElSfVwiCiAgICAgLURXRUJQUk9DRVNTTkFNRT1c
IldlYlByb2Nlc3NcIgogICAgIC1EUExVR0lOUFJPQ0VTU05BTUU9XCJQbHVnaW5Qcm9jZXNzXCIK
ICAgICAtRE5FVFdPUktQUk9DRVNTTkFNRT1cIk5ldHdvcmtQcm9jZXNzXCIKKyAgICAtREVYVEVO
U0lPTk1BTkFHRVJOQU1FPVwibGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zb1wiCiAgICAg
LURHVEVTVF9IQVNfUlRUST0wCiApCiAKQEAgLTUwOCw4ICs1MjksNyBAQCBpZiAoRU5BQkxFX0FQ
SV9URVNUUykKICAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdE5hbWV9ICR7RVdL
MlVuaXRUZXN0c19MSUJSQVJJRVN9IGV3azJVbml0VGVzdFV0aWxzKQogICAgIGVuZGZvcmVhY2gg
KCkKIAotICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFNI
QVJFRCAke1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5j
cHApCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxl
U2FtcGxlIFdlYktpdDIpCisgICAgYWRkX2xpYnJhcnkoZXdrMlVuaXRUZXN0RXh0ZW5zaW9uU2Ft
cGxlIFNIQVJFRCAke1RFU1RfRVhURU5TSU9OU19ESVJ9L2V4dGVuc2lvbl9zYW1wbGUuY3BwKQog
ZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9TUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDY2Njc3NTQxOTZlNDE1MDJm
ZDEzOTFkZWUyNTU1MzRkNDU5YmQ5YmMuLmVmY2ExMmY0YmY0OGExYTdiZWJjY2JkNGE2ODhkMDcw
YWVjZWM4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSBDb250ZXh0TWFwJiBj
b250ZXh0TWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1Fd2tDb250ZXh0OjpFd2tDb250ZXh0
KFdLQ29udGV4dFJlZiBjb250ZXh0KQorRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRS
ZWYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKICAgICA6IG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9kYXRhYmFzZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxFd2tE
YXRhYmFzZU1hbmFnZXI+KFdLQ29udGV4dEdldERhdGFiYXNlTWFuYWdlcihjb250ZXh0KSkpCiAg
ICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RXdrU3RvcmFnZU1hbmFnZXI+
KFdLQ29udGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoY29udGV4dCkpKQpAQCAtNzMsNiAr
NzMsNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAg
ICwgbV9yZXF1ZXN0TWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPENvbnRleHRIaXN0b3J5Q2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1fanNHbG9iYWxD
b250ZXh0KG51bGxwdHIpCisgICAgLCBtX2V4dGVuc2lvbnNQYXRoKGV4dGVuc2lvbnNQYXRoKQog
ewogICAgIENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFwKCkuYWRkKGNv
bnRleHQsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CkBAIC05NSw2ICs5NiwxNyBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJl
ZiBjb250ZXh0KQogCiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUu
Y2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlLnVzZXJEYXRhID0gbnVsbHB0cjsKKworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50VjEgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
CisKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBjbGllbnQuYmFzZS5jbGllbnRJ
bmZvID0gdGhpczsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBjbGllbnQuZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgY2xpZW50LmdldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YTsKKworICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50
KG1fY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKIH0KIAogRXdrQ29udGV4dDo6fkV3a0Nv
bnRleHQoKQpAQCAtMTIwLDE0ICsxMzIsMjggQEAgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tD
b250ZXh0OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9w
dFdLKFdLQ29udGV4dENyZWF0ZSgpKS5nZXQoKSkpOwogfQogCi1QYXNzUmVmUHRyPEV3a0NvbnRl
eHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCkK
K3N0YXRpYyBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVuc2lvbigpCit7CisgICAgU3RyaW5nIGJ1
bmRsZVBhdGhGb3JFeHRlbnNpb24gPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
U3RyaW5nOjpmcm9tVVRGOChURVNUX0xJQl9ESVIpLCBFWFRFTlNJT05NQU5BR0VSTkFNRSk7Cisg
ICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aEZvckV4dGVuc2lvbikpCisgICAg
ICAgIHJldHVybiBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uOworCisgICAgYnVuZGxlUGF0aEZvckV4
dGVuc2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21V
VEY4KEVYVEVOU0lPTk1BTkFHRVJESVIpLCBFWFRFTlNJT05NQU5BR0VSTkFNRSk7CisgICAgaWYg
KFdlYkNvcmU6OmZpbGVFeGlzdHMoYnVuZGxlUGF0aEZvckV4dGVuc2lvbikpCisgICAgICAgIHJl
dHVybiBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uOworCisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
Cit9CisKK1Bhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uc1BhdGgpCiB7ICAgCi0gICAgaWYgKCFmaWxlRXhpc3RzKGluamVjdGVk
QnVuZGxlUGF0aCkpCisgICAgU3RyaW5nIGJ1bmRsZVBhdGggPSBidW5kbGVQYXRoRm9yRXh0ZW5z
aW9uKCk7CisgICAgaWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwYXRoID0gYWRvcHRXSyh0b0NvcGllZEFQ
SShpbmplY3RlZEJ1bmRsZVBhdGgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGF0
aCA9IGFkb3B0V0sodG9Db3BpZWRBUEkoYnVuZGxlUGF0aCkpOwogCi0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVu
ZGxlUGF0aChwYXRoLmdldCgpKSkuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3
a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKHBh
dGguZ2V0KCkpKS5nZXQoKSwgZXh0ZW5zaW9uc1BhdGgpKTsKIH0KIAogRXdrQ29udGV4dCogRXdr
Q29udGV4dDo6ZGVmYXVsdENvbnRleHQoKQpAQCAtMzY0LDYgKzM5MCwxMSBAQCB2b2lkIEV3a0Nv
bnRleHQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tD
b250ZXh0UmVmLCBXSwogICAgIHRvRXdrQ29udGV4dChjbGllbnRJbmZvKS0+cHJvY2Vzc1JlY2Vp
dmVkTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHksIHJl
dHVybkRhdGEpOwogfQogCitXS1R5cGVSZWYgRXdrQ29udGV4dDo6Z2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPih0b0NvcGllZEFQSSh0b0V3
a0NvbnRleHQoY2xpZW50SW5mbyktPmV4dGVuc2lvbnNQYXRoKCkpKTsKK30KKwogdm9pZCBFd2tD
b250ZXh0OjpzZXRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRf
TWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEp
CiB7CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNlckRhdGEg
PSB1c2VyRGF0YTsKQEAgLTM3MSwxOSArNDAyLDYgQEAgdm9pZCBFd2tDb250ZXh0OjpzZXRNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2soRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0kK
ICAgICBpZiAobV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sg
PT0gY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9jYWxsYmFja0Zvck1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2spIHsKLSAgICAgICAgV0tDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7Ci0gICAgICAgIG1lbXNldCgmY2xpZW50LCAwLCBz
aXplb2YoY2xpZW50KSk7Ci0KLSAgICAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAg
ICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgICAgICBjbGllbnQuZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZTsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlOwotCi0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1f
Y29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKLSAgICB9IGVsc2UgaWYgKCFjYWxsYmFjaykK
LSAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgp
LCBudWxscHRyKTsKLQogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
LmNhbGxiYWNrID0gY2FsbGJhY2s7CiB9CiAKQEAgLTQzMyw3ICs0NTEsNyBAQCBFd2tfQ29udGV4
dCogZXdrX2NvbnRleHRfbmV3KCkKICAgICByZXR1cm4gRXdrQ29udGV4dDo6Y3JlYXRlKCkubGVh
a1JlZigpOwogfQogCi1Fd2tfQ29udGV4dCogZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRf
YnVuZGxlX3BhdGgoY29uc3QgY2hhciogcGF0aCkKK0V3a19Db250ZXh0KiBld2tfY29udGV4dF9u
ZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoY29uc3QgY2hhciogcGF0aCkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGF0aCwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IGJjN2IwNTRjN2ZkZmQ4
OTUwZTdiNjM2MmJiNzJmNDRkZTNmNDE5MTYuLmUxNzY3MGI5MTVjODliZGNmNjVjYzFjMDQ3YjZl
ZTM0MTVmMWFhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIEVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250
ZXh0X2RlZmF1bHRfZ2V0KHZvaWQpOwogICogQHJldHVybiBFd2tfQ29udGV4dCBvYmplY3Qgb24g
c3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqCiAgKiBAc2VlIGV3a19vYmplY3RfdW5y
ZWYKLSAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgKKyAq
IEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoCiAgKi8KIEVBUEkgRXdr
X0NvbnRleHQgKmV3a19jb250ZXh0X25ldyh2b2lkKTsKIApAQCAtMTc4LDE0ICsxNzgsMTcgQEAg
RUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3KHZvaWQpOwogICoKICAqIFRoZSByZXR1
cm5lZCBFd2tfQ29udGV4dCBvYmplY3QgQGIgc2hvdWxkIGJlIHVucmVmJ2VkIGFmdGVyIHVzZS4K
ICAqCi0gKiBAcGFyYW0gcGF0aCBwYXRoIG9mIGluamVjdGVkIGJ1bmRsZSBsaWJyYXJ5CisgKiBA
cGFyYW0gcGF0aCBkaXJlY3RvcnkgcGF0aCBvZiBleHRlbnNpb25zCiAgKgogICogQHJldHVybiBF
d2tfQ29udGV4dCBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKICAqCisg
KiBAbm90ZSBBbGwgc2hhcmVkIG9iamVjdHMgd2hpY2ggaGF2ZSBld2tfZXh0ZW5zaW9uX2luaXQo
KSBpbiB0aGUgZ2l2ZW4gQGEgcGF0aCB3aWxsIGJlIGxvYWRlZC4KKyAqCiAgKiBAc2VlIGV3a19v
YmplY3RfdW5yZWYKICAqIEBzZWUgZXdrX2NvbnRleHRfbmV3CisgKiBAc2VlIEV3a19FeHRlbnNp
b25fSW5pdGlhbGl6ZV9GdW5jdGlvbgogICovCi1FQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4
dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKK0VBUEkg
RXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChjb25zdCBj
aGFyICpwYXRoKTsKIAogLyoqCiAgKiBHZXRzIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBtYW5hZ2Vy
IGluc3RhbmNlIGZvciB0aGlzIEBhIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggMTcyOWM0YTEy
YTIyN2ZjMGEzMmQ0YTk3NTYxNmI2MDVhN2Y5ZDQ1OS4uMzJkMjNlZDliNDNkZThmODQzYzJmYmFj
Zjc0NTI1ZDRhZTI5MWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhFd2tfVExTX0Vycm9yX1BvbGljeSBUTFNF
cnJvclBvbGljeSkgY29uc3Q7CiAKKyAgICBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9leHRlbnNpb25zUGF0aDsgfQorCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1Z2luUGF0aChjb25zdCBTdHJp
bmcmKTsKICNlbmRpZgpAQCAtOTYsMTEgKzk4LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLVHlwZVJlZiBnZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKICAgICB2b2lkIHNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29u
dGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiLCB2b2lkKik7CiAgICAgdm9pZCBw
cm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSk7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRSZWYpOworICAgIGV4
cGxpY2l0IEV3a0NvbnRleHQoV0tDb250ZXh0UmVmLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnNQ
YXRoID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBlbnN1cmVGYXZpY29uRGF0YWJhc2UoKTsKIApA
QCAtMTIxLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9q
c0dsb2JhbENvbnRleHQ7CiAKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zUGF0aDsKKwogICAgIHN0
cnVjdCB7CiAgICAgICAgIEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVf
Q2IgY2FsbGJhY2s7CiAgICAgICAgIHZvaWQqIHVzZXJEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRf
YnVuZGxlX3NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzRjZTEzYjZhYzZiYWE1YzczMzNlYzVkNGVkMzhkYTljMDYyNDBh
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9i
dW5kbGVfc2FtcGxlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4
dGVybiAiQyIgewotI2VuZGlmCi0KLXZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCi17Ci19Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCmluZGV4IDgzNzc0ODFmNjY0YmNmOTYwYzIw
YjU2YTE4MGIxODc3MThhNjg0Y2EuLmE2MGI1YTdhZDdhODI4OTVjNzQyNjBkODM3ZTk0NmZkMzA3
MjY4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
RW52aXJvbm1lbnQuY3BwCkBAIC00Myw5ICs0Myw5IEBAIGNvbnN0IGNoYXIqIEVXSzJVbml0VGVz
dEVudmlyb25tZW50OjpkZWZhdWx0VGhlbWUoKSBjb25zdAogICAgIHJldHVybiBURVNUX1RIRU1F
X0RJUiAiL2RlZmF1bHQuZWRqIjsKIH0KIAotY29uc3QgY2hhciogRVdLMlVuaXRUZXN0RW52aXJv
bm1lbnQ6OmluamVjdGVkQnVuZGxlU2FtcGxlKCkgY29uc3QKK2NvbnN0IGNoYXIqIEVXSzJVbml0
VGVzdEVudmlyb25tZW50OjpleHRlbnNpb25TYW1wbGUoKSBjb25zdAogewotICAgIHJldHVybiBU
RVNUX0xJQl9ESVIgIi9saWJld2syVW5pdFRlc3RJbmplY3RlZEJ1bmRsZVNhbXBsZS5zbyI7Cisg
ICAgcmV0dXJuIFRFU1RfTElCX0RJUiAiL2xpYmV3azJVbml0VGVzdEV4dGVuc2lvblNhbXBsZS5z
byI7CiB9CiAKIENTdHJpbmcgRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OnVybEZvclJlc291cmNl
KGNvbnN0IGNoYXIqIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RFbnZpcm9ubWVudC5oCmluZGV4IDVmOWUyMjE1ZGJjYTUxNzZiYzM3ZGNhOTRj
N2IyNTQzNWRkYmYyNmUuLmViNTViZjhmOTk1MWU5YThhZTUwNmI3OGRkODJmZDMwOTMzZDBiZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25t
ZW50LmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgY2hhciogZGVmYXVs
dFRlc3RQYWdlVXJsKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGVmYXVsdFRoZW1lKCkgY29u
c3Q7Ci0gICAgY29uc3QgY2hhciogaW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSBjb25zdDsKKyAgICBj
b25zdCBjaGFyKiBleHRlbnNpb25TYW1wbGUoKSBjb25zdDsKICAgICBDU3RyaW5nIHVybEZvclJl
c291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlKTsKICAgICBDU3RyaW5nIHBhdGhGb3JSZXNvdXJj
ZShjb25zdCBjaGFyKiByZXNvdXJjZSk7CiAgICAgQ1N0cmluZyBwYXRoRm9yVGhlbWUoY29uc3Qg
Y2hhciogdGhlbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDE3MmM4OTU3ODI0OGMzNGQxYTI5YzQ4MzdmZjU4YTBiNjU0OTBmYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4
dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBSeXVhbiBDaG9pLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkVXZWJLaXRf
RXh0ZW5zaW9uLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
Kwordm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVuc2lvbiAqKQoreworfQorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCmluZGV4IDNm
MTQ3MGEwOWRhYzgxNTQ3YzZhNWY2MTg4YjNjMTg2ODM2ZWUxNjEuLmM2NDQ3ZTQzOGIzOTkzZWI0
MTUwZDI2N2MzMzMyZGRjNjk1ZGQ5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKQEAgLTIz
MCw5ICsyMzAsOSBAQCBURVNUX0YoRVdLMkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXcpCiAg
ICAgZXdrX29iamVjdF91bnJlZihjb250ZXh0KTsKIH0KIAotVEVTVF9GKEVXSzJDb250ZXh0VGVz
dCwgZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgpCitURVNUX0YoRVdL
MkNvbnRleHRUZXN0LCBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgpCiB7Ci0g
ICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9i
dW5kbGVfcGF0aChlbnZpcm9ubWVudC0+aW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSk7CisgICAgRXdr
X0NvbnRleHQqIGNvbnRleHQgPSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgo
ZW52aXJvbm1lbnQtPmV4dGVuc2lvblNhbXBsZSgpKTsKICAgICBBU1NFUlRfVFJVRShjb250ZXh0
KTsKICAgICBld2tfb2JqZWN0X3VucmVmKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5z
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwv
RVdlYktpdF9FeHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGJlMzUzMzUxNjRlMGY3NDM0NzM4YTI5
OWE4NDYzNTVjMzBmMWU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUg
ICAgRVdlYktpdF9FeHRlbnNpb24uaAorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIGhlYWRlciBm
aWxlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBld2Via2l0Mi1leHRlbnNpb24uCisgKgorICogRVdl
YktpdF9FeHRlbnNpb24gaXMgdGhlIHdheSB0byBleHRlbmQgV2ViUHJvY2VzcyBvZiBld2Via2l0
Mi4KKyAqCisgKiBJbiBvcmRlciB0byBjcmVhdGUgdGhlIGV4dGVuc2lvbiwgCisgKiBGaXJzdCwg
ZXdrX2V4dGVuc2lvbl9pbml0IG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHNoYXJlZCBvYmpl
Y3QgbGlrZSBiZWxvdzoKKyAqCisgKiBAY29kZQorICogI2luY2x1ZGUgIkVXZWJLaXRfRXh0ZW5z
aW9uLmgiCisgKiAKKyAqIHZvaWQgZXdrX2V4dGVuc2lvbl9pbml0KEV3a19FeHRlbnNpb24gKmV4
dGVuc2lvbikKKyAqIHsKKyAqICAgIC8vIHByb3ZpZGUgRXdrX0V4dGVuc2lvbl9DbGllbnQgY2Fs
bGJhY2tzIGFzIGNsaWVudC4KKyAqICAgIGV3a19leHRlbnNpb25fY2xpZW50X2FkZChleHRlbnNp
b24sICZjbGllbnQpOworICogfQorICogQGVuZGNvZGUKKyAqCisgKiBBbmQgY29tcGlsZXMgQyBv
ciBDKysgZmlsZXMgYXMgc2hhcmVkIG9iamVjdCBsaWtlIGJlbG93OgorICoKKyAqIEB2ZXJiYXRp
bQorICogZ2NjIC1vIGxpYnNhbXBsZS5zbyBzYW1wbGUuYyAtc2hhcmVkIC1mUElDIGBwa2ctY29u
ZmlnIC0tY2ZsYWdzIC0tbGlicyBlaW5hIGV3ZWJraXQyLWV4dGVuc2lvbmAKKyAqIEBlbmR2ZXJi
YXRpbQorICogCisgKiBUaGVuLCBpbnN0YWxsIHRoYXQgb2JqZWN0IGludG8gdGhlIHBhdGggd2hp
Y2ggZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKCkgc3BlY2lmaWVzLgorICoK
KyAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoCisgKiBAc2VlIGV3
a19leHRlbnNpb25fY2xpZW50X3NldAorICogQHNlZSBFd2tfRXh0ZW5zaW9uX0luaXRpYWxpemVf
RnVuY3Rpb24KKyAqLworCisjaWZuZGVmIEVXZWJLaXRfRXh0ZW5zaW9uX2gKKyNkZWZpbmUgRVdl
YktpdF9FeHRlbnNpb25faAorCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorCisjZW5kaWYg
Ly8gRVdlYktpdF9FeHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4NjEwZjY2ODFjMDliMGI5MjZlMjNhZmM2ODU0NWNkMjIxZTI0ZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBSeXVhbiBDaG9pLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKworI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJp
dmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit2b2lkIEV3a0V4dGVuc2lvbjo6
YXBwZW5kKEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLmFw
cGVuZChjbGllbnQpOworfQorCit2b2lkIEV3a0V4dGVuc2lvbjo6cmVtb3ZlKEV3a19FeHRlbnNp
b25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLnJlbW92ZShtX2NsaWVudHMuZmlu
ZChjbGllbnQpKTsKK30KKworRWluYV9Cb29sIGV3a19leHRlbnNpb25fY2xpZW50X2FkZChFd2tf
RXh0ZW5zaW9uKiBleHRlbnNpb24sIEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV4dGVuc2lvbiwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjbGllbnQsIGZhbHNlKTsKKworICAgIGV4
dGVuc2lvbi0+YXBwZW5kKGNsaWVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9C
b29sIGV3a19leHRlbnNpb25fY2xpZW50X2RlbChFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24sIEV3
a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGV4dGVuc2lvbiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChjbGllbnQsIGZhbHNlKTsKKworICAgIGV4dGVuc2lvbi0+cmVtb3ZlKGNsaWVudCk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkYWU5YTA4N2Y3M2I1ZmYzNGE4MjBiOGU4OWRhY2JjMTBkMDMyYjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvZXdrX2V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgUnl1YW4gQ2hvaS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2V4dGVu
c2lvbi5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19FeHRlbnNpb24gQVBJLgorICov
CisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9oCisjZGVmaW5lIGV3a19leHRlbnNpb25faAorCisj
aW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKKy8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5zaW9uLgorICovCit0eXBlZGVmIHN0cnVj
dCBFd2tFeHRlbnNpb24gRXdrX0V4dGVuc2lvbjsKKworLyoqCisgKiBEZWNsYXJlIEV3a19FeHRl
bnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbi4KKyAqCisgKiBAYnJpZWYgIFR5cGUgZGVmaW5pdGlv
biBmb3IgdGhlIGVudHJ5IG9mIHRoZSBleHRlbnNpb24uCisgKgorICogQHBhcmFtIGV4dGVuc2lv
biB0aGUgZXh0ZW5zaW9uIGluc3RhbmNlIGhlbHBzIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4g
V2ViUHJvY2VzcyBhbmQgeW91ciBleHRlbnNpb24gbGlicmFyeS4KKyAqIEBwYXJhbSByZXNlcnZl
ZCBleHRyYSBwYXJhbWV0ZXIgZm9yIHRoZSBmdXR1cmUuIE5VTEwgaXMgZmluZSwgbm93LgorICoK
KyAqLwordHlwZWRlZiB2b2lkICooKkV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbiko
RXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uLCB2b2lkICpyZXNlcnZlZCk7CisKK3N0cnVjdCBFd2tF
eHRlbnNpb25DbGllbnQgeworICAgIGludCB2ZXJzaW9uOworICAgIHZvaWQgKmRhdGE7Cit9Owor
dHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uQ2xpZW50IEV3a19FeHRlbnNpb25fQ2xpZW50Owor
CisvKioKKyAqIEFkZCAocmVnaXN0ZXIpIGEgY2xpZW50IHdoaWNoIGNvbnRhaW5zIGEgc2V2ZXJh
bCBjYWxsYmFja3MgdG8gdGhlIGV4dGVuc2lvbi4KKyAqCisgKiBAcGFyYW0gZXh0ZW5zaW9uIGV4
dGVuc2lvbiB0byBhdHRhY2ggY2xpZW50IHRvCisgKiBAcGFyYW0gY2xpZW50IGNsaWVudCB0byBh
ZGQgdG8gdGhlIGV4dGVuc2lvbgorICoKKyAqIFRoaXMgZnVuY3Rpb24gYWRkIGEgY2xpZW50LCB3
aGljaCBjb250YWlucyBzZXZlcmFsIGNhbGxiYWNrcyByZWNlaXZpbmcgZXZlbnRzCisgKiBmcm9t
IFdlYlByb2Nlc3Mgc2lkZSwgdG8gYSBAcCBleHRlbnNpb24uCisgKgorICogQHNlZSBld2tfZXh0
ZW5zaW9uX2NsaWVudF9kZWwKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2V4dGVuc2lvbl9jbGll
bnRfYWRkKEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9DbGllbnQgKmNs
aWVudCk7CisKKy8qKgorICogRGVsZXRlIGEgY2xpZW50IGZyb20gdGhlIGV4dGVuc2lvbi4KKyAq
CisgKiBAcGFyYW0gZXh0ZW5zaW9uIGV4dGVuc2lvbiB0byBkZWxldGUgY2xpZW50CisgKiBAcGFy
YW0gY2xpZW50IGNsaWVudCB3aGljaCBjb250YWlucyB2ZXJzaW9uLCBkYXRhIGFuZCBjYWxsYmFj
a3MuCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19leHRlbnNpb25fY2xpZW50X2RlbChFd2tfRXh0
ZW5zaW9uICpleHRlbnNpb24sIEV3a19FeHRlbnNpb25fQ2xpZW50ICpjbGllbnQpOworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2V4dGVuc2lvbl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWNjMTkyNTkzNDM5MTY5YzFkYjU2MGQ1NjQwZDM5MTA4MWRkYTk0ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tf
ZXh0ZW5zaW9uX3ByaXZhdGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IFJ5dWFuIENob2kuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19leHRlbnNpb25fcHJpdmF0
ZV9oCisjZGVmaW5lIGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgSW5qZWN0ZWRCdW5kbGU7Cit9CisK
K2NsYXNzIEV3a0V4dGVuc2lvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9u
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGUqKSB7IH0KKyAgICB+RXdrRXh0ZW5zaW9uKCkgeyB9CisK
KyAgICB2b2lkIGFwcGVuZChFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KTsKKyAgICB2b2lk
IHJlbW92ZShFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KTsKKworcHJpdmF0ZToKKyAgICBW
ZWN0b3I8RXdrX0V4dGVuc2lvbl9DbGllbnQqPiBtX2NsaWVudHM7Cit9OworCisjZW5kaWYgLy8g
ZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkZTJiMDljN2Fl
N2NiNTFhNDEwODExZGYyM2YyMmRhMDIzMjJiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCkBAIC0wLDAgKzEs
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1YW4gQ2hvaS4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25NYW5hZ2VyRWZsLmgiCisKKyNp
bmNsdWRlICJNb2R1bGUuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRl
ICJld2tfZXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRXh0ZW5zaW9uTWFuYWdlckVmbCYgRXh0ZW5z
aW9uTWFuYWdlckVmbDo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RXh0
ZW5zaW9uTWFuYWdlckVmbD4gZXh0ZW5zaW9uTWFuYWdlcjsKKyAgICByZXR1cm4gZXh0ZW5zaW9u
TWFuYWdlcjsKK30KKworRXh0ZW5zaW9uTWFuYWdlckVmbDo6RXh0ZW5zaW9uTWFuYWdlckVmbCgp
Cit7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uTWFuYWdlckVmbDo6aW5pdGlhbGl6ZShXS0J1bmRsZVJl
ZiBidW5kbGUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAgICBBU1NFUlQoIW1fZXh0ZW5zaW9u
KTsKKworICAgIFN0cmluZyBleHRlbnNpb25zRGlyZWN0b3J5ID0gdG9JbXBsKHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPih1c2VyRGF0YSkpLT5zdHJpbmcoKTsKKyAgICBpZiAoZXh0ZW5zaW9uc0Rp
cmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXh0ZW5zaW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxFd2tFeHRlbnNpb24+KHRvSW1wbChidW5kbGUpKTsKKworICAgIFZl
Y3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShleHRlbnNp
b25zRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIiouc28iKSk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChXZWJDb3Jl
OjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkgeworICAgICAgICAgICAgYXV0byBtb2R1bGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOworICAgICAgICAgICAg
aWYgKCFtb2R1bGUtPmxvYWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uIGluaXRpYWxpemVGdW5jdGlv
biA9IG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5j
dGlvbj4oImV3a19leHRlbnNpb25faW5pdCIpOworICAgICAgICAgICAgaWYgKCFpbml0aWFsaXpl
RnVuY3Rpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpbml0aWFs
aXplRnVuY3Rpb24obV9leHRlbnNpb24uZ2V0KCksIG51bGxwdHIgLyogcmVzZXJ2ZWQgZm9yIHRo
ZSBmdXR1cmUgKi8pOworICAgICAgICAgICAgbV9leHRlbnNpb25Nb2R1bGVzLmFwcGVuZChtb2R1
bGUucmVsZWFzZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE2ZWZjMzVkZjZhZTE0NmQ0ZTA2YTAxZThiN2I5YTNiZTYzZmViMGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBSeXVhbiBDaG9pLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKKyNkZWZpbmUgRXh0ZW5zaW9u
TWFuYWdlckVmbF9oCisKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworY2xhc3MgRXdrRXh0ZW5zaW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgTW9kdWxlOworCitjbGFzcyBFeHRlbnNpb25NYW5hZ2VyRWZsIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShFeHRlbnNpb25NYW5hZ2VyRWZsKTsKK3B1YmxpYzoKKyAgICBXS19F
WFBPUlQgc3RhdGljIEV4dGVuc2lvbk1hbmFnZXJFZmwmIHNoYXJlZCgpOworICAgIFdLX0VYUE9S
VCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZik7Citwcml2YXRlOgorICAg
IEV4dGVuc2lvbk1hbmFnZXJFZmwoKTsKKworICAgIFZlY3RvcjxNb2R1bGUqPiBtX2V4dGVuc2lv
bk1vZHVsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV3a0V4dGVuc2lvbj4gbV9leHRlbnNpb247
CisKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD47
Cit9OworCit9CisKKyNlbmRpZiAvLyBFeHRlbnNpb25NYW5hZ2VyRWZsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYkluamVjdGVkQnVuZGxlTWFpbkVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJbmplY3RlZEJ1bmRsZU1haW5F
ZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdlYzMxZTRmNTI2M2M4OTBhZmMxNTY3NzhlYTU4ODVmNjMwMDk3
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJ
bmplY3RlZEJ1bmRsZU1haW5FZmwuY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgUnl1YW4gQ2hvaS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIkV4dGVuc2lvbk1hbmFnZXJFZmwuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tCdW5k
bGVJbml0aWFsaXplLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2V4dGVybiAiQyIg
dm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNl
ckRhdGEpCit7CisgICAgRXh0ZW5zaW9uTWFuYWdlckVmbDo6c2hhcmVkKCkuaW5pdGlhbGl6ZShi
dW5kbGUsIHVzZXJEYXRhKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Vi
a2l0Mi1leHRlbnNpb24ucGMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5z
aW9uLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTZjZGMyZjkzOTVlYmU3Mjk2ZDA1NDhmZWM4MDFmYzUx
ZTgzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0
ZW5zaW9uLnBjLmluCkBAIC0wLDAgKzEsOCBAQAorcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJ
WEAKK2luY2x1ZGVkaXI9JHtwcmVmaXh9L2luY2x1ZGUKKworTmFtZTogZXdlYmtpdDItZXh0ZW5z
aW9uCitEZXNjcmlwdGlvbjogRXh0ZW5zaW9uIGZvciBXZWJLaXQyL0VGTChld2Via2l0MikKK1Zl
cnNpb246IEBQUk9KRUNUX1ZFUlNJT05ACitSZXF1aXJlczogZWluYQorQ2ZsYWdzOiAtSSR7aW5j
bHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JAL2V4
dGVuc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDM1NDExZWMyNTQ4NDM0Zjc2NWRkNzcyZTM3NzBjOGI2MDc2OTM4NjcuLmFkM2ZjN2JlYjJh
ZTRmNTk2YTljOTk4YWZiNjcxNzU5ZjY5YTMzZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wOS0yNSAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAZ21haWwuY29tPgorCisgICAgICAgIFtFRkxdIEludHJvZHVj
ZSBFV2ViS2l0X0V4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM0OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOiBBZGRlZCB4IG9wdGlvbiB0byB0
ZXN0IGV4dGVuc2lvbiBwYXRoLgorICAgICAgICAod2luZG93X2NyZWF0ZSk6CisgICAgICAgIChl
bG1fbWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNo
bGlzdDoKKyAgICAgICAgQWRkZWQgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsLyBpbnRvIEVGTFdlYktpdDJQdWJsaWNBUEkuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIGludG8gRUZMIGV4Y2VwdGlvbnMu
CisKIDIwMTQtMDktMjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBTYWlkIHRvIHRoZSBjb250cmlidXRvcnMgbGlzdCBzbyBoaXMgbmFtZSBjb21wbGV0ZXMg
aW4gYnVnemlsbGEuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jIGIv
VG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwppbmRleCA3NjBmZmI5OTIzZGFhMGZjN2ZmZjMz
ZmIxMWM0ODI4Y2NjNjAwYjg1Li4xYmQyZGZmNmEzODBlNzdiOWU0MmFkOWU1NGNjOWZjNTgwODE5
YjkwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL2VmbC9tYWluLmMKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGludCB2ZXJi
b3NlID0gMTsKIHN0YXRpYyBFaW5hX0xpc3QgKndpbmRvd3MgPSBOVUxMOwogc3RhdGljIGNoYXIg
KmV2YXNfZW5naW5lX25hbWUgPSBOVUxMOwogc3RhdGljIGNoYXIgKnVzZXJfYWdlbnRfc3RyaW5n
ID0gTlVMTDsKK3N0YXRpYyBjaGFyICpleHRlbnNpb25zX3BhdGggPSBOVUxMOwogc3RhdGljIGNo
YXIgKmJhY2tncm91bmRfY29sb3Jfc3RyaW5nID0gTlVMTDsKIHN0YXRpYyBFaW5hX0Jvb2wgZW5j
b2RpbmdfZGV0ZWN0b3JfZW5hYmxlZCA9IEVJTkFfRkFMU0U7CiBzdGF0aWMgRWluYV9Cb29sIGZy
YW1lX2ZsYXR0ZW5pbmdfZW5hYmxlZCA9IEVJTkFfRkFMU0U7CkBAIC0xNTcsNiArMTU4LDggQEAg
c3RhdGljIGNvbnN0IEVjb3JlX0dldG9wdCBvcHRpb25zID0gewogICAgICAgICAgICAgKCdzJywg
IndpbmRvdy1zaXplIiwgIldpbmRvdyBzaXplIGluIGZvbGxvd2luZyBmb3JtYXQgKHdpZHRoKXgo
aGVpZ2h0KS4iKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX1NUUgogICAgICAgICAgICAg
KCd1JywgInVzZXItYWdlbnQiLCAiVXNlciBhZ2VudCB0byBzZXQuIiksCisgICAgICAgIEVDT1JF
X0dFVE9QVF9TVE9SRV9TVFIKKyAgICAgICAgICAgICgneCcsICJleHRlbnNpb25zLXBhdGgiLCAi
VGhlIHBhdGggd2hpY2ggZXh0ZW5zaW9ucyBhcmUgc3RvcmVkLiIpLAogICAgICAgICBFQ09SRV9H
RVRPUFRfU1RPUkVfRE9VQkxFCiAgICAgICAgICAgICAoJ3InLCAiZGV2aWNlLXBpeGVsLXJhdGlv
IiwgIlJhdGlvIGJldHdlZW4gdGhlIENTUyB1bml0cyBhbmQgZGV2aWNlIHBpeGVscy4iKSwKICAg
ICAgICAgRUNPUkVfR0VUT1BUX0NBTExCQUNLX05PQVJHUwpAQCAtMjE1MCw3ICsyMTUzLDE0IEBA
IHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVy
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICAgICBFdmFzICpldmFzID0gZXZhc19vYmplY3Rf
ZXZhc19nZXQod2luZG93LT5lbG1fd2luZG93KTsKICAgICBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2
YXNfc21hcnRfY2xhc3NfbmV3KCZld2tWaWV3Q2xhc3MtPnNjKTsKLSAgICBFd2tfQ29udGV4dCAq
Y29udGV4dCA9IG9wZW5lciA/IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcikgOiBld2tfY29u
dGV4dF9kZWZhdWx0X2dldCgpOworICAgIEV3a19Db250ZXh0ICpjb250ZXh0OworICAgIGlmIChv
cGVuZXIpCisgICAgICAgIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldChvcGVuZXIpOwor
ICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNfcGF0aCkKKyAgICAgICAgY29udGV4dCA9IGV3a19jb250
ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChleHRlbnNpb25zX3BhdGgpOworICAgIGVsc2UK
KyAgICAgICAgY29udGV4dCA9IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisKICAgICBFd2tf
UGFnZV9Hcm91cCAqcGFnZUdyb3VwID0gb3BlbmVyID8gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQo
b3BlbmVyKSA6IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgiIik7CiAgICAgd2luZG93LT5ld2tfdmll
dyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCwgcGFnZUdyb3VwKTsK
IApAQCAtMjI4Miw2ICsyMjkyLDcgQEAgZWxtX21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
ICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1NUUihldmFzX2VuZ2luZV9uYW1lKSwKICAgICAg
ICAgRUNPUkVfR0VUT1BUX1ZBTFVFX1NUUih3aW5kb3dfc2l6ZV9zdHJpbmcpLAogICAgICAgICBF
Q09SRV9HRVRPUFRfVkFMVUVfU1RSKHVzZXJfYWdlbnRfc3RyaW5nKSwKKyAgICAgICAgRUNPUkVf
R0VUT1BUX1ZBTFVFX1NUUihleHRlbnNpb25zX3BhdGgpLAogICAgICAgICBFQ09SRV9HRVRPUFRf
VkFMVUVfRE9VQkxFKGRldmljZV9waXhlbF9yYXRpbyksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9W
QUxVRV9CT09MKHF1aXRPcHRpb24pLAogICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfQk9PTChl
bmNvZGluZ19kZXRlY3Rvcl9lbmFibGVkKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvd2F0Y2hsaXN0CmluZGV4IGIxZjg1MzMyMzE0ODY4YmUzNTU4MzE2ZGJlMGRi
MTk1MGQzMmE1ZjIuLjJkMjhmYzU5YzJkZmU1NDAxOGU4YjI1YjlkOGZjMTIwOWNmNTc4NmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdApAQCAt
MTA3LDcgKzEwNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByInxMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvIiwKICAgICAgICAgfSwKICAgICAgICAgIkVGTFdlYktpdDJQdWJsaWNBUEki
OiB7Ci0gICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsLyIKKyAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHIi
fFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsLyIKICAgICAgICAgICAgICAgICAgICAg
ICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvIiwKICAgICAgICAgfSwK
ICAgICAgICAgIkVGTFdlYktpdDJQbGF0Zm9ybVNwZWNpZmljIjogewpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDI1M2ViMjNkNGRlYTRjNDcwYjVjMjczOTg4YzBl
NWM1Y2NmYmRjNmMuLmRkYWU2ODY2OGFmYmVmZmNmN2M3NDhlZTY1NmIwYzQyZDc5NzU2ZjggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTE5MCw3ICsxOTAsOCBA
QCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgKFsjIFRoZSBFRkwgQVBJcyB1c2UgRUZM
IG5hbWluZyBzdHlsZSwgd2hpY2ggaW5jbHVkZXMKICAgICAgICMgYm90aCBsb3dlci1jYXNlZCBh
bmQgY2FtZWwtY2FzZWQsIHVuZGVyc2NvcmUtc3BhcmF0ZWQKICAgICAgICMgdmFsdWVzLgotICAg
ICAgIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsLyJdLAorICAgICAgIlNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsLyIsCisgICAgICAiU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyJdLAogICAgICBbIi1yZWFkYWJpbGl0eS9uYW1p
bmciLAogICAgICAgIi1yZWFkYWJpbGl0eS9wYXJhbWV0ZXJfbmFtZSJdKSwKICAgICAoWyMgTWlu
aUJyb3dzZXIvZWZsIGFyZSBFRkwgc2ltcGxlIGFwcGxpY2F0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239092</attachid>
            <date>2014-10-02 01:55:40 -0700</date>
            <delta_ts>2014-10-10 00:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134921-20141002175533.patch</filename>
            <type>text/plain</type>
            <size>46690</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjVkY2IwZGRhYmI5ZTY1
YTgxMmNkZjEzYTA3YzE2YzBkM2U2MDg1ZC4uZWVjZWNjNzhjMDFlOGQ3NTg1OGZhYzFjODk2YzY5
ODJjNzlkMTBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE0LTEwLTAxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNl
IEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFV2ViS2l0MiBkb2VzIG5vdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHRv
IGV4dGVuZCBXZWJQcm9jZXNzLgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBld2tfY29udGV4
dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisgICAg
ICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qgd2l0
aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90IGV4
cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNpb24s
IGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUgRVdl
YktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tD
b250ZXh0KToKKyAgICAgICAgKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdr
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAgICAgIChFd2tDb250ZXh0OjpzZXRNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dp
dGhfZXh0ZW5zaW9uc19wYXRoKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIGV3ZWJraXQyIGRv
ZXMgbm90IGhhdmUgYSB3YXkgdG8gbWFrZSBpbmplY3RlZCBidW5kbGUuCisgICAgICAgIEluc3Rl
YWQsIEV3a19FeHRlbnNpb24gd2lsbCBjb3ZlciB0aGUgc2FtZSBmdW5jdGlvbmFsaXRpZXMuCisg
ICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChFd2tD
b250ZXh0OjpleHRlbnNpb25zUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVu
dmlyb25tZW50OjpleHRlbnNpb25TYW1wbGUpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0sy
VW5pdFRlc3RFbnZpcm9ubWVudDo6aW5qZWN0ZWRCdW5kbGVTYW1wbGUpOiBSZW5hbWVkIGluamVj
dGVkQnVuZGxlU2FtcGxlIHRvIGV4dGVuc2lvblNhbXBsZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2Ft
cGxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwOiBSZW5hbWVkIGV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoIHRvIGV3a19jb250ZXh0X25l
d193aXRoX2V4dGVuc2lvbnNfcGF0aC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OmFwcGVuZCk6CisgICAgICAg
IChFd2tFeHRlbnNpb246OnJlbW92ZSk6CisgICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9h
ZGQpOgorICAgICAgICAoZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjpFd2tFeHRlbnNpb24pOgor
ICAgICAgICAoRXdrRXh0ZW5zaW9uOjp+RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lv
bk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpFeHRl
bnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL1dl
YkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0
aWFsaXplKToKKyAgICAgICAgKiBlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluOiBBZGRlZC4K
KwogMjAxNC0xMC0wMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xMzczMDg+IFdlYktpdCBzaG91bGQgYnVpbGQgb24gT1MgWCBZ
b3NlbWl0ZSBmb3IgZXh0ZXJuYWwgdXNlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
ZjA3ZmI2MzkxMTVlYjE0MjY5Y2RjMTY3MmMwNzk0YzFiY2QwYjM1My4uYzE4MTIzMjM2Njk2N2Vk
Y2UxOTM4MWY5N2JiNTM2ZmVhNzdlMWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAg
LTE3NSw2ICsxNzUsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9j
ZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNz
L0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAogICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTE5
Nyw2ICsxOTksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9lZmwvV2ViUGFnZUVmbC5jcHAKIAorICAgIFdlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFn
ZXJFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZpbHRlcnNXZWJQcm9jZXNzRWZs
LmNwcAogICAgIFdlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAogCkBAIC0yNDUs
NiArMjQ4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQ
cm9jZXNzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKKyAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsIgogICAgICIk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIgogICAgICIke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKQEAgLTM1OCw2ICsz
NjIsNyBAQCBzZXQoV0VCS0lUMl9FWFRSQV9ERVBFTkRFTkNJRVMKICkKIAogY29uZmlndXJlX2Zp
bGUoZWZsL2V3ZWJraXQyLnBjLmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdl
YmtpdDIucGMgQE9OTFkpCitjb25maWd1cmVfZmlsZShlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBj
LmluICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBj
IEBPTkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtlLmluICR7Q01B
S0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWcuY21ha2UgQE9OTFkpCiBj
b25maWd1cmVfZmlsZShlZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlLmluICR7Q01BS0Vf
QklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlIEBPTkxZ
KQogY29uZmlndXJlX2ZpbGUoVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaC5pbiAke0RFUklW
RURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5jbHVkZS9FV2ViS2l0Mi5oKQpAQCAtMzk5LDEzICs0
MDQsMjcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193aW5kb3dfZmVhdHVyZXMuaCIKICkKIAorc2V0
KEVXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24u
aCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgiCispCisKK2luc3RhbGwoRklMRVMgJHtFV2Vi
S2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0t
JHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0V4dGVu
c2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0t
JHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9L2V4dGVuc2lvbikKKwogaW5zdGFsbChGSUxFUyAke0NN
QUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9OIGxpYi9w
a2djb25maWcpCitpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwv
ZXdlYmtpdDItZXh0ZW5zaW9uLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBpbnN0YWxs
KEZJTEVTCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvRVdlYktpdDJD
b25maWcuY21ha2UKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9FV2Vi
S2l0MkNvbmZpZ1ZlcnNpb24uY21ha2UKICAgICAgICAgREVTVElOQVRJT04gbGliL2NtYWtlL0VX
ZWJLaXQyKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJT04g
aW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkK
K3NldChFV0VCS0lUX0VYVEVOU0lPTl9NQU5BR0VSX0lOU1RBTExfRElSICIke0xJQl9JTlNUQUxM
X0RJUn0vJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0vIiBD
QUNIRSBQQVRIICJBYnNvbHV0ZSBwYXRoIHRvIGluc3RhbGwgaW5qZWN0ZWQgYnVuZGxlIHdoaWNo
IGNvbnRyb2xzIHRoZSBleHRlbnNpb24gbGlicmFyeSIpCisKK2FkZF9saWJyYXJ5KGV3ZWJraXRf
ZXh0ZW5zaW9uX21hbmFnZXIgU0hBUkVEICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbC9X
ZWJJbmplY3RlZEJ1bmRsZU1haW5FZmwuY3BwIikKK3RhcmdldF9saW5rX2xpYnJhcmllcyhld2Vi
a2l0X2V4dGVuc2lvbl9tYW5hZ2VyIFdlYktpdDIpCisKK2luc3RhbGwoVEFSR0VUUyBld2Via2l0
X2V4dGVuc2lvbl9tYW5hZ2VyIERFU1RJTkFUSU9OICIke0VXRUJLSVRfRVhURU5TSU9OX01BTkFH
RVJfSU5TVEFMTF9ESVJ9IikKIAogaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICBsaXN0
KEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElSRUNUT1JJRVMKQEAgLTQ0NiwxNiArNDY1
LDE4IEBAIHNldChFV0syVW5pdFRlc3RzX0xJQlJBUklFUwogCiBzZXQoV0VCS0lUMl9FRkxfVEVT
VF9ESVIgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzIikKIHNldChURVNU
X1JFU09VUkNFU19ESVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vcmVzb3VyY2VzKQotc2V0KFRF
U1RfSU5KRUNURURfQlVORExFX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElSfS9JbmplY3RlZEJ1
bmRsZSkKK3NldChURVNUX0VYVEVOU0lPTlNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L2V4
dGVuc2lvbnMpCiBzZXQoV0VCS0lUMl9FRkxfVEVTVF9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkg
JHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkvRVdlYktpdDIp
CiAKIGFkZF9kZWZpbml0aW9ucygtRFRFU1RfUkVTT1VSQ0VTX0RJUj1cIiR7VEVTVF9SRVNPVVJD
RVNfRElSfVwiCiAgICAgLURURVNUX0xJQl9ESVI9XCIke0NNQUtFX0xJQlJBUllfT1VUUFVUX0RJ
UkVDVE9SWX1cIgogICAgIC1ER1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZPTEKICAgICAt
RExJQkVYRUNESVI9XCIke0VYRUNfSU5TVEFMTF9ESVJ9XCIKKyAgICAtREVYVEVOU0lPTk1BTkFH
RVJESVI9XCIke0NNQUtFX0lOU1RBTExfUFJFRklYfS8ke0VXRUJLSVRfRVhURU5TSU9OX01BTkFH
RVJfSU5TVEFMTF9ESVJ9XCIKICAgICAtRFdFQlBST0NFU1NOQU1FPVwiV2ViUHJvY2Vzc1wiCiAg
ICAgLURQTFVHSU5QUk9DRVNTTkFNRT1cIlBsdWdpblByb2Nlc3NcIgogICAgIC1ETkVUV09SS1BS
T0NFU1NOQU1FPVwiTmV0d29ya1Byb2Nlc3NcIgorICAgIC1ERVhURU5TSU9OTUFOQUdFUk5BTUU9
XCJsaWJld2Via2l0X2V4dGVuc2lvbl9tYW5hZ2VyLnNvXCIKICAgICAtREdURVNUX0hBU19SVFRJ
PTAKICkKIApAQCAtNTA4LDggKzUyOSw3IEBAIGlmIChFTkFCTEVfQVBJX1RFU1RTKQogICAgICAg
ICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0ZXN0TmFtZX0gJHtFV0syVW5pdFRlc3RzX0xJQlJB
UklFU30gZXdrMlVuaXRUZXN0VXRpbHMpCiAgICAgZW5kZm9yZWFjaCAoKQogCi0gICAgYWRkX2xp
YnJhcnkoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVTYW1wbGUgU0hBUkVEICR7VEVTVF9JTkpF
Q1RFRF9CVU5ETEVfRElSfS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcCkKLSAgICB0YXJnZXRf
bGlua19saWJyYXJpZXMoZXdrMlVuaXRUZXN0SW5qZWN0ZWRCdW5kbGVTYW1wbGUgV2ViS2l0MikK
KyAgICBhZGRfbGlicmFyeShld2syVW5pdFRlc3RFeHRlbnNpb25TYW1wbGUgU0hBUkVEICR7VEVT
VF9FWFRFTlNJT05TX0RJUn0vZXh0ZW5zaW9uX3NhbXBsZS5jcHApCiBlbmRpZiAoKQogCiBpZiAo
RU5BQkxFX1NQRUxMQ0hFQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dC5jcHAKaW5kZXggNjY2Nzc1NDE5NmU0MTUwMmZkMTM5MWRlZTI1NTUzNGQ0
NTliZDliYy4uZWZjYTEyZjRiZjQ4YTFhN2JlYmNjYmQ0YTY4OGQwNzBhZWNlYzg3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAt
NjIsNyArNjIsNyBAQCBzdGF0aWMgaW5saW5lIENvbnRleHRNYXAmIGNvbnRleHRNYXAoKQogICAg
IHJldHVybiBtYXA7CiB9CiAKLUV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNv
bnRleHQpCitFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbnNQYXRoKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAg
LCBtX2RhdGFiYXNlTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEV3a0RhdGFiYXNlTWFuYWdlcj4o
V0tDb250ZXh0R2V0RGF0YWJhc2VNYW5hZ2VyKGNvbnRleHQpKSkKICAgICAsIG1fc3RvcmFnZU1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxFd2tTdG9yYWdlTWFuYWdlcj4oV0tDb250ZXh0R2V0S2V5
VmFsdWVTdG9yYWdlTWFuYWdlcihjb250ZXh0KSkpCkBAIC03Myw2ICs3Myw3IEBAIEV3a0NvbnRl
eHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgLCBtX3JlcXVlc3RNYW5h
Z2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+KGNvbnRl
eHQpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dEhpc3Rv
cnlDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwgbV9qc0dsb2JhbENvbnRleHQobnVsbHB0cikK
KyAgICAsIG1fZXh0ZW5zaW9uc1BhdGgoZXh0ZW5zaW9uc1BhdGgpCiB7CiAgICAgQ29udGV4dE1h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNvbnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTk1LDYgKzk2
LDE3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAKICAg
ICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9IG51bGxw
dHI7CiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUudXNlckRhdGEg
PSBudWxscHRyOworCisgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBjbGllbnQ7
CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKKworICAgIGNsaWVudC5i
YXNlLnZlcnNpb24gPSAxOworICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOworICAg
IGNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIGNsaWVudC5kaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICBjbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhID0gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
OworCisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgp
LCAmY2xpZW50LmJhc2UpOwogfQogCiBFd2tDb250ZXh0Ojp+RXdrQ29udGV4dCgpCkBAIC0xMjAs
MTQgKzEzMiwyOCBAQCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZSgp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3Jl
YXRlKCkpLmdldCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQorc3RhdGljIFN0cmluZyBi
dW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCkKK3sKKyAgICBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVu
c2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4
KFRFU1RfTElCX0RJUiksIEVYVEVOU0lPTk1BTkFHRVJOQU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6
ZmlsZUV4aXN0cyhidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRs
ZVBhdGhGb3JFeHRlbnNpb247CisKKyAgICBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uID0gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmluZzo6ZnJvbVVURjgoRVhURU5TSU9OTUFO
QUdFUkRJUiksIEVYVEVOU0lPTk1BTkFHRVJOQU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4
aXN0cyhidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhG
b3JFeHRlbnNpb247CisKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworUGFzc1JlZlB0
cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25z
UGF0aCkKIHsgICAKLSAgICBpZiAoIWZpbGVFeGlzdHMoaW5qZWN0ZWRCdW5kbGVQYXRoKSkKKyAg
ICBTdHJpbmcgYnVuZGxlUGF0aCA9IGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24oKTsKKyAgICBpZiAo
YnVuZGxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9wdFdLKHRvQ29waWVkQVBJKGluamVjdGVkQnVuZGxl
UGF0aCkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwYXRoID0gYWRvcHRXSyh0b0Nv
cGllZEFQSShidW5kbGVQYXRoKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRl
eHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKHBhdGguZ2V0
KCkpKS5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdL
KFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgocGF0aC5nZXQoKSkpLmdldCgp
LCBleHRlbnNpb25zUGF0aCkpOwogfQogCiBFd2tDb250ZXh0KiBFd2tDb250ZXh0OjpkZWZhdWx0
Q29udGV4dCgpCkBAIC0zNjQsNiArMzkwLDExIEBAIHZvaWQgRXdrQ29udGV4dDo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLCiAg
ICAgdG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT5wcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSwgcmV0dXJuRGF0YSk7CiB9CiAK
K1dLVHlwZVJlZiBFd2tDb250ZXh0OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXS1R5cGVSZWY+KHRvQ29waWVkQVBJKHRvRXdrQ29udGV4dChjbGllbnRJ
bmZvKS0+ZXh0ZW5zaW9uc1BhdGgoKSkpOworfQorCiB2b2lkIEV3a0NvbnRleHQ6OnNldE1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSW5q
ZWN0ZWRfQnVuZGxlX0NiIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKIHsKICAgICBtX2NhbGxi
YWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS51c2VyRGF0YSA9IHVzZXJEYXRhOwpAQCAt
MzcxLDE5ICs0MDIsNiBAQCB2b2lkIEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGVDYWxsYmFjayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSQogICAgIGlmIChtX2NhbGxi
YWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjayA9PSBjYWxsYmFjaykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZS5jYWxsYmFjaykgewotICAgICAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dFYxIGNsaWVudDsKLSAgICAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsK
LQotICAgICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKLSAgICAgICAgY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgICAgIGNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwotICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSA9IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0KLSAg
ICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAm
Y2xpZW50LmJhc2UpOwotICAgIH0gZWxzZSBpZiAoIWNhbGxiYWNrKQotICAgICAgICBXS0NvbnRl
eHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRleHQuZ2V0KCksIG51bGxwdHIpOwotCiAg
ICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sgPSBjYWxs
YmFjazsKIH0KIApAQCAtNDMzLDcgKzQ1MSw3IEBAIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9u
ZXcoKQogICAgIHJldHVybiBFd2tDb250ZXh0OjpjcmVhdGUoKS5sZWFrUmVmKCk7CiB9CiAKLUV3
a19Db250ZXh0KiBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aChjb25z
dCBjaGFyKiBwYXRoKQorRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lv
bnNfcGF0aChjb25zdCBjaGFyKiBwYXRoKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChwYXRoLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXggYmM3YjA1NGM3ZmRmZDg5NTBlN2I2MzYyYmI3MmY0
NGRlM2Y0MTkxNi4uZTE3NjcwYjkxNWM4OWJkY2Y2NWNjMWMwNDdiNmVlMzQxNWYxYWE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC0x
NjksNyArMTY5LDcgQEAgRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQo
dm9pZCk7CiAgKiBAcmV0dXJuIEV3a19Db250ZXh0IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5V
TEwgb24gZmFpbHVyZQogICoKICAqIEBzZWUgZXdrX29iamVjdF91bnJlZgotICogQHNlZSBld2tf
Y29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aAorICogQHNlZSBld2tfY29udGV4
dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgKICAqLwogRUFQSSBFd2tfQ29udGV4dCAqZXdrX2Nv
bnRleHRfbmV3KHZvaWQpOwogCkBAIC0xNzgsMTQgKzE3OCwxNyBAQCBFQVBJIEV3a19Db250ZXh0
ICpld2tfY29udGV4dF9uZXcodm9pZCk7CiAgKgogICogVGhlIHJldHVybmVkIEV3a19Db250ZXh0
IG9iamVjdCBAYiBzaG91bGQgYmUgdW5yZWYnZWQgYWZ0ZXIgdXNlLgogICoKLSAqIEBwYXJhbSBw
YXRoIHBhdGggb2YgaW5qZWN0ZWQgYnVuZGxlIGxpYnJhcnkKKyAqIEBwYXJhbSBwYXRoIGRpcmVj
dG9yeSBwYXRoIG9mIGV4dGVuc2lvbnMKICAqCiAgKiBAcmV0dXJuIEV3a19Db250ZXh0IG9iamVj
dCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQogICoKKyAqIEBub3RlIEFsbCBzaGFy
ZWQgb2JqZWN0cyB3aGljaCBoYXZlIGV3a19leHRlbnNpb25faW5pdCgpIGluIHRoZSBnaXZlbiBA
YSBwYXRoIHdpbGwgYmUgbG9hZGVkLgorICoKICAqIEBzZWUgZXdrX29iamVjdF91bnJlZgogICog
QHNlZSBld2tfY29udGV4dF9uZXcKKyAqIEBzZWUgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1
bmN0aW9uCiAgKi8KLUVBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X25ld193aXRoX2luamVj
dGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOworRUFQSSBFd2tfQ29udGV4dCAqZXdr
X2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogCiAv
KioKICAqIEdldHMgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIG1hbmFnZXIgaW5zdGFuY2UgZm9yIHRo
aXMgQGEgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCAxNzI5YzRhMTJhMjI3ZmMwYTMyZDRhOTc1
NjE2YjYwNWE3ZjlkNDU5Li4zMmQyM2VkOWI0M2RlOGY4NDNjMmZiYWNmNzQ1MjVkNGFlMjkxZWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SWdub3JlVExTRXJyb3JzKEV3a19UTFNfRXJyb3JfUG9saWN5IFRMU0Vycm9yUG9saWN5KSBjb25z
dDsKIAorICAgIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGgoKSBjb25zdCB7IHJldHVybiBt
X2V4dGVuc2lvbnNQYXRoOyB9CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAg
ICB2b2lkIHNldEFkZGl0aW9uYWxQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCkBA
IC05NiwxMSArOTgsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
KyAgICBzdGF0aWMgV0tUeXBlUmVmIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YShXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHZvaWQgc2V0
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJv
bV9JbmplY3RlZF9CdW5kbGVfQ2IsIHZvaWQqKTsKICAgICB2b2lkIHByb2Nlc3NSZWNlaXZlZE1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhKTsKIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBFd2tDb250ZXh0KFdLQ29udGV4dFJlZik7CisgICAgZXhwbGljaXQgRXdrQ29udGV4
dChXS0NvbnRleHRSZWYsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uc1BhdGggPSBTdHJpbmcoKSk7
CiAKICAgICB2b2lkIGVuc3VyZUZhdmljb25EYXRhYmFzZSgpOwogCkBAIC0xMjEsNiArMTI0LDgg
QEAgcHJpdmF0ZToKIAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2pzR2xvYmFsQ29udGV4dDsK
IAorICAgIFN0cmluZyBtX2V4dGVuc2lvbnNQYXRoOworCiAgICAgc3RydWN0IHsKICAgICAgICAg
RXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYiBjYWxsYmFjazsKICAg
ICAgICAgdm9pZCogdXNlckRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL0luamVjdGVkQnVuZGxl
L2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3NGNlMTNiNmFjNmJhYTVjNzMzM2VjNWQ0ZWQzOGRhOWMwNjI0MGEzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL0luamVjdGVkQnVuZGxlL2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5k
bGVJbml0aWFsaXplLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5k
aWYKLQotdm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVS
ZWYgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKLXsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RF
bnZpcm9ubWVudC5jcHAKaW5kZXggMDU5ZjAxMjYyMGJjZjUzYWY1NGU3N2U2OGJhNjU0N2M5OWYx
MzU3ZS4uOWVhZGY4NmI0ZTRhNmVkZjBmNzhlZjIyMGMxYTE3MTRlOGY1YjI2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAK
QEAgLTQzLDkgKzQzLDkgQEAgY29uc3QgY2hhciogRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OmRl
ZmF1bHRUaGVtZSgpIGNvbnN0CiAgICAgcmV0dXJuIERFRkFVTFRfVEhFTUVfRElSICIvZGVmYXVs
dC5lZGoiOwogfQogCi1jb25zdCBjaGFyKiBFV0syVW5pdFRlc3RFbnZpcm9ubWVudDo6aW5qZWN0
ZWRCdW5kbGVTYW1wbGUoKSBjb25zdAorY29uc3QgY2hhciogRVdLMlVuaXRUZXN0RW52aXJvbm1l
bnQ6OmV4dGVuc2lvblNhbXBsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFRFU1RfTElCX0RJUiAi
L2xpYmV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlLnNvIjsKKyAgICByZXR1cm4gVEVT
VF9MSUJfRElSICIvbGliZXdrMlVuaXRUZXN0RXh0ZW5zaW9uU2FtcGxlLnNvIjsKIH0KIAogQ1N0
cmluZyBFV0syVW5pdFRlc3RFbnZpcm9ubWVudDo6dXJsRm9yUmVzb3VyY2UoY29uc3QgY2hhciog
cmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVu
dmlyb25tZW50LmgKaW5kZXggNWY5ZTIyMTVkYmNhNTE3NmJjMzdkY2E5NGM3YjI1NDM1ZGRiZjI2
ZS4uZWI1NWJmOGY5OTUxZTlhOGFlNTA2Yjc4ZGQ4MmZkMzA5MzNkMGJlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaApAQCAtMzAs
NyArMzAsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBjaGFyKiBkZWZhdWx0VGVzdFBhZ2VVcmwo
KSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkZWZhdWx0VGhlbWUoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBpbmplY3RlZEJ1bmRsZVNhbXBsZSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGV4
dGVuc2lvblNhbXBsZSgpIGNvbnN0OwogICAgIENTdHJpbmcgdXJsRm9yUmVzb3VyY2UoY29uc3Qg
Y2hhciogcmVzb3VyY2UpOwogICAgIENTdHJpbmcgcGF0aEZvclJlc291cmNlKGNvbnN0IGNoYXIq
IHJlc291cmNlKTsKICAgICBDU3RyaW5nIHBhdGhGb3JUaGVtZShjb25zdCBjaGFyKiB0aGVtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRl
bnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YTAzZDhlMTg5MjNlNWE0YzQxYmYzMmIwMDMxMTZkMDUwMzk0NTBjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRl
bnNpb25fc2FtcGxlLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK3ZvaWQgZXdrX2V4dGVuc2lvbl9pbml0KEV3a19FeHRlbnNpb24gKikKK3sK
K30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNw
cAppbmRleCAzZjE0NzBhMDlkYWM4MTU0N2M2YTVmNjE4OGIzYzE4NjgzNmVlMTYxLi5jNjQ0N2U0
MzhiMzk5M2ViNDE1MGQyNjdjMzMzMmRkYzY5NWRkOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQu
Y3BwCkBAIC0yMzAsOSArMjMwLDkgQEAgVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRl
eHRfbmV3KQogICAgIGV3a19vYmplY3RfdW5yZWYoY29udGV4dCk7CiB9CiAKLVRFU1RfRihFV0sy
Q29udGV4dFRlc3QsIGV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKQor
VEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19w
YXRoKQogewotICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhf
aW5qZWN0ZWRfYnVuZGxlX3BhdGgoZW52aXJvbm1lbnQtPmluamVjdGVkQnVuZGxlU2FtcGxlKCkp
OworICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5z
aW9uc19wYXRoKGVudmlyb25tZW50LT5leHRlbnNpb25TYW1wbGUoKSk7CiAgICAgQVNTRVJUX1RS
VUUoY29udGV4dCk7CiAgICAgZXdrX29iamVjdF91bnJlZihjb250ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2Vi
S2l0X0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZhYTJhNTIwODQ3MzFi
ZjNiNmQ2YjUzMmMzNTU0MmUzNGE0ZWZlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5o
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1YW4gQ2hvaSA8
cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBFV2ViS2l0
X0V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgaGVhZGVyIGZpbGVzIHRoYXQg
YXJlIHJlcXVpcmVkIGJ5IGV3ZWJraXQyLWV4dGVuc2lvbi4KKyAqCisgKiBFV2ViS2l0X0V4dGVu
c2lvbiBpcyB0aGUgd2F5IHRvIGV4dGVuZCBXZWJQcm9jZXNzIG9mIGV3ZWJraXQyLgorICoKKyAq
IEluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgZXh0ZW5zaW9uLCAKKyAqIEZpcnN0LCBld2tfZXh0ZW5z
aW9uX2luaXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgc2hhcmVkIG9iamVjdCBsaWtlIGJl
bG93OgorICoKKyAqIEBjb2RlCisgKiAjaW5jbHVkZSAiRVdlYktpdF9FeHRlbnNpb24uaCIKKyAq
IAorICogdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9uKQor
ICogeworICogICAgLy8gcHJvdmlkZSBFd2tfRXh0ZW5zaW9uX0NsaWVudCBjYWxsYmFja3MgYXMg
Y2xpZW50LgorICogICAgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKGV4dGVuc2lvbiwgJmNsaWVu
dCk7CisgKiB9CisgKiBAZW5kY29kZQorICoKKyAqIEFuZCBjb21waWxlcyBDIG9yIEMrKyBmaWxl
cyBhcyBzaGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6CisgKgorICogQHZlcmJhdGltCisgKiBnY2Mg
LW8gbGlic2FtcGxlLnNvIHNhbXBsZS5jIC1zaGFyZWQgLWZQSUMgYHBrZy1jb25maWcgLS1jZmxh
Z3MgLS1saWJzIGVpbmEgZXdlYmtpdDItZXh0ZW5zaW9uYAorICogQGVuZHZlcmJhdGltCisgKiAK
KyAqIFRoZW4sIGluc3RhbGwgdGhhdCBvYmplY3QgaW50byB0aGUgcGF0aCB3aGljaCBld2tfY29u
dGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoKSBzcGVjaWZpZXMuCisgKgorICogQHNlZSBl
d2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgKKyAqIEBzZWUgZXdrX2V4dGVuc2lv
bl9jbGllbnRfc2V0CisgKiBAc2VlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbgor
ICovCisKKyNpZm5kZWYgRVdlYktpdF9FeHRlbnNpb25faAorI2RlZmluZSBFV2ViS2l0X0V4dGVu
c2lvbl9oCisKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uLmgiCisKKyNlbmRpZiAvLyBFV2ViS2l0
X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTFiYzg1NmIxZWJhMzJlN2M2YzA2YWUzZjhlZDA5YjRiMzc1MTk3NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfZXh0ZW5zaW9uLmgiCisKKyNpbmNsdWRlICJld2tf
ZXh0ZW5zaW9uX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBF
d2tFeHRlbnNpb246OmFwcGVuZChFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAg
IG1fY2xpZW50cy5hcHBlbmQoY2xpZW50KTsKK30KKwordm9pZCBFd2tFeHRlbnNpb246OnJlbW92
ZShFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUo
bV9jbGllbnRzLmZpbmQoY2xpZW50KSk7Cit9CisKK0VpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2Ns
aWVudF9hZGQoRXdrX0V4dGVuc2lvbiogZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCog
Y2xpZW50KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChleHRlbnNpb24s
IGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2xpZW50LCBmYWxz
ZSk7CisKKyAgICBleHRlbnNpb24tPmFwcGVuZChjbGllbnQpOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK0VpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwoRXdrX0V4dGVuc2lvbiog
ZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChleHRlbnNpb24sIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY2xpZW50LCBmYWxzZSk7CisKKyAgICBleHRlbnNpb24tPnJl
bW92ZShjbGllbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19l
eHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2M1MjI5ZTYwNjQ3YzRiOWE2OTRkYTZjMjgyMTRhZGMz
MmUyYjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBE
ZXNjcmliZXMgdGhlIEV3a19FeHRlbnNpb24gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVu
c2lvbl9oCisjZGVmaW5lIGV3a19leHRlbnNpb25faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogRGVjbGFy
ZSBFd2tfRXh0ZW5zaW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBFd2tFeHRlbnNpb24gRXdrX0V4
dGVuc2lvbjsKKworLyoqCisgKiBEZWNsYXJlIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5j
dGlvbi4KKyAqCisgKiBAYnJpZWYgIFR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGVudHJ5IG9mIHRo
ZSBleHRlbnNpb24uCisgKgorICogQHBhcmFtIGV4dGVuc2lvbiB0aGUgZXh0ZW5zaW9uIGluc3Rh
bmNlIGhlbHBzIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gV2ViUHJvY2VzcyBhbmQgeW91ciBl
eHRlbnNpb24gbGlicmFyeQorICogQHBhcmFtIHJlc2VydmVkIGV4dHJhIHBhcmFtZXRlciBmb3Ig
dGhlIGZ1dHVyZS4gTlVMTCBpcyBmaW5lLCBub3cKKyAqCisgKi8KK3R5cGVkZWYgdm9pZCAqKCpF
d2tfRXh0ZW5zaW9uX0luaXRpYWxpemVfRnVuY3Rpb24pKEV3a19FeHRlbnNpb24gKmV4dGVuc2lv
biwgdm9pZCAqcmVzZXJ2ZWQpOworCitzdHJ1Y3QgRXdrRXh0ZW5zaW9uQ2xpZW50IHsKKyAgICBp
bnQgdmVyc2lvbjsKKyAgICB2b2lkICpkYXRhOworfTsKK3R5cGVkZWYgc3RydWN0IEV3a0V4dGVu
c2lvbkNsaWVudCBFd2tfRXh0ZW5zaW9uX0NsaWVudDsKKworLyoqCisgKiBBZGQgYSBjbGllbnQg
d2hpY2ggY29udGFpbnMgc2V2ZXJhbCBjYWxsYmFja3MgdG8gdGhlIGV4dGVuc2lvbi4KKyAqCisg
KiBAcGFyYW0gZXh0ZW5zaW9uIGV4dGVuc2lvbiB0byBhdHRhY2ggY2xpZW50IHRvCisgKiBAcGFy
YW0gY2xpZW50IGNsaWVudCB0byBhZGQgdG8gdGhlIGV4dGVuc2lvbgorICoKKyAqIFRoaXMgZnVu
Y3Rpb24gYWRkcyBhIGNsaWVudCwgd2hpY2ggY29udGFpbnMgc2V2ZXJhbCBjYWxsYmFja3MgcmVj
ZWl2aW5nIGV2ZW50cworICogZnJvbSBXZWJQcm9jZXNzIHNpZGUsIHRvIGEgQHAgZXh0ZW5zaW9u
LgorICoKKyAqIEBzZWUgZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsCisgKi8KK0VBUEkgRWluYV9C
b29sIGV3a19leHRlbnNpb25fY2xpZW50X2FkZChFd2tfRXh0ZW5zaW9uICpleHRlbnNpb24sIEV3
a19FeHRlbnNpb25fQ2xpZW50ICpjbGllbnQpOworCisvKioKKyAqIERlbGV0ZSBhIGNsaWVudCBm
cm9tIHRoZSBleHRlbnNpb24uCisgKgorICogQHBhcmFtIGV4dGVuc2lvbiBleHRlbnNpb24gdG8g
ZGVsZXRlIGNsaWVudAorICogQHBhcmFtIGNsaWVudCBjbGllbnQgd2hpY2ggY29udGFpbnMgdmVy
c2lvbiwgZGF0YSBhbmQgY2FsbGJhY2tzCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19leHRlbnNp
b25fY2xpZW50X2RlbChFd2tfRXh0ZW5zaW9uICpleHRlbnNpb24sIEV3a19FeHRlbnNpb25fQ2xp
ZW50ICpjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
Ly8gZXdrX2V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNiMDE5NWQ3NDZjN2MwY2JiOTAxM2M1YjU5MjMyODA0Y2Ni
ZTQwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwu
Y29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZTsKK30KKworY2xhc3MgRXdrRXh0
ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZSopIHsgfQorICAgIH5Fd2tFeHRlbnNpb24oKSB7IH0KKworICAgIHZvaWQgYXBw
ZW5kKEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpOworICAgIHZvaWQgcmVtb3ZlKEV3a19F
eHRlbnNpb25fQ2xpZW50KiBjbGllbnQpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxFd2tfRXh0
ZW5zaW9uX0NsaWVudCo+IG1fY2xpZW50czsKK307CisKKyNlbmRpZiAvLyBld2tfZXh0ZW5zaW9u
X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0
ZW5zaW9uTWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRl
bnNpb25NYW5hZ2VyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzNlMjg2YWU0NmU4MmM4NjM1MWM4Y2Q3
ZDYyMDExMTk5Zjc0ZTlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVm
bC5oIgorCisjaW5jbHVkZSAiTW9kdWxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJp
dmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V4dGVuc2lvbk1hbmFnZXJF
ZmwmIEV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEV4dGVuc2lvbk1hbmFnZXJFZmw+IGV4dGVuc2lvbk1hbmFnZXI7CisgICAgcmV0dXJu
IGV4dGVuc2lvbk1hbmFnZXI7Cit9CisKK0V4dGVuc2lvbk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1h
bmFnZXJFZmwoKQoreworfQorCit2b2lkIEV4dGVuc2lvbk1hbmFnZXJFZmw6OmluaXRpYWxpemUo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgQVNTRVJUKCFt
X2V4dGVuc2lvbik7CisKKyAgICBTdHJpbmcgZXh0ZW5zaW9uc0RpcmVjdG9yeSA9IHRvSW1wbChz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4odXNlckRhdGEpKS0+c3RyaW5nKCk7CisgICAgaWYgKGV4
dGVuc2lvbnNEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4
dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RXdrRXh0ZW5zaW9uPih0b0ltcGwoYnVuZGxlKSk7
CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3Rv
cnkoZXh0ZW5zaW9uc0RpcmVjdG9yeSwgQVNDSUlMaXRlcmFsKCIqLnNvIikpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpIHsKKyAgICAgICAgICAgIGF1
dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAg
ICAgICAgICAgIGlmICghbW9kdWxlLT5sb2FkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIEV3a19FeHRlbnNpb25fSW5pdGlhbGl6ZV9GdW5jdGlvbiBpbml0aWFs
aXplRnVuY3Rpb24gPSBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxFd2tfRXh0ZW5zaW9uX0luaXRp
YWxpemVfRnVuY3Rpb24+KCJld2tfZXh0ZW5zaW9uX2luaXQiKTsKKyAgICAgICAgICAgIGlmICgh
aW5pdGlhbGl6ZUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKG1fZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyIC8qIHJlc2Vy
dmVkIGZvciB0aGUgZnV0dXJlICovKTsKKyAgICAgICAgICAgIG1fZXh0ZW5zaW9uTW9kdWxlcy5h
cHBlbmQobW9kdWxlLnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YmE1M2I2OTg4ZDQwNGQ0Yzc3ODI0YWMwOTdiZTBjMjY0Y2NhYWI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFu
YWdlckVmbC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1
YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeHRlbnNp
b25NYW5hZ2VyRWZsX2gKKyNkZWZpbmUgRXh0ZW5zaW9uTWFuYWdlckVmbF9oCisKKyNpbmNsdWRl
ICJXS0J1bmRsZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworY2xhc3MgRXdr
RXh0ZW5zaW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9kdWxlOworCitjbGFz
cyBFeHRlbnNpb25NYW5hZ2VyRWZsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeHRlbnNp
b25NYW5hZ2VyRWZsKTsKK3B1YmxpYzoKKyAgICBXS19FWFBPUlQgc3RhdGljIEV4dGVuc2lvbk1h
bmFnZXJFZmwmIHNoYXJlZCgpOworICAgIFdLX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoV0tCdW5k
bGVSZWYsIFdLVHlwZVJlZik7Citwcml2YXRlOgorICAgIEV4dGVuc2lvbk1hbmFnZXJFZmwoKTsK
KworICAgIFZlY3RvcjxNb2R1bGUqPiBtX2V4dGVuc2lvbk1vZHVsZXM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEV3a0V4dGVuc2lvbj4gbV9leHRlbnNpb247CisKKyAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8RXh0ZW5zaW9uTWFuYWdlckVmbD47Cit9OworCit9CisKKyNlbmRpZiAvLyBF
eHRlbnNpb25NYW5hZ2VyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL1dlYkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2VmbC9XZWJJbmplY3RlZEJ1bmRsZU1haW5FZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNTBh
OGNjMWJmZDZlOGU1YmZiZGIyNzI0NWQ2ZGY4NDVjMDBhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJbmplY3RlZEJ1bmRsZU1haW5FZmwuY3Bw
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1YW4gQ2hvaSA8
cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiRXh0ZW5zaW9uTWFuYWdlckVmbC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRs
ZUluaXRpYWxpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZXh0ZXJuICJDIiB2
b2lkIFdLQnVuZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiB1c2Vy
RGF0YSkKK3sKKyAgICBFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKS5pbml0aWFsaXplKGJ1
bmRsZSwgdXNlckRhdGEpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJr
aXQyLWV4dGVuc2lvbi5wYy5pbiBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNp
b24ucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYxNmNkYzJmOTM5NWViZTcyOTZkMDU0OGZlYzgwMWZjNTFl
ODNjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRl
bnNpb24ucGMuaW4KQEAgLTAsMCArMSw4IEBACitwcmVmaXg9QENNQUtFX0lOU1RBTExfUFJFRklY
QAoraW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZQorCitOYW1lOiBld2Via2l0Mi1leHRlbnNp
b24KK0Rlc2NyaXB0aW9uOiBFeHRlbnNpb24gZm9yIFdlYktpdDIvRUZMKGV3ZWJraXQyKQorVmVy
c2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKK1JlcXVpcmVzOiBlaW5hCitDZmxhZ3M6IC1JJHtpbmNs
dWRlZGlyfS9AV2ViS2l0Ml9PVVRQVVRfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpPUkAvZXh0
ZW5zaW9uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggYTBmNTc4YTYwNjBlYjYzNDdiNmEzMGVkNTI3MzQ4ZjI3NDVmMTk2Zi4uMGJkYWUwZDdjYzMx
ZGQxM2UzYmI3ZmYzMjM2YzA1NTZiY2Y2ZWM0NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTEwLTAxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNl
IEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6IEFkZGVkIHggb3B0aW9uIHRvIHRl
c3QgZXh0ZW5zaW9uIHBhdGguCisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKyAgICAgICAgKGVs
bV9tYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hs
aXN0OgorICAgICAgICBBZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvIGludG8gRUZMV2ViS2l0MlB1YmxpY0FQSS4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgIEFkZGVkIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC8gaW50byBFRkwgZXhjZXB0aW9ucy4K
KwogMjAxNC0xMC0wMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NDE5Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4
IGU2YTYwMDNlNmVkNjE4YjQxY2U2NzYxYmJiYTgwNGE2MTJkOTQzZDQuLmI4NDNmZWUwZDZjMWM4
YmQ0OTBjYWUzY2ZkZmFhNGVkOTI3ZWYzZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtNDgsNiAr
NDgsNyBAQCBzdGF0aWMgaW50IHZlcmJvc2UgPSAxOwogc3RhdGljIEVpbmFfTGlzdCAqd2luZG93
cyA9IE5VTEw7CiBzdGF0aWMgY2hhciAqZXZhc19lbmdpbmVfbmFtZSA9IE5VTEw7CiBzdGF0aWMg
Y2hhciAqdXNlcl9hZ2VudF9zdHJpbmcgPSBOVUxMOworc3RhdGljIGNoYXIgKmV4dGVuc2lvbnNf
cGF0aCA9IE5VTEw7CiBzdGF0aWMgY2hhciAqYmFja2dyb3VuZF9jb2xvcl9zdHJpbmcgPSBOVUxM
Owogc3RhdGljIEVpbmFfQm9vbCBlbmNvZGluZ19kZXRlY3Rvcl9lbmFibGVkID0gRUlOQV9GQUxT
RTsKIHN0YXRpYyBFaW5hX0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkID0gRUlOQV9GQUxT
RTsKQEAgLTE1Nyw2ICsxNTgsOCBAQCBzdGF0aWMgY29uc3QgRWNvcmVfR2V0b3B0IG9wdGlvbnMg
PSB7CiAgICAgICAgICAgICAoJ3MnLCAid2luZG93LXNpemUiLCAiV2luZG93IHNpemUgaW4gZm9s
bG93aW5nIGZvcm1hdCAod2lkdGgpeChoZWlnaHQpLiIpLAogICAgICAgICBFQ09SRV9HRVRPUFRf
U1RPUkVfU1RSCiAgICAgICAgICAgICAoJ3UnLCAidXNlci1hZ2VudCIsICJVc2VyIGFnZW50IHRv
IHNldC4iKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX1NUUgorICAgICAgICAgICAgKCd4
JywgImV4dGVuc2lvbnMtcGF0aCIsICJUaGUgcGF0aCB3aGljaCBleHRlbnNpb25zIGFyZSBzdG9y
ZWQuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9ET1VCTEUKICAgICAgICAgICAgICgn
cicsICJkZXZpY2UtcGl4ZWwtcmF0aW8iLCAiUmF0aW8gYmV0d2VlbiB0aGUgQ1NTIHVuaXRzIGFu
ZCBkZXZpY2UgcGl4ZWxzLiIpLAogICAgICAgICBFQ09SRV9HRVRPUFRfQ0FMTEJBQ0tfTk9BUkdT
CkBAIC0yMTUyLDcgKzIxNTUsMTQgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3Jl
YXRlKEV2YXNfT2JqZWN0ICpvcGVuZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIEV2
YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAg
IEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmV3a1ZpZXdDbGFzcy0+
c2MpOwotICAgIEV3a19Db250ZXh0ICpjb250ZXh0ID0gb3BlbmVyID8gZXdrX3ZpZXdfY29udGV4
dF9nZXQob3BlbmVyKSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisgICAgRXdrX0NvbnRl
eHQgKmNvbnRleHQ7CisgICAgaWYgKG9wZW5lcikKKyAgICAgICAgY29udGV4dCA9IGV3a192aWV3
X2NvbnRleHRfZ2V0KG9wZW5lcik7CisgICAgZWxzZSBpZiAoZXh0ZW5zaW9uc19wYXRoKQorICAg
ICAgICBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGV4dGVu
c2lvbnNfcGF0aCk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0ID0gZXdrX2NvbnRleHRfZGVm
YXVsdF9nZXQoKTsKKwogICAgIEV3a19QYWdlX0dyb3VwICpwYWdlR3JvdXAgPSBvcGVuZXIgPyBl
d2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVuZXIpIDogZXdrX3BhZ2VfZ3JvdXBfY3JlYXRlKCIi
KTsKICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0
LCBjb250ZXh0LCBwYWdlR3JvdXApOwogCkBAIC0yMjg0LDYgKzIyOTQsNyBAQCBlbG1fbWFpbihp
bnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKGV2
YXNfZW5naW5lX25hbWUpLAogICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKHdpbmRvd19z
aXplX3N0cmluZyksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9TVFIodXNlcl9hZ2VudF9z
dHJpbmcpLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RSKGV4dGVuc2lvbnNfcGF0aCks
CiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9ET1VCTEUoZGV2aWNlX3BpeGVsX3JhdGlvKSwK
ICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wocXVpdE9wdGlvbiksCiAgICAgICAgIEVD
T1JFX0dFVE9QVF9WQUxVRV9CT09MKGVuY29kaW5nX2RldGVjdG9yX2VuYWJsZWQpLApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdCBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKaW5kZXggYjFmODUz
MzIzMTQ4NjhiZTM1NTgzMTZkYmUwZGIxOTUwZDMyYTVmMi4uMmQyOGZjNTljMmRmZTU0MDE4ZThi
MjViOWQ4ZmMxMjA5Y2Y1Nzg2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3dhdGNobGlzdAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jb25maWcvd2F0Y2hsaXN0CkBAIC0xMDcsNyArMTA3LDggQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgIHIifExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC8iLAogICAgICAgICB9LAogICAgICAg
ICAiRUZMV2ViS2l0MlB1YmxpY0FQSSI6IHsKLSAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvIgorICAgICAgICAgICAgImZpbGVuYW1lIjog
ciJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIgorICAg
ICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
IgogICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC8iLAogICAgICAgICB9LAogICAgICAgICAiRUZMV2ViS2l0MlBsYXRmb3JtU3BlY2lm
aWMiOiB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggMjUzZWIy
M2Q0ZGVhNGM0NzBiNWMyNzM5ODhjMGU1YzVjY2ZiZGM2Yy4uZGRhZTY4NjY4YWZiZWZmY2Y3Yzc0
OGVlNjU2YjBjNDJkNzk3NTZmOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weQpAQCAtMTkwLDcgKzE5MCw4IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAo
WyMgVGhlIEVGTCBBUElzIHVzZSBFRkwgbmFtaW5nIHN0eWxlLCB3aGljaCBpbmNsdWRlcwogICAg
ICAgIyBib3RoIGxvd2VyLWNhc2VkIGFuZCBjYW1lbC1jYXNlZCwgdW5kZXJzY29yZS1zcGFyYXRl
ZAogICAgICAgIyB2YWx1ZXMuCi0gICAgICAiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvIl0sCisgICAgICAiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvIiwKKyAgICAg
ICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIl0sCiAg
ICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyIsCiAgICAgICAiLXJlYWRhYmlsaXR5L3BhcmFtZXRl
cl9uYW1lIl0pLAogICAgIChbIyBNaW5pQnJvd3Nlci9lZmwgYXJlIEVGTCBzaW1wbGUgYXBwbGlj
YXRpb24uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239603</attachid>
            <date>2014-10-10 00:12:03 -0700</date>
            <delta_ts>2014-10-12 00:32:48 -0700</delta_ts>
            <desc>fixed layouttest crash</desc>
            <filename>bug-134921-20141010161201.patch</filename>
            <type>text/plain</type>
            <size>46708</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjQxYzBhNDZmZGZiNjdh
NWVlZDViYTczMTU2OGRjNmM4ZDhmYWY3Ni4uYWYxZDEwMWZjMDk1MmJjODAyZDhiMTRjMGU0MTA0
NDZjNmI1OTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE0LTEwLTEwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gSW50cm9kdWNl
IEVXZWJLaXRfRXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFV2ViS2l0MiBkb2VzIG5vdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHRv
IGV4dGVuZCBXZWJQcm9jZXNzLgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBld2tfY29udGV4
dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCgpIGluIGV3ZWJraXQyIEFQSXMsCisgICAg
ICAgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIG5vdCBtYWtlIGJ1bmRsZSBvYmplY3Qgd2l0
aG91dCB0b3VjaGluZyBXSyBBUElzCisgICAgICAgIHdoaWNoIGV3ZWJraXQyIGRvZXMgbm90IGV4
cG9zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRVdlYktpdF9FeHRlbnNpb24s
IGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhlIGV4dGVuc2lvbiBvZiBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciB0aGUgRVdl
YktpdF9FeHRlbnNpb24gYW5kIGluc3RhbGwgdGhlbSBwcm9wZXJseS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChFd2tDb250ZXh0OjpFd2tD
b250ZXh0KToKKyAgICAgICAgKGJ1bmRsZVBhdGhGb3JFeHRlbnNpb24pOgorICAgICAgICAoRXdr
Q29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAgICAgIChFd2tDb250ZXh0OjpzZXRNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spOgorICAgICAgICAoZXdrX2NvbnRleHRfbmV3X3dp
dGhfZXh0ZW5zaW9uc19wYXRoKToKKyAgICAgICAgRGVsZXRlZCBiZWNhdXNlIGV3ZWJraXQyIGRv
ZXMgbm90IGhhdmUgYSB3YXkgdG8gbWFrZSBpbmplY3RlZCBidW5kbGUuCisgICAgICAgIEluc3Rl
YWQsIEV3a19FeHRlbnNpb24gd2lsbCBjb3ZlciB0aGUgc2FtZSBmdW5jdGlvbmFsaXRpZXMuCisg
ICAgICAgIChld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChFd2tD
b250ZXh0OjpleHRlbnNpb25zUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVu
dmlyb25tZW50OjpleHRlbnNpb25TYW1wbGUpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0sy
VW5pdFRlc3RFbnZpcm9ubWVudDo6aW5qZWN0ZWRCdW5kbGVTYW1wbGUpOiBSZW5hbWVkIGluamVj
dGVkQnVuZGxlU2FtcGxlIHRvIGV4dGVuc2lvblNhbXBsZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2Ft
cGxlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvSW5qZWN0ZWRCdW5kbGUvaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHAuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwOiBSZW5hbWVkIGV3
a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoIHRvIGV3a19jb250ZXh0X25l
d193aXRoX2V4dGVuc2lvbnNfcGF0aC4KKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChFd2tFeHRlbnNpb246OmFwcGVuZCk6CisgICAgICAg
IChFd2tFeHRlbnNpb246OnJlbW92ZSk6CisgICAgICAgIChld2tfZXh0ZW5zaW9uX2NsaWVudF9h
ZGQpOgorICAgICAgICAoZXdrX2V4dGVuc2lvbl9jbGllbnRfZGVsKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjpFd2tFeHRlbnNpb24pOgor
ICAgICAgICAoRXdrRXh0ZW5zaW9uOjp+RXdrRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9FeHRlbnNpb25NYW5hZ2VyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkV4dGVuc2lvbk1hbmFnZXJFZmw6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkV4dGVuc2lv
bk1hbmFnZXJFZmw6OkV4dGVuc2lvbk1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpFeHRl
bnNpb25NYW5hZ2VyRWZsOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZWZsL1dl
YkluamVjdGVkQnVuZGxlTWFpbkVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV0tCdW5kbGVJbml0
aWFsaXplKToKKyAgICAgICAgKiBlZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluOiBBZGRlZC4K
KwogMjAxNC0xMC0wOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDRhMzgzNjIwZjVjOTUyZjg0NGJiYWMxNmEwY2Y5Nzc2OTZmMDFhNTMuLmMwYmRl
Y2UwMzEzM2Y5NmE1YTIxNGMyMDNmMGI2NjZhMjA1YjBlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0xNzksNiArMTc5LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAgICAg
V2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5jcHAKIAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcAor
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3Bw
CiAKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXgu
Y3BwCkBAIC0yMDEsNiArMjAzLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCiAKKyAgICBXZWJQcm9jZXNzL2VmbC9FeHRl
bnNpb25NYW5hZ2VyRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2Vi
UHJvY2Vzc0VmbC5jcHAKICAgICBXZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAK
IApAQCAtMjQ1LDYgKzI0OCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3Vu
aXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBA
IC0zNTgsNiArMzYyLDcgQEAgc2V0KFdFQktJVDJfRVhUUkFfREVQRU5ERU5DSUVTCiApCiAKIGNv
bmZpZ3VyZV9maWxlKGVmbC9ld2Via2l0Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktp
dDIvZWZsL2V3ZWJraXQyLnBjIEBPTkxZKQorY29uZmlndXJlX2ZpbGUoZWZsL2V3ZWJraXQyLWV4
dGVuc2lvbi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4
dGVuc2lvbi5wYyBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKGVmbC9FV2ViS2l0MkNvbmZpZy5jbWFr
ZS5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnLmNtYWtl
IEBPTkxZKQogY29uZmlndXJlX2ZpbGUoZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5jbWFrZS5p
biAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL0VXZWJLaXQyQ29uZmlnVmVyc2lvbi5j
bWFrZSBAT05MWSkKIGNvbmZpZ3VyZV9maWxlKFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgu
aW4gJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUvRVdlYktpdDIuaCkKQEAg
LTM5OSwxMyArNDA0LDI3IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2luZG93X2ZlYXR1cmVzLmgi
CiApCiAKK3NldChFV2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSUworICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRf
RXh0ZW5zaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oIgorKQorCitpbnN0YWxsKEZJ
TEVTICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VU
UFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKK2luc3RhbGwoRklMRVMgJHtFV2Vi
S2l0Ml9FeHRlbnNpb25fSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VU
UFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfS9leHRlbnNpb24pCisKIGluc3RhbGwo
RklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBERVNUSU5B
VElPTiBsaWIvcGtnY29uZmlnKQoraW5zdGFsbChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dl
YktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmln
KQogaW5zdGFsbChGSUxFUwogICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZs
L0VXZWJLaXQyQ29uZmlnLmNtYWtlCiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0
Mi9lZmwvRVdlYktpdDJDb25maWdWZXJzaW9uLmNtYWtlCiAgICAgICAgIERFU1RJTkFUSU9OIGxp
Yi9jbWFrZS9FV2ViS2l0MikKIAotaW5zdGFsbChGSUxFUyAke0VXZWJLaXQyX0hFQURFUlN9IERF
U1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lP
Tl9NQUpPUn0pCitzZXQoRVdFQktJVF9FWFRFTlNJT05fTUFOQUdFUl9JTlNUQUxMX0RJUiAiJHtM
SUJfSU5TVEFMTF9ESVJ9LyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05f
TUFKT1J9LyIgQ0FDSEUgUEFUSCAiQWJzb2x1dGUgcGF0aCB0byBpbnN0YWxsIGluamVjdGVkIGJ1
bmRsZSB3aGljaCBjb250cm9scyB0aGUgZXh0ZW5zaW9uIGxpYnJhcnkiKQorCithZGRfbGlicmFy
eShld2Via2l0X2V4dGVuc2lvbl9tYW5hZ2VyIFNIQVJFRCAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9lZmwvV2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNwcCIpCit0YXJnZXRfbGlua19saWJy
YXJpZXMoZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlciBXZWJLaXQyKQorCitpbnN0YWxsKFRBUkdF
VFMgZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlciBERVNUSU5BVElPTiAiJHtFV0VCS0lUX0VYVEVO
U0lPTl9NQU5BR0VSX0lOU1RBTExfRElSfSIpCiAKIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1Mp
CiAgICAgbGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC00
NDYsMTYgKzQ2NSwxOCBAQCBzZXQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKIAogc2V0KFdFQktJ
VDJfRUZMX1RFU1RfRElSICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cyIp
CiBzZXQoVEVTVF9SRVNPVVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Jlc291cmNl
cykKLXNldChURVNUX0lOSkVDVEVEX0JVTkRMRV9ESVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0v
SW5qZWN0ZWRCdW5kbGUpCitzZXQoVEVTVF9FWFRFTlNJT05TX0RJUiAke1dFQktJVDJfRUZMX1RF
U1RfRElSfS9leHRlbnNpb25zKQogc2V0KFdFQktJVDJfRUZMX1RFU1RfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJ
L0VXZWJLaXQyKQogCiBhZGRfZGVmaW5pdGlvbnMoLURURVNUX1JFU09VUkNFU19ESVI9XCIke1RF
U1RfUkVTT1VSQ0VTX0RJUn1cIgogICAgIC1EVEVTVF9MSUJfRElSPVwiJHtDTUFLRV9MSUJSQVJZ
X09VVFBVVF9ESVJFQ1RPUll9XCIKICAgICAtREdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFS
WT0xCiAgICAgLURMSUJFWEVDRElSPVwiJHtFWEVDX0lOU1RBTExfRElSfVwiCisgICAgLURFWFRF
TlNJT05NQU5BR0VSRElSPVwiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vJHtFV0VCS0lUX0VYVEVO
U0lPTl9NQU5BR0VSX0lOU1RBTExfRElSfVwiCiAgICAgLURXRUJQUk9DRVNTTkFNRT1cIldlYlBy
b2Nlc3NcIgogICAgIC1EUExVR0lOUFJPQ0VTU05BTUU9XCJQbHVnaW5Qcm9jZXNzXCIKICAgICAt
RE5FVFdPUktQUk9DRVNTTkFNRT1cIk5ldHdvcmtQcm9jZXNzXCIKKyAgICAtREVYVEVOU0lPTk1B
TkFHRVJOQU1FPVwibGliZXdlYmtpdF9leHRlbnNpb25fbWFuYWdlci5zb1wiCiAgICAgLURHVEVT
VF9IQVNfUlRUST0wCiApCiAKQEAgLTUwOCw4ICs1MjksNyBAQCBpZiAoRU5BQkxFX0FQSV9URVNU
UykKICAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdE5hbWV9ICR7RVdLMlVuaXRU
ZXN0c19MSUJSQVJJRVN9IGV3azJVbml0VGVzdFV0aWxzKQogICAgIGVuZGZvcmVhY2ggKCkKIAot
ICAgIGFkZF9saWJyYXJ5KGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlIFNIQVJFRCAk
e1RFU1RfSU5KRUNURURfQlVORExFX0RJUn0vaW5qZWN0ZWRfYnVuZGxlX3NhbXBsZS5jcHApCi0g
ICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxl
IFdlYktpdDIpCisgICAgYWRkX2xpYnJhcnkoZXdrMlVuaXRUZXN0RXh0ZW5zaW9uU2FtcGxlIFNI
QVJFRCAke1RFU1RfRVhURU5TSU9OU19ESVJ9L2V4dGVuc2lvbl9zYW1wbGUuY3BwKQogZW5kaWYg
KCkKIAogaWYgKEVOQUJMRV9TUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IDY2Njc3NTQxOTZlNDE1MDJmZDEzOTFk
ZWUyNTU1MzRkNDU5YmQ5YmMuLjc3MGYyMTBiYzk0OTBkYTExZGMyNDJkMmQwODg5NTE1MDk3M2Q3
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSBDb250ZXh0TWFwJiBjb250ZXh0
TWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1Fd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29u
dGV4dFJlZiBjb250ZXh0KQorRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9kYXRhYmFzZU1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxFd2tEYXRhYmFz
ZU1hbmFnZXI+KFdLQ29udGV4dEdldERhdGFiYXNlTWFuYWdlcihjb250ZXh0KSkpCiAgICAgLCBt
X3N0b3JhZ2VNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RXdrU3RvcmFnZU1hbmFnZXI+KFdLQ29u
dGV4dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoY29udGV4dCkpKQpAQCAtNzMsNiArNzMsNyBA
QCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAgICwgbV9y
ZXF1ZXN0TWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsPihjb250ZXh0KSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENv
bnRleHRIaXN0b3J5Q2xpZW50RWZsPihjb250ZXh0KSkKICAgICAsIG1fanNHbG9iYWxDb250ZXh0
KG51bGxwdHIpCisgICAgLCBtX2V4dGVuc2lvbnNQYXRoKGV4dGVuc2lvbnNQYXRoKQogewogICAg
IENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFwKCkuYWRkKGNvbnRleHQs
IHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBA
IC05NSw2ICs5NiwxOSBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250
ZXh0KQogCiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUuY2FsbGJh
Y2sgPSBudWxscHRyOwogICAgIG1fY2FsbGJhY2tGb3JNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
LnVzZXJEYXRhID0gbnVsbHB0cjsKKworICAgIGlmICghZXh0ZW5zaW9uc1BhdGguaXNFbXB0eSgp
KSB7CisgICAgICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgY2xpZW50OworICAg
ICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworCisgICAgICAgIGNsaWVu
dC5iYXNlLnZlcnNpb24gPSAxOworICAgICAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhp
czsKKyAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0g
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgICAgIGNsaWVudC5kaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsKKyAgICAgICAgY2xpZW50LmdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldEluamVjdGVkQnVuZGxlSW5p
dGlhbGl6YXRpb25Vc2VyRGF0YTsKKworICAgICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChtX2NvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7CisgICAgfQogfQogCiBFd2tD
b250ZXh0Ojp+RXdrQ29udGV4dCgpCkBAIC0xMjAsMTQgKzEzNCwyOCBAQCBQYXNzUmVmUHRyPEV3
a0NvbnRleHQ+IEV3a0NvbnRleHQ6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBF
d2tDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpLmdldCgpKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8RXdrQ29udGV4dD4gRXdrQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKQorc3RhdGljIFN0cmluZyBidW5kbGVQYXRoRm9yRXh0ZW5zaW9uKCkKK3sK
KyAgICBTdHJpbmcgYnVuZGxlUGF0aEZvckV4dGVuc2lvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4KFRFU1RfTElCX0RJUiksIEVYVEVOU0lPTk1B
TkFHRVJOQU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoRm9yRXh0
ZW5zaW9uKSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb247CisKKyAgICBi
dW5kbGVQYXRoRm9yRXh0ZW5zaW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFN0cmluZzo6ZnJvbVVURjgoRVhURU5TSU9OTUFOQUdFUkRJUiksIEVYVEVOU0lPTk1BTkFHRVJO
QU1FKTsKKyAgICBpZiAoV2ViQ29yZTo6ZmlsZUV4aXN0cyhidW5kbGVQYXRoRm9yRXh0ZW5zaW9u
KSkKKyAgICAgICAgcmV0dXJuIGJ1bmRsZVBhdGhGb3JFeHRlbnNpb247CisKKyAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKK30KKworUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zUGF0aCkKIHsgICAKLSAgICBpZiAoIWZpbGVF
eGlzdHMoaW5qZWN0ZWRCdW5kbGVQYXRoKSkKKyAgICBTdHJpbmcgYnVuZGxlUGF0aCA9IGJ1bmRs
ZVBhdGhGb3JFeHRlbnNpb24oKTsKKyAgICBpZiAoYnVuZGxlUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhdGggPSBhZG9w
dFdLKHRvQ29waWVkQVBJKGluamVjdGVkQnVuZGxlUGF0aCkpOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBwYXRoID0gYWRvcHRXSyh0b0NvcGllZEFQSShidW5kbGVQYXRoKSk7CiAKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVX
aXRoSW5qZWN0ZWRCdW5kbGVQYXRoKHBhdGguZ2V0KCkpKS5nZXQoKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRXdrQ29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3Rl
ZEJ1bmRsZVBhdGgocGF0aC5nZXQoKSkpLmdldCgpLCBleHRlbnNpb25zUGF0aCkpOwogfQogCiBF
d2tDb250ZXh0KiBFd2tDb250ZXh0OjpkZWZhdWx0Q29udGV4dCgpCkBAIC0zNjQsNiArMzkyLDEx
IEBAIHZvaWQgRXdrQ29udGV4dDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLCiAgICAgdG9Fd2tDb250ZXh0KGNsaWVudEluZm8p
LT5wcm9jZXNzUmVjZWl2ZWRNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBt
ZXNzYWdlQm9keSwgcmV0dXJuRGF0YSk7CiB9CiAKK1dLVHlwZVJlZiBFd2tDb250ZXh0OjpnZXRJ
bmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXS1R5cGVSZWY+KHRv
Q29waWVkQVBJKHRvRXdrQ29udGV4dChjbGllbnRJbmZvKS0+ZXh0ZW5zaW9uc1BhdGgoKSkpOwor
fQorCiB2b2lkIEV3a0NvbnRleHQ6OnNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFj
ayhFd2tfQ29udGV4dF9NZXNzYWdlX0Zyb21fSW5qZWN0ZWRfQnVuZGxlX0NiIGNhbGxiYWNrLCB2
b2lkKiB1c2VyRGF0YSkKIHsKICAgICBtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZS51c2VyRGF0YSA9IHVzZXJEYXRhOwpAQCAtMzcxLDE5ICs0MDQsNiBAQCB2b2lkIEV3a0Nv
bnRleHQ6OnNldE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjayhFd2tfQ29udGV4dF9N
ZXNzYWdlX0Zyb21fSQogICAgIGlmIChtX2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZS5jYWxsYmFjayA9PSBjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X2NhbGxiYWNrRm9yTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS5jYWxsYmFjaykgewotICAgICAg
ICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGNsaWVudDsKLSAgICAgICAgbWVtc2V0
KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLQotICAgICAgICBjbGllbnQuYmFzZS52ZXJz
aW9uID0gMTsKLSAgICAgICAgY2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgICAg
IGNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOwotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7Ci0KLSAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQobV9jb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwotICAgIH0gZWxzZSBp
ZiAoIWNhbGxiYWNrKQotICAgICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCht
X2NvbnRleHQuZ2V0KCksIG51bGxwdHIpOwotCiAgICAgbV9jYWxsYmFja0Zvck1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUuY2FsbGJhY2sgPSBjYWxsYmFjazsKIH0KIApAQCAtNDMzLDcgKzQ1Myw3
IEBAIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXcoKQogICAgIHJldHVybiBFd2tDb250ZXh0
OjpjcmVhdGUoKS5sZWFrUmVmKCk7CiB9CiAKLUV3a19Db250ZXh0KiBld2tfY29udGV4dF9uZXdf
d2l0aF9pbmplY3RlZF9idW5kbGVfcGF0aChjb25zdCBjaGFyKiBwYXRoKQorRXdrX0NvbnRleHQq
IGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChjb25zdCBjaGFyKiBwYXRoKQog
ewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwYXRoLCBudWxscHRyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKaW5kZXgg
MWM2NWZlM2MwY2Y5ZDE4MGMxNGUxOTk4YWUzMTU2NWQ5OWY2Y2IzOC4uZGQ5MWI2ODY5NjFhM2Qx
NDA1MGZkOTNmYTcxY2U5MzkxOWEzMWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC0xNjksNyArMTY5LDcgQEAgRUFQSSBFd2tfQ29u
dGV4dCAqZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQodm9pZCk7CiAgKiBAcmV0dXJuIEV3a19Db250
ZXh0IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQogICoKICAqIEBzZWUg
ZXdrX29iamVjdF91bnJlZgotICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9pbmplY3RlZF9i
dW5kbGVfcGF0aAorICogQHNlZSBld2tfY29udGV4dF9uZXdfd2l0aF9leHRlbnNpb25zX3BhdGgK
ICAqLwogRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3KHZvaWQpOwogCkBAIC0xNzgs
MTQgKzE3OCwxNyBAQCBFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9uZXcodm9pZCk7CiAg
KgogICogVGhlIHJldHVybmVkIEV3a19Db250ZXh0IG9iamVjdCBAYiBzaG91bGQgYmUgdW5yZWYn
ZWQgYWZ0ZXIgdXNlLgogICoKLSAqIEBwYXJhbSBwYXRoIHBhdGggb2YgaW5qZWN0ZWQgYnVuZGxl
IGxpYnJhcnkKKyAqIEBwYXJhbSBwYXRoIGRpcmVjdG9yeSBwYXRoIG9mIGV4dGVuc2lvbnMKICAq
CiAgKiBAcmV0dXJuIEV3a19Db250ZXh0IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24g
ZmFpbHVyZQogICoKKyAqIEBub3RlIEFsbCBzaGFyZWQgb2JqZWN0cyB3aGljaCBoYXZlIGV3a19l
eHRlbnNpb25faW5pdCgpIGluIHRoZSBnaXZlbiBAYSBwYXRoIHdpbGwgYmUgbG9hZGVkLgorICoK
ICAqIEBzZWUgZXdrX29iamVjdF91bnJlZgogICogQHNlZSBld2tfY29udGV4dF9uZXcKKyAqIEBz
ZWUgRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uCiAgKi8KLUVBUEkgRXdrX0NvbnRl
eHQgKmV3a19jb250ZXh0X25ld193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKGNvbnN0IGNoYXIg
KnBhdGgpOworRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9u
c19wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogCiAvKioKICAqIEdldHMgdGhlIGFwcGxpY2F0aW9u
IGNhY2hlIG1hbmFnZXIgaW5zdGFuY2UgZm9yIHRoaXMgQGEgY29udGV4dC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApp
bmRleCAxNzI5YzRhMTJhMjI3ZmMwYTMyZDRhOTc1NjE2YjYwNWE3ZjlkNDU5Li4zMmQyM2VkOWI0
M2RlOGY4NDNjMmZiYWNmNzQ1MjVkNGFlMjkxZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCkBAIC04Niw2ICs4
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKEV3a19UTFNfRXJy
b3JfUG9saWN5IFRMU0Vycm9yUG9saWN5KSBjb25zdDsKIAorICAgIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uc1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2V4dGVuc2lvbnNQYXRoOyB9CisKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIHNldEFkZGl0aW9uYWxQbHVnaW5Q
YXRoKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCkBAIC05NiwxMSArOTgsMTIgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tD
b250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5E
YXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgV0tUeXBlUmVmIGdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogICAgIHZvaWQgc2V0TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNh
bGxiYWNrKEV3a19Db250ZXh0X01lc3NhZ2VfRnJvbV9JbmplY3RlZF9CdW5kbGVfQ2IsIHZvaWQq
KTsKICAgICB2b2lkIHByb2Nlc3NSZWNlaXZlZE1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tUeXBlUmVmKiBy
ZXR1cm5EYXRhKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFd2tDb250ZXh0KFdLQ29udGV4
dFJlZik7CisgICAgZXhwbGljaXQgRXdrQ29udGV4dChXS0NvbnRleHRSZWYsIGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uc1BhdGggPSBTdHJpbmcoKSk7CiAKICAgICB2b2lkIGVuc3VyZUZhdmljb25E
YXRhYmFzZSgpOwogCkBAIC0xMjEsNiArMTI0LDggQEAgcHJpdmF0ZToKIAogICAgIEpTR2xvYmFs
Q29udGV4dFJlZiBtX2pzR2xvYmFsQ29udGV4dDsKIAorICAgIFN0cmluZyBtX2V4dGVuc2lvbnNQ
YXRoOworCiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX0NvbnRleHRfTWVzc2FnZV9Gcm9tX0lu
amVjdGVkX0J1bmRsZV9DYiBjYWxsYmFjazsKICAgICAgICAgdm9pZCogdXNlckRhdGE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9JbmplY3RlZEJ1
bmRsZS9pbmplY3RlZF9idW5kbGVfc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL0luamVjdGVkQnVuZGxlL2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGNlMTNiNmFjNmJhYTVjNzMzM2VjNWQ0
ZWQzOGRhOWMwNjI0MGEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL0luamVjdGVkQnVu
ZGxlL2luamVjdGVkX2J1bmRsZV9zYW1wbGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVJbml0aWFsaXplLmg+Ci0KLSNpZmRlZiBf
X2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdm9pZCBXS0J1bmRsZUluaXRpYWxp
emUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkK
LXsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAKaW5kZXggMDU5ZjAx
MjYyMGJjZjUzYWY1NGU3N2U2OGJhNjU0N2M5OWYxMzU3ZS4uOWVhZGY4NmI0ZTRhNmVkZjBmNzhl
ZjIyMGMxYTE3MTRlOGY1YjI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgY29uc3QgY2hh
ciogRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OmRlZmF1bHRUaGVtZSgpIGNvbnN0CiAgICAgcmV0
dXJuIERFRkFVTFRfVEhFTUVfRElSICIvZGVmYXVsdC5lZGoiOwogfQogCi1jb25zdCBjaGFyKiBF
V0syVW5pdFRlc3RFbnZpcm9ubWVudDo6aW5qZWN0ZWRCdW5kbGVTYW1wbGUoKSBjb25zdAorY29u
c3QgY2hhciogRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OmV4dGVuc2lvblNhbXBsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFRFU1RfTElCX0RJUiAiL2xpYmV3azJVbml0VGVzdEluamVjdGVkQnVu
ZGxlU2FtcGxlLnNvIjsKKyAgICByZXR1cm4gVEVTVF9MSUJfRElSICIvbGliZXdrMlVuaXRUZXN0
RXh0ZW5zaW9uU2FtcGxlLnNvIjsKIH0KIAogQ1N0cmluZyBFV0syVW5pdFRlc3RFbnZpcm9ubWVu
dDo6dXJsRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgKaW5kZXggNWY5ZTIyMTVk
YmNhNTE3NmJjMzdkY2E5NGM3YjI1NDM1ZGRiZjI2ZS4uZWI1NWJmOGY5OTUxZTlhOGFlNTA2Yjc4
ZGQ4MmZkMzA5MzNkMGJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0RW52aXJvbm1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBjaGFyKiBkZWZhdWx0VGVzdFBhZ2VVcmwoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBk
ZWZhdWx0VGhlbWUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBpbmplY3RlZEJ1bmRsZVNhbXBs
ZSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvblNhbXBsZSgpIGNvbnN0OwogICAg
IENTdHJpbmcgdXJsRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UpOwogICAgIENTdHJp
bmcgcGF0aEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlKTsKICAgICBDU3RyaW5nIHBh
dGhGb3JUaGVtZShjb25zdCBjaGFyKiB0aGVtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRl
bnNpb25fc2FtcGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTAzZDhlMTg5MjNlNWE0YzQxYmYzMmIwMDMx
MTZkMDUwMzk0NTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lA
Z21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3ZvaWQgZXdrX2V4dGVu
c2lvbl9pbml0KEV3a19FeHRlbnNpb24gKikKK3sKK30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcAppbmRleCA2MDJjYzY4MTNkY2JhZjlhN2U4
OTMwNDYyODkxODI1OTQ3NjI3MzgzLi5kYmI2ODc4OWVhYTdiNDFiMGE4ZTU1YTZiYjBmMGQ5MDQ1
YWJiMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCkBAIC0yMjgsOSArMjI4LDkgQEAgVEVT
VF9GKEVXSzJDb250ZXh0VGVzdCwgZXdrX2NvbnRleHRfbmV3KQogICAgIGV3a19vYmplY3RfdW5y
ZWYoY29udGV4dCk7CiB9CiAKLVRFU1RfRihFV0syQ29udGV4dFRlc3QsIGV3a19jb250ZXh0X25l
d193aXRoX2luamVjdGVkX2J1bmRsZV9wYXRoKQorVEVTVF9GKEVXSzJDb250ZXh0VGVzdCwgZXdr
X2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKQogewotICAgIEV3a19Db250ZXh0KiBj
b250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfaW5qZWN0ZWRfYnVuZGxlX3BhdGgoZW52aXJv
bm1lbnQtPmluamVjdGVkQnVuZGxlU2FtcGxlKCkpOworICAgIEV3a19Db250ZXh0KiBjb250ZXh0
ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGVudmlyb25tZW50LT5leHRl
bnNpb25TYW1wbGUoKSk7CiAgICAgQVNTRVJUX1RSVUUoY29udGV4dCk7CiAgICAgZXdrX29iamVj
dF91bnJlZihjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTA2MDAxZGE3MjFlMDI2MDFmODI5YzUyYWYzZjc0OTA1MjkyYmI5MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoqCisgKiBAZmlsZSAgICBFV2ViS2l0X0V4dGVuc2lvbi5oCisgKiBAYnJpZWYgICBD
b250YWlucyB0aGUgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGV3ZWJraXQyLWV4
dGVuc2lvbi4KKyAqCisgKiBFV2ViS2l0X0V4dGVuc2lvbiBpcyB0aGUgd2F5IHRvIGV4dGVuZCBX
ZWJQcm9jZXNzIG9mIGV3ZWJraXQyLgorICoKKyAqIEluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgZXh0
ZW5zaW9uLAorICogRmlyc3QsIGV3a19leHRlbnNpb25faW5pdCBtdXN0IGJlIGltcGxlbWVudGVk
IGluIHRoZSBzaGFyZWQgb2JqZWN0IGxpa2UgYmVsb3c6CisgKgorICogQGNvZGUKKyAqICNpbmNs
dWRlICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorICoKKyAqIHZvaWQgZXdrX2V4dGVuc2lvbl9pbml0
KEV3a19FeHRlbnNpb24gKmV4dGVuc2lvbikKKyAqIHsKKyAqICAgIC8vIHByb3ZpZGUgRXdrX0V4
dGVuc2lvbl9DbGllbnQgY2FsbGJhY2tzIGFzIGNsaWVudC4KKyAqICAgIGV3a19leHRlbnNpb25f
Y2xpZW50X2FkZChleHRlbnNpb24sICZjbGllbnQpOworICogfQorICogQGVuZGNvZGUKKyAqCisg
KiBBbmQgY29tcGlsZXMgQyBvciBDKysgZmlsZXMgYXMgc2hhcmVkIG9iamVjdCBsaWtlIGJlbG93
OgorICoKKyAqIEB2ZXJiYXRpbSBnY2MgLW8gbGlic2FtcGxlLnNvIHNhbXBsZS5jIC1zaGFyZWQg
LWZQSUMgYHBrZy1jb25maWcgLS1jZmxhZ3MgLS1saWJzIGVpbmEgZXdlYmtpdDItZXh0ZW5zaW9u
YCBAZW5kdmVyYmF0aW0KKyAqCisgKiBUaGVuLCBpbnN0YWxsIHRoYXQgb2JqZWN0IGludG8gdGhl
IHBhdGggd2hpY2ggZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKCkgc3BlY2lm
aWVzLgorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoCisg
KiBAc2VlIGV3a19leHRlbnNpb25fY2xpZW50X3NldAorICogQHNlZSBFd2tfRXh0ZW5zaW9uX0lu
aXRpYWxpemVfRnVuY3Rpb24KKyAqLworCisjaWZuZGVmIEVXZWJLaXRfRXh0ZW5zaW9uX2gKKyNk
ZWZpbmUgRVdlYktpdF9FeHRlbnNpb25faAorCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgor
CisjZW5kaWYgLy8gRVdlYktpdF9FeHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRl
bnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExYmM4NTZiMWViYTMyZTdjNmMwNmFlM2Y4ZWQwOWI0YjM3
NTE5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4u
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5o
IgorCisjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK3ZvaWQgRXdrRXh0ZW5zaW9uOjphcHBlbmQoRXdrX0V4dGVuc2lvbl9DbGll
bnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMuYXBwZW5kKGNsaWVudCk7Cit9CisKK3ZvaWQg
RXdrRXh0ZW5zaW9uOjpyZW1vdmUoRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAg
ICBtX2NsaWVudHMucmVtb3ZlKG1fY2xpZW50cy5maW5kKGNsaWVudCkpOworfQorCitFaW5hX0Jv
b2wgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKEV3a19FeHRlbnNpb24qIGV4dGVuc2lvbiwgRXdr
X0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoZXh0ZW5zaW9uLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNsaWVudCwgZmFsc2UpOworCisgICAgZXh0ZW5zaW9uLT5hcHBlbmQoY2xpZW50KTsK
KworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2V4dGVuc2lvbl9jbGllbnRf
ZGVsKEV3a19FeHRlbnNpb24qIGV4dGVuc2lvbiwgRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXh0ZW5zaW9uLCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNsaWVudCwgZmFsc2UpOwor
CisgICAgZXh0ZW5zaW9uLT5yZW1vdmUoY2xpZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNjNTIyOWU2MDY0N2M0
YjlhNjk0ZGE2YzI4MjE0YWRjMzJlMmIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKQEAg
LTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBSeXVhbiBDaG9pIDxyeXVh
bi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19leHRlbnNp
b24uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2tfRXh0ZW5zaW9uIEFQSS4KKyAqLwor
CisjaWZuZGVmIGV3a19leHRlbnNpb25faAorI2RlZmluZSBld2tfZXh0ZW5zaW9uX2gKKworI2lu
Y2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisvKioKKyAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg
RXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CisKKy8qKgorICogRGVjbGFyZSBFd2tfRXh0ZW5z
aW9uX0luaXRpYWxpemVfRnVuY3Rpb24uCisgKgorICogQGJyaWVmICBUeXBlIGRlZmluaXRpb24g
Zm9yIHRoZSBlbnRyeSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIEBwYXJhbSBleHRlbnNpb24g
dGhlIGV4dGVuc2lvbiBpbnN0YW5jZSBoZWxwcyB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFdl
YlByb2Nlc3MgYW5kIHlvdXIgZXh0ZW5zaW9uIGxpYnJhcnkKKyAqIEBwYXJhbSByZXNlcnZlZCBl
eHRyYSBwYXJhbWV0ZXIgZm9yIHRoZSBmdXR1cmUuIE5VTEwgaXMgZmluZSwgbm93CisgKgorICov
Cit0eXBlZGVmIHZvaWQgKigqRXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uKShFd2tf
RXh0ZW5zaW9uICpleHRlbnNpb24sIHZvaWQgKnJlc2VydmVkKTsKKworc3RydWN0IEV3a0V4dGVu
c2lvbkNsaWVudCB7CisgICAgaW50IHZlcnNpb247CisgICAgdm9pZCAqZGF0YTsKK307Cit0eXBl
ZGVmIHN0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgRXdrX0V4dGVuc2lvbl9DbGllbnQ7CisKKy8q
KgorICogQWRkIGEgY2xpZW50IHdoaWNoIGNvbnRhaW5zIHNldmVyYWwgY2FsbGJhY2tzIHRvIHRo
ZSBleHRlbnNpb24uCisgKgorICogQHBhcmFtIGV4dGVuc2lvbiBleHRlbnNpb24gdG8gYXR0YWNo
IGNsaWVudCB0bworICogQHBhcmFtIGNsaWVudCBjbGllbnQgdG8gYWRkIHRvIHRoZSBleHRlbnNp
b24KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBjbGllbnQsIHdoaWNoIGNvbnRhaW5zIHNl
dmVyYWwgY2FsbGJhY2tzIHJlY2VpdmluZyBldmVudHMKKyAqIGZyb20gV2ViUHJvY2VzcyBzaWRl
LCB0byBhIEBwIGV4dGVuc2lvbi4KKyAqCisgKiBAc2VlIGV3a19leHRlbnNpb25fY2xpZW50X2Rl
bAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZXh0ZW5zaW9uX2NsaWVudF9hZGQoRXdrX0V4dGVu
c2lvbiAqZXh0ZW5zaW9uLCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAqY2xpZW50KTsKKworLyoqCisg
KiBEZWxldGUgYSBjbGllbnQgZnJvbSB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIEBwYXJhbSBleHRl
bnNpb24gZXh0ZW5zaW9uIHRvIGRlbGV0ZSBjbGllbnQKKyAqIEBwYXJhbSBjbGllbnQgY2xpZW50
IHdoaWNoIGNvbnRhaW5zIHZlcnNpb24sIGRhdGEgYW5kIGNhbGxiYWNrcworICovCitFQVBJIEVp
bmFfQm9vbCBld2tfZXh0ZW5zaW9uX2NsaWVudF9kZWwoRXdrX0V4dGVuc2lvbiAqZXh0ZW5zaW9u
LCBFd2tfRXh0ZW5zaW9uX0NsaWVudCAqY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19leHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25f
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYjAxOTVkNzQ2YzdjMGNi
YjkwMTNjNWI1OTIzMjgwNGNjYmU0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRl
LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBSeXVhbiBDaG9p
IDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19leHRlbnNpb25f
cHJpdmF0ZV9oCisjZGVmaW5lIGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgSW5qZWN0ZWRCdW5kbGU7
Cit9CisKK2NsYXNzIEV3a0V4dGVuc2lvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRXdrRXh0
ZW5zaW9uKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGUqKSB7IH0KKyAgICB+RXdrRXh0ZW5zaW9uKCkg
eyB9CisKKyAgICB2b2lkIGFwcGVuZChFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KTsKKyAg
ICB2b2lkIHJlbW92ZShFd2tfRXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KTsKKworcHJpdmF0ZToK
KyAgICBWZWN0b3I8RXdrX0V4dGVuc2lvbl9DbGllbnQqPiBtX2NsaWVudHM7Cit9OworCisjZW5k
aWYgLy8gZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9lZmwvRXh0ZW5zaW9uTWFuYWdlckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzZTI4
NmFlNDZlODJjODYzNTFjOGNkN2Q2MjAxMTE5OWY3NGU5YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuY3BwCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1YW4gQ2hvaSA8cnl1YW4u
Y2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkV4dGVuc2lvbk1hbmFnZXJFZmwuaCIKKworI2luY2x1ZGUgIk1vZHVsZS5oIgorI2luY2x1ZGUg
IldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKyNpbmNsdWRl
ICJld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitFeHRlbnNpb25NYW5hZ2VyRWZsJiBFeHRlbnNpb25NYW5hZ2VyRWZsOjpzaGFyZWQoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFeHRlbnNpb25NYW5hZ2VyRWZsPiBleHRlbnNpb25N
YW5hZ2VyOworICAgIHJldHVybiBleHRlbnNpb25NYW5hZ2VyOworfQorCitFeHRlbnNpb25NYW5h
Z2VyRWZsOjpFeHRlbnNpb25NYW5hZ2VyRWZsKCkKK3sKK30KKwordm9pZCBFeHRlbnNpb25NYW5h
Z2VyRWZsOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRh
KQoreworICAgIEFTU0VSVCghbV9leHRlbnNpb24pOworCisgICAgU3RyaW5nIGV4dGVuc2lvbnNE
aXJlY3RvcnkgPSB0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KHVzZXJEYXRhKSktPnN0
cmluZygpOworICAgIGlmIChleHRlbnNpb25zRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9leHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEV3a0V4dGVuc2lv
bj4odG9JbXBsKGJ1bmRsZSkpOworCisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBX
ZWJDb3JlOjpsaXN0RGlyZWN0b3J5KGV4dGVuc2lvbnNEaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgi
Ki5zbyIpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0p
KSB7CisgICAgICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPiht
b2R1bGVQYXRoc1tpXSk7CisgICAgICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBFd2tfRXh0ZW5zaW9uX0luaXRpYWxp
emVfRnVuY3Rpb24gaW5pdGlhbGl6ZUZ1bmN0aW9uID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8
RXdrX0V4dGVuc2lvbl9Jbml0aWFsaXplX0Z1bmN0aW9uPigiZXdrX2V4dGVuc2lvbl9pbml0Iik7
CisgICAgICAgICAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGluaXRpYWxpemVGdW5jdGlvbihtX2V4dGVuc2lvbi5nZXQo
KSwgbnVsbHB0ciAvKiByZXNlcnZlZCBmb3IgdGhlIGZ1dHVyZSAqLyk7CisgICAgICAgICAgICBt
X2V4dGVuc2lvbk1vZHVsZXMuYXBwZW5kKG1vZHVsZS5yZWxlYXNlKCkpOworICAgICAgICB9Cisg
ICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9F
eHRlbnNpb25NYW5hZ2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9FeHRl
bnNpb25NYW5hZ2VyRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJhNTNiNjk4OGQ0MDRkNGM3NzgyNGFjMDk3
YmUwYzI2NGNjYWFiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL0V4dGVuc2lvbk1hbmFnZXJFZmwuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRXh0ZW5zaW9uTWFuYWdlckVmbF9oCisjZGVmaW5lIEV4dGVuc2lvbk1hbmFn
ZXJFZmxfaAorCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK2NsYXNzIEV3a0V4dGVuc2lvbjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIE1vZHVsZTsKKworY2xhc3MgRXh0ZW5zaW9uTWFuYWdlckVmbCB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRXh0ZW5zaW9uTWFuYWdlckVmbCk7CitwdWJsaWM6CisgICAgV0tfRVhQT1JU
IHN0YXRpYyBFeHRlbnNpb25NYW5hZ2VyRWZsJiBzaGFyZWQoKTsKKyAgICBXS19FWFBPUlQgdm9p
ZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmLCBXS1R5cGVSZWYpOworcHJpdmF0ZToKKyAgICBFeHRl
bnNpb25NYW5hZ2VyRWZsKCk7CisKKyAgICBWZWN0b3I8TW9kdWxlKj4gbV9leHRlbnNpb25Nb2R1
bGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFd2tFeHRlbnNpb24+IG1fZXh0ZW5zaW9uOworCisg
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEV4dGVuc2lvbk1hbmFnZXJFZmw+OworfTsK
KworfQorCisjZW5kaWYgLy8gRXh0ZW5zaW9uTWFuYWdlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJJbmplY3RlZEJ1bmRsZU1haW5FZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViSW5qZWN0ZWRCdW5kbGVNYWluRWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZTUwYThjYzFiZmQ2ZThlNWJmYmRiMjcyNDVkNmRmODQ1YzAwYWVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViSW5qZWN0
ZWRCdW5kbGVNYWluRWZsLmNwcApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbk1hbmFnZXJFZmwuaCIKKyNpbmNs
dWRlIDxXZWJLaXQvV0tCdW5kbGVJbml0aWFsaXplLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK2V4dGVybiAiQyIgdm9pZCBXS0J1bmRsZUluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVu
ZGxlLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgRXh0ZW5zaW9uTWFuYWdlckVmbDo6c2hh
cmVkKCkuaW5pdGlhbGl6ZShidW5kbGUsIHVzZXJEYXRhKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9l
ZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTZjZGMyZjkzOTVlYmU3
Mjk2ZDA1NDhmZWM4MDFmYzUxZTgzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCkBAIC0wLDAgKzEsOCBAQAorcHJlZml4PUBD
TUFLRV9JTlNUQUxMX1BSRUZJWEAKK2luY2x1ZGVkaXI9JHtwcmVmaXh9L2luY2x1ZGUKKworTmFt
ZTogZXdlYmtpdDItZXh0ZW5zaW9uCitEZXNjcmlwdGlvbjogRXh0ZW5zaW9uIGZvciBXZWJLaXQy
L0VGTChld2Via2l0MikKK1ZlcnNpb246IEBQUk9KRUNUX1ZFUlNJT05ACitSZXF1aXJlczogZWlu
YQorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNU
X1ZFUlNJT05fTUFKT1JAL2V4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2ZjVmYTRhZTg3MzY4YmYyNzFhYTEwZmZjMTk2MzhmYTVl
ZDU1Y2YuLmViNDZlZDI0NzUxYmU5YzRhZjAzNmFkNWVhZTU4YWMwOWJiZmI4ZWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxNC0xMC0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAZ21haWwuY29tPgorCisgICAg
ICAgIFtFRkxdIEludHJvZHVjZSBFV2ViS2l0X0V4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOiBB
ZGRlZCB4IG9wdGlvbiB0byB0ZXN0IGV4dGVuc2lvbiBwYXRoLgorICAgICAgICAod2luZG93X2Ny
ZWF0ZSk6CisgICAgICAgIChlbG1fbWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY29uZmlnL3dhdGNobGlzdDoKKyAgICAgICAgQWRkZWQgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsLyBpbnRvIEVGTFdlYktpdDJQdWJsaWNBUEku
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICBB
ZGRlZCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvIGlu
dG8gRUZMIGV4Y2VwdGlvbnMuCisKIDIwMTQtMTAtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFRlYWNoIHdlYmtpdHB5IGFib3V0IE9TIFggWW9zZW1pdGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9lZmwvbWFpbi5jCmluZGV4IGU2YTYwMDNlNmVkNjE4YjQxY2U2NzYxYmJiYTgwNGE2MTJkOTQz
ZDQuLmI4NDNmZWUwZDZjMWM4YmQ0OTBjYWUzY2ZkZmFhNGVkOTI3ZWYzZTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZs
L21haW4uYwpAQCAtNDgsNiArNDgsNyBAQCBzdGF0aWMgaW50IHZlcmJvc2UgPSAxOwogc3RhdGlj
IEVpbmFfTGlzdCAqd2luZG93cyA9IE5VTEw7CiBzdGF0aWMgY2hhciAqZXZhc19lbmdpbmVfbmFt
ZSA9IE5VTEw7CiBzdGF0aWMgY2hhciAqdXNlcl9hZ2VudF9zdHJpbmcgPSBOVUxMOworc3RhdGlj
IGNoYXIgKmV4dGVuc2lvbnNfcGF0aCA9IE5VTEw7CiBzdGF0aWMgY2hhciAqYmFja2dyb3VuZF9j
b2xvcl9zdHJpbmcgPSBOVUxMOwogc3RhdGljIEVpbmFfQm9vbCBlbmNvZGluZ19kZXRlY3Rvcl9l
bmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBFaW5hX0Jvb2wgZnJhbWVfZmxhdHRlbmluZ19l
bmFibGVkID0gRUlOQV9GQUxTRTsKQEAgLTE1Nyw2ICsxNTgsOCBAQCBzdGF0aWMgY29uc3QgRWNv
cmVfR2V0b3B0IG9wdGlvbnMgPSB7CiAgICAgICAgICAgICAoJ3MnLCAid2luZG93LXNpemUiLCAi
V2luZG93IHNpemUgaW4gZm9sbG93aW5nIGZvcm1hdCAod2lkdGgpeChoZWlnaHQpLiIpLAogICAg
ICAgICBFQ09SRV9HRVRPUFRfU1RPUkVfU1RSCiAgICAgICAgICAgICAoJ3UnLCAidXNlci1hZ2Vu
dCIsICJVc2VyIGFnZW50IHRvIHNldC4iKSwKKyAgICAgICAgRUNPUkVfR0VUT1BUX1NUT1JFX1NU
UgorICAgICAgICAgICAgKCd4JywgImV4dGVuc2lvbnMtcGF0aCIsICJUaGUgcGF0aCB3aGljaCBl
eHRlbnNpb25zIGFyZSBzdG9yZWQuIiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9TVE9SRV9ET1VC
TEUKICAgICAgICAgICAgICgncicsICJkZXZpY2UtcGl4ZWwtcmF0aW8iLCAiUmF0aW8gYmV0d2Vl
biB0aGUgQ1NTIHVuaXRzIGFuZCBkZXZpY2UgcGl4ZWxzLiIpLAogICAgICAgICBFQ09SRV9HRVRP
UFRfQ0FMTEJBQ0tfTk9BUkdTCkBAIC0yMTUyLDcgKzIxNTUsMTQgQEAgc3RhdGljIEJyb3dzZXJf
V2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvcGVuZXIsIGludCB3aWR0aCwgaW50
IGhlaWdodCkKIAogICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3aW5kb3ct
PmVsbV93aW5kb3cpOwogICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19u
ZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgIEV3a19Db250ZXh0ICpjb250ZXh0ID0gb3BlbmVy
ID8gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKSA6IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0
KCk7CisgICAgRXdrX0NvbnRleHQgKmNvbnRleHQ7CisgICAgaWYgKG9wZW5lcikKKyAgICAgICAg
Y29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KG9wZW5lcik7CisgICAgZWxzZSBpZiAoZXh0
ZW5zaW9uc19wYXRoKQorICAgICAgICBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0
ZW5zaW9uc19wYXRoKGV4dGVuc2lvbnNfcGF0aCk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0
ID0gZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKKwogICAgIEV3a19QYWdlX0dyb3VwICpwYWdl
R3JvdXAgPSBvcGVuZXIgPyBld2tfdmlld19wYWdlX2dyb3VwX2dldChvcGVuZXIpIDogZXdrX3Bh
Z2VfZ3JvdXBfY3JlYXRlKCIiKTsKICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfc21h
cnRfYWRkKGV2YXMsIHNtYXJ0LCBjb250ZXh0LCBwYWdlR3JvdXApOwogCkBAIC0yMjg0LDYgKzIy
OTQsNyBAQCBlbG1fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICBFQ09SRV9H
RVRPUFRfVkFMVUVfU1RSKGV2YXNfZW5naW5lX25hbWUpLAogICAgICAgICBFQ09SRV9HRVRPUFRf
VkFMVUVfU1RSKHdpbmRvd19zaXplX3N0cmluZyksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxV
RV9TVFIodXNlcl9hZ2VudF9zdHJpbmcpLAorICAgICAgICBFQ09SRV9HRVRPUFRfVkFMVUVfU1RS
KGV4dGVuc2lvbnNfcGF0aCksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9ET1VCTEUoZGV2
aWNlX3BpeGVsX3JhdGlvKSwKICAgICAgICAgRUNPUkVfR0VUT1BUX1ZBTFVFX0JPT0wocXVpdE9w
dGlvbiksCiAgICAgICAgIEVDT1JFX0dFVE9QVF9WQUxVRV9CT09MKGVuY29kaW5nX2RldGVjdG9y
X2VuYWJsZWQpLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29u
ZmlnL3dhdGNobGlzdCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRj
aGxpc3QKaW5kZXggYjFmODUzMzIzMTQ4NjhiZTM1NTgzMTZkYmUwZGIxOTUwZDMyYTVmMi4uMmQy
OGZjNTljMmRmZTU0MDE4ZThiMjViOWQ4ZmMxMjA5Y2Y1Nzg2ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0CkBAIC0xMDcsNyArMTA3LDggQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgIHIifExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC8iLAog
ICAgICAgICB9LAogICAgICAgICAiRUZMV2ViS2l0MlB1YmxpY0FQSSI6IHsKLSAgICAgICAgICAg
ICJmaWxlbmFtZSI6IHIiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvIgorICAgICAg
ICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvIgorICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvIgogICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC8iLAogICAgICAgICB9LAogICAgICAgICAiRUZMV2Vi
S2l0MlBsYXRmb3JtU3BlY2lmaWMiOiB7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHkKaW5kZXggMjUzZWIyM2Q0ZGVhNGM0NzBiNWMyNzM5ODhjMGU1YzVjY2ZiZGM2Yy4uZGRh
ZTY4NjY4YWZiZWZmY2Y3Yzc0OGVlNjU2YjBjNDJkNzk3NTZmOCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMTkwLDcgKzE5MCw4IEBAIF9QQVRIX1JVTEVTX1NQ
RUNJRklFUiA9IFsKICAgICAoWyMgVGhlIEVGTCBBUElzIHVzZSBFRkwgbmFtaW5nIHN0eWxlLCB3
aGljaCBpbmNsdWRlcwogICAgICAgIyBib3RoIGxvd2VyLWNhc2VkIGFuZCBjYW1lbC1jYXNlZCwg
dW5kZXJzY29yZS1zcGFyYXRlZAogICAgICAgIyB2YWx1ZXMuCi0gICAgICAiU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvIl0sCisgICAgICAiU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvIiwKKyAgICAgICJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyIsCiAgICAgICAiLXJl
YWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lIl0pLAogICAgIChbIyBNaW5pQnJvd3Nlci9lZmwgYXJl
IEVGTCBzaW1wbGUgYXBwbGljYXRpb24uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>