<?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>192736</bug_id>
          
          <creation_ts>2018-12-14 19:28:12 -0800</creation_ts>
          <short_desc>HTTPS Upgrade: Use full sqlite upgrade list</short_desc>
          <delta_ts>2018-12-19 20:04:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vivek Seth">v_seth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jberlin</cc>
    
    <cc>mkwst</cc>
    
    <cc>rhoule</cc>
    
    <cc>sam</cc>
    
    <cc>v_seth</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488197</commentid>
    <comment_count>0</comment_count>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-14 19:28:12 -0800</bug_when>
    <thetext>Use full sqlite upgrade list. 
&lt;rdar://problem/45851427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488198</commentid>
    <comment_count>1</comment_count>
      <attachid>357378</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-14 19:31:53 -0800</bug_when>
    <thetext>Created attachment 357378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488206</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-14 19:40:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/46749504&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488379</commentid>
    <comment_count>3</comment_count>
      <attachid>357378</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-16 15:40:32 -0800</bug_when>
    <thetext>Comment on attachment 357378
Patch

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

A few comments, not a complete review

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:37
&gt; +using namespace WebCore;

This is not allowed; it’s incompatible with unified builds.

Best solution would be to not us &quot;using namespace&quot; at all, or the using namespace could be put inside the WebKit namespace.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:42
&gt; +    : m_isSetupComplete(false)

Typically better style is to initialize this in the data member definition in the class definition rather than hear.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:75
&gt; +    if (this-&gt;m_isSetupComplete) {

No need for the &quot;this-&gt;&quot; here or in the many other places in this file. Please remove it wherever possible, everywhere if possible.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:132
&gt; +    CFURLRef databaseURL = CFBundleCopyResourceURL(webKitBundle, CFSTR(&quot;HTTPSUpgradeList&quot;), CFSTR(&quot;db&quot;), nullptr);
&gt; +    String path = CFURLGetString(databaseURL);
&gt; +    CFRelease(databaseURL);
&gt; +    return path;

Better style is to use adoptCF rather than an explicit CFRelease. For example:

    return CFURLGetString(adoptCF(CFBundleCopyResourceURL(webKitBundle, CFSTR(&quot;HTTPSUpgradeList&quot;), CFSTR(&quot;db&quot;), nullptr)).get());

Or, if you prefer:

    auto databaseURL = adoptCF(CFBundleCopyResourceURL(webKitBundle, CFSTR(&quot;HTTPSUpgradeList&quot;), CFSTR(&quot;db&quot;), nullptr));
    return CFURLGetString(databaseURL.get());

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:134
&gt; +#endif // PLATFORM(COCOA)
&gt; +    return { };

Need an else here. We don’t want double returns.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:137
&gt; +const String NetworkHTTPSUpgradeChecker::queryDatabaseSQL()

The &quot;const&quot; here isn’t really meaningful and should be omitted.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:139
&gt; +    return &quot;SELECT host FROM hosts WHERE host = ?;&quot;;

Should use a _s suffix so we use ASCIILiteral here. But also, why have a function that returns this as a String?

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:33
&gt; +#include &lt;WebCore/ResourceRequest.h&gt;
&gt; +#include &lt;WebCore/SQLiteDatabase.h&gt;
&gt; +#include &lt;WebCore/SQLiteStatement.h&gt;
&gt; +#include &lt;wtf/CompletionHandler.h&gt;
&gt; +#include &lt;wtf/Ref.h&gt;
&gt; +#include &lt;wtf/WorkQueue.h&gt;

I don’t think we need complete includes of classes like SQLiteDatabase and SQLiteStatement. I believe we can compile with just forward declarations of most of these classes.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:48
&gt; +    static const String databasePath();
&gt; +    static const String queryDatabaseSQL();

The const here don’t mean anything and should be omitted. Not sure these need to be static class member functions; could just have them be free functions in the .cpp file.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:52
&gt; +    std::atomic&lt;bool&gt; m_isSetupComplete;

I don’t think making this std::atomic is doing enough to synchronize here. To give one example, I think there is a race condition in ~NetworkHTTPSUpgradeChecker. It checks the boolean for true and then decides not to do work based on that, but the boolean could become true just after it checks. Doesn’t seem right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488682</commentid>
    <comment_count>4</comment_count>
      <attachid>357505</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-17 17:26:46 -0800</bug_when>
    <thetext>Created attachment 357505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488689</commentid>
    <comment_count>5</comment_count>
      <attachid>357507</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-17 17:38:21 -0800</bug_when>
    <thetext>Created attachment 357507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488912</commentid>
    <comment_count>6</comment_count>
      <attachid>357507</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-12-18 09:31:12 -0800</bug_when>
    <thetext>Comment on attachment 357507
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:28
&gt; +

#if ENABLE(HTTPS_UPGRADE) should go here.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:36
&gt; +#if ENABLE(HTTPS_UPGRADE)

Not here.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:43
&gt; +auto kNetworkHTTPSUpgradeCheckerSQLQuery = &quot;SELECT host FROM hosts WHERE host = ?;&quot;_s;

static constexpr auto httpsUpgradeCheckerSQLQuery = ...

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:45
&gt; +String NetworkHTTPSUpgradeCheckerDatabasePath();

No need to forward declare. You can just move the function definition here.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:59
&gt; +        auto path = NetworkHTTPSUpgradeCheckerDatabasePath();
&gt; +        if (!path) {
&gt; +            RELEASE_LOG_IF_ALLOWED(&quot;NetworkHTTPSUpgradeChecker() - Database does not exist, cannot do upgrades.&quot;);
&gt; +            return;
&gt; +        }

Under what scenario would the HTTPS_UPGRADE feature be enabled with a missing database? Can this be an ASSERT instead?

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:79
&gt; +    // The database and statement need to be destroyed on the background thread.

Don&apos;t think you need this comment.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:134
&gt; +String NetworkHTTPSUpgradeCheckerDatabasePath()

static const String&amp; httpsUpgradeCheckerDatabasePath()

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:141
&gt; +#if PLATFORM(COCOA)
&gt; +    CFBundleRef webKitBundle = CFBundleGetBundleWithIdentifier(CFSTR(&quot;com.apple.WebKit&quot;));
&gt; +    path = CFURLGetString(adoptCF(CFBundleCopyResourceURL(webKitBundle, CFSTR(&quot;HTTPSUpgradeList&quot;), CFSTR(&quot;db&quot;), nullptr)).get());
&gt; +#endif // PLATFORM(COCOA)

It&apos;s expensive to compute this path. Since it never changes, you can cache it in a static NeverDestroyed&lt;String&gt;.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:47
&gt; +    // Returns `true` after internal setup is sucessfully completed. If there is an error with setup, or if setup is in-progress, it will return `false`.
&gt; +    bool isSetupComplete() const { return m_isSetupComplete; };

Not sure you really need this function. I see where you call it below, but it seems unnecessary because query() will already do the right thing when m_isSetupComplete is false. The benefit of removing this function and letting query() check setup completion on the work queue is that you don&apos;t need to make m_isSetupComplete an std::atomic.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:55
&gt; +    std::atomic&lt;bool&gt; m_isSetupComplete { false };

This doesn&apos;t need to be atomic so long as you only access it on the work queue (which you can and should).

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:58
&gt; +    std::unique_ptr&lt;WebCore::SQLiteDatabase&gt; m_database;
&gt; +    std::unique_ptr&lt;WebCore::SQLiteStatement&gt; m_statement;

You can use WTF::UniqueRef here.

&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:216
&gt; +    // Do not wait for httpsUpgradeChecker to complete its setup.
&gt; +    if (!httpsUpgradeChecker.isSetupComplete()) {
&gt; +        handler(WTFMove(request));
&gt;          return;
&gt; +    }

I think you should let NetworkHTTPSUpgradeChecker::query() do this check on the work queue.

&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.h:44
&gt; +#include &quot;UserContentControllerIdentifier.h&quot;
&gt;  #include &lt;WebCore/ContentExtensionActions.h&gt;
&gt; +#include &lt;WebCore/ContentSecurityPolicyResponseHeaders.h&gt;
&gt; +#include &lt;WebCore/FetchOptions.h&gt;
&gt;  #include &lt;WebCore/NetworkLoadInformation.h&gt;
&gt;  #include &lt;WebCore/ResourceError.h&gt;
&gt;  #include &lt;wtf/CompletionHandler.h&gt;
&gt;  #include &lt;wtf/Expected.h&gt;
&gt;  #include &lt;wtf/Variant.h&gt;
&gt; +#include &lt;wtf/WeakPtr.h&gt;
&gt;  
&gt;  namespace WebCore {
&gt;  class ContentSecurityPolicy;
&gt;  struct ContentSecurityPolicyClient;
&gt; +class SecurityOrigin;
&gt; +enum class PreflightPolicy : uint8_t;
&gt; +enum class StoredCredentialsPolicy : bool;

Not sure you still need all this.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:407
&gt; +#if ENABLE(HTTPS_UPGRADE)
&gt; +    NetworkHTTPSUpgradeChecker m_networkHTTPSUpgradeChecker;
&gt; +#endif // ENABLE(HTTPS_UPGRADE)

Could you make NetworkHTTPSUpgradeChecker itself be a singleton, as opposed to adding a member to an existing singleton?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488921</commentid>
    <comment_count>7</comment_count>
      <attachid>357507</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-12-18 09:46:24 -0800</bug_when>
    <thetext>Comment on attachment 357507
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:69
&gt; +        if (!this-&gt;m_database-&gt;open(path)) {
&gt; +            RELEASE_LOG_ERROR_IF_ALLOWED(&quot;NetworkHTTPSUpgradeChecker() - Unable to open database.&quot;);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        if (this-&gt;m_statement-&gt;prepare() != SQLITE_OK) {
&gt; +            RELEASE_LOG_ERROR_IF_ALLOWED(&quot;NetworkHTTPSUpgradeChecker() - Unable to prepare statement.&quot;);
&gt; +            return;
&gt; +        }

Under what scenario would the HTTPS_UPGRADE feature be enabled with a read-only database in the WebKit bundle that can&apos;t be opened?

Same question for failures to prepare our hard-coded SQL query.

Can these be assertions instead?

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:101
&gt; +        if (!this-&gt;m_isSetupComplete) {
&gt; +            RELEASE_LOG_IF_ALLOWED(&quot;query - Setup is not complete, ignoring query.&quot;);
&gt; +            runCallbackOnMainThread(false);
&gt; +            return;
&gt; +        }

The logging here makes it sound like you are ignoring the query because setup is not yet complete, but that&apos;s impossible. By the time this lambda executes on the work queue setup will have completed (possibly with an error). I think what you really want to check is whether an error occurred in the setup lambda, which means m_isSetupComplete probably needs a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488942</commentid>
    <comment_count>8</comment_count>
      <attachid>357507</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 10:40:39 -0800</bug_when>
    <thetext>Comment on attachment 357507
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:59
&gt;&gt; +        }
&gt; 
&gt; Under what scenario would the HTTPS_UPGRADE feature be enabled with a missing database? Can this be an ASSERT instead?

Can&apos;t think of one, I will make this an assert

&gt;&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:47
&gt;&gt; +    bool isSetupComplete() const { return m_isSetupComplete; };
&gt; 
&gt; Not sure you really need this function. I see where you call it below, but it seems unnecessary because query() will already do the right thing when m_isSetupComplete is false. The benefit of removing this function and letting query() check setup completion on the work queue is that you don&apos;t need to make m_isSetupComplete an std::atomic.

Removing this and leaving query() as-is, would result in a slightly different behavior than I was going for. Since running &quot;setup&quot; can take a few milliseconds on some devices, we don&apos;t want to block network requests on that. We decided that if we make a network request before setup is complete, we will ignore upgrading those requests. That&apos;s why I think I still need property or something like it.

In the past I considered, having &quot;NetworkHTTPSUpgradeChecker&quot; own this logic. If its internal setup is not yet complete, it bails out early without checking the database. I feel like this approach creates a weird API: only return correct answers after internal setup is complete, but clients have no way of knowing when that happens. It also makes this class hard to test for correctness. 

Another idea would be to give query() another param `isBlocking` to determine whether or not it should wait for setup, but I feel like this is weird API too.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:216
&gt;&gt; +    }
&gt; 
&gt; I think you should let NetworkHTTPSUpgradeChecker::query() do this check on the work queue.

If I do this check on the work queue, it means we have to wait for setup is complete. The point of having this check is to avoid waiting for setup to complete.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.h:44
&gt;&gt; +enum class StoredCredentialsPolicy : bool;
&gt; 
&gt; Not sure you still need all this.

I think I had to add these as a side-effect of unified builds. After I added NetworkHTTPSUpgradeChecker.cpp to Sources.txt, I got a bunch of errors in this file. This is what I came up with after fixing all the errors.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:407
&gt;&gt; +#endif // ENABLE(HTTPS_UPGRADE)
&gt; 
&gt; Could you make NetworkHTTPSUpgradeChecker itself be a singleton, as opposed to adding a member to an existing singleton?

I can. This approach is what Chris suggested, but I don&apos;t feel strongly one way or another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488968</commentid>
    <comment_count>9</comment_count>
      <attachid>357587</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 11:21:51 -0800</bug_when>
    <thetext>Created attachment 357587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488969</commentid>
    <comment_count>10</comment_count>
      <attachid>357587</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 11:22:43 -0800</bug_when>
    <thetext>Comment on attachment 357587
Patch

Andy already approved this patch. Moving to commit-queue+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488970</commentid>
    <comment_count>11</comment_count>
      <attachid>357587</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 11:24:42 -0800</bug_when>
    <thetext>Comment on attachment 357587
Patch

Modified the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488974</commentid>
    <comment_count>12</comment_count>
      <attachid>357587</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 11:28:36 -0800</bug_when>
    <thetext>Comment on attachment 357587
Patch

Uploaded the wrong patch, obsoleting it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489154</commentid>
    <comment_count>13</comment_count>
      <attachid>357640</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 17:30:46 -0800</bug_when>
    <thetext>Created attachment 357640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489160</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-18 17:38:18 -0800</bug_when>
    <thetext>&gt; &gt; Could you make NetworkHTTPSUpgradeChecker itself be a singleton, as opposed to adding a member to an existing singleton?
&gt; 
&gt; I can. This approach is what Chris suggested, but I don&apos;t feel strongly one
&gt; way or another.

Having fewer singletons has some benefits, especially if one can meaningfully be owned by another.
For instance, in network process, we had to make a used-to-be singleton class non singleton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489163</commentid>
    <comment_count>15</comment_count>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-18 17:51:36 -0800</bug_when>
    <thetext>I spoke to Andy in-person about this. We decided to leave NetworkHTTPSUpgradeChecker where it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489175</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-12-18 19:04:03 -0800</bug_when>
    <thetext>Were any other formats for the database considered other than sqlite? Given that list seems to be immutable (at least from WebCore&apos;s perspective), something like a persistent on-disk trie might be more efficient here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489379</commentid>
    <comment_count>17</comment_count>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 11:34:32 -0800</bug_when>
    <thetext>&gt; Were any other formats for the database considered other than sqlite? 

I considered 3 formats so far: 

A. simple sqlite table 1 column with index on it (what is implemented now)
B. sqlite table with 2 columns: domain and 4 byte hash. The hash column is indexed.
C. a custom implementation of &quot;Hierarchies of Indexes&quot; (Kärkkäinen J., Srinivasa Rao S. (2003) Full-Text Indexes in External Memory). Basically the format reduces disk seeks by using a small binary search tree to index into other binary search trees.

All the options meet our performance threshold for devices with fast SSDs (iPhone, iPad, SSD Macs). They can all search a list of up to 10M domains in &lt;1ms. Format A is the fastest, then B, then C.

For devices with slower disks (SSD macs and Apple Watch) format C is the fastest, then B, then A. 

In terms of disk-space overhead format C is the best (6 bytes per domain), then B (28 bytes per domain), then A (40 bytes per domain). 

I&apos;ve implemented format A for now, but since we would like to support HDD macs, I may switch to format B in another patch. Format C needs significant testing before we can consider using it. 

Feel free to send me an email/meet me in-person if you would like to discuss in more detail. 

&gt; Given that list seems to be immutable (at least from WebCore&apos;s perspective), something like a persistent on-disk trie might be more efficient here.

I&apos;m not very familiar with on-disk tries. Are you thinking of something like what is described in &quot;M. Mosharaf Kabir Chowdhury, N &amp; Mostofa Akbar, Md &amp; Kaykobad, Mohammad. (2007). DiskTrie: An Efficient Data Structure using Flash Memory for Mobile Devices.&quot; ? 

It seems like DiskTrie works best on disks with fast random access like SSDs. I&apos;m not sure how well it would perform on HDD macs or Apple Watch. If you know of a open-source implementation I might be able to try it out. 

Even if its better, I think we should consider switching to it in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489400</commentid>
    <comment_count>18</comment_count>
      <attachid>357640</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 12:07:38 -0800</bug_when>
    <thetext>Comment on attachment 357640
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:44
&gt; +static constexpr auto httpsUpgradeCheckerSQLQuery = &quot;SELECT host FROM hosts WHERE host = ?;&quot;_s;

Not convinced with need this global, we could just inline it.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:46
&gt; +static const String&amp; NetworkHTTPSUpgradeCheckerDatabasePath()

This should not start with an upper case latter.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:60
&gt; +    , m_database(makeUniqueRef&lt;WebCore::SQLiteDatabase&gt;())

You&apos;re likely missing a call to SQLiteDatabase::disableThreadingChecks() since you&apos;re using a worker queue and it means the db may be used from different thread (even though sequentially). I expect you&apos;d see assertions getting hit in debug builds.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:87
&gt; +    ASSERT(isMainThread());

We normally use ASSERT(RunLoop::isMain()); in WK2 code.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:89
&gt; +    m_workQueue-&gt;dispatch([this, host = WTFMove(host), callback = WTFMove(callback)] () mutable {

host = host.isolatedCopy() for thread safety.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:103
&gt; +        WTF::RunLoop::main().dispatch([foundHost, callback = WTFMove(callback)] () mutable {

You should not need WTF:: prefix.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:111
&gt; +    // FIXME: how should I implement this?

Definitely not OK, pass m_sessionID to the query() method then rely on sessionID.isAlwaysOnLoggingAllowed().

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h:57
&gt; +    std::atomic&lt;bool&gt; m_didSetupCompleteSuccessfully { false };

We live to put boolean members last.

&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:218
&gt; +    httpsUpgradeChecker.query(url.host().toString(), [request = WTFMove(request), handler = WTFMove(handler)] (bool foundHost) mutable {

You&apos;ll likely need to pass m_sessionID to query() here.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:33
&gt; +#if ENABLE(HTTPS_UPGRADE)

Not needed, you can include unconditionally.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:408
&gt; +

Unnecessary new line.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:409
&gt; +

Unnecessary new line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489445</commentid>
    <comment_count>19</comment_count>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 13:43:02 -0800</bug_when>
    <thetext>&gt; You&apos;re likely missing a call to SQLiteDatabase::disableThreadingChecks() since you&apos;re using a worker queue and it means the db may be used from different thread (even though sequentially). I expect you&apos;d see assertions getting hit in debug builds.

I have not seen assert in debug builds yet, but maybe I have just been lucky so far. I&apos;ll make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489485</commentid>
    <comment_count>20</comment_count>
      <attachid>357726</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 14:34:59 -0800</bug_when>
    <thetext>Created attachment 357726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489488</commentid>
    <comment_count>21</comment_count>
      <attachid>357727</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 14:40:54 -0800</bug_when>
    <thetext>Created attachment 357727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489494</commentid>
    <comment_count>22</comment_count>
      <attachid>357727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 14:47:16 -0800</bug_when>
    <thetext>Comment on attachment 357727
Patch

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

r=me with suggestion.

&gt; Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:68
&gt; +        ASSERT(isDatabaseOpen);

I think we should return early if !isDatabaseOpen in release so that m_didSetupCompleteSuccessfully never gets set to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489502</commentid>
    <comment_count>23</comment_count>
      <attachid>357730</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 14:59:46 -0800</bug_when>
    <thetext>Created attachment 357730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489503</commentid>
    <comment_count>24</comment_count>
      <attachid>357730</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 15:00:30 -0800</bug_when>
    <thetext>Comment on attachment 357730
Patch

Chris approved my last patch with a suggestion. Moving to commit-queue+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489504</commentid>
    <comment_count>25</comment_count>
      <attachid>357730</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 15:00:57 -0800</bug_when>
    <thetext>Comment on attachment 357730
Patch

BTW, why all the explicit this-&gt; calls in this patch? We normally prefer the omit them unless one of the compiler complains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489508</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-19 15:02:56 -0800</bug_when>
    <thetext>(In reply to Vivek Seth from comment #24)
&gt; Comment on attachment 357730 [details]
&gt; Patch
&gt; 
&gt; Chris approved my last patch with a suggestion. Moving to commit-queue+

Can we see if we can get rid of all the this-&gt; calls before committing? It would make the code look much nicer. iirc, gcc only has trouble with nested lambdas which your patch does not use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489526</commentid>
    <comment_count>27</comment_count>
      <attachid>357739</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 15:28:03 -0800</bug_when>
    <thetext>Created attachment 357739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489528</commentid>
    <comment_count>28</comment_count>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 15:29:06 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; Comment on attachment 357730 [details]
&gt; Patch
&gt; 
&gt; BTW, why all the explicit this-&gt; calls in this patch? We normally prefer the
&gt; omit them unless one of the compiler complains.

I did it to preemptively fix GCC bugs. Didn&apos;t realize the bug only happened with nested lambdas. Removed the &quot;this-&gt;&quot;s and submitted another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489592</commentid>
    <comment_count>29</comment_count>
      <attachid>357739</attachid>
    <who name="Vivek Seth">v_seth</who>
    <bug_when>2018-12-19 16:47:29 -0800</bug_when>
    <thetext>Comment on attachment 357739
Patch

All bots have built my patch successfully, but I just realized they are building my patch with the feature flag disabled. I built WebKit locally with the feature flag enabled and it seems to be okay to omit the &quot;this-&gt;&quot;. 

Moving to commit-queue+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489650</commentid>
    <comment_count>30</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-12-19 18:14:52 -0800</bug_when>
    <thetext>(In reply to Vivek Seth from comment #17)
&gt; &gt; Were any other formats for the database considered other than sqlite? 
&gt; 
&gt; I considered 3 formats so far: 
&gt; 
&gt; A. simple sqlite table 1 column with index on it (what is implemented now)
&gt; B. sqlite table with 2 columns: domain and 4 byte hash. The hash column is
&gt; indexed.
&gt; C. a custom implementation of &quot;Hierarchies of Indexes&quot; (Kärkkäinen J.,
&gt; Srinivasa Rao S. (2003) Full-Text Indexes in External Memory). Basically the
&gt; format reduces disk seeks by using a small binary search tree to index into
&gt; other binary search trees.
&gt; 
&gt; All the options meet our performance threshold for devices with fast SSDs
&gt; (iPhone, iPad, SSD Macs). They can all search a list of up to 10M domains in
&gt; &lt;1ms. Format A is the fastest, then B, then C.
&gt; 
&gt; For devices with slower disks (SSD macs and Apple Watch) format C is the
&gt; fastest, then B, then A. 
&gt; 
&gt; In terms of disk-space overhead format C is the best (6 bytes per domain),
&gt; then B (28 bytes per domain), then A (40 bytes per domain). 
&gt; 
&gt; I&apos;ve implemented format A for now, but since we would like to support HDD
&gt; macs, I may switch to format B in another patch. Format C needs significant
&gt; testing before we can consider using it. 
&gt; 
&gt; Feel free to send me an email/meet me in-person if you would like to discuss
&gt; in more detail. 
&gt; 

Thanks for filling in these details! This would be great information to include in your ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489691</commentid>
    <comment_count>31</comment_count>
      <attachid>357739</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-19 20:04:15 -0800</bug_when>
    <thetext>Comment on attachment 357739
Patch

Clearing flags on attachment: 357739

Committed r239423: &lt;https://trac.webkit.org/changeset/239423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489692</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-19 20:04:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357378</attachid>
            <date>2018-12-14 19:31:53 -0800</date>
            <delta_ts>2018-12-17 17:26:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181214193146.patch</filename>
            <type>text/plain</type>
            <size>22881</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU4ODhkOGIwYjIzOTNjOGY2
NDkzYjE1OGJjZWE4NGY1YjU2MTkzNTMuLjIwNTdkMGJlMTU5YTE2OGRjNzVjZGIxOGFjMDA3YmIz
YWM2NzgwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTQgIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXI6OnF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXI6OmRhdGFiYXNlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyOjpxdWVyeURhdGFiYXNlU1FMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDog
QWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlm
TmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVj
a1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTgtMTItMTQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZCB3aXRoIHJlY2VudCBTREtzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzJmYjBhZDAwODBlNDRhOGZmNWUwMTgy
NmY3YmY4NmIxOGI0NTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKQEAgLTAsMCArMSwxNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCisjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKKyNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIoKQorICAgIDogbV9pc1NldHVwQ29tcGxldGUoZmFsc2UpCisgICAg
LCBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiSFRUUFMgVXBncmFkZSBDaGVja2VyIFRo
cmVhZCIpKQorICAgICwgbV9kYXRhYmFzZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlPigpKQorICAgICwgbV9zdGF0ZW1lbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLmdldCgpLCBxdWVyeURhdGFiYXNlU1FMKCkp
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX3dvcmtRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXNdIHsKKyAgICAgICAgYXV0byBwYXRoID0gdGhpcy0+ZGF0YWJhc2VQYXRoKCk7
CisgICAgICAgIGlmICghcGF0aCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKSAtIGRhdGFiYXNlIGRvZXMgbm90IGV4aXN0
LCBjYW5ub3QgZG8gdXBncmFkZXMuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRoaXMtPm1fZGF0YWJhc2UtPm9wZW4ocGF0aCkpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoIk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCkgLSB1bmFibGUgdG8gb3BlbiBkYXRhYmFzZS4iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLT5tX3N0YXRlbWVudC0+cHJlcGFyZSgpICE9
IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgi
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKSAtIHVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVu
dC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMtPm1f
aXNTZXR1cENvbXBsZXRlID0gdHJ1ZTsKKyAgICB9KTsKK30KKworTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXI6On5OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIC8vIFRoZSBkYXRhYmFzZSBhbmQgc3RhdGVtZW50IG5lZWQg
dG8gYmUgZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAodGhpcy0+
bV9pc1NldHVwQ29tcGxldGUpIHsKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtkYXRh
YmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSksIHN0YXRlbWVudCA9IFdURk1vdmUobV9zdGF0ZW1l
bnQpXSB7CisgICAgICAgICAgICBzdGF0ZW1lbnQtPmZpbmFsaXplKCk7CisgICAgICAgICAgICBk
YXRhYmFzZS0+Y2xvc2UoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyOjpxdWVyeShTdHJpbmcmJiBob3N0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAoIXRoaXMtPm1faXNTZXR1cENvbXBsZXRlKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInF1ZXJ5IC0gZGF0YWJhc2Ugc2V0dXAgaXMgbm90IGNvbXBsZXRlLCBp
Z25vcmluZyBxdWVyeS4iKTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBob3N0ID0gV1RG
TW92ZShob3N0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gcnVuQ2FsbGJhY2tPbk1haW5UaHJlYWQgPSBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKGJvb2wgZm91bmRIb3N0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFdURjo6
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtmb3VuZEhvc3QsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZvdW5kSG9z
dCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAodGhpcy0+bV9z
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIFdURk1vdmUoaG9zdCkpICE9IFNRTElURV9PSykgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgicXVlcnkgLSB1bmFibGUgdG8g
YmluZCB0ZXh0IHRvIHN0YXRlbWVudCwgcmV0dXJuaW5nIGZhbHNlLiIpOworICAgICAgICAgICAg
cnVuQ2FsbGJhY2tPbk1haW5UaHJlYWQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaW50IHN0ZXBSZXN1bHQgPSB0aGlzLT5tX3N0YXRlbWVudC0+c3Rl
cCgpOworICAgICAgICBpZiAoc3RlcFJlc3VsdCAhPSBTUUxJVEVfUk9XICYmIHN0ZXBSZXN1bHQg
IT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInF1ZXJ5IC0gZXJyb3IgcnVubmluZyBxdWVyeSwgcmV0dXJuaW5nIGZhbHNlLiIpOworICAg
ICAgICAgICAgcnVuQ2FsbGJhY2tPbk1haW5UaHJlYWQoZmFsc2UpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMtPm1fc3RhdGVtZW50LT5yZXNldCgp
ICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgicXVlcnkgLSBlcnJvciByZXNldHRpbmcgc3RhdGVtZW50LCByZXR1cm5pbmcgZmFsc2UuIik7
CisgICAgICAgICAgICBydW5DYWxsYmFja09uTWFpblRocmVhZChmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sIGZvdW5kSG9zdCA9IChzdGVwUmVz
dWx0ID09IFNRTElURV9ST1cpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJxdWVy
eSAtIFJhbiBzdWNjZXNzZnVsbHkuIFJlc3VsdCA9ICVzIiwgKGZvdW5kSG9zdCA/ICJ0cnVlIiA6
ICJmYWxzZSIpKTsKKyAgICAgICAgcnVuQ2FsbGJhY2tPbk1haW5UaHJlYWQoZm91bmRIb3N0KTsK
KyAgICB9KTsKK30KKworY29uc3QgU3RyaW5nIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpk
YXRhYmFzZVBhdGgoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENGQnVuZGxlUmVmIHdl
YktpdEJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5h
cHBsZS5XZWJLaXQiKSk7CisgICAgQ0ZVUkxSZWYgZGF0YWJhc2VVUkwgPSBDRkJ1bmRsZUNvcHlS
ZXNvdXJjZVVSTCh3ZWJLaXRCdW5kbGUsIENGU1RSKCJIVFRQU1VwZ3JhZGVMaXN0IiksIENGU1RS
KCJkYiIpLCBudWxscHRyKTsKKyAgICBTdHJpbmcgcGF0aCA9IENGVVJMR2V0U3RyaW5nKGRhdGFi
YXNlVVJMKTsKKyAgICBDRlJlbGVhc2UoZGF0YWJhc2VVUkwpOworICAgIHJldHVybiBwYXRoOwor
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiB7IH07Cit9CisKK2NvbnN0IFN0
cmluZyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6cXVlcnlEYXRhYmFzZVNRTCgpCit7Cisg
ICAgcmV0dXJuICJTRUxFQ1QgaG9zdCBGUk9NIGhvc3RzIFdIRVJFIGhvc3QgPSA/OyI7Cit9CisK
K2Jvb2wgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGhvdyBzaG91bGQgSSBpbXBsZW1lbnQgdGhpcz8K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmNm
MTk0YWY1YjQwYzI3YTAwNTQ0ZGE1OTljNDI1YmRjN2JjYjU4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRh
YmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUg
PHd0Zi9Xb3JrUXVldWUuaD4KKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworcHVibGlj
OgorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CisgICAgfk5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyKCk7CisKKyAgICB2b2lkIHF1ZXJ5KFN0cmluZyYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGRhdGFiYXNlUGF0aCgpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcXVlcnlEYXRhYmFzZVNR
TCgpOworCisgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKKworICAg
IHN0ZDo6YXRvbWljPGJvb2w+IG1faXNTZXR1cENvbXBsZXRlOworICAgIFJlZjxXVEY6OldvcmtR
dWV1ZT4gbV93b3JrUXVldWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlPiBtX2RhdGFiYXNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+IG1fc3RhdGVtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCAzNTExZjc1OWNjMDAwYTRm
YTI5MjE3N2FiNDUwMGFhYTRkNGQwZjU0Li40MzE0NmM2MzZkMjdjYmU5NzFlZWFkMmYzOTFiZTdj
MzBmZjRlYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuY3BwCkBAIC0xOTEsMzIgKzE5MSwzMSBAQCBhdXRvIE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6YWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoU3RyaW5nJiYg
bWVzc2FnZQogfQogCiAjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCi12b2lkIE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6YXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIGNvbnN0Cit2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlIVFRQU1VwZ3JhZGVJZk5l
ZWRlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBoYW5kbGVyKSBjb25zdAogewotICAgIGlmIChtX3JlcXVlc3RM
b2FkVHlwZSAhPSBMb2FkVHlwZTo6TWFpbkZyYW1lKQorICAgIGlmIChtX3JlcXVlc3RMb2FkVHlw
ZSAhPSBMb2FkVHlwZTo6TWFpbkZyYW1lKSB7CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7CiAgICAgICAgIHJldHVybjsKLQotICAgIC8vIFVzZSBkdW1teSBsaXN0IGZvciBub3cu
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gdXBncmFkYWJsZUhv
c3RzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewotICAgICAgICAid3d3LmJiYy5j
b20iX3MsIC8vIChzb3VyY2U6IGh0dHBzOi8vd2h5bm9odHRwcy5jb20pCi0gICAgICAgICJ3d3cu
c3BlZWR0ZXN0Lm5ldCJfcywgLy8gKHNvdXJjZTogaHR0cHM6Ly93aHlub2h0dHBzLmNvbSkKLSAg
ICAgICAgInd3dy5iZWEuZ292Il9zIC8vIChzb3VyY2U6IGh0dHBzOi8vcHVsc2UuY2lvLmdvdi9k
YXRhL2RvbWFpbnMvaHR0cHMuY3N2KQotICAgIH07CisgICAgfQogCiAgICAgYXV0byYgdXJsID0g
cmVxdWVzdC51cmwoKTsKIAogICAgIC8vIE9ubHkgdXBncmFkZSBodHRwIHVybHMuCi0gICAgaWYg
KCF1cmwucHJvdG9jb2xJcygiaHR0cCIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXVw
Z3JhZGFibGVIb3N0cy5nZXQoKS5jb250YWlucyh1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKQorICAg
IGlmICghdXJsLnByb3RvY29sSXMoImh0dHAiKSkgeworICAgICAgICBoYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBuZXdVUkwgPSB1
cmw7Ci0gICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyJfcyk7Ci0gICAgcmVxdWVzdC5zZXRV
UkwobmV3VVJMKTsKKyAgICBhdXRvJiBodHRwc1VwZ3JhZGVDaGVja2VyID0gTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLm5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CisgICAgaHR0cHNV
cGdyYWRlQ2hlY2tlci5xdWVyeSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIFtyZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9z
dCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChmb3VuZEhvc3QpIHsKKyAgICAgICAgICAgIGF1dG8g
bmV3VVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgi
aHR0cHMiX3MpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKKyAgICAgICAg
fQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRl
ZCAtIFVwZ3JhZGUgVVJMIGZyb20gSFRUUCB0byBIVFRQUyIpOworICAgICAgICBoYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdS
QURFKQogCkBAIC0yMjUsMzcgKzIyNCw0MiBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hl
Y2tSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eQogICAg
IFJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0OwogCiAjaWYgRU5BQkxF
KEhUVFBTX1VQR1JBREUpCi0gICAgYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChyZXF1ZXN0KTsK
KyAgICBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBj
bGllbnQgLypGSVhNRTogbWF5YmUgdGhpcyBpcyB3cm9uZy4qLywgaGFuZGxlciA9IFdURk1vdmUo
aGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0
byByZXF1ZXN0KSBtdXRhYmxlIHsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAot
ICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSkgewotICAgICAgICBpZiAoaXNSZWRpcmVjdGVkKCkpIHsKLSAgICAgICAgICAg
IGF1dG8gdHlwZSA9IG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdh
dGUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRp
b24gOiBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQ7Ci0g
ICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJ
Zk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzQWxsb3dl
ZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QsIGNsaWVudCkpIHsKLSAgICAgICAgICAg
IGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQg
YnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSkgeworICAgICAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byB0eXBlID0gbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpN
b2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlw
ZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlw
ZTo6TG9hZDsKKyAgICAgICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdCwg
Y2xpZW50KSkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9y
VmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9z
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBwcm9jZXNzQ29udGVu
dEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1
ZXN0KV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkgewotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lcnJvcigpLmlzQ2FuY2VsbGF0aW9u
KCkpOwotICAgICAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0
YXR1cy5ibG9ja2VkTG9hZCkgewotICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250
cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lv
biJfcykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKSwgb3JpZ2luYWxSZXF1ZXN0ID0gV1RGTW92ZShvcmlnaW5h
bFJlcXVlc3QpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuZXJyb3IoKS5p
c0NhbmNlbGxhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVzdWx0
LmVycm9yKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuc3RhdHVzLmJsb2NrZWRMb2FkKSB7CisgICAgICAg
ICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFu
ZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBjb250aW51ZUNoZWNraW5nUmVxdWVz
dE9yRG9TeW50aGV0aWNSZWRpcmVjdChXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCksIFdURk1vdmUo
cmVzdWx0LnZhbHVlKCkucmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwotICAgIH0pOworICAg
ICAgICAgICAgY29udGludWVDaGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoV1RG
TW92ZShvcmlnaW5hbFJlcXVlc3QpLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKKyAgICAgICAgfSk7CiAjZWxzZQotICAgIGNvbnRpbnVlQ2hlY2tp
bmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgICAgIGNvbnRpbnVlQ2hl
Y2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0
KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CiAjZW5kaWYKKworI2lmIEVO
QUJMRShIVFRQU19VUEdSQURFKQorICAgIH0pOworI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdS
QURFKQorCiB9CiAKIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVx
dWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChSZXNvdXJjZVJlcXVlc3QmJiBvcmlnaW5hbFJlcXVl
c3QsIFJlc291cmNlUmVxdWVzdCYmIGN1cnJlbnRSZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYm
IGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuaAppbmRleCA2MjI3Yzk1N2Q0NGNlNjJiNjQzNjAzM2E4MzQ1MzgxNjkwNzdlOGM4
Li5iOTQxNzUxNDYxZGZmMmE4ZGVkMmY4Y2MzYzU4MGZlYTM3MDExZDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTExMyw3
ICsxMTMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkK
LSAgICB2b2lkIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJikgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUp
CiAKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgbV9vcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGY1YzJmZWRiZmM3ZTc3OWI1
MWQzNTBlMWMxZTllNmE1NTA0NThlZTMuLjljNjQ3ZTIwZDQ1NTAyODk4NDBjNjE2Zjk5ZDc1Zjk1
MzY0OGM5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTI5LDYgKzI5LDExIEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorI2luY2x1ZGUgIk5ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUp
CisKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVy
Lmg+CkBAIC0yMDQsNiArMjA5LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHBhcmVudFByb2Nlc3NI
YXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyJiBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXI7IH07CisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisK
IHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsK
QEAgLTM5Myw2ICs0MDIsMTEgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2
ZXJDb25uZWN0aW9uczsKICNlbmRpZgogCisjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCisgICAg
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsK
KyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKworCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDA1NWVjNWU1NzYxMDJmNzg2NDk4NDdhZTNlMzRhZTNl
M2MyYzI0YTMuLmI1MmFlNmJkN2I2MzE5ZDYxNjI2YjRiYWUwODNhYWM5NTY4NTYyNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtMjcsNiArMjcsNyBAQCBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGFkYjZkYmFiNmQ2YmMxYTA5NTI0YmRjYzc5ZGNiNzZjNTZmZTA0ZTEuLjRm
ZjgwN2ViN2ZlNTQwYjM4M2JjZmZhM2MzYmUxMDdhNDY1MGYxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNyw2ICsxMDM3LDcg
QEAKIAkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREMxMjE0RjEx
NEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggKi87IH07CiAJCTU3RENFREM3MjE0RjE4
MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDNTIxNEYxODMwMDAxNkI4NDcgLyogTW9j
a0xvY2FsQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyog
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmggKi87IH07CisJCTU4RTk3N0RGMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNThFOTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyLmggKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdD
ODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlD
MDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
NUMxNDI2RUQxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0
MjZFMzFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLzsgfTsKQEAgLTM0MDEsNiArMzQwMiw4IEBACiAJCTU3RENFREM2MjE0RjE4MzAwMDE2Qjg0
NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xv
Y2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzky
MTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdEQzIx
QzQ5OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdERDIxQzQ5QTAwMDA1RDky
QTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlD
MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzYxRTdDODc5QzAwRTkx
MjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNjQxOCw2
ICs2NDIxLDggQEAKIAkJCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFU
YXNrLmggKi8sCiAJCQkJNTM5RUI1NDYxREMyRUU0MDAwOUQ0OENGIC8qIE5ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwICovLAogCQkJCTUzOUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0
YVRhc2tCbG9iLmggKi8sCisJCQkJNThFOTc3REMyMUM0OTlGRTAwNUQ5MkE2IC8qIE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmNwcCAqLywKKwkJCQk1OEU5NzdERDIxQzQ5QTAwMDA1RDkyQTYg
LyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLywKIAkJCQk4Mzk5MDFGRjFCRTlBMDFC
MDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICovLAogCQkJCTgzOTkwMUZFMUJFOUEwMUIwMDBG
MzY1MyAvKiBOZXR3b3JrTG9hZC5oICovLAogCQkJCTQxMDNGQkEyMjA2MUJEQjgwMEMyRUFGOCAv
KiBOZXR3b3JrTG9hZENoZWNrZXIuY3BwICovLApAQCAtOTExMCw2ICs5MTE1LDcgQEAKIAkJCQk1
Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0JBNDdEMTFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTMyMTU5NTYxREJBRTcyRDAwNTRBQTNDIC8qIE5ldHdvcmtE
YXRhVGFza0NvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OEU5NzdERjIxQzQ5QTAwMDA1RDky
QTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MzkxNDk2NTFCRUE4Mzg1MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357505</attachid>
            <date>2018-12-17 17:26:46 -0800</date>
            <delta_ts>2018-12-17 17:38:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181217172637.patch</filename>
            <type>text/plain</type>
            <size>24158</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmYTllYmVjOWZiMjQzZGM1
ZDg5Mzk5YjZhMTM3MTYxZGNlMzZlZGUuLjJkOTg5OWY0ZjA2ZjcxN2Q5YmU2Nzc1ZWQ3ZmM1NTM3
ZjM1MTUwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTcgIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXI6OnF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmlzU2V0dXBDb21wbGV0
ZSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFk
ZUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpj
aGVja1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTgtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM5MjYyKTogRml4IGJyb2tlbiBidWlsZHMgcHJp
b3IgdG8gTW9qYXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNjI2MjA1NWM5
ZGY5MjEyZmNhZjk0NmM2ODcyYjNlNGVmZTFmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAt
MCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCisjaWYg
RU5BQkxFKEhUVFBTX1VQR1JBREUpCisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmss
ICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2F1dG8ga05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyU1FMUXVlcnkgPSAiU0VMRUNUIGhvc3QgRlJPTSBob3N0cyBXSEVSRSBob3N0ID0gPzsi
X3M7CisKK1N0cmluZyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpOwor
CitOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIo
KQorICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkhUVFBTIFVwZ3JhZGUgQ2hl
Y2tlciBUaHJlYWQiKSkKKyAgICAsIG1fZGF0YWJhc2Uoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZT4oKSkKKyAgICAsIG1fc3RhdGVtZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZS5nZXQoKSwga05ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyU1FMUXVlcnkpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgYXV0byBwYXRo
ID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGgoKTsKKyAgICAgICAgaWYg
KCFwYXRoKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcigpIC0gRGF0YWJhc2UgZG9lcyBub3QgZXhpc3QsIGNhbm5vdCBkbyB1
cGdyYWRlcy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhpcy0+bV9kYXRhYmFzZS0+b3BlbihwYXRoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKSAtIFVuYWJs
ZSB0byBvcGVuIGRhdGFiYXNlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRoaXMtPm1fc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcigpIC0gVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50LiIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy0+bV9pc1NldHVwQ29tcGxl
dGUgPSB0cnVlOworICAgIH0pOworfQorCitOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgLy8gVGhlIGRhdGFiYXNlIGFuZCBzdGF0ZW1lbnQgbmVlZCB0byBiZSBkZXN0cm95
ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGlmIChtX2lzU2V0dXBDb21wbGV0ZSkg
eworICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2Rh
dGFiYXNlKSwgc3RhdGVtZW50ID0gV1RGTW92ZShtX3N0YXRlbWVudCldIHsKKyAgICAgICAgICAg
IHN0YXRlbWVudC0+ZmluYWxpemUoKTsKKyAgICAgICAgICAgIGRhdGFiYXNlLT5jbG9zZSgpOwor
ICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6
OnF1ZXJ5KFN0cmluZyYmIGhvc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fd29ya1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgaG9zdCA9IFdURk1vdmUoaG9zdCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBhdXRvIHJ1bkNhbGxiYWNrT25NYWlu
VGhyZWFkID0gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIGZvdW5kSG9zdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZm91
bmRIb3N0LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhmb3VuZEhvc3QpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKCF0aGlzLT5tX2lzU2V0dXBDb21wbGV0ZSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicXVlcnkgLSBTZXR1cCBpcyBub3QgY29tcGxldGUs
IGlnbm9yaW5nIHF1ZXJ5LiIpOworICAgICAgICAgICAgcnVuQ2FsbGJhY2tPbk1haW5UaHJlYWQo
ZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMtPm1fc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBXVEZNb3ZlKGhvc3QpKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInF1ZXJ5IC0gVW5h
YmxlIHRvIGJpbmQgdGV4dCB0byBzdGF0ZW1lbnQsIHJldHVybmluZyBmYWxzZS4iKTsKKyAgICAg
ICAgICAgIHJ1bkNhbGxiYWNrT25NYWluVGhyZWFkKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBzdGVwUmVzdWx0ID0gdGhpcy0+bV9zdGF0ZW1l
bnQtPnN0ZXAoKTsKKyAgICAgICAgaWYgKHN0ZXBSZXN1bHQgIT0gU1FMSVRFX1JPVyAmJiBzdGVw
UmVzdWx0ICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJxdWVyeSAtIEVycm9yIHJ1bm5pbmcgcXVlcnksIHJldHVybmluZyBmYWxzZS4i
KTsKKyAgICAgICAgICAgIHJ1bkNhbGxiYWNrT25NYWluVGhyZWFkKGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLT5tX3N0YXRlbWVudC0+
cmVzZXQoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoInF1ZXJ5IC0gRXJyb3IgcmVzZXR0aW5nIHN0YXRlbWVudCwgcmV0dXJuaW5nIGZh
bHNlLiIpOworICAgICAgICAgICAgcnVuQ2FsbGJhY2tPbk1haW5UaHJlYWQoZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBmb3VuZEhvc3QgPSAo
c3RlcFJlc3VsdCA9PSBTUUxJVEVfUk9XKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicXVlcnkgLSBSYW4gc3VjY2Vzc2Z1bGx5LiBSZXN1bHQgPSAlcyIsIChmb3VuZEhvc3QgPyAi
dHJ1ZSIgOiAiZmFsc2UiKSk7CisgICAgICAgIHJ1bkNhbGxiYWNrT25NYWluVGhyZWFkKGZvdW5k
SG9zdCk7CisgICAgfSk7Cit9CisKK2Jvb2wgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Omlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGhvdyBzaG91
bGQgSSBpbXBsZW1lbnQgdGhpcz8KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIE5ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoKCkKK3sKKyAgICBTdHJpbmcgcGF0aDsK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSA9IENG
QnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSk7
CisgICAgcGF0aCA9IENGVVJMR2V0U3RyaW5nKGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VV
Ukwod2ViS2l0QnVuZGxlLCBDRlNUUigiSFRUUFNVcGdyYWRlTGlzdCIpLCBDRlNUUigiZGIiKSwg
bnVsbHB0cikpLmdldCgpKTsKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKworICAgIHJldHVy
biBwYXRoOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShI
VFRQU19VUEdSQURFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMDJiOGE0NjJjYTll
Mzk4MmRjOTQ5NDU2MDhjNDcwMWZkMzczYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEhUVFBTX1VQ
R1JBREUpCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNRTGl0ZVN0YXRlbWVu
dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyIHsKK3B1YmxpYzoKKyAgICBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOworICAg
IH5OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOworCisgICAgLy8gUmV0dXJucyBgdHJ1ZWAg
YWZ0ZXIgaW50ZXJuYWwgc2V0dXAgaXMgc3VjZXNzZnVsbHkgY29tcGxldGVkLiBJZiB0aGVyZSBp
cyBhbiBlcnJvciB3aXRoIHNldHVwLCBvciBpZiBzZXR1cCBpcyBpbi1wcm9ncmVzcywgaXQgd2ls
bCByZXR1cm4gYGZhbHNlYC4KKyAgICBib29sIGlzU2V0dXBDb21wbGV0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTZXR1cENvbXBsZXRlOyB9OworCisgICAgLy8gUXVlcmllcyBkYXRhYmFzZSBhZnRl
ciBzZXR1cCBpcyBjb21wbGV0ZS4KKyAgICB2b2lkIHF1ZXJ5KFN0cmluZyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBib29sIGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9pc1NldHVw
Q29tcGxldGUgeyBmYWxzZSB9OworICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV93b3JrUXVldWU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3RhdGVt
ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSFRU
UFNfVVBHUkFERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmNwcAppbmRleCAzNTExZjc1OWNjMDAwYTRmYTI5MjE3N2FiNDUwMGFhYTRk
NGQwZjU0Li4yZWQxNmQ3MjU4ZDNlMTU5OTJlMDJjNzVlYjE3ZmFmM2M2MjVjMTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0
Zi9TY29wZS5oPgpAQCAtMTkxLDMyICsxOTIsMzggQEAgYXV0byBOZXR3b3JrTG9hZENoZWNrZXI6
OmFjY2Vzc0NvbnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5kbGVyKFN0cmluZyYmIG1lc3NhZ2UK
IH0KIAogI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQotdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6
OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25z
dAordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgaGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1ZXN0TG9hZFR5cGUg
IT0gTG9hZFR5cGU6Ok1haW5GcmFtZSkKKyAgICBpZiAobV9yZXF1ZXN0TG9hZFR5cGUgIT0gTG9h
ZFR5cGU6Ok1haW5GcmFtZSkgeworICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwog
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBVc2UgZHVtbXkgbGlzdCBmb3Igbm93LgotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHVwZ3JhZGFibGVIb3N0cyA9IHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKLSAgICAgICAgInd3dy5iYmMuY29tIl9zLCAv
LyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQotICAgICAgICAid3d3LnNwZWVkdGVz
dC5uZXQiX3MsIC8vIChzb3VyY2U6IGh0dHBzOi8vd2h5bm9odHRwcy5jb20pCi0gICAgICAgICJ3
d3cuYmVhLmdvdiJfcyAvLyAoc291cmNlOiBodHRwczovL3B1bHNlLmNpby5nb3YvZGF0YS9kb21h
aW5zL2h0dHBzLmNzdikKLSAgICB9OworICAgIH0KIAogICAgIGF1dG8mIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CiAKICAgICAvLyBPbmx5IHVwZ3JhZGUgaHR0cCB1cmxzLgotICAgIGlmICghdXJsLnBy
b3RvY29sSXMoImh0dHAiKSkKKyAgICBpZiAoIXVybC5wcm90b2NvbElzKCJodHRwIikpIHsKKyAg
ICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIGlmICghdXBncmFkYWJsZUhvc3RzLmdldCgpLmNvbnRhaW5zKHVybC5ob3N0KCkudG9T
dHJpbmcoKSkpCisgICAgYXV0byYgaHR0cHNVcGdyYWRlQ2hlY2tlciA9IE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOworCisgICAgLy8gRG8g
bm90IHdhaXQgZm9yIGh0dHBzVXBncmFkZUNoZWNrZXIgdG8gY29tcGxldGUgaXRzIHNldHVwLgor
ICAgIGlmICghaHR0cHNVcGdyYWRlQ2hlY2tlci5pc1NldHVwQ29tcGxldGUoKSkgeworICAgICAg
ICBoYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgYXV0byBuZXdVUkwgPSB1cmw7Ci0gICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyJfcyk7
Ci0gICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKKyAgICBodHRwc1VwZ3JhZGVDaGVja2VyLnF1
ZXJ5KHVybC5ob3N0KCkudG9TdHJpbmcoKSwgW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBo
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGJvb2wgZm91bmRIb3N0KSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKGZvdW5kSG9zdCkgeworICAgICAgICAgICAgYXV0byBuZXdVUkwgPSByZXF1ZXN0
LnVybCgpOworICAgICAgICAgICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyJfcyk7CisgICAg
ICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAgICAgICB9CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkIC0gVXBncmFkZSBVUkwg
ZnJvbSBIVFRQIHRvIEhUVFBTIik7CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
CisgICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCiAKQEAgLTIyNSwz
NyArMjMyLDQyIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29udGVudFNlY3VyaXR5CiAgICAgUmVzb3VyY2VSZXF1ZXN0
IG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkK
LSAgICBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKHJlcXVlc3QpOworICAgIGFwcGx5SFRUUFNV
cGdyYWRlSWZOZWVkZWQoV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIGNsaWVudCwgaGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1
ZXN0KV0oYXV0byByZXF1ZXN0KSBtdXRhYmxlIHsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBH
UkFERSkKIAotICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKSkgewotICAgICAgICBpZiAoaXNSZWRpcmVjdGVkKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6TmF2aWdhdGUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6
Ok5hdmlnYXRpb24gOiBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6
OkxvYWQ7Ci0gICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
IWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QsIGNsaWVudCkpIHsKLSAg
ICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIo
IkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKSkgeworICAgICAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgp
KSB7CisgICAgICAgICAgICAgICAgYXV0byB0eXBlID0gbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hP
cHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVS
ZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVS
ZXF1ZXN0VHlwZTo6TG9hZDsKKyAgICAgICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kt
PnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3ko
cmVxdWVzdCwgY2xpZW50KSkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJv
bEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kuIl9zKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywg
aGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdURk1vdmUob3Jp
Z2luYWxSZXF1ZXN0KV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lcnJvcigpLmlzQ2Fu
Y2VsbGF0aW9uKCkpOwotICAgICAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5lcnJvcigp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC52
YWx1ZSgpLnN0YXR1cy5ibG9ja2VkTG9hZCkgewotICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5h
Y2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50
IGV4dGVuc2lvbiJfcykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAg
IHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0
aGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgb3JpZ2luYWxSZXF1ZXN0ID0gV1RGTW92
ZShvcmlnaW5hbFJlcXVlc3QpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
ZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKFdURk1v
dmUocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuc3RhdHVzLmJsb2NrZWRMb2FkKSB7
CisgICAgICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxp
ZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBjb250aW51ZUNoZWNr
aW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCks
IFdURk1vdmUocmVzdWx0LnZhbHVlKCkucmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwotICAg
IH0pOworICAgICAgICAgICAgY29udGludWVDaGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVk
aXJlY3QoV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpLnJl
cXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICAgICAgfSk7CiAjZWxzZQotICAgIGNvbnRp
bnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxS
ZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgICAgIGNv
bnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2lu
YWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CiAjZW5kaWYK
KworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorICAgIH0pOworI2VuZGlmIC8vIEVOQUJMRShI
VFRQU19VUEdSQURFKQorCiB9CiAKIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNo
ZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChSZXNvdXJjZVJlcXVlc3QmJiBvcmln
aW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIGN1cnJlbnRSZXF1ZXN0LCBWYWxpZGF0aW9u
SGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA2MjI3Yzk1N2Q0NGNlNjJiNjQzNjAzM2E4MzQ1Mzgx
NjkwNzdlOGM4Li5kYmQ5NjFhNDkxMzM3ZmU5ZWY3ZjdmMWFlY2U2MGU3NzQ2ZjBkNDFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgK
QEAgLTI1LDE2ICsyNSwyMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5Owogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKK2Ns
YXNzIFNlY3VyaXR5T3JpZ2luOworZW51bSBjbGFzcyBQcmVmbGlnaHRQb2xpY3kgOiB1aW50OF90
OworZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSA6IGJvb2w7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTEzLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShIVFRQU19VUEdSQURFKQotICAgIHZvaWQgYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRl
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5SFRUUFNV
cGdyYWRlSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBjb25zdDsKICNlbmRpZiAv
LyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAogICAgIFdlYkNvcmU6OkZldGNoT3B0aW9ucyBtX29w
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggZjVjMmZlZGJmYzdlNzc5YjUxZDM1MGUxYzFlOWU2YTU1MDQ1OGVlMy4uOWM2NDdlMjBk
NDU1MDI4OTg0MGM2MTZmOTlkNzVmOTUzNjQ4YzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjksNiArMjksMTEgQEAKICNpbmNsdWRl
ICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKEhUVFBTX1VQ
R1JBREUpCisjaW5jbHVkZSAiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCIKKyNlbmRpZiAv
LyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKwogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KQEAgLTIwNCw2ICsyMDksMTAgQEAgcHVibGljOgog
ICAgIGJvb2wgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCisg
ICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXImIG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
KCkgeyByZXR1cm4gbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsgfTsKKyNlbmRpZiAvLyBF
TkFCTEUoSFRUUFNfVVBHUkFERSkKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwog
ICAgIH5OZXR3b3JrUHJvY2VzcygpOwpAQCAtMzkzLDYgKzQwMiwxMSBAQCBwcml2YXRlOgogICAg
IEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSFRUUFNfVVBHUkFERSkKKyAgICBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciBtX25ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyOworI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQor
CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDU1ZWM1ZTU3
NjEwMmY3ODY0OTg0N2FlM2UzNGFlM2UzYzJjMjRhMy4uYjUyYWU2YmQ3YjYzMTlkNjE2MjZiNGJh
ZTA4M2FhYzk1Njg1NjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNyw2ICsyNyw3IEBAIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjgzMmJiN2M0YjgxYWU4OTk2NTY2
NmVlNGI1MTdmZTBkMzA3YjFmNy4uM2E2ODVmZTVkYjUyYjFiMGVmYjk0YTkyM2E2Yjg5ZDdkMjk4
ZTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDM3LDYgKzEwMzcsNyBAQAogCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyog
TW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTdEQ0VEQzEyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAq
LzsgfTsKIAkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM1
MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi87IH07CiAJCTU3RENF
RENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM5MjE0RjRFNDIw
MDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCAqLzsgfTsKKwkJNThFOTc3REYy
MUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEU5NzdERDIxQzQ5QTAwMDA1
RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLzsgfTsKIAkJNUMwQjE3Nzgx
RTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzQx
RTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzE0MjZFRDFDMjNGODA5MDBENDExODMgLyogTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkUzMUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwpAQCAtMzQwMSw2ICszNDAyLDggQEAKIAkJ
NTdEQ0VEQzYyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNb2NrTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURDRDIxNEY1MTY4MDAxNkI4NDcgLyog
TW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU4RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3NDFFN0M4NzlDMDBF
OTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tldFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTVDMEIxNzc1MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1NvY2tldFN0
cmVhbU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2Nr
ZXRTdHJlYW1NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNvY2tldFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC02NDIwLDYgKzY0MjMsOCBAQAogCQkJCTVDQkM5Qjg5MUM2NTI0QTUw
MEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLywKIAkJCQk1MzlFQjU0NjFEQzJFRTQwMDA5
RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgKi8sCiAJCQkJNTM5RUI1NDcxREMyRUU0
MDAwOUQ0OENGIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCAqLywKKwkJCQk1OEU5NzdEQzIxQzQ5
OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwICovLAorCQkJCTU4
RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICov
LAogCQkJCTgzOTkwMUZGMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5jcHAgKi8sCiAJ
CQkJODM5OTAxRkUxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggKi8sCiAJCQkJNDEw
M0ZCQTIyMDYxQkRCODAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5jcHAgKi8sCkBAIC05
MTEwLDYgKzkxMTUsNyBAQAogCQkJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3Jr
RGF0YVRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQkE0N0QxMURDMkVGNUUwMDRERjRBRCAv
KiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzIxNTk1NjFEQkFF
NzJEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU4RTk3N0RGMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM5OTAyMDMxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtM
b2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyogTmV0
d29ya0xvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQy
RDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357507</attachid>
            <date>2018-12-17 17:38:21 -0800</date>
            <delta_ts>2018-12-18 11:21:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181217173812.patch</filename>
            <type>text/plain</type>
            <size>24105</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmYTllYmVjOWZiMjQzZGM1
ZDg5Mzk5YjZhMTM3MTYxZGNlMzZlZGUuLjJkOTg5OWY0ZjA2ZjcxN2Q5YmU2Nzc1ZWQ3ZmM1NTM3
ZjM1MTUwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTcgIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXI6OnF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmlzU2V0dXBDb21wbGV0
ZSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFk
ZUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpj
aGVja1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTgtMTItMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM5MjYyKTogRml4IGJyb2tlbiBidWlsZHMgcHJp
b3IgdG8gTW9qYXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNjEwMWQ0YTFh
Zjg3ZmM5Y2YwNDQ4NmI4YjVhZWY0OTU1NDhiNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAt
MCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCisjaWYg
RU5BQkxFKEhUVFBTX1VQR1JBREUpCisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmss
ICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2F1dG8ga05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyU1FMUXVlcnkgPSAiU0VMRUNUIGhvc3QgRlJPTSBob3N0cyBXSEVSRSBob3N0ID0gPzsi
X3M7CisKK1N0cmluZyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpOwor
CitOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIo
KQorICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkhUVFBTIFVwZ3JhZGUgQ2hl
Y2tlciBUaHJlYWQiKSkKKyAgICAsIG1fZGF0YWJhc2Uoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZT4oKSkKKyAgICAsIG1fc3RhdGVtZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZS5nZXQoKSwga05ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyU1FMUXVlcnkpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgYXV0byBwYXRo
ID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGgoKTsKKyAgICAgICAgaWYg
KCFwYXRoKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcigpIC0gRGF0YWJhc2UgZG9lcyBub3QgZXhpc3QsIGNhbm5vdCBkbyB1
cGdyYWRlcy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhpcy0+bV9kYXRhYmFzZS0+b3BlbihwYXRoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKSAtIFVuYWJs
ZSB0byBvcGVuIGRhdGFiYXNlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRoaXMtPm1fc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcigpIC0gVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50LiIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy0+bV9pc1NldHVwQ29tcGxl
dGUgPSB0cnVlOworICAgIH0pOworfQorCitOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgLy8gVGhlIGRhdGFiYXNlIGFuZCBzdGF0ZW1lbnQgbmVlZCB0byBiZSBkZXN0cm95
ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
ZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpLCBzdGF0ZW1lbnQgPSBXVEZNb3ZlKG1fc3Rh
dGVtZW50KV0geworICAgICAgICBzdGF0ZW1lbnQtPmZpbmFsaXplKCk7CisgICAgICAgIGRhdGFi
YXNlLT5jbG9zZSgpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyOjpxdWVyeShTdHJpbmcmJiBob3N0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGhvc3QgPSBXVEZNb3ZlKGhvc3QpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBydW5DYWxsYmFja09u
TWFpblRocmVhZCA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBmb3VuZEhv
c3QpIG11dGFibGUgeworICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2ZvdW5kSG9zdCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZm91bmRIb3N0KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9OworCisgICAgICAgIGlmICghdGhpcy0+bV9pc1NldHVwQ29tcGxldGUpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInF1ZXJ5IC0gU2V0dXAgaXMgbm90IGNvbXBs
ZXRlLCBpZ25vcmluZyBxdWVyeS4iKTsKKyAgICAgICAgICAgIHJ1bkNhbGxiYWNrT25NYWluVGhy
ZWFkKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0aGlzLT5tX3N0YXRlbWVudC0+YmluZFRleHQoMSwgV1RGTW92ZShob3N0KSkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJxdWVyeSAt
IFVuYWJsZSB0byBiaW5kIHRleHQgdG8gc3RhdGVtZW50LCByZXR1cm5pbmcgZmFsc2UuIik7Cisg
ICAgICAgICAgICBydW5DYWxsYmFja09uTWFpblRocmVhZChmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnQgc3RlcFJlc3VsdCA9IHRoaXMtPm1fc3Rh
dGVtZW50LT5zdGVwKCk7CisgICAgICAgIGlmIChzdGVwUmVzdWx0ICE9IFNRTElURV9ST1cgJiYg
c3RlcFJlc3VsdCAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRCgicXVlcnkgLSBFcnJvciBydW5uaW5nIHF1ZXJ5LCByZXR1cm5pbmcgZmFs
c2UuIik7CisgICAgICAgICAgICBydW5DYWxsYmFja09uTWFpblRocmVhZChmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy0+bV9zdGF0ZW1l
bnQtPnJlc2V0KCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKCJxdWVyeSAtIEVycm9yIHJlc2V0dGluZyBzdGF0ZW1lbnQsIHJldHVybmlu
ZyBmYWxzZS4iKTsKKyAgICAgICAgICAgIHJ1bkNhbGxiYWNrT25NYWluVGhyZWFkKGZhbHNlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgZm91bmRIb3N0
ID0gKHN0ZXBSZXN1bHQgPT0gU1FMSVRFX1JPVyk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInF1ZXJ5IC0gUmFuIHN1Y2Nlc3NmdWxseS4gUmVzdWx0ID0gJXMiLCAoZm91bmRIb3N0
ID8gInRydWUiIDogImZhbHNlIikpOworICAgICAgICBydW5DYWxsYmFja09uTWFpblRocmVhZChm
b3VuZEhvc3QpOworICAgIH0pOworfQorCitib29sIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Ojppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBob3cg
c2hvdWxkIEkgaW1wbGVtZW50IHRoaXM/CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBO
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpCit7CisgICAgU3RyaW5nIHBh
dGg7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBDRkJ1bmRsZVJlZiB3ZWJLaXRCdW5kbGUg
PSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViS2l0
IikpOworICAgIHBhdGggPSBDRlVSTEdldFN0cmluZyhhZG9wdENGKENGQnVuZGxlQ29weVJlc291
cmNlVVJMKHdlYktpdEJ1bmRsZSwgQ0ZTVFIoIkhUVFBTVXBncmFkZUxpc3QiKSwgQ0ZTVFIoImRi
IiksIG51bGxwdHIpKS5nZXQoKSk7CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKKyAgICBy
ZXR1cm4gcGF0aDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSFRUUFNfVVBHUkFERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjAyYjhhNDYy
Y2E5ZTM5ODJkYzk0OTQ1NjA4YzQ3MDFmZDM3M2IyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShIVFRQ
U19VUEdSQURFKQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVTdGF0
ZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlciB7CitwdWJsaWM6CisgICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsK
KyAgICB+TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKworICAgIC8vIFJldHVybnMgYHRy
dWVgIGFmdGVyIGludGVybmFsIHNldHVwIGlzIHN1Y2Vzc2Z1bGx5IGNvbXBsZXRlZC4gSWYgdGhl
cmUgaXMgYW4gZXJyb3Igd2l0aCBzZXR1cCwgb3IgaWYgc2V0dXAgaXMgaW4tcHJvZ3Jlc3MsIGl0
IHdpbGwgcmV0dXJuIGBmYWxzZWAuCisgICAgYm9vbCBpc1NldHVwQ29tcGxldGUoKSBjb25zdCB7
IHJldHVybiBtX2lzU2V0dXBDb21wbGV0ZTsgfTsKKworICAgIC8vIFF1ZXJpZXMgZGF0YWJhc2Ug
YWZ0ZXIgc2V0dXAgaXMgY29tcGxldGUuCisgICAgdm9pZCBxdWVyeShTdHJpbmcmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1faXNT
ZXR1cENvbXBsZXRlIHsgZmFsc2UgfTsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fd29ya1F1
ZXVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4gbV9kYXRh
YmFzZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX3N0
YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KEhUVFBTX1VQR1JBREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggMzUxMWY3NTljYzAwMGE0ZmEyOTIxNzdhYjQ1MDBh
YWE0ZDRkMGY1NC4uMmVkMTZkNzI1OGQzZTE1OTkyZTAyYzc1ZWIxN2ZhZjNjNjI1YzE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvU2NvcGUuaD4KQEAgLTE5MSwzMiArMTkyLDM4IEBAIGF1dG8gTmV0d29ya0xvYWRDaGVj
a2VyOjphY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcihTdHJpbmcmJiBtZXNz
YWdlCiB9CiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLXZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
Y29uc3QKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVk
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVxdWVzdExvYWRU
eXBlICE9IExvYWRUeXBlOjpNYWluRnJhbWUpCisgICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9
IExvYWRUeXBlOjpNYWluRnJhbWUpIHsKKyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVXNlIGR1bW15IGxpc3QgZm9yIG5vdy4KLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB1cGdyYWRhYmxlSG9zdHMg
PSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJ3d3cuYmJjLmNvbSJf
cywgLy8gKHNvdXJjZTogaHR0cHM6Ly93aHlub2h0dHBzLmNvbSkKLSAgICAgICAgInd3dy5zcGVl
ZHRlc3QubmV0Il9zLCAvLyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQotICAgICAg
ICAid3d3LmJlYS5nb3YiX3MgLy8gKHNvdXJjZTogaHR0cHM6Ly9wdWxzZS5jaW8uZ292L2RhdGEv
ZG9tYWlucy9odHRwcy5jc3YpCi0gICAgfTsKKyAgICB9CiAKICAgICBhdXRvJiB1cmwgPSByZXF1
ZXN0LnVybCgpOwogCiAgICAgLy8gT25seSB1cGdyYWRlIGh0dHAgdXJscy4KLSAgICBpZiAoIXVy
bC5wcm90b2NvbElzKCJodHRwIikpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cCIpKSB7
CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICBpZiAoIXVwZ3JhZGFibGVIb3N0cy5nZXQoKS5jb250YWlucyh1cmwuaG9zdCgp
LnRvU3RyaW5nKCkpKQorICAgIGF1dG8mIGh0dHBzVXBncmFkZUNoZWNrZXIgPSBOZXR3b3JrUHJv
Y2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKworICAgIC8v
IERvIG5vdCB3YWl0IGZvciBodHRwc1VwZ3JhZGVDaGVja2VyIHRvIGNvbXBsZXRlIGl0cyBzZXR1
cC4KKyAgICBpZiAoIWh0dHBzVXBncmFkZUNoZWNrZXIuaXNTZXR1cENvbXBsZXRlKCkpIHsKKyAg
ICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIGF1dG8gbmV3VVJMID0gdXJsOwotICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMi
X3MpOwotICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CisgICAgaHR0cHNVcGdyYWRlQ2hlY2tl
ci5xdWVyeSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9zdCkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChmb3VuZEhvc3QpIHsKKyAgICAgICAgICAgIGF1dG8gbmV3VVJMID0gcmVx
dWVzdC51cmwoKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiX3MpOwor
ICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKKyAgICAgICAgfQogCi0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZCAtIFVwZ3JhZGUg
VVJMIGZyb20gSFRUUCB0byBIVFRQUyIpOworICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVxdWVz
dCkpOworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQogCkBAIC0y
MjUsMzcgKzIzMiw0MiBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eQogICAgIFJlc291cmNlUmVx
dWVzdCBvcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0OwogCiAjaWYgRU5BQkxFKEhUVFBTX1VQR1JB
REUpCi0gICAgYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChyZXF1ZXN0KTsKKyAgICBhcHBseUhU
VFBTVXBncmFkZUlmTmVlZGVkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBjbGllbnQsIGhhbmRs
ZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBvcmlnaW5hbFJlcXVlc3QgPSBXVEZNb3ZlKG9yaWdpbmFs
UmVxdWVzdCldKGF1dG8gcmVxdWVzdCkgbXV0YWJsZSB7CiAjZW5kaWYgLy8gRU5BQkxFKEhUVFBT
X1VQR1JBREUpCiAKLSAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKLSAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIHR5cGUgPSBtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6
Ok1vZGU6Ok5hdmlnYXRlID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RU
eXBlOjpOYXZpZ2F0aW9uIDogQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RU
eXBlOjpMb2FkOwotICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5LT51cGdyYWRlSW5z
ZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgdHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXF1ZXN0LCBjbGllbnQpKSB7
Ci0gICAgICAgICAgICBoYW5kbGVyKGFjY2Vzc0NvbnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5k
bGVyKCJCbG9ja2VkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiJfcykpOwotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhp
cy0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKKyAgICAgICAgICAgIGlmIChpc1JlZGlyZWN0
ZWQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fb3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2Vj
dXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRpb24gOiBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2Vj
dXJlUmVxdWVzdFR5cGU6OkxvYWQ7CisgICAgICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9s
aWN5LT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgdHlwZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9s
aWN5KHJlcXVlc3QsIGNsaWVudCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKGFjY2Vzc0Nv
bnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5kbGVyKCJCbG9ja2VkIGJ5IENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5LiJfcykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAg
cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV1RGTW92ZShyZXF1ZXN0KSwgW3Ro
aXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBvcmlnaW5hbFJlcXVlc3QgPSBXVEZNb3Zl
KG9yaWdpbmFsUmVxdWVzdCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuZXJyb3IoKS5p
c0NhbmNlbGxhdGlvbigpKTsKLSAgICAgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZXJy
b3IoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1
bHQudmFsdWUoKS5zdGF0dXMuYmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAgIGhhbmRsZXIodGhp
cy0+YWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgY29u
dGVudCBleHRlbnNpb24iX3MpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
ICAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZNb3ZlKHJlcXVlc3Qp
LCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdU
Rk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0LmVycm9yKCkuaXNDYW5jZWxsYXRpb24oKSk7CisgICAgICAgICAgICAgICAgaGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0YXR1cy5ibG9ja2VkTG9h
ZCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIodGhpcy0+YWNjZXNzQ29udHJvbEVycm9yRm9y
VmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgY29udGVudCBleHRlbnNpb24iX3MpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgY29udGludWVD
aGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoV1RGTW92ZShvcmlnaW5hbFJlcXVl
c3QpLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
LSAgICB9KTsKKyAgICAgICAgICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRp
Y1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXN1bHQudmFsdWUo
KS5yZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgICAgIH0pOwogI2Vsc2UKLSAgICBj
b250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChXVEZNb3ZlKG9yaWdp
bmFsUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOworICAgICAg
ICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChXVEZNb3ZlKG9y
aWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKyAgICB9KTsKKyNlbmRpZiAvLyBFTkFC
TEUoSFRUUFNfVVBHUkFERSkKKwogfQogCiB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGlu
dWVDaGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoUmVzb3VyY2VSZXF1ZXN0JiYg
b3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiBjdXJyZW50UmVxdWVzdCwgVmFsaWRh
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggNjIyN2M5NTdkNDRjZTYyYjY0MzYwMzNhODM0
NTM4MTY5MDc3ZThjOC4uZGJkOTYxYTQ5MTMzN2ZlOWVmN2Y3ZjFhZWNlNjBlNzc0NmYwZDQxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5oCkBAIC0yNSwxNiArMjUsMjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9uQWN0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENv
bnRlbnRTZWN1cml0eVBvbGljeTsKIHN0cnVjdCBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQ7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2VudW0gY2xhc3MgUHJlZmxpZ2h0UG9saWN5IDogdWlu
dDhfdDsKK2VudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExMyw3ICsxMjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLSAgICB2b2lkIGFwcGx5SFRUUFNVcGdyYWRlSWZO
ZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseUhU
VFBTVXBncmFkZUlmTmVlZGVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgY29uc3Q7CiAjZW5k
aWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCiAKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlvbnMg
bV9vcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IGY1YzJmZWRiZmM3ZTc3OWI1MWQzNTBlMWMxZTllNmE1NTA0NThlZTMuLjljNjQ3
ZTIwZDQ1NTAyODk4NDBjNjE2Zjk5ZDc1Zjk1MzY0OGM5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI5LDYgKzI5LDExIEBACiAjaW5j
bHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShIVFRQ
U19VUEdSQURFKQorI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCisjZW5k
aWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CkBAIC0yMDQsNiArMjA5LDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShIVFRQU19VUEdSQURF
KQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7IH07CisjZW5kaWYg
Ly8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3Mo
KTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTM5Myw2ICs0MDIsMTEgQEAgcHJpdmF0ZToK
ICAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYlNX
U2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKICNlbmRpZgogCisjaWYg
RU5BQkxFKEhUVFBTX1VQR1JBREUpCisgICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgbV9u
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsKKyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFE
RSkKKworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDA1NWVj
NWU1NzYxMDJmNzg2NDk4NDdhZTNlMzRhZTNlM2MyYzI0YTMuLmI1MmFlNmJkN2I2MzE5ZDYxNjI2
YjRiYWUwODNhYWM5NTY4NTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjcsNiArMjcsNyBAQCBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
K05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI4MzJiYjdjNGI4MWFlODk5
NjU2NjZlZTRiNTE3ZmUwZDMwN2IxZjcuLjNhNjg1ZmU1ZGI1MmIxYjBlZmI5NGE5MjNhNmI4OWQ3
ZDI5OGUyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTAzNyw2ICsxMDM3LDcgQEAKIAkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3
IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RENFREMxMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNl
LmggKi87IH07CiAJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RD
RURDNTIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oICovOyB9OwogCQk1
N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDOTIxNEY0
RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi87IH07CisJCTU4RTk3
N0RGMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThFOTc3REQyMUM0OUEw
MDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi87IH07CiAJCTVDMEIx
Nzc4MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIx
Nzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMxNDI2RUQxQzIzRjgwOTAwRDQxMTgzIC8qIE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZFMzFDMjNGODA1MDBENDExODMgLyogTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKQEAgLTM0MDEsNiArMzQwMiw4IEBA
CiAJCTU3RENFREM2MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xvY2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50
aWNhdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3
IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1OEU5NzdEQzIxQzQ5OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1OEU5NzdERDIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5
QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2Nr
ZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVh
bU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtTb2Nr
ZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3Jr
U29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTb2Nr
ZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtNjQyMCw2ICs2NDIzLDggQEAKIAkJCQk1Q0JDOUI4OTFDNjUy
NEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8sCiAJCQkJNTM5RUI1NDYxREMyRUU0
MDAwOUQ0OENGIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuY3BwICovLAogCQkJCTUzOUVCNTQ3MURD
MkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggKi8sCisJCQkJNThFOTc3REMy
MUM0OTlGRTAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCAqLywKKwkJ
CQk1OEU5NzdERDIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aCAqLywKIAkJCQk4Mzk5MDFGRjFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICov
LAogCQkJCTgzOTkwMUZFMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oICovLAogCQkJ
CTQxMDNGQkEyMjA2MUJEQjgwMEMyRUFGOCAvKiBOZXR3b3JrTG9hZENoZWNrZXIuY3BwICovLApA
QCAtOTExMCw2ICs5MTE1LDcgQEAKIAkJCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0
d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0JBNDdEMTFEQzJFRjVFMDA0REY0
QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTMyMTU5NTYx
REJBRTcyRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1OEU5NzdERjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3
b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8q
IE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzkxNDk2NTFCRUE4Mzg1
MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357587</attachid>
            <date>2018-12-18 11:21:51 -0800</date>
            <delta_ts>2018-12-18 11:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181218112140.patch</filename>
            <type>text/plain</type>
            <size>9893</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ2NDI5YmQwODQ2MmZkYWRl
MmExZjMzYWRkYTFlYmYwYWRkNmU2M2MuLjhmMWYzY2I3YzM0ODU1ODA1OWEyMzNiYmYxOGE3MTMy
YTQ3ZTQ4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTItMTggIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYktpdC54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtaHR0cHMtdXBncmFkZS1kYXRhYmFzZS5zaDogQWRkZWQu
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTgtMTIt
MTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBXS1dlYlZpZXcgaGFzIG9sZCBVUkwgd2hpbGUgZGlzcGxheWluZyBTYWZlQnJvd3NpbmcgaW50
ZXJzdGl0aWFsLCBmb3IgbGluay1jbGljayBuYXZpZ2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0Nv
bmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwppbmRleCBmMjMxOGVjNGU5YWZmNmZkOGJiOWRj
ZjQ3NDIwYzFlZTY4Y2VmZjJiLi4yNDUzNjg0ZWIyZjE1YjIyZjkwYjAxMmY0NTI5NmVjYjkwNzhj
MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpA
QCAtMTUxLDggKzE1MSwxMSBAQCBTRUNUT1JERVJfRkxBR1MgPSAkKFNFQ1RPUkRFUl9GTEFHU18k
KENPTkZJR1VSQVRJT04pKTsKIFNFQ1RPUkRFUl9GTEFHU19Qcm9kdWN0aW9uW3Nkaz1pcGhvbmVv
cypdID0gLVdsLC1vcmRlcl9maWxlLCQoU0RLUk9PVCkvQXBwbGVJbnRlcm5hbC9PcmRlckZpbGVz
L1dlYktpdC5vcmRlcjsKIFNFQ1RPUkRFUl9GTEFHU19Qcm9kdWN0aW9uW3Nkaz1tYWNvc3gqXSA9
IC1XbCwtb3JkZXJfZmlsZSxtYWMvV2ViS2l0Mi5vcmRlcjsKIAotRVhDTFVERURfU09VUkNFX0ZJ
TEVfTkFNRVMgPSBSZXNvdXJjZXMvaW9zLyo7Ci1FWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU1tz
ZGs9aXBob25lKl0gPSBQbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiBTZWNJdGVtU2hpbS5keWxpYiBX
ZWJQcm9jZXNzU2hpbS5keWxpYiAqLnBkZiBSZXNvdXJjZXMvbWFjLyogY29tLmFwcGxlLldlYktp
dC5OZXR3b3JrUHJvY2Vzcy5zYiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBjb20uYXBwbGUuV2Vi
S2l0LnBsdWdpbi1jb21tb24uc2IgUGx1Z0luU2FuZGJveFByb2ZpbGVzLyouc2I7CitXS19FWENM
VURFRF9IVFRQU19VUEdSQURFX0ZJTEUgPSAkKFdLX0VYQ0xVREVEX0hUVFBTX1VQR1JBREVfRklM
RV8kKEVOQUJMRV9IVFRQU19VUEdSQURFKSk7CitXS19FWENMVURFRF9IVFRQU19VUEdSQURFX0ZJ
TEVfID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsKKworRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVMg
PSBSZXNvdXJjZXMvaW9zLyogJChXS19FWENMVURFRF9IVFRQU19VUEdSQURFX0ZJTEUpOworRVhD
TFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPWlwaG9uZSpdID0gUGx1Z2luUHJvY2Vzc1NoaW0u
ZHlsaWIgU2VjSXRlbVNoaW0uZHlsaWIgV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi5wZGYgUmVzb3Vy
Y2VzL21hYy8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IgY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IgY29tLmFwcGxlLldlYktpdC5wbHVnaW4tY29tbW9uLnNiIFBsdWdJblNhbmRi
b3hQcm9maWxlcy8qLnNiICQoV0tfRVhDTFVERURfSFRUUFNfVVBHUkFERV9GSUxFKTsKIAogSU5T
VEFMTEhEUlNfU0NSSVBUX1BIQVNFID0gWUVTOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggZjJkODkxOTJmNmRhN2QyNjg1ZTA4MGVjYWIyMTI5YjkzYzQ0YmEzMi4uMmZkZTU1NTBj
ZjRkNzBhZGMwOWRlZjM1N2E5ODc4MjI3M2U1NTQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMzE1LDMgKzMxNSw5IEBAICQoV0VCX1BSRUZFUkVOQ0VTX0NPTUJJTkVEX0lOUFVU
X0ZJTEUpIDogJChXRUJfUFJFRkVSRU5DRVNfSU5QVVRfRklMRVMpCiAKICQoV0VCX1BSRUZFUkVO
Q0VTX1BBVFRFUk5TKSA6ICQoV2ViS2l0MikvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
ICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChXRUJfUFJFRkVSRU5DRVNfQ09NQklORURf
SU5QVVRfRklMRSkKIAkkKFJVQlkpICQ8IC0taW5wdXQgJChXRUJfUFJFRkVSRU5DRVNfQ09NQklO
RURfSU5QVVRfRklMRSkKKworaWZlcSAoJChFTkFCTEVfSFRUUFNfVVBHUkFERSksRU5BQkxFX0hU
VFBTX1VQR1JBREUpCithbGwgOiBIVFRQU1VwZ3JhZGVMaXN0LmRiCitIVFRQU1VwZ3JhZGVMaXN0
LmRiIDogSFRUUFNVcGdyYWRlTGlzdC50eHQgJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLWh0
dHBzLXVwZ3JhZGUtZGF0YWJhc2Uuc2gKKwlzaCAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUt
aHR0cHMtdXBncmFkZS1kYXRhYmFzZS5zaCAkPCAkQAorZW5kaWYgIyBFTkFCTEVfSFRUUFNfVVBH
UkFERQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLWh0dHBzLXVw
Z3JhZGUtZGF0YWJhc2Uuc2ggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtaHR0cHMt
dXBncmFkZS1kYXRhYmFzZS5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTMxMmVmNGM3NjAwM2ZiODY1MGM5Mzlh
N2FmNTA1N2I0NGY4ODE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L2dlbmVyYXRlLWh0dHBzLXVwZ3JhZGUtZGF0YWJhc2Uuc2gKQEAgLTAsMCArMSw1MiBAQAorIyEv
YmluL3NoCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRoaXMg
c2NyaXB0IHJlcXVpcmVzIHRoYXQgSFRUUFNVcGdyYWRlTGlzdC50eHQgaGFzIHRoZSBmb2xsb3dp
bmcgZm9ybWF0OgorIyAgIDEuIEl0IG11c3QgYmUgYSBwbGFpbiB0ZXh0IGZpbGUgd2l0aCBkb21h
aW5zIGRlbGltaXRlZCBieSBuZXcgbGluZXMgKCJcbiIpLgorIyAgIDIuIFRoZSBmaWxlIG11c3Qg
bm90IGNvbnRhaW4gZHVwbGljYXRlIGRvbWFpbnMuCisjICAgMy4gQWxsIGRvbWFpbnMgbXVzdCBi
ZSBsb3dlcmNhc2UuCisjICAgNC4gQWxsIGRvbWFpbnMgbXVzdCBiZSBJRE5BIGVuY29kZWQuCisj
CisjIFVzYWdlOgorIyAkIHNoIC4vZ2VuZXJhdGUtaHR0cHMtdXBncmFkZS1kYXRhYmFzZS5zaCA8
cGF0aCB0byBpbnB1dCBsaXN0PiA8cGF0aCB0byBvdXRwdXQgZGF0YWJhc2U+CisKK3NldCAtZQor
CitJTlBVVF9GSUxFX1BBVEg9IiR7MX0iCitPVVRQVVRfRklMRV9QQVRIPSIkezJ9IgorCitEQl9W
RVJTSU9OPSIxIjsKK0RCX1NDSEVNQT0iQ1JFQVRFIFRBQkxFIGhvc3RzIChob3N0IFRFWFQgUFJJ
TUFSWSBLRVkpOyIKKworaWYgW1sgISAtZiAiJHtJTlBVVF9GSUxFX1BBVEh9IiBdXTsgdGhlbgor
ICAgIGVjaG8gIkludmFsaWQgaW5wdXQgZmlsZSIgMT4mMjsKKyAgICBleGl0IDEKK2ZpCisKK2lm
IFtbIC1mICIke09VVFBVVF9GSUxFX1BBVEh9IiBdXTsgdGhlbgorICAgIHJtICIke09VVFBVVF9G
SUxFX1BBVEh9IgorZmkKKworc3FsaXRlMyAiJHtPVVRQVVRfRklMRV9QQVRIfSIgIlBSQUdNQSB1
c2VyX3ZlcnNpb249JHtEQl9WRVJTSU9OfSIgIiR7REJfU0NIRU1BfSIgIi5pbXBvcnQgJHtJTlBV
VF9GSUxFX1BBVEh9IGhvc3RzIiAiLmV4aXQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyODMyYmI3YzRiODFhZTg5OTY1NjY2ZWU0YjUx
N2ZlMGQzMDdiMWY3Li5mZmI4Zjk1MDM2Yjg1MmI3ODU0YzQ5NGY0NDIwYmE5NThhMTI4MmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwMzcsNiArMTAzNyw3IEBACiAJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9j
YWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovOyB9Owog
CQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzUyMTRGMTgz
MDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQ0IyMTRG
NEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzkyMTRGNEU0MjAwMTZCODQ3
IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9OworCQk1ODc3NDNBNjIxQzMwQkJF
MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBT
VXBncmFkZUxpc3QuZGIgKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3
b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdD
ODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlD
MDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
NUMxNDI2RUQxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0
MjZFMzFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLzsgfTsKQEAgLTM0MDEsNiArMzQwMiw3IEBACiAJCTU3RENFREM2MjE0RjE4MzAwMDE2Qjg0
NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xv
Y2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzky
MTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1ODc3NDNBNDIx
QzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBIVFRQU1VwZ3JhZGVM
aXN0LmRiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9IVFRQU1VwZ3JhZGVMaXN0LmRi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NDFFN0M4NzlD
MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tl
dFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVDMEIxNzc1MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFt
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1NvY2tl
dFN0cmVhbU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtT
b2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNvY2tl
dFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC04MzQ2LDYgKzgzNDgsNyBAQAogCQkJCTFBNjQyMzA3MTJERDA5
RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQUE1NzVG
RjE0OTZCN0MwMDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQkxQUE1NzYwMDE0OTZCN0MwMDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2Fn
ZXMuaCAqLywKKwkJCQk1ODc3NDNBNDIxQzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlz
dC5kYiAqLywKIAkJCQkyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyOTg0RjU4NzE2NEJBMDk1
MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJ
CQkyOTg0RjU3QTE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTAxNTMsNiArMTAxNTYsNyBAQAogCQkJ
CUUxMUQzNUFFMTZCNjNEMUIwMDZEMjNENyAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJNDE0REQzNzkyMEJGNDNGNTAwNjk1OUZCIC8qIGNvbS5jaXNjby53
ZWJleC5wbHVnaW4uZ3BjNjQuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCTZCRTk2OUMxMUU1NEQ0
NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
NTg3NzQzQTYyMUMzMEJCRTAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCThEQzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5n
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54
Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOTNBMkEzNDYxRDI0NjEyNTAwMkI1OUQzIC8q
IG1lZGlhSWNvbi5wZGYgaW4gUmVzb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357640</attachid>
            <date>2018-12-18 17:30:46 -0800</date>
            <delta_ts>2018-12-19 14:34:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181218173035.patch</filename>
            <type>text/plain</type>
            <size>23100</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNGU5MDg2YWFlYjU0YWNl
Y2EzN2IzYmY1MWUyZDc1OGU1OTgwNjkuLmEzMjcxYjU2NjE4YzlmMGQ4ZDdhZDRkYjBkZGQ3OGYx
NzlmYTllMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTggIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjp+
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcjo6cXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmRpZFNldHVwQ29tcGxl
dGVTdWNjZXNzZnVsbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBw
bHlIVFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTEyLTE4ICBWaXZlayBTZXRoICA8dl9zZXRo
QGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQUyBVcGdyYWRlOiBTY3JpcHRzIC8gcHJlcHJvY2Vz
c2luZyBuZWNlc3NhcnkgdG8gY3JlYXRlIG5ldyBkYXRhYmFzZSBpbiBmdXR1cmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkZmFkZjEyOGMzZGJiMmI1N2M1M2YzYjc4YmU5MDM4
Njk5MTUxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmgiCisKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGh0dHBzVXBncmFkZUNoZWNrZXJTUUxRdWVyeSA9ICJTRUxFQ1QgaG9zdCBGUk9NIGhv
c3RzIFdIRVJFIGhvc3QgPSA/OyJfczsKKworc3RhdGljIGNvbnN0IFN0cmluZyYgTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGgoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFi
YXNlUGF0aC5nZXQoKS5pc051bGwoKSkgeworICAgICAgICBDRkJ1bmRsZVJlZiB3ZWJLaXRCdW5k
bGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2Vi
S2l0IikpOworICAgICAgICBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aC5n
ZXQoKSA9IENGVVJMR2V0U3RyaW5nKGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwod2Vi
S2l0QnVuZGxlLCBDRlNUUigiSFRUUFNVcGdyYWRlTGlzdCIpLCBDRlNUUigiZGIiKSwgbnVsbHB0
cikpLmdldCgpKTsKKyAgICB9CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJu
IG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoOworfQorCitOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQorICAgIDogbV93
b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkhUVFBTIFVwZ3JhZGUgQ2hlY2tlciBUaHJlYWQi
KSkKKyAgICAsIG1fZGF0YWJhc2UobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZT4oKSkKKyAgICAsIG1fc3RhdGVtZW50KG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PihtX2RhdGFiYXNlLmdldCgpLCBodHRwc1VwZ3JhZGVDaGVja2VyU1FMUXVlcnkpKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3RoaXNdIHsKKyAgICAgICAgYXV0byBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXJEYXRhYmFzZVBhdGgoKTsKKyAgICAgICAgQVNTRVJUKHBhdGgpOworCisgICAgICAgIGJvb2wg
aXNEYXRhYmFzZU9wZW4gPSB0aGlzLT5tX2RhdGFiYXNlLT5vcGVuKHBhdGgpOworICAgICAgICBB
U1NFUlQoaXNEYXRhYmFzZU9wZW4pOworCisgICAgICAgIGludCBzdGF0ZW1lbnRQcmVwYXJlZFJl
c3VsdCA9IHRoaXMtPm1fc3RhdGVtZW50LT5wcmVwYXJlKCk7CisgICAgICAgIEFTU0VSVChzdGF0
ZW1lbnRQcmVwYXJlZFJlc3VsdCA9PSBTUUxJVEVfT0spOworCisgICAgICAgIHRoaXMtPm1fZGlk
U2V0dXBDb21wbGV0ZVN1Y2Nlc3NmdWxseSA9IHRydWU7CisgICAgfSk7Cit9CisKK05PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjp+TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIoKQoreworICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBiZSBvd25lZCBi
eSBhIHNpbmdsZXRvbiBvYmplY3QuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OnF1ZXJ5KFN0cmluZyYmIGhvc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgaG9zdCA9IFdU
Rk1vdmUoaG9zdCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQodGhpcy0+bV9kaWRTZXR1cENvbXBsZXRlU3VjY2Vzc2Z1bGx5KTsKKwor
ICAgICAgICBpbnQgYmluZFRleHRSZXN1bHQgPSB0aGlzLT5tX3N0YXRlbWVudC0+YmluZFRleHQo
MSwgV1RGTW92ZShob3N0KSk7CisgICAgICAgIEFTU0VSVChiaW5kVGV4dFJlc3VsdCA9PSBTUUxJ
VEVfT0spOworCisgICAgICAgIGludCBzdGVwUmVzdWx0ID0gdGhpcy0+bV9zdGF0ZW1lbnQtPnN0
ZXAoKTsKKyAgICAgICAgQVNTRVJUKHN0ZXBSZXN1bHQgPT0gU1FMSVRFX1JPVyB8fCBzdGVwUmVz
dWx0ID09IFNRTElURV9ET05FKTsKKworICAgICAgICBpbnQgcmVzZXRSZXN1bHQgPSB0aGlzLT5t
X3N0YXRlbWVudC0+cmVzZXQoKTsKKyAgICAgICAgQVNTRVJUKHJlc2V0UmVzdWx0ID09IFNRTElU
RV9PSyk7CisKKyAgICAgICAgYm9vbCBmb3VuZEhvc3QgPSAoc3RlcFJlc3VsdCA9PSBTUUxJVEVf
Uk9XKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicXVlcnkgLSBSYW4gc3VjY2Vz
c2Z1bGx5LiBSZXN1bHQgPSAlcyIsIChmb3VuZEhvc3QgPyAidHJ1ZSIgOiAiZmFsc2UiKSk7Cisg
ICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtmb3VuZEhvc3QsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2so
Zm91bmRIb3N0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Jvb2wgTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IGhvdyBzaG91bGQgSSBpbXBsZW1lbnQgdGhpcz8KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBH
UkFERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDQwZWY1ZDg5NjBlMzUzMjhhNTFj
MTQ2ZDhhODA5MjU3Y2NkZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQor
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdv
cmtRdWV1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlRGF0YWJhc2U7
CitjbGFzcyBTUUxpdGVTdGF0ZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciB7CitwdWJsaWM6CisgICAgTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIoKTsKKyAgICB+TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKwor
ICAgIC8vIFJldHVybnMgYHRydWVgIGFmdGVyIGludGVybmFsIHNldHVwIGlzIHN1Y2Nlc3NmdWxs
eSBjb21wbGV0ZWQuIElmIHRoZXJlIGlzIGFuIGVycm9yIHdpdGggc2V0dXAsIG9yIGlmIHNldHVw
IGlzIGluLXByb2dyZXNzLCBpdCB3aWxsIHJldHVybiBgZmFsc2VgLgorICAgIGJvb2wgZGlkU2V0
dXBDb21wbGV0ZVN1Y2Nlc3NmdWxseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkU2V0dXBDb21wbGV0
ZVN1Y2Nlc3NmdWxseTsgfTsKKworICAgIC8vIFF1ZXJpZXMgZGF0YWJhc2UgYWZ0ZXIgc2V0dXAg
aXMgY29tcGxldGUuCisgICAgdm9pZCBxdWVyeShTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fZGlkU2V0dXBDb21wbGV0
ZVN1Y2Nlc3NmdWxseSB7IGZhbHNlIH07CisgICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3dvcmtR
dWV1ZTsKKyAgICBXVEY6OlVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4gbV9kYXRh
YmFzZTsKKyAgICBXVEY6OlVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3Rh
dGVtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
SFRUUFNfVVBHUkFERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCAzNTExZjc1OWNjMDAwYTRmYTI5MjE3N2FiNDUwMGFh
YTRkNGQwZjU0Li5jMmYxNjkzMWY3OWViMzI3ZWQ0YTMzNTY0Yzc1ZDM5ZDQ5ZjBiNGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgpAQCAtMTkxLDMyICsxOTIsMzggQEAgYXV0byBOZXR3b3JrTG9hZENoZWNr
ZXI6OmFjY2Vzc0NvbnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5kbGVyKFN0cmluZyYmIG1lc3Nh
Z2UKIH0KIAogI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQotdm9pZCBOZXR3b3JrTG9hZENoZWNr
ZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBj
b25zdAordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgaGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1ZXN0TG9hZFR5
cGUgIT0gTG9hZFR5cGU6Ok1haW5GcmFtZSkKKyAgICBpZiAobV9yZXF1ZXN0TG9hZFR5cGUgIT0g
TG9hZFR5cGU6Ok1haW5GcmFtZSkgeworICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OwogICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBVc2UgZHVtbXkgbGlzdCBmb3Igbm93LgotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHVwZ3JhZGFibGVIb3N0cyA9
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKLSAgICAgICAgInd3dy5iYmMuY29tIl9z
LCAvLyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQotICAgICAgICAid3d3LnNwZWVk
dGVzdC5uZXQiX3MsIC8vIChzb3VyY2U6IGh0dHBzOi8vd2h5bm9odHRwcy5jb20pCi0gICAgICAg
ICJ3d3cuYmVhLmdvdiJfcyAvLyAoc291cmNlOiBodHRwczovL3B1bHNlLmNpby5nb3YvZGF0YS9k
b21haW5zL2h0dHBzLmNzdikKLSAgICB9OworICAgIH0KIAogICAgIGF1dG8mIHVybCA9IHJlcXVl
c3QudXJsKCk7CiAKICAgICAvLyBPbmx5IHVwZ3JhZGUgaHR0cCB1cmxzLgotICAgIGlmICghdXJs
LnByb3RvY29sSXMoImh0dHAiKSkKKyAgICBpZiAoIXVybC5wcm90b2NvbElzKCJodHRwIikpIHsK
KyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIGlmICghdXBncmFkYWJsZUhvc3RzLmdldCgpLmNvbnRhaW5zKHVybC5ob3N0KCku
dG9TdHJpbmcoKSkpCisgICAgYXV0byYgaHR0cHNVcGdyYWRlQ2hlY2tlciA9IE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOworCisgICAgLy8g
RG8gbm90IHdhaXQgZm9yIGh0dHBzVXBncmFkZUNoZWNrZXIgdG8gY29tcGxldGUgaXRzIHNldHVw
LgorICAgIGlmICghaHR0cHNVcGdyYWRlQ2hlY2tlci5kaWRTZXR1cENvbXBsZXRlU3VjY2Vzc2Z1
bGx5KCkpIHsKKyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIGF1dG8gbmV3VVJMID0gdXJsOwotICAgIG5ld1VSTC5zZXRQcm90
b2NvbCgiaHR0cHMiX3MpOwotICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CisgICAgaHR0cHNV
cGdyYWRlQ2hlY2tlci5xdWVyeSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIFtyZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChib29sIGZvdW5kSG9z
dCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChmb3VuZEhvc3QpIHsKKyAgICAgICAgICAgIGF1dG8g
bmV3VVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgi
aHR0cHMiX3MpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKKyAgICAgICAg
fQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRl
ZCAtIFVwZ3JhZGUgVVJMIGZyb20gSFRUUCB0byBIVFRQUyIpOworICAgICAgICBoYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOworICAgIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdS
QURFKQogCkBAIC0yMjUsMzcgKzIzMiw0MiBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hl
Y2tSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eQogICAg
IFJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0OwogCiAjaWYgRU5BQkxF
KEhUVFBTX1VQR1JBREUpCi0gICAgYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChyZXF1ZXN0KTsK
KyAgICBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBj
bGllbnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBvcmlnaW5hbFJlcXVlc3QgPSBXVEZN
b3ZlKG9yaWdpbmFsUmVxdWVzdCldKGF1dG8gcmVxdWVzdCkgbXV0YWJsZSB7CiAjZW5kaWYgLy8g
RU5BQkxFKEhUVFBTX1VQR1JBREUpCiAKLSAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9s
aWN5ID0gdGhpcy0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKLSAgICAgICAgaWYgKGlzUmVk
aXJlY3RlZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHR5cGUgPSBtX29wdGlvbnMubW9kZSA9PSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNl
Y3VyZVJlcXVlc3RUeXBlOjpOYXZpZ2F0aW9uIDogQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNl
Y3VyZVJlcXVlc3RUeXBlOjpMb2FkOwotICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5
LT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwgdHlwZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXF1ZXN0
LCBjbGllbnQpKSB7Ci0gICAgICAgICAgICBoYW5kbGVyKGFjY2Vzc0NvbnRyb2xFcnJvckZvclZh
bGlkYXRpb25IYW5kbGVyKCJCbG9ja2VkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiJfcykp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5
UG9saWN5ID0gdGhpcy0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKKyAgICAgICAgICAgIGlm
IChpc1JlZGlyZWN0ZWQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fb3B0aW9u
cy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgPyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRpb24gOiBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQ7CisgICAgICAgICAgICAgICAgY29udGVu
dFNlY3VyaXR5UG9saWN5LT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdCwg
dHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVu
dFNlY3VyaXR5UG9saWN5KHJlcXVlc3QsIGNsaWVudCkpIHsKKyAgICAgICAgICAgICAgICBoYW5k
bGVyKGFjY2Vzc0NvbnRyb2xFcnJvckZvclZhbGlkYXRpb25IYW5kbGVyKCJCbG9ja2VkIGJ5IENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5LiJfcykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV1RGTW92ZShy
ZXF1ZXN0KSwgW3RoaXMsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBvcmlnaW5hbFJlcXVl
c3QgPSBXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKTsKLSAgICAgICAgICAgIGhhbmRsZXIoV1RGTW92
ZShyZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChyZXN1bHQudmFsdWUoKS5zdGF0dXMuYmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAg
IGhhbmRsZXIodGhpcy0+YWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJs
b2NrZWQgYnkgY29udGVudCBleHRlbnNpb24iX3MpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorICAgICAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZN
b3ZlKHJlcXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFs
UmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXN1bHQpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0LmVycm9yKCkuaXNDYW5jZWxsYXRpb24oKSk7CisgICAgICAgICAgICAg
ICAgaGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0YXR1
cy5ibG9ja2VkTG9hZCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIodGhpcy0+YWNjZXNzQ29u
dHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgY29udGVudCBleHRlbnNp
b24iX3MpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAg
ICAgY29udGludWVDaGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoV1RGTW92ZShv
cmlnaW5hbFJlcXVlc3QpLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKLSAgICB9KTsKKyAgICAgICAgICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0
T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShy
ZXN1bHQudmFsdWUoKS5yZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgICAgIH0pOwog
I2Vsc2UKLSAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChX
VEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxl
cikpOworICAgICAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVj
dChXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFu
ZGxlcikpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKyAgICB9KTsKKyNl
bmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKwogfQogCiB2b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgb3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiBjdXJyZW50UmVx
dWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggNjIyN2M5NTdkNDRjZTYy
YjY0MzYwMzNhODM0NTM4MTY5MDc3ZThjOC4uZGJkOTYxYTQ5MTMzN2ZlOWVmN2Y3ZjFhZWNlNjBl
Nzc0NmYwZDQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5oCkBAIC0yNSwxNiArMjUsMjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GZXRj
aE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIHN0cnVjdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lDbGllbnQ7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2VudW0gY2xhc3MgUHJlZmxpZ2h0
UG9saWN5IDogdWludDhfdDsKK2VudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBi
b29sOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExMyw3ICsxMjAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLSAgICB2b2lkIGFwcGx5SFRU
UFNVcGdyYWRlSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAg
dm9pZCBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikg
Y29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCiAKICAgICBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMgbV9vcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGY1YzJmZWRiZmM3ZTc3OWI1MWQzNTBlMWMxZTllNmE1NTA0
NThlZTMuLjljNjQ3ZTIwZDQ1NTAyODk4NDBjNjE2Zjk5ZDc1Zjk1MzY0OGM5YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI5LDYgKzI5
LDExIEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKKworI2lm
IEVOQUJMRShIVFRQU19VUEdSQURFKQorI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmgiCisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CkBAIC0yMDQsNiArMjA5
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShI
VFRQU19VUEdSQURFKQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBuZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7
IH07CisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKIHByaXZhdGU6CiAgICAgTmV0
d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTM5Myw2ICs0MDIsMTEg
QEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKICNl
bmRpZgogCisjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCisgICAgTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsKKyNlbmRpZiAvLyBFTkFCTEUo
SFRUUFNfVVBHUkFERSkKKworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDA1NWVjNWU1NzYxMDJmNzg2NDk4NDdhZTNlMzRhZTNlM2MyYzI0YTMuLmI1MmFlNmJk
N2I2MzE5ZDYxNjI2YjRiYWUwODNhYWM5NTY4NTYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjcsNiAr
MjcsNyBAQCBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNw
cAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZmYjhm
OTUwMzZiODUyYjc4NTRjNDk0ZjQ0MjBiYTk1OGExMjgyZDUuLjk0ZmQ1NjFlMzAzMzMwYzM1YzMw
YzhhMGRmMTNlNmRjM2Y0ZGUyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNyw2ICsxMDM3LDcgQEAKIAkJNTdEQ0VEQzMyMTRG
MTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREMxMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2Nr
TG9jYWxTZXJ2aWNlLmggKi87IH07CiAJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2Nr
TG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0RDRURDNTIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5o
ICovOyB9OwogCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi87
IH07CisJCTU4RTk3N0RGMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThF
OTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi87
IH07CiAJCTU4Nzc0M0E2MjFDMzBCQkUwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVMaXN0LmRiIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODc3NDNBNDIx
QzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiAqLzsgfTsKIAkJNUMwQjE3Nzgx
RTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzQx
RTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMzQwMiw2ICszNDAzLDggQEAKIAkJNTdEQ0VEQzYyMTRG
MTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNb2NrTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1N0RDRURDRDIxNEY1MTY4MDAxNkI4NDcgLyogTW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
Y2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4RTk3N0REMjFD
NDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODc3NDNBNDIxQzMwQUQ4MDBBRTkwODQgLyogSFRU
UFNVcGdyYWRlTGlzdC5kYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBIVFRQU1VwZ3JhZGVMaXN0LmRiOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9IVFRQU1VwZ3JhZGVMaXN0LmRiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1Nv
Y2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVDMEIxNzc1MUU3
Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNjQyMiw2ICs2NDI1LDgg
QEAKIAkJCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi8s
CiAJCQkJNTM5RUI1NDYxREMyRUU0MDAwOUQ0OENGIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
ICovLAogCQkJCTUzOUVCNTQ3MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9i
LmggKi8sCisJCQkJNThFOTc3REMyMUM0OTlGRTAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmNwcCAqLywKKwkJCQk1OEU5NzdERDIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLywKIAkJCQk4Mzk5MDFGRjFCRTlBMDFCMDAwRjM2NTMg
LyogTmV0d29ya0xvYWQuY3BwICovLAogCQkJCTgzOTkwMUZFMUJFOUEwMUIwMDBGMzY1MyAvKiBO
ZXR3b3JrTG9hZC5oICovLAogCQkJCTQxMDNGQkEyMjA2MUJEQjgwMEMyRUFGOCAvKiBOZXR3b3Jr
TG9hZENoZWNrZXIuY3BwICovLApAQCAtOTExMyw2ICs5MTE4LDcgQEAKIAkJCQk1Q0JDOUI4RTFD
NjUyQ0EwMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
M0JBNDdEMTFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTMyMTU5NTYxREJBRTcyRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0Nv
Y29hLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OEU5NzdERjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTkwMjAzMUJF
OUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0
RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MzkxNDk2NTFCRUE4Mzg1MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357726</attachid>
            <date>2018-12-19 14:34:59 -0800</date>
            <delta_ts>2018-12-19 14:40:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181219143449.patch</filename>
            <type>text/plain</type>
            <size>23092</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNGU5MDg2YWFlYjU0YWNl
Y2EzN2IzYmY1MWUyZDc1OGU1OTgwNjkuLmEzMjcxYjU2NjE4YzlmMGQ4ZDdhZDRkYjBkZGQ3OGYx
NzlmYTllMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTggIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjp+
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcjo6cXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmRpZFNldHVwQ29tcGxl
dGVTdWNjZXNzZnVsbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBw
bHlIVFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTEyLTE4ICBWaXZlayBTZXRoICA8dl9zZXRo
QGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQUyBVcGdyYWRlOiBTY3JpcHRzIC8gcHJlcHJvY2Vz
c2luZyBuZWNlc3NhcnkgdG8gY3JlYXRlIG5ldyBkYXRhYmFzZSBpbiBmdXR1cmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkxNGUyMWVmYzhiNWExYWYwMjEzOGVhZjliNTY4Njlh
ZTI2MTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmgiCisKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAg
LSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29y
aywgIiVwIC0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0IFN0cmluZyYgbmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGgoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRo
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ckRhdGFiYXNlUGF0aC5nZXQoKS5pc051bGwoKSkgeworICAgICAgICBDRkJ1bmRsZVJlZiB3ZWJL
aXRCdW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBw
bGUuV2ViS2l0IikpOworICAgICAgICBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNl
UGF0aC5nZXQoKSA9IENGVVJMR2V0U3RyaW5nKGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VV
Ukwod2ViS2l0QnVuZGxlLCBDRlNUUigiSFRUUFNVcGdyYWRlTGlzdCIpLCBDRlNUUigiZGIiKSwg
bnVsbHB0cikpLmdldCgpKTsKKyAgICB9CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisgICAg
cmV0dXJuIG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoOworfQorCitOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQorICAg
IDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkhUVFBTIFVwZ3JhZGUgQ2hlY2tlciBU
aHJlYWQiKSkKKyAgICAsIG1fZGF0YWJhc2UobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZT4oKSkKKyAgICAsIG1fc3RhdGVtZW50KG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLmdldCgpLCAiU0VMRUNUIGhvc3QgRlJPTSBob3N0cyBX
SEVSRSBob3N0ID0gPzsiX3MpKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgYXV0byBwYXRoID0g
bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGgoKTsKKyAgICAgICAgQVNTRVJU
KHBhdGgpOworCisgICAgICAgIGJvb2wgaXNEYXRhYmFzZU9wZW4gPSB0aGlzLT5tX2RhdGFiYXNl
LT5vcGVuKHBhdGgpOworICAgICAgICBBU1NFUlQoaXNEYXRhYmFzZU9wZW4pOworCisgICAgICAg
IC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNw
YXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KKyAgICAgICAg
dGhpcy0+bV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOworCisgICAgICAgIGlu
dCBzdGF0ZW1lbnRQcmVwYXJlZFJlc3VsdCA9IHRoaXMtPm1fc3RhdGVtZW50LT5wcmVwYXJlKCk7
CisgICAgICAgIEFTU0VSVChzdGF0ZW1lbnRQcmVwYXJlZFJlc3VsdCA9PSBTUUxJVEVfT0spOwor
CisgICAgICAgIHRoaXMtPm1fZGlkU2V0dXBDb21wbGV0ZVN1Y2Nlc3NmdWxseSA9IHRydWU7Cisg
ICAgfSk7Cit9CisKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyOjp+TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQoreworICAgIC8vIFRoaXMgb2Jq
ZWN0IHNob3VsZCBiZSBvd25lZCBieSBhIHNpbmdsZXRvbiBvYmplY3QuCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OnF1ZXJ5
KFN0cmluZyYmIGhvc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBob3N0ID0gaG9zdC5pc29s
YXRlZENvcHkoKSwgc2Vzc2lvbklELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPm1fZGlkU2V0dXBDb21wbGV0ZVN1Y2Nlc3Nm
dWxseSk7CisKKyAgICAgICAgaW50IGJpbmRUZXh0UmVzdWx0ID0gdGhpcy0+bV9zdGF0ZW1lbnQt
PmJpbmRUZXh0KDEsIFdURk1vdmUoaG9zdCkpOworICAgICAgICBBU1NFUlQoYmluZFRleHRSZXN1
bHQgPT0gU1FMSVRFX09LKTsKKworICAgICAgICBpbnQgc3RlcFJlc3VsdCA9IHRoaXMtPm1fc3Rh
dGVtZW50LT5zdGVwKCk7CisgICAgICAgIEFTU0VSVChzdGVwUmVzdWx0ID09IFNRTElURV9ST1cg
fHwgc3RlcFJlc3VsdCA9PSBTUUxJVEVfRE9ORSk7CisKKyAgICAgICAgaW50IHJlc2V0UmVzdWx0
ID0gdGhpcy0+bV9zdGF0ZW1lbnQtPnJlc2V0KCk7CisgICAgICAgIEFTU0VSVChyZXNldFJlc3Vs
dCA9PSBTUUxJVEVfT0spOworCisgICAgICAgIGJvb2wgZm91bmRIb3N0ID0gKHN0ZXBSZXN1bHQg
PT0gU1FMSVRFX1JPVyk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInF1ZXJ5IC0g
UmFuIHN1Y2Nlc3NmdWxseS4gUmVzdWx0ID0gJXMiLCAoZm91bmRIb3N0ID8gInRydWUiIDogImZh
bHNlIikpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2ZvdW5kSG9zdCwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxs
YmFjayhmb3VuZEhvc3QpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjMwM2E3NjE0MGI2MDhkYzU0YThkYTJmZGEwOTdlNGU0YjlhZGYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorCisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVTdGF0
ZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworcHVi
bGljOgorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CisgICAgfk5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyKCk7CisKKyAgICAvLyBSZXR1cm5zIGB0cnVlYCBhZnRlciBpbnRlcm5h
bCBzZXR1cCBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiBJZiB0aGVyZSBpcyBhbiBlcnJvciB3
aXRoIHNldHVwLCBvciBpZiBzZXR1cCBpcyBpbi1wcm9ncmVzcywgaXQgd2lsbCByZXR1cm4gYGZh
bHNlYC4KKyAgICBib29sIGRpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHkoKSBjb25zdCB7IHJl
dHVybiBtX2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHk7IH07CisKKyAgICAvLyBRdWVyaWVz
IGRhdGFiYXNlIGFmdGVyIHNldHVwIGlzIGNvbXBsZXRlLgorICAgIHZvaWQgcXVlcnkoU3RyaW5n
JiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwor
cHJpdmF0ZToKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFdURjo6
VW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFdURjo6
VW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7CisgICAgc3Rk
OjphdG9taWM8Ym9vbD4gbV9kaWRTZXR1cENvbXBsZXRlU3VjY2Vzc2Z1bGx5IHsgZmFsc2UgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQ
R1JBREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHAKaW5kZXggMzUxMWY3NTljYzAwMGE0ZmEyOTIxNzdhYjQ1MDBhYWE0ZDRkMGY1
NC4uMGYzMDJkYzY4MTVlMmU5OGIwZDAzMmUzMmI2YzE3MWI1NGY1MzA2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KQEAgLTE5MSwzMiArMTkyLDM4IEBAIGF1dG8gTmV0d29ya0xvYWRDaGVja2VyOjphY2Nl
c3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcihTdHJpbmcmJiBtZXNzYWdlCiB9CiAK
ICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBs
eUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKK3Zv
aWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9IExv
YWRUeXBlOjpNYWluRnJhbWUpCisgICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9IExvYWRUeXBl
OjpNYWluRnJhbWUpIHsKKyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gVXNlIGR1bW15IGxpc3QgZm9yIG5vdy4KLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB1cGdyYWRhYmxlSG9zdHMgPSBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJ3d3cuYmJjLmNvbSJfcywgLy8gKHNv
dXJjZTogaHR0cHM6Ly93aHlub2h0dHBzLmNvbSkKLSAgICAgICAgInd3dy5zcGVlZHRlc3QubmV0
Il9zLCAvLyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQotICAgICAgICAid3d3LmJl
YS5nb3YiX3MgLy8gKHNvdXJjZTogaHR0cHM6Ly9wdWxzZS5jaW8uZ292L2RhdGEvZG9tYWlucy9o
dHRwcy5jc3YpCi0gICAgfTsKKyAgICB9CiAKICAgICBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgp
OwogCiAgICAgLy8gT25seSB1cGdyYWRlIGh0dHAgdXJscy4KLSAgICBpZiAoIXVybC5wcm90b2Nv
bElzKCJodHRwIikpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cCIpKSB7CisgICAgICAg
IGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAg
ICBpZiAoIXVwZ3JhZGFibGVIb3N0cy5nZXQoKS5jb250YWlucyh1cmwuaG9zdCgpLnRvU3RyaW5n
KCkpKQorICAgIGF1dG8mIGh0dHBzVXBncmFkZUNoZWNrZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2lu
Z2xldG9uKCkubmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKworICAgIC8vIERvIG5vdCB3
YWl0IGZvciBodHRwc1VwZ3JhZGVDaGVja2VyIHRvIGNvbXBsZXRlIGl0cyBzZXR1cC4KKyAgICBp
ZiAoIWh0dHBzVXBncmFkZUNoZWNrZXIuZGlkU2V0dXBDb21wbGV0ZVN1Y2Nlc3NmdWxseSgpKSB7
CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICBhdXRvIG5ld1VSTCA9IHVybDsKLSAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0
dHBzIl9zKTsKLSAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAgIGh0dHBzVXBncmFkZUNo
ZWNrZXIucXVlcnkodXJsLmhvc3QoKS50b1N0cmluZygpLCBtX3Nlc3Npb25JRCwgW3JlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGJvb2wgZm91
bmRIb3N0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGZvdW5kSG9zdCkgeworICAgICAgICAgICAg
YXV0byBuZXdVUkwgPSByZXF1ZXN0LnVybCgpOworICAgICAgICAgICAgbmV3VVJMLnNldFByb3Rv
Y29sKCJodHRwcyJfcyk7CisgICAgICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAg
ICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhcHBseUhUVFBTVXBncmFkZUlm
TmVlZGVkIC0gVXBncmFkZSBVUkwgZnJvbSBIVFRQIHRvIEhUVFBTIik7CisgICAgICAgIGhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEhUVFBT
X1VQR1JBREUpCiAKQEAgLTIyNSwzNyArMjMyLDQyIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2Vy
OjpjaGVja1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29udGVudFNlY3VyaXR5
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAKICNpZiBF
TkFCTEUoSFRUUFNfVVBHUkFERSkKLSAgICBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKHJlcXVl
c3QpOworICAgIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV1RGTW92ZShyZXF1ZXN0KSwgW3Ro
aXMsIGNsaWVudCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9
IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXF1ZXN0KSBtdXRhYmxlIHsKICNlbmRp
ZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAotICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJp
dHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewotICAgICAgICBpZiAo
aXNSZWRpcmVjdGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fb3B0aW9ucy5tb2Rl
ID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6
Okluc2VjdXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRpb24gOiBDb250ZW50U2VjdXJpdHlQb2xpY3k6
Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQ7Ci0gICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQ
b2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJl
cXVlc3QsIGNsaWVudCkpIHsKLSAgICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9y
Rm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3ku
Il9zKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRvKiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgeworICAgICAgICAg
ICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byB0eXBlID0gbV9v
cHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZDsKKyAgICAgICAgICAgICAgICBj
b250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1
ZXN0LCB0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNBbGxvd2VkQnlD
b250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdCwgY2xpZW50KSkgeworICAgICAgICAgICAgICAg
IGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQg
YnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKLSAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZN
b3ZlKHJlcXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFs
UmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXN1bHQpIG11dGFibGUg
ewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdC5lcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCkpOwotICAgICAgICAgICAgaGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0YXR1cy5ibG9ja2VkTG9hZCkgewotICAgICAg
ICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxl
cigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9CisgICAgICAgIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2Fk
KFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgb3Jp
Z2luYWxSZXF1ZXN0ID0gV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpXShhdXRvIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCku
c3RhdHVzLmJsb2NrZWRMb2FkKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nl
c3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4
dGVuc2lvbiJfcykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAot
ICAgICAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChXVEZN
b3ZlKG9yaWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVzdWx0LnZhbHVlKCkucmVxdWVzdCksIFdU
Rk1vdmUoaGFuZGxlcikpOwotICAgIH0pOworICAgICAgICAgICAgY29udGludWVDaGVja2luZ1Jl
cXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICAgICAg
fSk7CiAjZWxzZQotICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGly
ZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZSho
YW5kbGVyKSk7CisgICAgICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1Jl
ZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShoYW5kbGVyKSk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorICAgIH0p
OworI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQorCiB9CiAKIHZvaWQgTmV0d29ya0xv
YWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChS
ZXNvdXJjZVJlcXVlc3QmJiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIGN1cnJl
bnRSZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA2MjI3Yzk1N2Q0
NGNlNjJiNjQzNjAzM2E4MzQ1MzgxNjkwNzdlOGM4Li5kYmQ5NjFhNDkxMzM3ZmU5ZWY3ZjdmMWFl
Y2U2MGU3NzQ2ZjBkNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTI1LDE2ICsyNSwyMyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9D
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZldGNoT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0IENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworZW51bSBjbGFzcyBQcmVm
bGlnaHRQb2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSA6IGJvb2w7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTEzLDcgKzEyMCw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQotICAgIHZvaWQgYXBw
bHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
KyAgICB2b2lkIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAogICAgIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjVjMmZlZGJmYzdlNzc5YjUxZDM1MGUxYzFlOWU2
YTU1MDQ1OGVlMy4uMjM0OGZjODUzY2FkMGY3NTE1YTFkZmQ4ZTk5NWJlNGY3YmRiNzM0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CkBAIC0yMDQsNiArMjA1LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShIVFRQ
U19VUEdSQURFKQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBuZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7IH07
CisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKIHByaXZhdGU6CiAgICAgTmV0d29y
a1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTM5Myw2ICszOTgsOSBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKyAgICBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlciBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOworI2VuZGlmIC8vIEVOQUJMRShIVFRQ
U19VUEdSQURFKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAw
NTVlYzVlNTc2MTAyZjc4NjQ5ODQ3YWUzZTM0YWUzZTNjMmMyNGEzLi5iNTJhZTZiZDdiNjMxOWQ2
MTYyNmI0YmFlMDgzYWFjOTU2ODU2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3LDYgKzI3LDcgQEAg
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZmI4Zjk1MDM2Yjg1
MmI3ODU0YzQ5NGY0NDIwYmE5NThhMTI4MmQ1Li45NGZkNTYxZTMwMzMzMGMzNWMzMGM4YTBkZjEz
ZTZkYzNmNGRlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwMzcsNiArMTAzNyw3IEBACiAJCTU3RENFREMzMjE0RjExNEMwMDE2
Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2Vy
dmljZS5oICovOyB9OwogCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsgfTsK
IAkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzky
MTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9OworCQk1
OEU5NzdERjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4RTk3N0REMjFD
NDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovOyB9OwogCQk1
ODc3NDNBNjIxQzMwQkJFMDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg3NzQzQTQyMUMzMEFEODAw
QUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4MEUw
MEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3OUMw
MEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJNUMwQjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKQEAgLTM0MDIsNiArMzQwMyw4IEBACiAJCTU3RENFREM2MjE0RjE4MzAwMDE2
Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9j
a0xvY2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VE
QzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0aGVu
dGljYXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdE
QzIxQzQ5OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdERDIxQzQ5QTAwMDA1
RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBncmFk
ZUxpc3QuZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBuYW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvSFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBF
OTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY0MjIsNiArNjQyNSw4IEBACiAJCQkJ
NUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovLAogCQkJCTUz
OUVCNTQ2MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCAqLywKIAkJ
CQk1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovLAor
CQkJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5jcHAgKi8sCisJCQkJNThFOTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyLmggKi8sCiAJCQkJODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdv
cmtMb2FkLmNwcCAqLywKIAkJCQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xv
YWQuaCAqLywKIAkJCQk0MTAzRkJBMjIwNjFCREI4MDBDMkVBRjggLyogTmV0d29ya0xvYWRDaGVj
a2VyLmNwcCAqLywKQEAgLTkxMTMsNiArOTExOCw3IEBACiAJCQkJNUNCQzlCOEUxQzY1MkNBMDAw
QThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNCQTQ3RDEx
REMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUzMjE1OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzk5MDIwMzFCRTlBMDJCMDAw
RjM2NTMgLyogTmV0d29ya0xvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDQ1NEQ3MUJFOUQz
QzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5
MTQ5NjUxQkVBODM4NTAwRDJEOTUzIC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357727</attachid>
            <date>2018-12-19 14:40:54 -0800</date>
            <delta_ts>2018-12-19 14:59:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181219144043.patch</filename>
            <type>text/plain</type>
            <size>22936</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyNGU5MDg2YWFlYjU0YWNl
Y2EzN2IzYmY1MWUyZDc1OGU1OTgwNjkuLmEzMjcxYjU2NjE4YzlmMGQ4ZDdhZDRkYjBkZGQ3OGYx
NzlmYTllMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTggIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjp+
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcjo6cXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmRpZFNldHVwQ29tcGxl
dGVTdWNjZXNzZnVsbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBw
bHlIVFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTEyLTE4ICBWaXZlayBTZXRoICA8dl9zZXRo
QGFwcGxlLmNvbT4KIAogICAgICAgICBIVFRQUyBVcGdyYWRlOiBTY3JpcHRzIC8gcHJlcHJvY2Vz
c2luZyBuZWNlc3NhcnkgdG8gY3JlYXRlIG5ldyBkYXRhYmFzZSBpbiBmdXR1cmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UxYjAyMjE2MjAyMjI4NmJjNGFhMmFlZTI4M2UwNDY0
NGNhNDRmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmgiCisKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChzZXNzaW9uSUQsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNf
X1ZBX0FSR1NfXykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBjb25zdCBTdHJpbmcm
IG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNl
UGF0aDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXJEYXRhYmFzZVBhdGguZ2V0KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgQ0ZCdW5kbGVSZWYg
d2ViS2l0QnVuZGxlID0gQ0ZCdW5kbGVHZXRCdW5kbGVXaXRoSWRlbnRpZmllcihDRlNUUigiY29t
LmFwcGxlLldlYktpdCIpKTsKKyAgICAgICAgbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRh
YmFzZVBhdGguZ2V0KCkgPSBDRlVSTEdldFN0cmluZyhhZG9wdENGKENGQnVuZGxlQ29weVJlc291
cmNlVVJMKHdlYktpdEJ1bmRsZSwgQ0ZTVFIoIkhUVFBTVXBncmFkZUxpc3QiKSwgQ0ZTVFIoImRi
IiksIG51bGxwdHIpKS5nZXQoKSk7CisgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQor
ICAgIHJldHVybiBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aDsKK30KKwor
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkK
KyAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJIVFRQUyBVcGdyYWRlIENoZWNr
ZXIgVGhyZWFkIikpCisgICAgLCBtX2RhdGFiYXNlKG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U+KCkpCisgICAgLCBtX3N0YXRlbWVudChtYWtlVW5pcXVlUmVmPFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZS5nZXQoKSwgIlNFTEVDVCBob3N0IEZST00gaG9z
dHMgV0hFUkUgaG9zdCA9ID87Il9zKSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CisgICAgICAgIGF1dG8gcGF0
aCA9IG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRoKCk7CisgICAgICAgIEFT
U0VSVChwYXRoKTsKKworICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gdGhpcy0+bV9kYXRh
YmFzZS0+b3BlbihwYXRoKTsKKyAgICAgICAgQVNTRVJUKGlzRGF0YWJhc2VPcGVuKTsKKworICAg
ICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwg
ZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVhZHMuCisgICAg
ICAgIHRoaXMtPm1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKworICAgICAg
ICBpbnQgc3RhdGVtZW50UHJlcGFyZWRSZXN1bHQgPSB0aGlzLT5tX3N0YXRlbWVudC0+cHJlcGFy
ZSgpOworICAgICAgICBBU1NFUlQoc3RhdGVtZW50UHJlcGFyZWRSZXN1bHQgPT0gU1FMSVRFX09L
KTsKKworICAgICAgICB0aGlzLT5tX2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHkgPSB0cnVl
OworICAgIH0pOworfQorCitOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcjo6fk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKK3sKKyAgICAvLyBUaGlz
IG9iamVjdCBzaG91bGQgYmUgb3duZWQgYnkgYSBzaW5nbGV0b24gb2JqZWN0LgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpx
dWVyeShTdHJpbmcmJiBob3N0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgaG9zdCA9IGhvc3Qu
aXNvbGF0ZWRDb3B5KCksIHNlc3Npb25JRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCh0aGlzLT5tX2RpZFNldHVwQ29tcGxldGVTdWNj
ZXNzZnVsbHkpOworCisgICAgICAgIGludCBiaW5kVGV4dFJlc3VsdCA9IHRoaXMtPm1fc3RhdGVt
ZW50LT5iaW5kVGV4dCgxLCBXVEZNb3ZlKGhvc3QpKTsKKyAgICAgICAgQVNTRVJUKGJpbmRUZXh0
UmVzdWx0ID09IFNRTElURV9PSyk7CisKKyAgICAgICAgaW50IHN0ZXBSZXN1bHQgPSB0aGlzLT5t
X3N0YXRlbWVudC0+c3RlcCgpOworICAgICAgICBBU1NFUlQoc3RlcFJlc3VsdCA9PSBTUUxJVEVf
Uk9XIHx8IHN0ZXBSZXN1bHQgPT0gU1FMSVRFX0RPTkUpOworCisgICAgICAgIGludCByZXNldFJl
c3VsdCA9IHRoaXMtPm1fc3RhdGVtZW50LT5yZXNldCgpOworICAgICAgICBBU1NFUlQocmVzZXRS
ZXN1bHQgPT0gU1FMSVRFX09LKTsKKworICAgICAgICBib29sIGZvdW5kSG9zdCA9IChzdGVwUmVz
dWx0ID09IFNRTElURV9ST1cpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Np
b25JRCwgInF1ZXJ5IC0gUmFuIHN1Y2Nlc3NmdWxseS4gUmVzdWx0ID0gJXMiLCAoZm91bmRIb3N0
ID8gInRydWUiIDogImZhbHNlIikpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2ZvdW5kSG9zdCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhmb3VuZEhvc3QpOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFE
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjMwM2E3NjE0MGI2MDhkYzU0YThkYTJm
ZGEwOTdlNGU0YjlhZGYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorCisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtR
dWV1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlRGF0YWJhc2U7Citj
bGFzcyBTUUxpdGVTdGF0ZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lv
bklEOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIgeworcHVibGljOgorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7Cisg
ICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CisKKyAgICAvLyBSZXR1cm5zIGB0cnVl
YCBhZnRlciBpbnRlcm5hbCBzZXR1cCBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiBJZiB0aGVy
ZSBpcyBhbiBlcnJvciB3aXRoIHNldHVwLCBvciBpZiBzZXR1cCBpcyBpbi1wcm9ncmVzcywgaXQg
d2lsbCByZXR1cm4gYGZhbHNlYC4KKyAgICBib29sIGRpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVs
bHkoKSBjb25zdCB7IHJldHVybiBtX2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHk7IH07CisK
KyAgICAvLyBRdWVyaWVzIGRhdGFiYXNlIGFmdGVyIHNldHVwIGlzIGNvbXBsZXRlLgorICAgIHZv
aWQgcXVlcnkoU3RyaW5nJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fd29ya1F1
ZXVlOworICAgIFdURjo6VW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFi
YXNlOworICAgIFdURjo6VW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0
ZW1lbnQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9kaWRTZXR1cENvbXBsZXRlU3VjY2Vzc2Z1
bGx5IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEhUVFBTX1VQR1JBREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggMzUxMWY3NTljYzAwMGE0ZmEyOTIxNzdh
YjQ1MDBhYWE0ZDRkMGY1NC4uMGYzMDJkYzY4MTVlMmU5OGIwZDAzMmUzMmI2YzE3MWI1NGY1MzA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTE5MSwzMiArMTkyLDM4IEBAIGF1dG8gTmV0d29ya0xv
YWRDaGVja2VyOjphY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcihTdHJpbmcm
JiBtZXNzYWdlCiB9CiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLXZvaWQgTmV0d29ya0xv
YWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgY29uc3QKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlm
TmVlZGVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVxdWVz
dExvYWRUeXBlICE9IExvYWRUeXBlOjpNYWluRnJhbWUpCisgICAgaWYgKG1fcmVxdWVzdExvYWRU
eXBlICE9IExvYWRUeXBlOjpNYWluRnJhbWUpIHsKKyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVXNlIGR1bW15IGxpc3QgZm9yIG5v
dy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB1cGdyYWRhYmxl
SG9zdHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJ3d3cuYmJj
LmNvbSJfcywgLy8gKHNvdXJjZTogaHR0cHM6Ly93aHlub2h0dHBzLmNvbSkKLSAgICAgICAgInd3
dy5zcGVlZHRlc3QubmV0Il9zLCAvLyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQot
ICAgICAgICAid3d3LmJlYS5nb3YiX3MgLy8gKHNvdXJjZTogaHR0cHM6Ly9wdWxzZS5jaW8uZ292
L2RhdGEvZG9tYWlucy9odHRwcy5jc3YpCi0gICAgfTsKKyAgICB9CiAKICAgICBhdXRvJiB1cmwg
PSByZXF1ZXN0LnVybCgpOwogCiAgICAgLy8gT25seSB1cGdyYWRlIGh0dHAgdXJscy4KLSAgICBp
ZiAoIXVybC5wcm90b2NvbElzKCJodHRwIikpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0
cCIpKSB7CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKLSAgICBpZiAoIXVwZ3JhZGFibGVIb3N0cy5nZXQoKS5jb250YWlucyh1cmwu
aG9zdCgpLnRvU3RyaW5nKCkpKQorICAgIGF1dG8mIGh0dHBzVXBncmFkZUNoZWNrZXIgPSBOZXR3
b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKwor
ICAgIC8vIERvIG5vdCB3YWl0IGZvciBodHRwc1VwZ3JhZGVDaGVja2VyIHRvIGNvbXBsZXRlIGl0
cyBzZXR1cC4KKyAgICBpZiAoIWh0dHBzVXBncmFkZUNoZWNrZXIuZGlkU2V0dXBDb21wbGV0ZVN1
Y2Nlc3NmdWxseSgpKSB7CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBhdXRvIG5ld1VSTCA9IHVybDsKLSAgICBuZXdVUkwu
c2V0UHJvdG9jb2woImh0dHBzIl9zKTsKLSAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAg
IGh0dHBzVXBncmFkZUNoZWNrZXIucXVlcnkodXJsLmhvc3QoKS50b1N0cmluZygpLCBtX3Nlc3Np
b25JRCwgW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5k
bGVyKV0gKGJvb2wgZm91bmRIb3N0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGZvdW5kSG9zdCkg
eworICAgICAgICAgICAgYXV0byBuZXdVUkwgPSByZXF1ZXN0LnVybCgpOworICAgICAgICAgICAg
bmV3VVJMLnNldFByb3RvY29sKCJodHRwcyJfcyk7CisgICAgICAgICAgICByZXF1ZXN0LnNldFVS
TChuZXdVUkwpOworICAgICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhcHBs
eUhUVFBTVXBncmFkZUlmTmVlZGVkIC0gVXBncmFkZSBVUkwgZnJvbSBIVFRQIHRvIEhUVFBTIik7
CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgfSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCiAKQEAgLTIyNSwzNyArMjMyLDQyIEBAIHZvaWQgTmV0
d29ya0xvYWRDaGVja2VyOjpjaGVja1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Q29udGVudFNlY3VyaXR5CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCA9IHJl
cXVlc3Q7CiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLSAgICBhcHBseUhUVFBTVXBncmFk
ZUlmTmVlZGVkKHJlcXVlc3QpOworICAgIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV1RGTW92
ZShyZXF1ZXN0KSwgW3RoaXMsIGNsaWVudCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9y
aWdpbmFsUmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXF1ZXN0KSBt
dXRhYmxlIHsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAotICAgIGlmIChhdXRv
KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkg
ewotICAgICAgICBpZiAoaXNSZWRpcmVjdGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZSA9
IG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgPyBDb250ZW50
U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRpb24gOiBDb250ZW50
U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQ7Ci0gICAgICAgICAgICBj
b250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1
ZXN0LCB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNl
Y3VyaXR5UG9saWN5KHJlcXVlc3QsIGNsaWVudCkpIHsKLSAgICAgICAgICAgIGhhbmRsZXIoYWNj
ZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBT
ZWN1cml0eSBQb2xpY3kuIl9zKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChh
dXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSkgeworICAgICAgICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7CisgICAgICAgICAgICAgICAg
YXV0byB0eXBlID0gbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0
ZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlv
biA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZDsKKyAg
ICAgICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVl
c3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdCwgY2xpZW50KSkgewor
ICAgICAgICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhh
bmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1
bGVzRm9yTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFu
ZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byBy
ZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdC5lcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCkpOwotICAgICAg
ICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0YXR1cy5ibG9ja2Vk
TG9hZCkgewotICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JW
YWxpZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKSwgb3JpZ2luYWxSZXF1ZXN0ID0gV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpXShh
dXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUo
KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlv
bigpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
cmVzdWx0LnZhbHVlKCkuc3RhdHVzLmJsb2NrZWRMb2FkKSB7CisgICAgICAgICAgICAgICAgaGFu
ZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxvY2tl
ZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0
aWNSZWRpcmVjdChXVEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVzdWx0LnZhbHVl
KCkucmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwotICAgIH0pOworICAgICAgICAgICAgY29u
dGludWVDaGVja2luZ1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoV1RGTW92ZShvcmlnaW5h
bFJlcXVlc3QpLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKKyAgICAgICAgfSk7CiAjZWxzZQotICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JE
b1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0
T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShIVFRQU19V
UEdSQURFKQorICAgIH0pOworI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQorCiB9CiAK
IHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50
aGV0aWNSZWRpcmVjdChSZXNvdXJjZVJlcXVlc3QmJiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNl
UmVxdWVzdCYmIGN1cnJlbnRSZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaApp
bmRleCA2MjI3Yzk1N2Q0NGNlNjJiNjQzNjAzM2E4MzQ1MzgxNjkwNzdlOGM4Li5kYmQ5NjFhNDkx
MzM3ZmU5ZWY3ZjdmMWFlY2U2MGU3NzQ2ZjBkNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTI1LDE2ICsyNSwyMyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3Rl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3Ry
dWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwor
ZW51bSBjbGFzcyBQcmVmbGlnaHRQb2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSA6IGJvb2w7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTEz
LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShIVFRQU19VUEdSQURF
KQotICAgIHZvaWQgYXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFE
RSkKIAogICAgIFdlYkNvcmU6OkZldGNoT3B0aW9ucyBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjVjMmZlZGJmYzdlNzc5
YjUxZDM1MGUxYzFlOWU2YTU1MDQ1OGVlMy4uMjM0OGZjODUzY2FkMGY3NTE1YTFkZmQ4ZTk5NWJl
NGY3YmRiNzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CkBA
IC0yMDQsNiArMjA1LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
JiBuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXI7IH07CisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKIHByaXZh
dGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTM5
Myw2ICszOTgsOSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5l
Y3Rpb25zOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKyAgICBOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlciBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOworI2VuZGlm
IC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCAwNTVlYzVlNTc2MTAyZjc4NjQ5ODQ3YWUzZTM0YWUzZTNjMmMyNGEzLi5i
NTJhZTZiZDdiNjMxOWQ2MTYyNmI0YmFlMDgzYWFjOTU2ODU2MjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTI3LDYgKzI3LDcgQEAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFza0Jsb2IuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmZmI4Zjk1MDM2Yjg1MmI3ODU0YzQ5NGY0NDIwYmE5NThhMTI4MmQ1Li45NGZkNTYxZTMwMzMz
MGMzNWMzMGM4YTBkZjEzZTZkYzNmNGRlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzcsNiArMTAzNyw3IEBACiAJCTU3RENF
REMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcg
LyogTW9ja0xvY2FsU2VydmljZS5oICovOyB9OwogCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcg
LyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5l
Y3Rpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50
aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdEQ0VEQzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oICovOyB9OworCQk1OEU5NzdERjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU4RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oICovOyB9OwogCQk1ODc3NDNBNjIxQzMwQkJFMDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlz
dC5kYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg3
NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgKi87IH07CiAJCTVD
MEIxNzc4MUU3Qzg4MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MEIxNzc0MUU3Qzg3OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJNUMwQjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTM0MDIsNiArMzQwMyw4IEBACiAJCTU3RENF
REM2MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTW9ja0xvY2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdEQ0VEQzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1OEU5NzdEQzIxQzQ5OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5
NzdERDIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0
IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvSFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5l
dHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBC
MTc3NTFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdl
cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY0MjIsNiAr
NjQyNSw4IEBACiAJCQkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFz
ay5oICovLAogCQkJCTUzOUVCNTQ2MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcCAqLywKIAkJCQk1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFU
YXNrQmxvYi5oICovLAorCQkJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlci5jcHAgKi8sCisJCQkJNThFOTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8q
IE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi8sCiAJCQkJODM5OTAxRkYxQkU5QTAxQjAw
MEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCAqLywKIAkJCQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2
NTMgLyogTmV0d29ya0xvYWQuaCAqLywKIAkJCQk0MTAzRkJBMjIwNjFCREI4MDBDMkVBRjggLyog
TmV0d29ya0xvYWRDaGVja2VyLmNwcCAqLywKQEAgLTkxMTMsNiArOTExOCw3IEBACiAJCQkJNUNC
QzlCOEUxQzY1MkNBMDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNCQTQ3RDExREMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzMjE1OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0
YVRhc2tDb2NvYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2
IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzk5
MDIwMzFCRTlBMDJCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzRDQ1NEQ3MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM5MTQ5NjUxQkVBODM4NTAwRDJEOTUzIC8qIE5ldHdvcmtMb2FkUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357730</attachid>
            <date>2018-12-19 14:59:46 -0800</date>
            <delta_ts>2018-12-19 15:28:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181219145936.patch</filename>
            <type>text/plain</type>
            <size>23029</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5MDQ1MTcxZmU1ZGUyZmVj
NDVjMWIxYjMzMDg1MDkzODU5ZmU3NzkuLjZhMDE0Njc5MGI4NjgwMjYyNmJhNjUzNjUzYWQ1Njc5
ZjI4ZTdkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTkgIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjp+TmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcjo6cXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmRpZFNldHVwQ29tcGxldGVT
dWNjZXNzZnVsbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlI
VFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
Q2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTEyLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gRm9yY2Ugc3lzdGVtIGNh
bWVyYS9taWNyb3Bob25lIFRDQyBwcm9tcHQgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM1NGE2MzY0ZmFkZTU1OWZiYTNhNmZkZmZkZThjYTFlZGNjNDdkZDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
IgorCisjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCisj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAi
JXAgLSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgU3RyaW5nJiBuZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGg7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0
YWJhc2VQYXRoLmdldCgpLmlzTnVsbCgpKSB7CisgICAgICAgIENGQnVuZGxlUmVmIHdlYktpdEJ1
bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5X
ZWJLaXQiKSk7CisgICAgICAgIG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRo
LmdldCgpID0gQ0ZVUkxHZXRTdHJpbmcoYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3
ZWJLaXRCdW5kbGUsIENGU1RSKCJIVFRQU1VwZ3JhZGVMaXN0IiksIENGU1RSKCJkYiIpLCBudWxs
cHRyKSkuZ2V0KCkpOworICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKyAgICByZXR1
cm4gbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGg7Cit9CisKK05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCisgICAgOiBt
X3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiSFRUUFMgVXBncmFkZSBDaGVja2VyIFRocmVh
ZCIpKQorICAgICwgbV9kYXRhYmFzZShtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlPigpKQorICAgICwgbV9zdGF0ZW1lbnQobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+KG1fZGF0YWJhc2UuZ2V0KCksICJTRUxFQ1QgaG9zdCBGUk9NIGhvc3RzIFdIRVJF
IGhvc3QgPSA/OyJfcykpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBhdXRvIHBhdGggPSBuZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpOworICAgICAgICBBU1NFUlQocGF0
aCk7CisKKyAgICAgICAgYm9vbCBpc0RhdGFiYXNlT3BlbiA9IHRoaXMtPm1fZGF0YWJhc2UtPm9w
ZW4ocGF0aCk7CisgICAgICAgIEFTU0VSVChpc0RhdGFiYXNlT3Blbik7CisgICAgICAgIGlmICgh
aXNEYXRhYmFzZU9wZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gU2luY2Ug
d2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2Nr
cyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICB0aGlzLT5tX2Rh
dGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CisKKyAgICAgICAgaW50IGlzU3RhdGVt
ZW50UHJlcGFyZWQgPSAodGhpcy0+bV9zdGF0ZW1lbnQtPnByZXBhcmUoKSA9PSBTUUxJVEVfT0sp
OworICAgICAgICBBU1NFUlQoaXNTdGF0ZW1lbnRQcmVwYXJlZCk7CisgICAgICAgIGlmICghaXNT
dGF0ZW1lbnRQcmVwYXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLT5t
X2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHkgPSB0cnVlOworICAgIH0pOworfQorCitOT19S
RVRVUk5fRFVFX1RPX0FTU0VSVCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyKCkKK3sKKyAgICAvLyBUaGlzIG9iamVjdCBzaG91bGQgYmUgb3du
ZWQgYnkgYSBzaW5nbGV0b24gb2JqZWN0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpxdWVyeShTdHJpbmcmJiBob3N0LCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fd29y
a1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgaG9zdCA9IGhvc3QuaXNvbGF0ZWRDb3B5KCksIHNlc3Np
b25JRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IEFTU0VSVCh0aGlzLT5tX2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHkpOworCisgICAgICAg
IGludCBiaW5kVGV4dFJlc3VsdCA9IHRoaXMtPm1fc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBXVEZN
b3ZlKGhvc3QpKTsKKyAgICAgICAgQVNTRVJUKGJpbmRUZXh0UmVzdWx0ID09IFNRTElURV9PSyk7
CisKKyAgICAgICAgaW50IHN0ZXBSZXN1bHQgPSB0aGlzLT5tX3N0YXRlbWVudC0+c3RlcCgpOwor
ICAgICAgICBBU1NFUlQoc3RlcFJlc3VsdCA9PSBTUUxJVEVfUk9XIHx8IHN0ZXBSZXN1bHQgPT0g
U1FMSVRFX0RPTkUpOworCisgICAgICAgIGludCByZXNldFJlc3VsdCA9IHRoaXMtPm1fc3RhdGVt
ZW50LT5yZXNldCgpOworICAgICAgICBBU1NFUlQocmVzZXRSZXN1bHQgPT0gU1FMSVRFX09LKTsK
KworICAgICAgICBib29sIGZvdW5kSG9zdCA9IChzdGVwUmVzdWx0ID09IFNRTElURV9ST1cpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInF1ZXJ5IC0gUmFuIHN1
Y2Nlc3NmdWxseS4gUmVzdWx0ID0gJXMiLCAoZm91bmRIb3N0ID8gInRydWUiIDogImZhbHNlIikp
OworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2ZvdW5kSG9zdCwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhm
b3VuZEhvc3QpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNjMwM2E3NjE0MGI2MDhkYzU0YThkYTJmZGEwOTdlNGU0YjlhZGYxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVTdGF0ZW1lbnQ7
Cit9CisKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworcHVibGljOgor
ICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CisgICAgfk5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKCk7CisKKyAgICAvLyBSZXR1cm5zIGB0cnVlYCBhZnRlciBpbnRlcm5hbCBzZXR1
cCBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiBJZiB0aGVyZSBpcyBhbiBlcnJvciB3aXRoIHNl
dHVwLCBvciBpZiBzZXR1cCBpcyBpbi1wcm9ncmVzcywgaXQgd2lsbCByZXR1cm4gYGZhbHNlYC4K
KyAgICBib29sIGRpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHkoKSBjb25zdCB7IHJldHVybiBt
X2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHk7IH07CisKKyAgICAvLyBRdWVyaWVzIGRhdGFi
YXNlIGFmdGVyIHNldHVwIGlzIGNvbXBsZXRlLgorICAgIHZvaWQgcXVlcnkoU3RyaW5nJiYsIFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0
ZToKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFdURjo6VW5pcXVl
UmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFdURjo6VW5pcXVl
UmVmPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7CisgICAgc3RkOjphdG9t
aWM8Ym9vbD4gbV9kaWRTZXR1cENvbXBsZXRlU3VjY2Vzc2Z1bGx5IHsgZmFsc2UgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAKaW5kZXggMzUxMWY3NTljYzAwMGE0ZmEyOTIxNzdhYjQ1MDBhYWE0ZDRkMGY1NC4uMGYz
MDJkYzY4MTVlMmU5OGIwZDAzMmUzMmI2YzE3MWI1NGY1MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4K
QEAgLTE5MSwzMiArMTkyLDM4IEBAIGF1dG8gTmV0d29ya0xvYWRDaGVja2VyOjphY2Nlc3NDb250
cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcihTdHJpbmcmJiBtZXNzYWdlCiB9CiAKICNpZiBF
TkFCTEUoSFRUUFNfVVBHUkFERSkKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBT
VXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKK3ZvaWQgTmV0
d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9IExvYWRUeXBl
OjpNYWluRnJhbWUpCisgICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9IExvYWRUeXBlOjpNYWlu
RnJhbWUpIHsKKyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gVXNlIGR1bW15IGxpc3QgZm9yIG5vdy4KLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB1cGdyYWRhYmxlSG9zdHMgPSBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJ3d3cuYmJjLmNvbSJfcywgLy8gKHNvdXJjZTog
aHR0cHM6Ly93aHlub2h0dHBzLmNvbSkKLSAgICAgICAgInd3dy5zcGVlZHRlc3QubmV0Il9zLCAv
LyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQotICAgICAgICAid3d3LmJlYS5nb3Yi
X3MgLy8gKHNvdXJjZTogaHR0cHM6Ly9wdWxzZS5jaW8uZ292L2RhdGEvZG9tYWlucy9odHRwcy5j
c3YpCi0gICAgfTsKKyAgICB9CiAKICAgICBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogCiAg
ICAgLy8gT25seSB1cGdyYWRlIGh0dHAgdXJscy4KLSAgICBpZiAoIXVybC5wcm90b2NvbElzKCJo
dHRwIikpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cCIpKSB7CisgICAgICAgIGhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAo
IXVwZ3JhZGFibGVIb3N0cy5nZXQoKS5jb250YWlucyh1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKQor
ICAgIGF1dG8mIGh0dHBzVXBncmFkZUNoZWNrZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkubmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKworICAgIC8vIERvIG5vdCB3YWl0IGZv
ciBodHRwc1VwZ3JhZGVDaGVja2VyIHRvIGNvbXBsZXRlIGl0cyBzZXR1cC4KKyAgICBpZiAoIWh0
dHBzVXBncmFkZUNoZWNrZXIuZGlkU2V0dXBDb21wbGV0ZVN1Y2Nlc3NmdWxseSgpKSB7CisgICAg
ICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
LSAgICBhdXRvIG5ld1VSTCA9IHVybDsKLSAgICBuZXdVUkwuc2V0UHJvdG9jb2woImh0dHBzIl9z
KTsKLSAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAgIGh0dHBzVXBncmFkZUNoZWNrZXIu
cXVlcnkodXJsLmhvc3QoKS50b1N0cmluZygpLCBtX3Nlc3Npb25JRCwgW3JlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGJvb2wgZm91bmRIb3N0
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGZvdW5kSG9zdCkgeworICAgICAgICAgICAgYXV0byBu
ZXdVUkwgPSByZXF1ZXN0LnVybCgpOworICAgICAgICAgICAgbmV3VVJMLnNldFByb3RvY29sKCJo
dHRwcyJfcyk7CisgICAgICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAgICAgICB9
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVk
IC0gVXBncmFkZSBVUkwgZnJvbSBIVFRQIHRvIEhUVFBTIik7CisgICAgICAgIGhhbmRsZXIoV1RG
TW92ZShyZXF1ZXN0KSk7CisgICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JB
REUpCiAKQEAgLTIyNSwzNyArMjMyLDQyIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVj
a1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29udGVudFNlY3VyaXR5CiAgICAg
UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAKICNpZiBFTkFCTEUo
SFRUUFNfVVBHUkFERSkKLSAgICBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKHJlcXVlc3QpOwor
ICAgIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIGNs
aWVudCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVzdCA9IFdURk1v
dmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXF1ZXN0KSBtdXRhYmxlIHsKICNlbmRpZiAvLyBF
TkFCTEUoSFRUUFNfVVBHUkFERSkKIAotICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewotICAgICAgICBpZiAoaXNSZWRp
cmVjdGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fb3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2Vj
dXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRpb24gOiBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2Vj
dXJlUmVxdWVzdFR5cGU6OkxvYWQ7Ci0gICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kt
PnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKLSAgICAgICAg
fQotICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3Qs
IGNsaWVudCkpIHsKLSAgICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFs
aWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgeworICAgICAgICAgICAgaWYg
KGlzUmVkaXJlY3RlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byB0eXBlID0gbV9vcHRpb25z
Lm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZDsKKyAgICAgICAgICAgICAgICBjb250ZW50
U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0
eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNBbGxvd2VkQnlDb250ZW50
U2VjdXJpdHlQb2xpY3kocmVxdWVzdCwgY2xpZW50KSkgeworICAgICAgICAgICAgICAgIGhhbmRs
ZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVz
dCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC5lcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCkpOwotICAgICAgICAgICAgaGFuZGxlcihXVEZNb3Zl
KHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0YXR1cy5ibG9ja2VkTG9hZCkgewotICAgICAgICAgICAg
aGFuZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxv
Y2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CisgICAgICAgIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdURk1v
dmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgb3JpZ2luYWxS
ZXF1ZXN0ID0gV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVyKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuc3RhdHVz
LmJsb2NrZWRMb2FkKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250
cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lv
biJfcykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAg
ICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChXVEZNb3ZlKG9y
aWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVzdWx0LnZhbHVlKCkucmVxdWVzdCksIFdURk1vdmUo
aGFuZGxlcikpOwotICAgIH0pOworICAgICAgICAgICAgY29udGludWVDaGVja2luZ1JlcXVlc3RP
ckRvU3ludGhldGljUmVkaXJlY3QoV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpLCBXVEZNb3ZlKHJl
c3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICAgICAgfSk7CiAj
ZWxzZQotICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGlyZWN0KFdU
Rk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVy
KSk7CisgICAgICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1JlZGlyZWN0
KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5k
bGVyKSk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorICAgIH0pOworI2Vu
ZGlmIC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQorCiB9CiAKIHZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChSZXNvdXJj
ZVJlcXVlc3QmJiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIGN1cnJlbnRSZXF1
ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA2MjI3Yzk1N2Q0NGNlNjJi
NjQzNjAzM2E4MzQ1MzgxNjkwNzdlOGM4Li5kYmQ5NjFhNDkxMzM3ZmU5ZWY3ZjdmMWFlY2U2MGU3
NzQ2ZjBkNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmgKQEAgLTI1LDE2ICsyNSwyMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZldGNo
T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0IENvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworZW51bSBjbGFzcyBQcmVmbGlnaHRQ
b2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSA6IGJv
b2w7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTEzLDcgKzEyMCw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQotICAgIHZvaWQgYXBwbHlIVFRQ
U1VwZ3JhZGVJZk5lZWRlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICB2
b2lkIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBj
b25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAogICAgIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKaW5kZXggZjVjMmZlZGJmYzdlNzc5YjUxZDM1MGUxYzFlOWU2YTU1MDQ1
OGVlMy4uMjM0OGZjODUzY2FkMGY3NTE1YTFkZmQ4ZTk5NWJlNGY3YmRiNzM0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CkBAIC0yMDQsNiArMjA1LDEwIEBAIHB1
YmxpYzoKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShIVFRQU19VUEdS
QURFKQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBuZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7IH07CisjZW5k
aWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nl
c3MoKTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTM5Myw2ICszOTgsOSBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKyAgICBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciBt
X25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOworI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdS
QURFKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwNTVlYzVl
NTc2MTAyZjc4NjQ5ODQ3YWUzZTM0YWUzZTNjMmMyNGEzLi5iNTJhZTZiZDdiNjMxOWQ2MTYyNmI0
YmFlMDgzYWFjOTU2ODU2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3LDYgKzI3LDcgQEAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCitO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZmI4Zjk1MDM2Yjg1MmI3ODU0
YzQ5NGY0NDIwYmE5NThhMTI4MmQ1Li45NGZkNTYxZTMwMzMzMGMzNWMzMGM4YTBkZjEzZTZkYzNm
NGRlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwMzcsNiArMTAzNyw3IEBACiAJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
ICovOyB9OwogCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VE
QzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdE
Q0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzkyMTRGNEU0
MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9OworCQk1OEU5NzdE
RjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4RTk3N0REMjFDNDlBMDAw
MDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovOyB9OwogCQk1ODc3NDNB
NjIxQzMwQkJFMDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0
IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4MEUwMEU5MTIz
QyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3OUMwMEU5MTIz
QyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNUMw
QjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3
NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKQEAgLTM0MDIsNiArMzQwMyw4IEBACiAJCTU3RENFREM2MjE0RjE4MzAwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xvY2Fs
Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzkyMTRG
NEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdEQzIxQzQ5
OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdERDIxQzQ5QTAwMDA1RDkyQTYg
LyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3Qu
ZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvSFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0
d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlDMDBFOTEyM0Mg
LyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY0MjIsNiArNjQyNSw4IEBACiAJCQkJNUNCQzlC
ODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovLAogCQkJCTUzOUVCNTQ2
MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCAqLywKIAkJCQk1MzlF
QjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICovLAorCQkJCTU4
RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAg
Ki8sCisJCQkJNThFOTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmggKi8sCiAJCQkJODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2Fk
LmNwcCAqLywKIAkJCQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCAq
LywKIAkJCQk0MTAzRkJBMjIwNjFCREI4MDBDMkVBRjggLyogTmV0d29ya0xvYWRDaGVja2VyLmNw
cCAqLywKQEAgLTkxMTMsNiArOTExOCw3IEBACiAJCQkJNUNCQzlCOEUxQzY1MkNBMDAwQThGRENG
IC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNCQTQ3RDExREMyRUY1
RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
MjE1OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzk5MDIwMzFCRTlBMDJCMDAwRjM2NTMg
LyogTmV0d29ya0xvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDQ1NEQ3MUJFOUQzQzQwMDZD
OTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5MTQ5NjUx
QkVBODM4NTAwRDJEOTUzIC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357739</attachid>
            <date>2018-12-19 15:28:03 -0800</date>
            <delta_ts>2018-12-19 20:04:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192736-20181219152753.patch</filename>
            <type>text/plain</type>
            <size>22981</size>
            <attacher name="Vivek Seth">v_seth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5MDQ1MTcxZmU1ZGUyZmVj
NDVjMWIxYjMzMDg1MDkzODU5ZmU3NzkuLjZhMDE0Njc5MGI4NjgwMjYyNmJhNjUzNjUzYWQ1Njc5
ZjI4ZTdkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTItMTkgIFZpdmVrIFNl
dGggIDx2X3NldGhAYXBwbGUuY29tPgorCisgICAgICAgIEhUVFBTIFVwZ3JhZGU6IFVzZSBmdWxs
IHNxbGl0ZSB1cGdyYWRlIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjczNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU4NTE0Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjp+TmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcjo6cXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6OmRpZFNldHVwQ29tcGxldGVT
dWNjZXNzZnVsbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6YXBwbHlI
VFRQU1VwZ3JhZGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
Q2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTEyLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gRm9yY2Ugc3lzdGVtIGNh
bWVyYS9taWNyb3Bob25lIFRDQyBwcm9tcHQgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjczYjQ2YzA5ZjZiZmRiNTc4NmY2ODVhZTQ2ZDU0YTMzNTljMDg5Y2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
IgorCisjaWYgRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCisj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAi
JXAgLSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgU3RyaW5nJiBuZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGg7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0
YWJhc2VQYXRoLmdldCgpLmlzTnVsbCgpKSB7CisgICAgICAgIENGQnVuZGxlUmVmIHdlYktpdEJ1
bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5X
ZWJLaXQiKSk7CisgICAgICAgIG5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyRGF0YWJhc2VQYXRo
LmdldCgpID0gQ0ZVUkxHZXRTdHJpbmcoYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTCh3
ZWJLaXRCdW5kbGUsIENGU1RSKCJIVFRQU1VwZ3JhZGVMaXN0IiksIENGU1RSKCJkYiIpLCBudWxs
cHRyKSkuZ2V0KCkpOworICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKyAgICByZXR1
cm4gbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXJEYXRhYmFzZVBhdGg7Cit9CisKK05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCisgICAgOiBt
X3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiSFRUUFMgVXBncmFkZSBDaGVja2VyIFRocmVh
ZCIpKQorICAgICwgbV9kYXRhYmFzZShtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlPigpKQorICAgICwgbV9zdGF0ZW1lbnQobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+KG1fZGF0YWJhc2UuZ2V0KCksICJTRUxFQ1QgaG9zdCBGUk9NIGhvc3RzIFdIRVJF
IGhvc3QgPSA/OyJfcykpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBhdXRvIHBhdGggPSBuZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlckRhdGFiYXNlUGF0aCgpOworICAgICAgICBBU1NFUlQocGF0
aCk7CisKKyAgICAgICAgYm9vbCBpc0RhdGFiYXNlT3BlbiA9IG1fZGF0YWJhc2UtPm9wZW4ocGF0
aCk7CisgICAgICAgIEFTU0VSVChpc0RhdGFiYXNlT3Blbik7CisgICAgICAgIGlmICghaXNEYXRh
YmFzZU9wZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gU2luY2Ugd2UgYXJl
IHVzaW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkg
YmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICBtX2RhdGFiYXNlLT5kaXNh
YmxlVGhyZWFkaW5nQ2hlY2tzKCk7CisKKyAgICAgICAgaW50IGlzU3RhdGVtZW50UHJlcGFyZWQg
PSAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSA9PSBTUUxJVEVfT0spOworICAgICAgICBBU1NFUlQo
aXNTdGF0ZW1lbnRQcmVwYXJlZCk7CisgICAgICAgIGlmICghaXNTdGF0ZW1lbnRQcmVwYXJlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2RpZFNldHVwQ29tcGxldGVTdWNjZXNz
ZnVsbHkgPSB0cnVlOworICAgIH0pOworfQorCitOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6fk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKK3sK
KyAgICAvLyBUaGlzIG9iamVjdCBzaG91bGQgYmUgb3duZWQgYnkgYSBzaW5nbGV0b24gb2JqZWN0
LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyOjpxdWVyeShTdHJpbmcmJiBob3N0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
aG9zdCA9IGhvc3QuaXNvbGF0ZWRDb3B5KCksIHNlc3Npb25JRCwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChtX2RpZFNldHVwQ29tcGxl
dGVTdWNjZXNzZnVsbHkpOworCisgICAgICAgIGludCBiaW5kVGV4dFJlc3VsdCA9IG1fc3RhdGVt
ZW50LT5iaW5kVGV4dCgxLCBXVEZNb3ZlKGhvc3QpKTsKKyAgICAgICAgQVNTRVJUKGJpbmRUZXh0
UmVzdWx0ID09IFNRTElURV9PSyk7CisKKyAgICAgICAgaW50IHN0ZXBSZXN1bHQgPSBtX3N0YXRl
bWVudC0+c3RlcCgpOworICAgICAgICBBU1NFUlQoc3RlcFJlc3VsdCA9PSBTUUxJVEVfUk9XIHx8
IHN0ZXBSZXN1bHQgPT0gU1FMSVRFX0RPTkUpOworCisgICAgICAgIGludCByZXNldFJlc3VsdCA9
IG1fc3RhdGVtZW50LT5yZXNldCgpOworICAgICAgICBBU1NFUlQocmVzZXRSZXN1bHQgPT0gU1FM
SVRFX09LKTsKKworICAgICAgICBib29sIGZvdW5kSG9zdCA9IChzdGVwUmVzdWx0ID09IFNRTElU
RV9ST1cpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInF1ZXJ5
IC0gUmFuIHN1Y2Nlc3NmdWxseS4gUmVzdWx0ID0gJXMiLCAoZm91bmRIb3N0ID8gInRydWUiIDog
ImZhbHNlIikpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2ZvdW5kSG9zdCwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBj
YWxsYmFjayhmb3VuZEhvc3QpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNjMwM2E3NjE0MGI2MDhkYzU0YThkYTJmZGEwOTdlNGU0Yjlh
ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorCisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVT
dGF0ZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgewor
cHVibGljOgorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CisgICAgfk5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyKCk7CisKKyAgICAvLyBSZXR1cm5zIGB0cnVlYCBhZnRlciBpbnRl
cm5hbCBzZXR1cCBpcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiBJZiB0aGVyZSBpcyBhbiBlcnJv
ciB3aXRoIHNldHVwLCBvciBpZiBzZXR1cCBpcyBpbi1wcm9ncmVzcywgaXQgd2lsbCByZXR1cm4g
YGZhbHNlYC4KKyAgICBib29sIGRpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHkoKSBjb25zdCB7
IHJldHVybiBtX2RpZFNldHVwQ29tcGxldGVTdWNjZXNzZnVsbHk7IH07CisKKyAgICAvLyBRdWVy
aWVzIGRhdGFiYXNlIGFmdGVyIHNldHVwIGlzIGNvbXBsZXRlLgorICAgIHZvaWQgcXVlcnkoU3Ry
aW5nJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KworcHJpdmF0ZToKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFdU
Rjo6VW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFdU
Rjo6VW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7CisgICAg
c3RkOjphdG9taWM8Ym9vbD4gbV9kaWRTZXR1cENvbXBsZXRlU3VjY2Vzc2Z1bGx5IHsgZmFsc2Ug
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEhUVFBT
X1VQR1JBREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHAKaW5kZXggMzUxMWY3NTljYzAwMGE0ZmEyOTIxNzdhYjQ1MDBhYWE0ZDRk
MGY1NC4uMGYzMDJkYzY4MTVlMmU5OGIwZDAzMmUzMmI2YzE3MWI1NGY1MzA2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KQEAgLTE5MSwzMiArMTkyLDM4IEBAIGF1dG8gTmV0d29ya0xvYWRDaGVja2VyOjph
Y2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcihTdHJpbmcmJiBtZXNzYWdlCiB9
CiAKICNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjph
cHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QK
K3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjphcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9
IExvYWRUeXBlOjpNYWluRnJhbWUpCisgICAgaWYgKG1fcmVxdWVzdExvYWRUeXBlICE9IExvYWRU
eXBlOjpNYWluRnJhbWUpIHsKKyAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gVXNlIGR1bW15IGxpc3QgZm9yIG5vdy4KLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiB1cGdyYWRhYmxlSG9zdHMgPSBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgICJ3d3cuYmJjLmNvbSJfcywgLy8g
KHNvdXJjZTogaHR0cHM6Ly93aHlub2h0dHBzLmNvbSkKLSAgICAgICAgInd3dy5zcGVlZHRlc3Qu
bmV0Il9zLCAvLyAoc291cmNlOiBodHRwczovL3doeW5vaHR0cHMuY29tKQotICAgICAgICAid3d3
LmJlYS5nb3YiX3MgLy8gKHNvdXJjZTogaHR0cHM6Ly9wdWxzZS5jaW8uZ292L2RhdGEvZG9tYWlu
cy9odHRwcy5jc3YpCi0gICAgfTsKKyAgICB9CiAKICAgICBhdXRvJiB1cmwgPSByZXF1ZXN0LnVy
bCgpOwogCiAgICAgLy8gT25seSB1cGdyYWRlIGh0dHAgdXJscy4KLSAgICBpZiAoIXVybC5wcm90
b2NvbElzKCJodHRwIikpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cCIpKSB7CisgICAg
ICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
LSAgICBpZiAoIXVwZ3JhZGFibGVIb3N0cy5nZXQoKS5jb250YWlucyh1cmwuaG9zdCgpLnRvU3Ry
aW5nKCkpKQorICAgIGF1dG8mIGh0dHBzVXBncmFkZUNoZWNrZXIgPSBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkubmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKKworICAgIC8vIERvIG5v
dCB3YWl0IGZvciBodHRwc1VwZ3JhZGVDaGVja2VyIHRvIGNvbXBsZXRlIGl0cyBzZXR1cC4KKyAg
ICBpZiAoIWh0dHBzVXBncmFkZUNoZWNrZXIuZGlkU2V0dXBDb21wbGV0ZVN1Y2Nlc3NmdWxseSgp
KSB7CisgICAgICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBhdXRvIG5ld1VSTCA9IHVybDsKLSAgICBuZXdVUkwuc2V0UHJvdG9jb2wo
Imh0dHBzIl9zKTsKLSAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOworICAgIGh0dHBzVXBncmFk
ZUNoZWNrZXIucXVlcnkodXJsLmhvc3QoKS50b1N0cmluZygpLCBtX3Nlc3Npb25JRCwgW3JlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGJvb2wg
Zm91bmRIb3N0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGZvdW5kSG9zdCkgeworICAgICAgICAg
ICAgYXV0byBuZXdVUkwgPSByZXF1ZXN0LnVybCgpOworICAgICAgICAgICAgbmV3VVJMLnNldFBy
b3RvY29sKCJodHRwcyJfcyk7CisgICAgICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOwor
ICAgICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhcHBseUhUVFBTVXBncmFk
ZUlmTmVlZGVkIC0gVXBncmFkZSBVUkwgZnJvbSBIVFRQIHRvIEhUVFBTIik7CisgICAgICAgIGhh
bmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEhU
VFBTX1VQR1JBREUpCiAKQEAgLTIyNSwzNyArMjMyLDQyIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjpjaGVja1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29udGVudFNlY3Vy
aXR5CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAKICNp
ZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKLSAgICBhcHBseUhUVFBTVXBncmFkZUlmTmVlZGVkKHJl
cXVlc3QpOworICAgIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV1RGTW92ZShyZXF1ZXN0KSwg
W3RoaXMsIGNsaWVudCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdpbmFsUmVxdWVz
dCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXF1ZXN0KSBtdXRhYmxlIHsKICNl
bmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAotICAgIGlmIChhdXRvKiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewotICAgICAgICBp
ZiAoaXNSZWRpcmVjdGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fb3B0aW9ucy5t
b2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgPyBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6Ok5hdmlnYXRpb24gOiBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQ7Ci0gICAgICAgICAgICBjb250ZW50U2VjdXJp
dHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5
KHJlcXVlc3QsIGNsaWVudCkpIHsKLSAgICAgICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVy
cm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kuIl9zKSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRvKiBjb250ZW50
U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgeworICAgICAg
ICAgICAgaWYgKGlzUmVkaXJlY3RlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byB0eXBlID0g
bV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZDsKKyAgICAgICAgICAgICAg
ICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChy
ZXF1ZXN0LCB0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNBbGxvd2Vk
QnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdCwgY2xpZW50KSkgeworICAgICAgICAgICAg
ICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoIkJsb2Nr
ZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIl9zKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKLSAgICBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChX
VEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIG9yaWdp
bmFsUmVxdWVzdCA9IFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KV0oYXV0byByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdC5lcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCkpOwotICAgICAgICAgICAgaGFuZGxl
cihXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLnN0YXR1cy5ibG9ja2VkTG9hZCkgewotICAg
ICAgICAgICAgaGFuZGxlcih0aGlzLT5hY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFu
ZGxlcigiQmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbiJfcykpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwg
b3JpZ2luYWxSZXF1ZXN0ID0gV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpXShhdXRvIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQuZXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpKTsKKyAgICAg
ICAgICAgICAgICBoYW5kbGVyKFdURk1vdmUocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVl
KCkuc3RhdHVzLmJsb2NrZWRMb2FkKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcih0aGlzLT5h
Y2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxlcigiQmxvY2tlZCBieSBjb250ZW50
IGV4dGVuc2lvbiJfcykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
IAotICAgICAgICBjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVjdChX
VEZNb3ZlKG9yaWdpbmFsUmVxdWVzdCksIFdURk1vdmUocmVzdWx0LnZhbHVlKCkucmVxdWVzdCks
IFdURk1vdmUoaGFuZGxlcikpOwotICAgIH0pOworICAgICAgICAgICAgY29udGludWVDaGVja2lu
Z1JlcXVlc3RPckRvU3ludGhldGljUmVkaXJlY3QoV1RGTW92ZShvcmlnaW5hbFJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3VsdC52YWx1ZSgpLnJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICAg
ICAgfSk7CiAjZWxzZQotICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRpY1Jl
ZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShoYW5kbGVyKSk7CisgICAgICAgIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0T3JEb1N5bnRoZXRp
Y1JlZGlyZWN0KFdURk1vdmUob3JpZ2luYWxSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShoYW5kbGVyKSk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQorICAg
IH0pOworI2VuZGlmIC8vIEVOQUJMRShIVFRQU19VUEdSQURFKQorCiB9CiAKIHZvaWQgTmV0d29y
a0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdE9yRG9TeW50aGV0aWNSZWRpcmVj
dChSZXNvdXJjZVJlcXVlc3QmJiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIGN1
cnJlbnRSZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA2MjI3Yzk1
N2Q0NGNlNjJiNjQzNjAzM2E4MzQ1MzgxNjkwNzdlOGM4Li5kYmQ5NjFhNDkxMzM3ZmU5ZWY3Zjdm
MWFlY2U2MGU3NzQ2ZjBkNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTI1LDE2ICsyNSwyMyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZldGNoT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworZW51bSBjbGFzcyBQ
cmVmbGlnaHRQb2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA6IGJvb2w7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTEzLDcgKzEyMCw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShIVFRQU19VUEdSQURFKQotICAgIHZvaWQg
YXBwbHlIVFRQU1VwZ3JhZGVJZk5lZWRlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dDsKKyAgICB2b2lkIGFwcGx5SFRUUFNVcGdyYWRlSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSFRUUFNfVVBHUkFERSkKIAogICAgIFdl
YkNvcmU6OkZldGNoT3B0aW9ucyBtX29wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjVjMmZlZGJmYzdlNzc5YjUxZDM1MGUxYzFl
OWU2YTU1MDQ1OGVlMy4uMjM0OGZjODUzY2FkMGY3NTE1YTFkZmQ4ZTk5NWJlNGY3YmRiNzM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRvd25s
b2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CkBAIC0yMDQsNiArMjA1
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShI
VFRQU19VUEdSQURFKQorICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBuZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcigpIHsgcmV0dXJuIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7
IH07CisjZW5kaWYgLy8gRU5BQkxFKEhUVFBTX1VQR1JBREUpCisKIHByaXZhdGU6CiAgICAgTmV0
d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nlc3MoKTsKQEAgLTM5Myw2ICszOTgsOSBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSFRUUFNfVVBHUkFERSkKKyAgICBOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlciBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOworI2VuZGlmIC8vIEVOQUJMRShI
VFRQU19VUEdSQURFKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCAwNTVlYzVlNTc2MTAyZjc4NjQ5ODQ3YWUzZTM0YWUzZTNjMmMyNGEzLi5iNTJhZTZiZDdiNjMx
OWQ2MTYyNmI0YmFlMDgzYWFjOTU2ODU2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI3LDYgKzI3LDcg
QEAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZmI4Zjk1MDM2
Yjg1MmI3ODU0YzQ5NGY0NDIwYmE5NThhMTI4MmQ1Li45NGZkNTYxZTMwMzMzMGMzNWMzMGM4YTBk
ZjEzZTZkYzNmNGRlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEwMzcsNiArMTAzNyw3IEBACiAJCTU3RENFREMzMjE0RjExNEMw
MDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2Fs
U2VydmljZS5oICovOyB9OwogCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2Fs
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsg
fTsKIAkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VE
QzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovOyB9Owor
CQk1OEU5NzdERjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4RTk3N0RE
MjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovOyB9Owog
CQk1ODc3NDNBNjIxQzMwQkJFMDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg3NzQzQTQyMUMzMEFE
ODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4
MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3
OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJNUMwQjE3NzkxRTdDODgyMTAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzBCMTc3NjFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKQEAgLTM0MDIsNiArMzQwMyw4IEBACiAJCTU3RENFREM2MjE0RjE4MzAw
MDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TW9ja0xvY2FsQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdE
Q0VEQzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5
NzdEQzIxQzQ5OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OEU5NzdERDIxQzQ5QTAw
MDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBn
cmFkZUxpc3QuZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBuYW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvSFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJNUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1QzBCMTc3NTFFN0M4NzlD
MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTY0MjIsNiArNjQyNSw4IEBACiAJ
CQkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovLAogCQkJ
CTUzOUVCNTQ2MURDMkVFNDAwMDlENDhDRiAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCAqLywK
IAkJCQk1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oICov
LAorCQkJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5jcHAgKi8sCisJCQkJNThFOTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyLmggKi8sCiAJCQkJODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5l
dHdvcmtMb2FkLmNwcCAqLywKIAkJCQk4Mzk5MDFGRTFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29y
a0xvYWQuaCAqLywKIAkJCQk0MTAzRkJBMjIwNjFCREI4MDBDMkVBRjggLyogTmV0d29ya0xvYWRD
aGVja2VyLmNwcCAqLywKQEAgLTkxMTMsNiArOTExOCw3IEBACiAJCQkJNUNCQzlCOEUxQzY1MkNB
MDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNCQTQ3
RDExREMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzMjE1OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzk5MDIwMzFCRTlBMDJC
MDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDQ1NEQ3MUJF
OUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODM5MTQ5NjUxQkVBODM4NTAwRDJEOTUzIC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>