<?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>94170</bug_id>
          
          <creation_ts>2012-08-15 19:17:41 -0700</creation_ts>
          <short_desc>Allow blocking of Web SQL databases in third-party web workers</short_desc>
          <delta_ts>2012-08-22 15:59:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>abarth</cc>
    
    <cc>atwilson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696635</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-15 19:17:41 -0700</bug_when>
    <thetext>Following up from bug #94057, web workers still need work to be able to block third-party Web SQL databases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698787</commentid>
    <comment_count>1</comment_count>
      <attachid>159228</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-17 16:43:06 -0700</bug_when>
    <thetext>Created attachment 159228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698789</commentid>
    <comment_count>2</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-17 16:45:16 -0700</bug_when>
    <thetext>This patch only allows blocking in dedicated workers, as there isn&apos;t a well-defined top document origin in a shared worker, as shared workers by definition are shared between documents. Since each document might have a distinct parent document, shared workers aren&apos;t covered by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698795</commentid>
    <comment_count>3</comment_count>
      <attachid>159228</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 16:59:37 -0700</bug_when>
    <thetext>Comment on attachment 159228
Patch

Attachment 159228 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13531186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698803</commentid>
    <comment_count>4</comment_count>
      <attachid>159228</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-17 17:07:24 -0700</bug_when>
    <thetext>Comment on attachment 159228
Patch

Attachment 159228 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13531188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698836</commentid>
    <comment_count>5</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2012-08-17 17:29:48 -0700</bug_when>
    <thetext>Shared workers are indeed shared between documents, but I thought that the spec guaranteed that all parent documents must be from the same origin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698840</commentid>
    <comment_count>6</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-17 17:32:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Shared workers are indeed shared between documents, but I thought that the spec guaranteed that all parent documents must be from the same origin?

The documents that attach to the documents must have the same origin, true. But those documents might be child documents of other documents via an iframe, and it&apos;s the top-most document that is what is important here. That&apos;s the one the user visited, and what we care about is third-party origins relative to the top origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698886</commentid>
    <comment_count>7</comment_count>
      <attachid>159256</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-17 18:58:31 -0700</bug_when>
    <thetext>Created attachment 159256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698887</commentid>
    <comment_count>8</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-17 19:00:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Shared workers are indeed shared between documents, but I thought that the spec guaranteed that all parent documents must be from the same origin?
&gt; 
&gt; The documents that attach to the documents must have the same origin, true. But those documents might be child documents of other documents via an iframe, and it&apos;s the top-most document that is what is important here. That&apos;s the one the user visited, and what we care about is third-party origins relative to the top origin.

Typo here, I meant that the documents that attach to the workers must have the same origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698990</commentid>
    <comment_count>9</comment_count>
      <attachid>159256</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-18 22:55:46 -0700</bug_when>
    <thetext>Comment on attachment 159256
Patch

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

&gt; Source/WebCore/workers/DedicatedWorkerContext.cpp:45
&gt; -PassRefPtr&lt;DedicatedWorkerContext&gt; DedicatedWorkerContext::create(const KURL&amp; url, const String&amp; userAgent, PassOwnPtr&lt;GroupSettings&gt; settings, DedicatedWorkerThread* thread, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType)
&gt; +PassRefPtr&lt;DedicatedWorkerContext&gt; DedicatedWorkerContext::create(const KURL&amp; url, const String&amp; userAgent, PassOwnPtr&lt;GroupSettings&gt; settings, DedicatedWorkerThread* thread, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, PassRefPtr&lt;SecurityOrigin&gt; topOrigin)

The parameters on this function are getting somewhat out of control.  Should we create a struct for them?

&gt; Source/WebCore/workers/DedicatedWorkerThread.cpp:42
&gt; -PassRefPtr&lt;DedicatedWorkerThread&gt; DedicatedWorkerThread::create(const KURL&amp; scriptURL, const String&amp; userAgent, const GroupSettings* settings, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerObjectProxy&amp; workerObjectProxy, WorkerThreadStartMode startMode, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType)
&gt; +PassRefPtr&lt;DedicatedWorkerThread&gt; DedicatedWorkerThread::create(const KURL&amp; scriptURL, const String&amp; userAgent, const GroupSettings* settings, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerObjectProxy&amp; workerObjectProxy, WorkerThreadStartMode startMode, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, const SecurityOrigin* topOrigin)

const SecurityOrigin &lt;--- I&apos;d drop the const.

&gt; Source/WebCore/workers/SharedWorkerContext.cpp:62
&gt; -    : WorkerContext(url, userAgent, settings, thread)
&gt; +    : WorkerContext(url, userAgent, settings, thread, 0)

Should there be a FIXME about this 0?

&gt; Source/WebCore/workers/SharedWorkerThread.cpp:47
&gt; -    : WorkerThread(url, userAgent, settings, sourceCode, workerLoaderProxy, workerReportingProxy, startMode, contentSecurityPolicy, contentSecurityPolicyType)
&gt; +    : WorkerThread(url, userAgent, settings, sourceCode, workerLoaderProxy, workerReportingProxy, startMode, contentSecurityPolicy, contentSecurityPolicyType, 0)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698991</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-18 22:59:38 -0700</bug_when>
    <thetext>I&apos;m not really in love with this patch, but it does seem like the right approach.  Should we have a workers expert look at the patch as well?  I&apos;m pretty sure it&apos;s right, but another pair of eyes never hurts.

The comments above are just nits because I&apos;m unhappy that so many lines of code need to be involved in ferrying this information around.  However, that&apos;s not really the fault of this patch, and I don&apos;t see a better way of doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699677</commentid>
    <comment_count>11</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-20 11:00:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 159256 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159256&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/DedicatedWorkerContext.cpp:45
&gt; &gt; -PassRefPtr&lt;DedicatedWorkerContext&gt; DedicatedWorkerContext::create(const KURL&amp; url, const String&amp; userAgent, PassOwnPtr&lt;GroupSettings&gt; settings, DedicatedWorkerThread* thread, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType)
&gt; &gt; +PassRefPtr&lt;DedicatedWorkerContext&gt; DedicatedWorkerContext::create(const KURL&amp; url, const String&amp; userAgent, PassOwnPtr&lt;GroupSettings&gt; settings, DedicatedWorkerThread* thread, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, PassRefPtr&lt;SecurityOrigin&gt; topOrigin)
&gt; 
&gt; The parameters on this function are getting somewhat out of control.  Should we create a struct for them?

These almost mirror the members of WorkerThreadStartupData, which is a struct that only appears in WorkerThread.cpp. Maybe it makes sense to expose it?

&gt; 
&gt; &gt; Source/WebCore/workers/DedicatedWorkerThread.cpp:42
&gt; &gt; -PassRefPtr&lt;DedicatedWorkerThread&gt; DedicatedWorkerThread::create(const KURL&amp; scriptURL, const String&amp; userAgent, const GroupSettings* settings, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerObjectProxy&amp; workerObjectProxy, WorkerThreadStartMode startMode, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType)
&gt; &gt; +PassRefPtr&lt;DedicatedWorkerThread&gt; DedicatedWorkerThread::create(const KURL&amp; scriptURL, const String&amp; userAgent, const GroupSettings* settings, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerObjectProxy&amp; workerObjectProxy, WorkerThreadStartMode startMode, const String&amp; contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, const SecurityOrigin* topOrigin)
&gt; 
&gt; const SecurityOrigin &lt;--- I&apos;d drop the const.

Any particular reason? We don&apos;t need to do any non-const operations on it, apart from isolatedCopy which should have been const in the first place (and is made const in this patch).

&gt; 
&gt; &gt; Source/WebCore/workers/SharedWorkerContext.cpp:62
&gt; &gt; -    : WorkerContext(url, userAgent, settings, thread)
&gt; &gt; +    : WorkerContext(url, userAgent, settings, thread, 0)
&gt; 
&gt; Should there be a FIXME about this 0?

There isn&apos;t really anything sensible to pass for shared workers, as there is no conceivable top origin. The only potential thing we could pass is the origin of the proxy, which amounts to the same origin as the worker. That would give us nothing, except for eliminating the 0.

(In reply to comment #10)
&gt; I&apos;m not really in love with this patch, but it does seem like the right approach.  Should we have a workers expert look at the patch as well?  I&apos;m pretty sure it&apos;s right, but another pair of eyes never hurts.
&gt; 

I cc&apos;d atwilson, but I don&apos;t know who else is an &quot;expert&quot; in this subject. I would like an an expert to look at it though.

&gt; The comments above are just nits because I&apos;m unhappy that so many lines of code need to be involved in ferrying this information around.  However, that&apos;s not really the fault of this patch, and I don&apos;t see a better way of doing it.

I agree here. I would have liked a better way, but I didn&apos;t think there was one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699779</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 12:15:23 -0700</bug_when>
    <thetext>&gt; &gt; const SecurityOrigin &lt;--- I&apos;d drop the const.
&gt; 
&gt; Any particular reason? We don&apos;t need to do any non-const operations on it, apart from isolatedCopy which should have been const in the first place (and is made const in this patch).

We don&apos;t tend to use const pointers for these sorts of composite objects.  It&apos;s not really that meaningful a restriction in C++.  Maybe it&apos;s more useful in threaded code?  In any case, it&apos;s not a big deal.

&gt; &gt; &gt; Source/WebCore/workers/SharedWorkerContext.cpp:62
&gt; &gt; &gt; -    : WorkerContext(url, userAgent, settings, thread)
&gt; &gt; &gt; +    : WorkerContext(url, userAgent, settings, thread, 0)
&gt; &gt; 
&gt; &gt; Should there be a FIXME about this 0?
&gt; 
&gt; There isn&apos;t really anything sensible to pass for shared workers, as there is no conceivable top origin. The only potential thing we could pass is the origin of the proxy, which amounts to the same origin as the worker. That would give us nothing, except for eliminating the 0.

Does that mean SharedWorkers will always be a loophole for gaining access to storage in a third-party context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699863</commentid>
    <comment_count>13</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2012-08-20 13:25:35 -0700</bug_when>
    <thetext>I&apos;m a bit rusty on the Worker code and I don&apos;t know if there&apos;s a better way to accomplish this through something like ContentSecurityPolicy or something like that.

That said, I think a better approach would be:

a) Instead of exposing WorkerContext.topOrigin(), instead define a new canAccessDatabase() API on WorkerContext.
b) DedicatedWorkerContext can implement this by calling securityOrigin-&gt;canAccessDatabase(topOrigin) - SharedWorkerContext would not have a topOrigin member and would not take an origin in the constructor.
c) SharedWorkerContext could then have its own implementation of canAccessDatabase() which interacts with SharedWorkerRepository to determine what the right thing is to do (e.g. allow if all parent documents allow database access). Alternatively, take a look at how GroupSettings is handled in DefaultSharedWorkerRepository.cpp - we currently just grab the groupSettings from the very first document that creates the worker, and that might be good enough for this case too, at least for now.

The current patch assumes that there&apos;s always just a single topOrigin which is not correct for all workers (as you noted) - moving this logic into WorkerContext at least creates a framework for doing it correctly even if you don&apos;t have a perfect SharedWorker implementation in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699924</commentid>
    <comment_count>14</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-20 14:04:48 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m a bit rusty on the Worker code and I don&apos;t know if there&apos;s a better way to accomplish this through something like ContentSecurityPolicy or something like that.
&gt; 
&gt; That said, I think a better approach would be:
&gt; 
&gt; a) Instead of exposing WorkerContext.topOrigin(), instead define a new canAccessDatabase() API on WorkerContext.
&gt; b) DedicatedWorkerContext can implement this by calling securityOrigin-&gt;canAccessDatabase(topOrigin) - SharedWorkerContext would not have a topOrigin member and would not take an origin in the constructor.
&gt; c) SharedWorkerContext could then have its own implementation of canAccessDatabase() which interacts with SharedWorkerRepository to determine what the right thing is to do (e.g. allow if all parent documents allow database access). Alternatively, take a look at how GroupSettings is handled in DefaultSharedWorkerRepository.cpp - we currently just grab the groupSettings from the very first document that creates the worker, and that might be good enough for this case too, at least for now.
&gt; 
&gt; The current patch assumes that there&apos;s always just a single topOrigin which is not correct for all workers (as you noted) - moving this logic into WorkerContext at least creates a framework for doing it correctly even if you don&apos;t have a perfect SharedWorker implementation in this patch.

This looks better at first glance, but upon starting to implement it, it requires almost the exact same amount of plumbing the arguments through arbitrary constructors and function calls. At the end of the day, it doesn&apos;t really change much of anything. It just shuffles a few things around. The only potential advantage is to allow the behavior in SharedWorker to be more specialized--which might be desirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699945</commentid>
    <comment_count>15</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2012-08-20 14:14:17 -0700</bug_when>
    <thetext>(In reply to comment #14)

&gt; This looks better at first glance, but upon starting to implement it, it requires almost the exact same amount of plumbing the arguments through arbitrary constructors and function calls. At the end of the day, it doesn&apos;t really change much of anything. It just shuffles a few things around. The only potential advantage is to allow the behavior in SharedWorker to be more specialized--which might be desirable.

Yeah, I&apos;m not particularly concerned about having to plumb stuff through the constructors. I&apos;m more concerned with properly allowing SharedWorker to specialize this code.

If you really want to bake-in the assumption that all workers only have a single origin (i.e. you really want to keep your new WorkerContext-&gt;topOrigin() API instead of moving this logic into the WorkerContext subclass) then you should go all the way and plumb a top origin into the SharedWorkerThread constructor that you pull out of the first Document that creates the SharedWorker (see DefaultSharedWorkerRepository::workerScriptLoaded()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699972</commentid>
    <comment_count>16</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-20 14:31:16 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; 
&gt; &gt; This looks better at first glance, but upon starting to implement it, it requires almost the exact same amount of plumbing the arguments through arbitrary constructors and function calls. At the end of the day, it doesn&apos;t really change much of anything. It just shuffles a few things around. The only potential advantage is to allow the behavior in SharedWorker to be more specialized--which might be desirable.
&gt; 
&gt; Yeah, I&apos;m not particularly concerned about having to plumb stuff through the constructors. I&apos;m more concerned with properly allowing SharedWorker to specialize this code.
&gt; 
&gt; If you really want to bake-in the assumption that all workers only have a single origin (i.e. you really want to keep your new WorkerContext-&gt;topOrigin() API instead of moving this logic into the WorkerContext subclass) then you should go all the way and plumb a top origin into the SharedWorkerThread constructor that you pull out of the first Document that creates the SharedWorker (see DefaultSharedWorkerRepository::workerScriptLoaded()).

I have two ideas for how to block access within a shared worker:
1) Every time a document tries to connect to a worker, check the top origin and &quot;taint&quot; the worker if it&apos;s a third party. This will require additional engineering to invalidate existing databases that have been opened already in the worker.
2) Prevent connecting to shared workers when the origin is a third party.

I&apos;m inclined to think 2 is the better option because it can prevent other information from leaking across pages with different top origins even though the shared worker always talks between pages within the same origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699997</commentid>
    <comment_count>17</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2012-08-20 14:44:55 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I have two ideas for how to block access within a shared worker:
&gt; 1) Every time a document tries to connect to a worker, check the top origin and &quot;taint&quot; the worker if it&apos;s a third party. This will require additional engineering to invalidate existing databases that have been opened already in the worker.

Yeah, that&apos;s why I think we ought to just use the origin of the very first document to open a given worker for now. If you go visit foo.com in a top-level browser window and it creates a shared worker, it seems like it&apos;s OK if that worker is able to access storage for the remainder of its lifetime.

Also note that just tainting the worker isn&apos;t sufficient, since workers could in theory contact other, non-tainted workers via MessagePort messaging. So they could just proxy any storage requests to a non-tainted worker.

&gt; 2) Prevent connecting to shared workers when the origin is a third party.
&gt; 
&gt; I&apos;m inclined to think 2 is the better option because it can prevent other information from leaking across pages with different top origins even though the shared worker always talks between pages within the same origin.

I think you would break websites with this kind of change, as this technique is the only way to create a cross-domain shared worker. Doing this would prevent top level pages that wish to communicate (e.g. calendar.google.com and mail.google.com) from communicating with one another via shared workers hosted in google.com iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700001</commentid>
    <comment_count>18</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2012-08-20 14:50:26 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; I have two ideas for how to block access within a shared worker:
&gt; &gt; 1) Every time a document tries to connect to a worker, check the top origin and &quot;taint&quot; the worker if it&apos;s a third party. This will require additional engineering to invalidate existing databases that have been opened already in the worker.
&gt; 
Thinking about this some more, what do you think about doing the reverse of what you describe: basically, a worker is tainted until a document connects that will allow storage. Once a document connects that allows storage, we untaint the worker and all future storage calls will work.

I think ideally, you&apos;d like:

a) foo.com top window opens shared worker
b) bar.com top window has foo.com iframe that opens shared worker

...to result in a SharedWorker with a consistent state (either tainted or untainted) no matter what order a) and b) happen in. If the transition from tainted-&gt;untainted is easier (because we don&apos;t have to abort/delete existing databases) then we should make the tainted-&gt;untainted transition sticky as I describe above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700310</commentid>
    <comment_count>19</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-20 18:30:28 -0700</bug_when>
    <thetext>Given that, when third-party storage blocking is enabled, shared workers have problems beyond just Web SQL databases, I think it might be best to get this patch in without provisions for shared workers and worry about whatever might be involved with shared workers in a followup patch. As such, I have filed bug #94559 for this followup work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702302</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 13:55:09 -0700</bug_when>
    <thetext>Yeah, the shared worker case requires more thought than the dedicated worker case.  Making progress in the dedicated worker case seems valuable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702309</commentid>
    <comment_count>21</comment_count>
      <attachid>159256</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 13:58:09 -0700</bug_when>
    <thetext>Comment on attachment 159256
Patch

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

I still think this patch is ugly, but I don&apos;t see a better way of solving this problem.

&gt; Source/WebCore/workers/WorkerMessagingProxy.cpp:285
&gt;                                                                           m_scriptExecutionContext-&gt;contentSecurityPolicy()-&gt;deprecatedHeader(),
&gt; -                                                                         m_scriptExecutionContext-&gt;contentSecurityPolicy()-&gt;deprecatedHeaderType());
&gt; +                                                                         m_scriptExecutionContext-&gt;contentSecurityPolicy()-&gt;deprecatedHeaderType(),
&gt; +                                                                         document-&gt;topDocument()-&gt;securityOrigin());

I would have changed these all to use |document| to be clear that we&apos;re getting all this information from the same place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702311</commentid>
    <comment_count>22</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2012-08-22 13:59:05 -0700</bug_when>
    <thetext>FWIW, I still think it&apos;s worth adding *some* support for SharedWorkers (such as my suggestion to just use the policy from the very first document that opens a given SharedWorker - this would at least handle the basic, most common use case of a third-party iframe trying to open a shared worker). If you don&apos;t do this, then it doesn&apos;t seem useful to do the work to block dedicated workers because developers can just trivially switch to shared workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702325</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 14:09:33 -0700</bug_when>
    <thetext>Sure, but we can do that in a future patch.  Currently, there are lots of avenues for persisting data in third-party contexts.  Surely we shouldn&apos;t wait for a patch that blocks all of them before making progress on any of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702487</commentid>
    <comment_count>24</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-22 15:59:07 -0700</bug_when>
    <thetext>Committed r126365: &lt;http://trac.webkit.org/changeset/126365&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159228</attachid>
            <date>2012-08-17 16:43:06 -0700</date>
            <delta_ts>2012-08-17 18:58:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94170-20120817164134.patch</filename>
            <type>text/plain</type>
            <size>37955</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyYThhOTNmNmFiOWI1
ZmQzODczOTZhYzc4ZmMyYjkzNWVlOWU0OS4uZjQ5ODk1ZWRkYWEwMDdkMTgwZjcwZmQzOWM4ZGJi
ZWU3NmIwZTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA4LTE3ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
V2ViIFNRTCBkYXRhYmFzZXMgaW4gdGhpcmQtcGFydHkgd2ViIHdvcmtlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIHdvcmtlcnMgZGlkIG5vdCBw
cmV2aW91c2x5IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIGRvY3VtZW50IHRoYXQKKyAgICAgICAg
c3Bhd25lZCB0aGVtLiBUaGlzIGlzIHVuZGVmaW5lZCBmb3Igc2hhcmVkIHdvcmtlcnMsIGJ1dCBm
b3IgZGVkaWNhdGVkCisgICAgICAgIHdvcmtlcnMsIHdlIG5vdyBwaXBlIHRoZSBpbmZvcm1hdGlv
biB0aHJvdWdoLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi13b3JrZXItd2Vic3FsLWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHA6IFBhc3MgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIHRvcCBvcmlnaW4gdG8gY2FuQWNjZXNzRGF0YWJhc2UKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlU3lu
Yyk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46IE1ha2UgU2VjdXJpdHlPcmlnaW46Omlzb2xh
dGVkQ29weSBjb25zdAorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSk6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHA6IFBhc3MgdG9wT3JpZ2luCisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4
dDo6RGVkaWNhdGVkV29ya2VyQ29udGV4dCk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA6IFBhc3MgdG9wT3JpZ2luCisg
ICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckNv
bnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgIChEZWRpY2F0ZWRXb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29y
a2VyQ29udGV4dC5jcHA6IFBhc3MgdG9wT3JpZ2luCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0OjpTaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1No
YXJlZFdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWQ6OlNoYXJlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJU
aHJlYWQ6OmNyZWF0ZVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29y
a2VyVGhyZWFkLmg6CisgICAgICAgIChTaGFyZWRXb3JrZXJUaHJlYWQpOiBQYXNzIHRvcE9yaWdp
bgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnRvcE9yaWdpbik6
CisgICAgICAgIChXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcDogUGFzcyB0b3BPcmlnaW4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1l
c3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkKToKKwogMjAxMi0wOC0x
NCAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGJsb2Nr
aW5nIG9mIFdlYiBTUUwgZGF0YWJhc2VzIGluIHRoaXJkLXBhcnR5IGRvY3VtZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2Vi
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJD
b250ZXh0V2ViRGF0YWJhc2UuY3BwCmluZGV4IDk1ZWZhNWE5YWVmOTk3NGNkMmE4ZTQ1YzI5NWIx
NjMwMGRlOTY4YTYuLjg5OWI3MDUzZWExYTVjYjM2ZWE3MzYxZTIzMDI3NjdkMzdhMzRjNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4
dFdlYkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPERhdGFiYXNlPiBXb3JrZXJDb250ZXh0V2ViRGF0YWJh
c2U6Om9wZW5EYXRhYmFzZShXb3JrZXJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRGF0YWJhc2UoKSB8fCAhQWJzdHJhY3REYXRhYmFz
ZTo6aXNBdmFpbGFibGUoKSkgeworICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuQWNjZXNzRGF0YWJhc2UoY29udGV4dC0+dG9wT3JpZ2luKCkpIHx8ICFBYnN0cmFjdERhdGFi
YXNlOjppc0F2YWlsYWJsZSgpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CkBAIC01Myw3ICs1Myw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IFdvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKFdvcmtlckNvbnRleHQqIGNv
bnRlCiAKIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBXb3JrZXJDb250ZXh0V2ViRGF0YWJhc2U6
Om9wZW5EYXRhYmFzZVN5bmMoV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBj
cmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKCkgfHwgIUFic3RyYWN0RGF0YWJh
c2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRleHQtPnRvcE9yaWdpbigpKSB8fCAhQWJzdHJhY3REYXRh
YmFzZTo6aXNBdmFpbGFibGUoKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4MjE5NjFkN2NhYWYx
ZjU4ODcyNjk4YmVmODQ4YmEwZjc5NzE1YzZmLi5iNDVmYWI4NWU1ZGVjZTlmZmJiZmNjOWNlM2Vk
ZDg3MWRhNzY4YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjkyLDcgKzI5Miw2IEBAIF9f
Wk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWE2c2Nyb2xsRU5TXzE1U2Nyb2xsRGlyZWN0aW9uRU5T
XzE3U2Nyb2xsR3JhbnVsYXJpdHlFCiBfX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhQzJFdgog
X19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYUQyRXYKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYmFy
VGhlbWU1dGhlbWVFdgotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5
RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjhjcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfaQpAQCAtMTE3Miw2ICsxMTcxLDcgQEAgX19aTks3
V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyM21vdXNlRW50ZXJlZENvbnRlbnRBcmVhRXYKIF9fWk5L
N1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZU1vdmVkSW5Db250ZW50QXJlYUV2CiBfX1pO
SzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEwY2FuRGlzcGxheUVSS05TXzRLVVJMRQogX19aTks3
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMXRvUmF3U3RyaW5nRXYKK19fWk5LN1dlYkNvcmUxNFNl
Y3VyaXR5T3JpZ2luMTJpc29sYXRlZENvcHlFdgogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmln
aW4xOGRhdGFiYXNlSWRlbnRpZmllckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjVl
cXVhbEVQS1MwXwogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW44dG9TdHJpbmdFdgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiYjc5ZTU1ZThjYmYzOGYwZTU4
MWUzYjAyMTAzNDc0NDIzMWNiN2YzLi5mNWNkMWM1MmU5Y2IxMjQ2NzQzZmQ5Y2E2MTBkNDMyNWM2
MTA0ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjE1LDcg
KzIxNSw3IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVVbmlxdWUoKQogICAgIHJldHVybiBvcmlnaW4ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6aXNvbGF0ZWRDb3B5KCkKK1Bhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjppc29sYXRlZENvcHkoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4odGhpcykpOwogfQpAQCAt
NDAwLDcgKzQwMCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc1N0b3JhZ2UoY29u
c3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QKICAgICBpZiAoIXRvcE9yaWdpbikK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ibG9ja1RoaXJkUGFydHlTdG9yYWdl
ICYmIHRvcE9yaWdpbi0+aXNUaGlyZFBhcnR5KHRoaXMpKQorICAgIGlmICgobV9ibG9ja1RoaXJk
UGFydHlTdG9yYWdlIHx8IHRvcE9yaWdpbi0+bV9ibG9ja1RoaXJkUGFydHlTdG9yYWdlKSAmJiB0
b3BPcmlnaW4tPmlzVGhpcmRQYXJ0eSh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggZmI4
ZTAzNmRiMmU0MTkwNmNlMGY0NTE5NDZjNWZkMDAyMGFhM2M0My4uMmUzMmNmYjY5YmQ3MzE4MTAy
YzY0NzJkOTIyZjFkN2MwYmU0ZjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVhdGUgYSBkZWVwIGNvcHkg
b2YgdGhpcyBTZWN1cml0eU9yaWdpbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVsCiAgICAgLy8gd2hl
biBtYXJzaGFsbGluZyBhIFNlY3VyaXR5T3JpZ2luIHRvIGFub3RoZXIgdGhyZWFkLgotICAgIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGlzb2xhdGVkQ29weSgpOworICAgIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgLy8gU2V0IHRoZSBk
b21haW4gcHJvcGVydHkgb2YgdGhpcyBzZWN1cml0eSBvcmlnaW4gdG8gbmV3RG9tYWluLiBUaGlz
CiAgICAgLy8gZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgd2hldGhlciBuZXdEb21haW4gaXMgYSBz
dWZmaXggb2YgdGhlIGN1cnJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckNvbnRleHQuY3BwCmluZGV4IGQzMWRhNzZjYjA3MmMyZDJlOGNkMjRjYzg0MWY2
NTRmYjNhNjFkOTQuLjc2OWRlOGNkYWVhNzE3MDYzZmM5YWI5NmFiNDk3NjgyMjllMWZkNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNw
cApAQCAtNDIsMTUgKzQyLDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIHN0YXRpYwot
UGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
OjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093
blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJl
YWQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKK1Bhc3NSZWZQdHI8
RGVkaWNhdGVkV29ya2VyQ29udGV4dD4gRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBT
ZXR0aW5ncz4gc2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHRvcE9yaWdpbikKIHsKLSAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyQ29udGV4dD4gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHVybCwgdXNlckFnZW50
LCBzZXR0aW5ncywgdGhyZWFkKSk7CisgICAgUmVmUHRyPERlZGljYXRlZFdvcmtlckNvbnRleHQ+
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyQ29udGV4dCh1cmwsIHVzZXJB
Z2VudCwgc2V0dGluZ3MsIHRocmVhZCwgdG9wT3JpZ2luKSk7CiAgICAgY29udGV4dC0+YXBwbHlD
b250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwog
fQogCi1EZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0
aW5ncz4gc2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkKQotICAgIDogV29y
a2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRocmVhZCkKK0RlZGljYXRlZFdv
cmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywg
RGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHRvcE9yaWdpbikKKyAgICA6IFdvcmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdz
LCB0aHJlYWQsIHRvcE9yaWdpbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAppbmRleCBmZGQxMTg5YzUyYzk3YWM1N2JhNzU5M2Fi
NmE0NTg0ZDQzMGE2NTNhLi4xMmY3Y2EyMDk1YTAyYTIwMTY2Y2M1MTZlMDBmNGYyMDgzMGRiYmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRGVkaWNh
dGVkV29ya2VyQ29udGV4dCA6IHB1YmxpYyBXb3JrZXJDb250ZXh0IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dCBCYXNlOwotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGlu
Z3M+LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0
eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKTsKICAgICBwcml2YXRlOgotICAg
ICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFk
Kik7CisgICAgICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAppbmRleCA4MWE0ZWRmMmJjNjRjZWQ4NjVhYjk2NTdi
ZjA2NDlmYmU1ZWU4YmFlLi43MzhkMmMwNTQ2OGU4Njc2ZjUzNTI5MWNlZmI5ODNjY2MxZGMwYmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwCkBAIC0zOSwxMyArMzksMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3Jv
dXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKK1Bhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhy
ZWFkPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShjb25zdCBLVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVy
UHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRGVkaWNhdGVkV29ya2VyVGhyZWFkKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0
aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHksIHdvcmtlck9iamVjdFByb3h5LCBz
dGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlw
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyVGhyZWFkKHNjcmlw
dFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHks
IHdvcmtlck9iamVjdFByb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSwgdG9wT3JpZ2luKSk7CiB9CiAKLURlZGljYXRlZFdvcmtl
clRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29y
a2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpCi0gICAg
OiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3Jr
ZXJMb2FkZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorRGVkaWNhdGVkV29ya2VyVGhy
ZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYg
c291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJP
YmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKKyAgICA6IFdvcmtlclRocmVhZCh1cmwsIHVzZXJBZ2Vu
dCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQ
cm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUsIHRvcE9yaWdpbikKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkod29ya2VyT2Jq
ZWN0UHJveHkpCiB7CiB9CkBAIC01NCw5ICs1NCw5IEBAIERlZGljYXRlZFdvcmtlclRocmVhZDo6
fkRlZGljYXRlZFdvcmtlclRocmVhZCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V29ya2VyQ29udGV4
dD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKK1Bhc3NS
ZWZQdHI8V29ya2VyQ29udGV4dD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJD
b250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25Q
dHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogewotICAg
IHJldHVybiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUodXJsLCB1c2VyQWdlbnQsIHNl
dHRpbmdzLCB0aGlzLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVR5cGUpOworICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUodXJsLCB1
c2VyQWdlbnQsIHNldHRpbmdzLCB0aGlzLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbik7CiB9CiAKIHZvaWQgRGVkaWNhdGVkV29ya2Vy
VGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgKaW5kZXggNWFhMTNkMGQxMmVjNmIxZTVkOTIxMjE1OGRmZjdiMWUw
M2RmMDczMC4uNWQ5NDA3MmJlNWI0NTlhYTlhZDMwY2Q0NWNhMDFkYmY3ZTk0ZmNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCkBAIC00MSwx
NiArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRGVkaWNhdGVkV29y
a2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IGNyZWF0ZShjb25zdCBLVVJM
JiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdz
KiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9i
amVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3Qg
S1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0
aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3Jr
ZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAgICAgICAgIFdvcmtlck9iamVjdFByb3h5
JiB3b3JrZXJPYmplY3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0UHJveHk7
IH0KICAgICAgICAgfkRlZGljYXRlZFdvcmtlclRocmVhZCgpOwogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gY3JlYXRlV29ya2VyQ29u
dGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V29ya2VyQ29udGV4dD4gY3JlYXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBydW5FdmVudExvb3AoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIERlZGljYXRlZFdv
cmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdy
b3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5
JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUpOworICAgICAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3Jp
Z2luKTsKIAogICAgICAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5j
cHAKaW5kZXggY2JkMmEzNDBhNmNjMzIxODNjODM1ZjcwNTFmMzNkYzFmODAwZGYwNi4uNzk5NzAw
MmFjYWY4Njk5YTQ1Yjk4NzJjODU1ZDdiNzdiMDVjZGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFBhc3NS
ZWZQdHI8U2hhcmVkV29ya2VyQ29udGV4dD4gU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwKIH0KIAogU2hhcmVkV29ya2VyQ29udGV4dDo6U2hhcmVkV29ya2Vy
Q29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdv
cmtlclRocmVhZCogdGhyZWFkKQotICAgIDogV29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwg
c2V0dGluZ3MsIHRocmVhZCkKKyAgICA6IFdvcmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQsIHNl
dHRpbmdzLCB0aHJlYWQsIDApCiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRleCBkMzliMzM1MWRhZWY4
OTBhNWFkOGRjNGZjN2U5OTg2NzE2YTE4ZDAwLi41NjMxNTg3YWRjYmI2NGZjZmRhZDAxZmMwZWFl
MzMwMTBkYTg3NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJU
aHJlYWQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFk
PiBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiB9CiAK
IFNoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBT
ZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVy
UHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVw
b3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKLSAgICA6IFdvcmtlclRocmVhZCh1cmwsIHVz
ZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJS
ZXBvcnRpbmdQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUpCisgICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNl
dHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSwgd29ya2VyUmVwb3J0aW5nUHJv
eHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlLCAwKQogICAgICwgbV9uYW1lKG5hbWUuaXNvbGF0ZWRDb3B5KCkpCiB7CiB9CkBAIC01
Myw3ICs1Myw3IEBAIFNoYXJlZFdvcmtlclRocmVhZDo6flNoYXJlZFdvcmtlclRocmVhZCgpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVh
dGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVu
dFNlY3VyaXR5UG9saWN5VHlwZSkKK1Bhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gU2hhcmVkV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4pCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZShtX25hbWUs
IHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3VyaXR5UG9saWN5LCBj
b250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlclRocmVhZC5oCmluZGV4IGMzNDM4MjRlYjFkNGM5NzY1NzVmMGI1OGE2OWY4MTA4
YmU3NTg0MTAuLmMzODMzMTNmN2IzNGQ2ZjRkOWU5MWQ4ZWY1ZWFkOWUxOWUwYTc2ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5TaGFyZWRXb3JrZXJUaHJlYWQoKTsK
IAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckNvbnRl
eHQ+IGNyZWF0ZVdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IGNyZWF0ZVdvcmtlckNvbnRleHQoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGlu
Z3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4p
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91
cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGU1YmQx
NWVhNmFlY2I2NWMzNmVkNDYyYmY3ZmYzYzY4N2ZlYWM3MmEuLmQ3ZWFmNWRiNDZlZThjYTc4MGVi
NzYxYzhmNDJiNDc2YzkwNTU3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ2xl
YW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1Xb3JrZXJDb250ZXh0OjpX
b3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBh
c3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFdvcmtlclRocmVhZCogdGhyZWFkKQor
V29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBXb3JrZXJU
aHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogICAg
IDogbV91cmwodXJsKQogICAgICwgbV91c2VyQWdlbnQodXNlckFnZW50KQogICAgICwgbV9ncm91
cFNldHRpbmdzKHNldHRpbmdzKQpAQCAtOTYsNiArOTYsNyBAQCBXb3JrZXJDb250ZXh0OjpXb3Jr
ZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NP
d25QdAogI2VuZGlmCiAgICAgLCBtX2Nsb3NpbmcoZmFsc2UpCiAgICAgLCBtX2V2ZW50UXVldWUo
V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV90b3BPcmlnaW4odG9wT3Jp
Z2luKQogewogICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IDM0ODE5ZDA3
Y2RiYTZiNDk1ZjY4NTBjMDNiOTc2MTE2ZGQ1Mjg0NDEuLmE2ZDYwYzgxNDI5YjZlNDJmZDJiOTkx
MjQ3ZTc1YTFlMzAwNTU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
CkBAIC0xMzgsOCArMTM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1
bnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICAgICAgdm9pZCBub3RpZnlPYnNlcnZl
cnNPZlN0b3AoKTsKIAorICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KKwogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFdvcmtlclRocmVhZCopOworICAgICAgICBXb3Jr
ZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0
cjxHcm91cFNldHRpbmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gdG9wT3JpZ2luKTsKICAgICAgICAgdm9pZCBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SGVhZGVyVHlwZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGxvZ0V4Y2Vw
dGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwpA
QCAtMTgzLDYgKzE4NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSGFzaFNldDxP
YnNlcnZlcio+IG1fd29ya2VyT2JzZXJ2ZXJzOwogCiAgICAgICAgIE93blB0cjxXb3JrZXJFdmVu
dFF1ZXVlPiBtX2V2ZW50UXVldWU7CisKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X3RvcE9yaWdpbjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDZmODM5ZjBh
NmZkZWI4OTVkZDhlMDViZmY5NzBmYTQwMzZjY2MyYzUuLmRmYmI0NTM5NWQ5NmQxYWUyMGVjM2Ni
YTJjZjg2NWJjNWM1NTg3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCkBAIC0yODEsNyArMjgxLDggQEAgdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW4KICAgICAgICAgc2V0dGluZ3MgPSBkb2N1bWVudC0+cGFnZSgpLT5ncm91cCgpLmdyb3Vw
U2V0dGluZ3MoKTsKICAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiB0aHJlYWQgPSBE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGlu
Z3MsIHNvdXJjZUNvZGUsICp0aGlzLCAqdGhpcywgc3RhcnRNb2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRlcHJl
Y2F0ZWRIZWFkZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyVHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5kZXByZWNhdGVkSGVhZGVyVHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT50
b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICB3b3JrZXJUaHJlYWRDcmVhdGVk
KHRocmVhZCk7CiAgICAgdGhyZWFkLT5zdGFydCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkU3RhcnRXb3JrZXJDb250ZXh0KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQo
KSwgdGhpcywgc2NyaXB0VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAppbmRleCBiZDAzNTVjNDEzMjRiNmE0MjdjMDVjYjQwY2NiYTc5Zjg5MjE4ZTFhLi5kMThjOTBk
Y2EyOTEzNDUxM2EyMzJiNDAzNWQ0MzVlNWU2N2E2MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHVuc2lnbmVkIFdvcmtlclRocmVh
ZDo6d29ya2VyVGhyZWFkQ291bnQoKQogc3RydWN0IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtl
clRocmVhZFN0YXJ0dXBEYXRhPiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0
cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9y
aWdpbiogdG9wT3JpZ2luKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJj
ZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkU3Rh
cnR1cERhdGEoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCBzdGFy
dE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwg
dG9wT3JpZ2luKSk7CiAgICAgfQogCiAgICAgS1VSTCBtX3NjcmlwdFVSTDsKQEAgLTgzLDE3ICs4
MywxOSBAQCBwdWJsaWM6CiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIG1fc3RhcnRNb2RlOwog
ICAgIFN0cmluZyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUgbV9jb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlOworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiBwcml2YXRlOgotICAgIFdvcmtlclRocmVh
ZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtl
clRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
KTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVu
dFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiB9
OwogCi1Xb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29u
c3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBT
ZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlKQorV29ya2VyVGhyZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNv
bnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3Vw
U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICA6IG1fc2NyaXB0VVJM
KHNjcmlwdFVSTC5jb3B5KCkpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQuaXNvbGF0ZWRD
b3B5KCkpCiAgICAgLCBtX3NvdXJjZUNvZGUoc291cmNlQ29kZS5pc29sYXRlZENvcHkoKSkKICAg
ICAsIG1fc3RhcnRNb2RlKHN0YXJ0TW9kZSkKICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5
KGNvbnRlbnRTZWN1cml0eVBvbGljeS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZShjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorICAgICwgbV90b3BP
cmlnaW4odG9wT3JpZ2luID8gdG9wT3JpZ2luLT5pc29sYXRlZENvcHkoKSA6IDApCiB7CiAgICAg
aWYgKCFzZXR0aW5ncykKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDExICsxMDYsMTEgQEAgV29y
a2VyVGhyZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3QKICAgICBtX2dyb3VwU2V0dGluZ3MtPnNldEluZGV4ZWREQkRh
dGFiYXNlUGF0aChzZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkuaXNvbGF0ZWRDb3B5
KCkpOwogfQogCi1Xb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5n
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9h
ZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlKQorV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0
dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtl
ckxvYWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHks
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICA6
IG1fdGhyZWFkSUQoMCkKICAgICAsIG1fd29ya2VyTG9hZGVyUHJveHkod29ya2VyTG9hZGVyUHJv
eHkpCiAgICAgLCBtX3dvcmtlclJlcG9ydGluZ1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQot
ICAgICwgbV9zdGFydHVwRGF0YShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6Y3JlYXRlKHNjcmlw
dFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpKQorICAgICwgbV9zdGFy
dHVwRGF0YShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6Y3JlYXRlKHNjcmlwdFVSTCwgdXNlckFn
ZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbikpCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICAsIG1fbm90
aWZpY2F0aW9uQ2xpZW50KDApCiAjZW5kaWYKQEAgLTE0Niw3ICsxNDgsNyBAQCB2b2lkIFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkKCkKIHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0ID0gY3Jl
YXRlV29ya2VyQ29udGV4dChtX3N0YXJ0dXBEYXRhLT5tX3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0
YS0+bV91c2VyQWdlbnQsIG1fc3RhcnR1cERhdGEtPm1fZ3JvdXBTZXR0aW5ncy5yZWxlYXNlKCks
IG1fc3RhcnR1cERhdGEtPm1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5t
X2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOworICAgICAgICBtX3dvcmtlckNvbnRleHQgPSBj
cmVhdGVXb3JrZXJDb250ZXh0KG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBE
YXRhLT5tX3VzZXJBZ2VudCwgbV9zdGFydHVwRGF0YS0+bV9ncm91cFNldHRpbmdzLnJlbGVhc2Uo
KSwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fc3RhcnR1cERhdGEt
Pm1fY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgbV9zdGFydHVwRGF0YS0+bV90b3BPcmlnaW4u
cmVsZWFzZSgpKTsKIAogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkgewogICAg
ICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBo
YWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggNjcwZTNjZDFjYmFmZTViMjg1
OGYyOWU0MzQ3Y2QxZTFkOTUwNTczOS4uZGMzMDcyZmNiNTY1NDQ3YjRjYTQyZDZjMTFkOTBiNDc3
OTEzNzdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJH
cm91cFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJX
b3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CkBAIC02OSwxMCArNzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCAgY29uc3QgU3RyaW5n
JiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5Jiwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAgICAgV29ya2VyVGhy
ZWFkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0
aW5ncyosICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29y
a2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAgICAgIC8vIEZhY3Rvcnkg
bWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29udGV4dCBmb3IgdGhlIHRocmVhZC4K
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IGNyZWF0ZVdvcmtlckNv
bnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXb3JrZXJDb250ZXh0PiBjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSA9IDA7CiAKICAgICAg
ICAgLy8gRXhlY3V0ZXMgdGhlIGV2ZW50IGxvb3AgZm9yIHRoZSB3b3JrZXIgdGhyZWFkLiBEZXJp
dmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHRvIHBlcmZvcm0gYWN0aW9ucyBiZWZvcmUvYWZ0ZXIg
ZW50ZXJpbmcgdGhlIGV2ZW50IGxvb3AuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExv
b3AoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAxMmZkN2ZjOTIxY2M5NTAyNGE4ZWFlOTkzYWY1YjdlNGRiMTllNmRjLi5h
NzE2MmIxNjlmZjg1NjVmMmYwMzMyZmYxMjBjZWFmMTRmZWFlMjBkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTItMDgtMTcgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAg
ICAgICBBbGxvdyBibG9ja2luZyBvZiBXZWIgU1FMIGRhdGFiYXNlcyBpbiB0aGlyZC1wYXJ0eSB3
ZWIgd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGVkIHRlc3RzIGZvciBhY2Nlc3Npbmcgb3BlbkRhdGFiYXNlIGZyb20gYSB0aGlyZCBw
YXJ0eSBhbmQgZmlyc3QgcGFydHkgZGVkaWNhdGVkIHdvcmtlcnMgd2hlbiB0aGlyZC1wYXJ0eSBi
bG9ja2luZyBpcyBvbiBhbmQgb2ZmLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC1h
bGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLXdvcmtlci13ZWJzcWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItd2Vic3FsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJh
bWUtZm9yLXdvcmtlci13ZWJzcWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3JrZXItd2Vic3Fs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3dv
cmtlci1mb3Itd2Vic3FsLmpzOiBBZGRlZC4KKyAgICAgICAgKHNlbGYub25tZXNzYWdlKToKKwog
MjAxMi0wOC0xNCAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFs
bG93IGJsb2NraW5nIG9mIFdlYiBTUUwgZGF0YWJhc2VzIGluIHRoaXJkLXBhcnR5IGRvY3VtZW50
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmln
aW4td29ya2VyLXdlYnNxbC1hbGxvd2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwtYWxsb3dlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTk0NmJiNDBlNWExMjUzMGMxZWEwMDE0YTBmMzJkZmQ4NmM0NTIz
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwtYWxsb3dlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NiBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCitUaGlz
IGlmcmFtZSBzaG91bGQgbm90IHJldHVybiBhbnkgZXJyb3JzOgorCisKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorTm8gZXhj
ZXB0aW9uCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+
LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC1hbGxvd2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItd2Vi
c3FsLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDc4ODBlYjAwMTgyOGQ3MTc0YjI5Yjk0NmQy
ZmIxMmM2OTljNzA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC1hbGxvd2VkLmh0bWwKQEAgLTAsMCAr
MSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0gMjsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwktLWZyYW1lczsKKwlpZiAoIWZyYW1lcyAm
JiB3aW5kb3cudGVzdFJ1bm5lcikKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3dp
bmRvdy5vbm1lc3NhZ2UgPSBkZWNyZW1lbnQ7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczo8L3A+Cis8aWZyYW1l
IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmln
aW4taWZyYW1lLWZvci13b3JrZXItd2Vic3FsLmh0bWwiPjwvaWZyYW1lPgorPHA+VGhpcyBpZnJh
bWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZv
ci13b3JrZXItd2Vic3FsLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2Vy
LXdlYnNxbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLW9yaWdpbi13b3JrZXItd2Vic3FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTdiYzFj
ZTkwNTBlMmQ2YTdkYzdkNDUzNDEzMGRkODdmNTcyMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBh
IHNlY3VyaXR5IGVycm9yOgorCisKK1RoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBl
cnJvcnM6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPicKKy0tLS0tLS0tCitTRUNVUklUWV9FUlIKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorTm8gZXhjZXB0aW9uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13
b3JrZXItd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi13b3JrZXItd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGViMTdmMDdiYjQxMTJhMzc0
MzQ4MGFkZjQwNjQ2YTljMjIzYWYyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwuaHRtbApAQCAtMCww
ICsxLDE5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVy
LnNldENhbk9wZW5XaW5kb3dzKHRydWUpOworCXRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdX
aW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworCWludGVybmFscy5zZXR0aW5ncy5zZXRUaGlyZFBh
cnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCh0cnVlKTsKK30KKworZG9jdW1lbnQubG9jYXRpb24g
PSAicmVzb3VyY2VzL2RvY3VtZW50LWZvci1jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC5odG1s
IgorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdp
bi1pZnJhbWUtZm9yLXdvcmtlci13ZWJzcWwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXdvcmtlci13ZWJzcWwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTUyNDRkNzAyMWE4ODY4ODE3ZGVlZTdlMWI0NGZhZTc2MzdjMDMz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itd29ya2VyLXdlYnNxbC5odG1sCkBAIC0wLDAg
KzEsMjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgord2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeworCXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCd3b3JrZXItZm9yLXdlYnNxbC5qcycp
OworCXdvcmtlci5wb3N0TWVzc2FnZSh0cnVlKTsKKwl3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKwkJaWYgKGV2ZW50LmRhdGEpIHsKKwkJCXdpbmRvdy5wYXJlbnQucG9zdE1l
c3NhZ2UoZXZlbnQuZGF0YSwgJyonKTsKKwkJCWRvY3VtZW50LndyaXRlKGV2ZW50LmRhdGEpOwor
CQl9IGVsc2UgeworCQkJd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSgnTm8gZXhjZXB0aW9uJywg
JyonKTsKKwkJCWRvY3VtZW50LndyaXRlKCdObyBleGNlcHRpb24nKTsKKwkJfQorCX07Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9oZWFkPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZm9yLWNy
b3NzLW9yaWdpbi13b3JrZXItd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9kb2N1bWVudC1mb3ItY3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZGMyZTNkNGNhMWI1M2EzMzZjNDgwNWMwOGQyMDE5ZGRlMjFlMGM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9yaWdpbi13b3JrZXItd2Vic3FsLmh0bWwKQEAgLTAs
MCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0gMjsKKwor
ZnVuY3Rpb24gZGVjcmVtZW50KGV2ZW50KSB7CisJLS1mcmFtZXM7CisJaWYgKCFmcmFtZXMgJiYg
d2luZG93LnRlc3RSdW5uZXIpIHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFRoaXJkUGFydHlT
dG9yYWdlQmxvY2tpbmdFbmFibGVkKGZhbHNlKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisJfQorfQorCit3aW5kb3cub25tZXNzYWdlID0gZGVjcmVtZW50OworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gYSBzZWN1cml0eSBlcnJv
cjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci13b3JrZXItd2Vic3FsLmh0bWwiPjwvaWZyYW1l
PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczo8L3A+Cis8aWZy
YW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1v
cmlnaW4taWZyYW1lLWZvci13b3JrZXItd2Vic3FsLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvd29y
a2VyLWZvci13ZWJzcWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy93b3JrZXItZm9yLXdlYnNxbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWE5Yjg3NWMyYTY2MTg4NTg1
OTc0Nzk4ZDEzZGI0NmNlZDc2N2IxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvd29ya2VyLWZvci13ZWJzcWwuanMKQEAgLTAsMCAr
MSw4IEBACitzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCXRyeSB7CisJCXZhciBkYiA9
IHNlbGYub3BlbkRhdGFiYXNlKCd0ZXN0ZGInLCAnMS4wJywgJ1Rlc3RpbmcgZGF0YWJhc2UnLCA1
MTIgKiAxMDI0KTsKKwkJc2VsZi5wb3N0TWVzc2FnZShudWxsKTsKKwl9IGNhdGNoIChleGNlcHRp
b24pIHsKKwkJc2VsZi5wb3N0TWVzc2FnZShleGNlcHRpb24ubmFtZSk7CisJfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159256</attachid>
            <date>2012-08-17 18:58:31 -0700</date>
            <delta_ts>2012-08-22 13:58:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94170-20120817185829.patch</filename>
            <type>text/plain</type>
            <size>40254</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyYThhOTNmNmFiOWI1
ZmQzODczOTZhYzc4ZmMyYjkzNWVlOWU0OS4uZjQ5ODk1ZWRkYWEwMDdkMTgwZjcwZmQzOWM4ZGJi
ZWU3NmIwZTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA4LTE3ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
V2ViIFNRTCBkYXRhYmFzZXMgaW4gdGhpcmQtcGFydHkgd2ViIHdvcmtlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIHdvcmtlcnMgZGlkIG5vdCBw
cmV2aW91c2x5IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIGRvY3VtZW50IHRoYXQKKyAgICAgICAg
c3Bhd25lZCB0aGVtLiBUaGlzIGlzIHVuZGVmaW5lZCBmb3Igc2hhcmVkIHdvcmtlcnMsIGJ1dCBm
b3IgZGVkaWNhdGVkCisgICAgICAgIHdvcmtlcnMsIHdlIG5vdyBwaXBlIHRoZSBpbmZvcm1hdGlv
biB0aHJvdWdoLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi13b3JrZXItd2Vic3FsLWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHA6IFBhc3MgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIHRvcCBvcmlnaW4gdG8gY2FuQWNjZXNzRGF0YWJhc2UKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRXZWJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlU3lu
Yyk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46IE1ha2UgU2VjdXJpdHlPcmlnaW46Omlzb2xh
dGVkQ29weSBjb25zdAorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzU3RvcmFnZSk6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHA6IFBhc3MgdG9wT3JpZ2luCisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4
dDo6RGVkaWNhdGVkV29ya2VyQ29udGV4dCk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA6IFBhc3MgdG9wT3JpZ2luCisg
ICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckNv
bnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgIChEZWRpY2F0ZWRXb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29y
a2VyQ29udGV4dC5jcHA6IFBhc3MgdG9wT3JpZ2luCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0OjpTaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1No
YXJlZFdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWQ6OlNoYXJlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJU
aHJlYWQ6OmNyZWF0ZVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29y
a2VyVGhyZWFkLmg6CisgICAgICAgIChTaGFyZWRXb3JrZXJUaHJlYWQpOiBQYXNzIHRvcE9yaWdp
bgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnRvcE9yaWdpbik6
CisgICAgICAgIChXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcDogUGFzcyB0b3BPcmlnaW4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1l
c3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkKToKKwogMjAxMi0wOC0x
NCAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGJsb2Nr
aW5nIG9mIFdlYiBTUUwgZGF0YWJhc2VzIGluIHRoaXJkLXBhcnR5IGRvY3VtZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyNjc4YmIxZDI0NDkwMzA2OGFhNTU2ZTgwMmZiYzJlMDZk
YjQxM2E2Li42Y2FkMTZlZDRiNjUwYTkzODNlODY0MGVlNjZjY2RkZGRjMjBiMmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTE3ICBKZWZmcmV5
IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2YgV2Vi
IFNRTCBkYXRhYmFzZXMgaW4gdGhpcmQtcGFydHkgd2ViIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTcwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIHdvcmtlcnMgZGlkIG5vdCBwcmV2
aW91c2x5IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIGRvY3VtZW50IHRoYXQKKyAgICAgICAgc3Bh
d25lZCB0aGVtLiBUaGlzIGlzIHVuZGVmaW5lZCBmb3Igc2hhcmVkIHdvcmtlcnMsIGJ1dCBmb3Ig
ZGVkaWNhdGVkCisgICAgICAgIHdvcmtlcnMsIHdlIG5vdyBwaXBlIHRoZSBpbmZvcm1hdGlvbiB0
aHJvdWdoLgorCisKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnN0YXJ0V29ya2VyQ29udGV4dCk6IFBh
c3MgdG9wIGRvY3VtZW50J3Mgb3JpZ2luCisKIDIwMTItMDgtMTQgIFNjb3R0IEdyYWhhbSAgPHNj
b3R0bWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IHdhcm5pbmdzIG9u
IFdpbmRvd3MgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcAppbmRleCA5NWVmYTVh
OWFlZjk5NzRjZDJhOGU0NWMyOTViMTYzMDBkZTk2OGE2Li44OTliNzA1M2VhMWE1Y2IzNmVhNzM2
MWUyMzAyNzY3ZDM3YTM0YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1dvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJDb250ZXh0V2ViRGF0YWJhc2UuY3BwCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxEYXRhYmFzZT4g
V29ya2VyQ29udGV4dFdlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2UoV29ya2VyQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0
cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBpZiAoIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNl
KCkgfHwgIUFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICBpZiAoIWNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0RhdGFiYXNlKGNvbnRleHQtPnRvcE9yaWdp
bigpKSB8fCAhQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKSkgewogICAgICAgICBlYyA9
IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTMsNyArNTMsNyBA
QCBQYXNzUmVmUHRyPERhdGFiYXNlPiBXb3JrZXJDb250ZXh0V2ViRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZShXb3JrZXJDb250ZXh0KiBjb250ZQogCiBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gV29y
a2VyQ29udGV4dFdlYkRhdGFiYXNlOjpvcGVuRGF0YWJhc2VTeW5jKFdvcmtlckNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQ
dHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFz
ZSgpIHx8ICFBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpKSB7CisgICAgaWYgKCFjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NEYXRhYmFzZShjb250ZXh0LT50b3BPcmln
aW4oKSkgfHwgIUFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZWMg
PSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggODIxOTYxZDdjYWFmMWY1ODg3MjY5OGJlZjg0OGJhMGY3OTcxNWM2Zi4uYjQ1ZmFi
ODVlNWRlY2U5ZmZiYmZjYzljZTNlZGQ4NzFkYTc2OGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTI5Miw3ICsyOTIsNiBAQCBfX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhNnNjcm9sbEVO
U18xNVNjcm9sbERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51bGFyaXR5RQogX19aTjdXZWJDb3Jl
MTRTY3JvbGxhYmxlQXJlYUMyRXYKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWFEMkV2CiBf
X1pON1dlYkNvcmUxNFNjcm9sbGJhclRoZW1lNXRoZW1lRXYKLV9fWk43V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW4xMmlzb2xhdGVkQ29weUV2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZj
cmVhdGVGcm9tU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9y
aWdpbjI4Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRVM0X2kKQEAgLTEx
NzIsNiArMTE3MSw3IEBAIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZUVudGVy
ZWRDb250ZW50QXJlYUV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIzbW91c2VNb3Zl
ZEluQ29udGVudEFyZWFFdgogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMGNhbkRpc3Bs
YXlFUktOU180S1VSTEUKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTF0b1Jhd1N0cmlu
Z0V2CitfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5RXYKIF9fWk5L
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMThkYXRhYmFzZUlkZW50aWZpZXJFdgogX19aTks3V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW41ZXF1YWxFUEtTMF8KIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5
T3JpZ2luOHRvU3RyaW5nRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5k
ZXggYmI3OWU1NWU4Y2JmMzhmMGU1ODFlM2IwMjEwMzQ3NDQyMzFjYjdmMy4uZjVjZDFjNTJlOWNi
MTI0Njc0M2ZkOWNhNjEwZDQzMjVjNjEwNGUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkKICAgICByZXR1cm4gb3JpZ2luLnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46Omlz
b2xhdGVkQ29weSgpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5
T3JpZ2luKHRoaXMpKTsKIH0KQEAgLTQwMCw3ICs0MDAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2lu
OjpjYW5BY2Nlc3NTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0
CiAgICAgaWYgKCF0b3BPcmlnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1f
YmxvY2tUaGlyZFBhcnR5U3RvcmFnZSAmJiB0b3BPcmlnaW4tPmlzVGhpcmRQYXJ0eSh0aGlzKSkK
KyAgICBpZiAoKG1fYmxvY2tUaGlyZFBhcnR5U3RvcmFnZSB8fCB0b3BPcmlnaW4tPm1fYmxvY2tU
aGlyZFBhcnR5U3RvcmFnZSkgJiYgdG9wT3JpZ2luLT5pc1RoaXJkUGFydHkodGhpcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5oCmluZGV4IGZiOGUwMzZkYjJlNDE5MDZjZTBmNDUxOTQ2YzVmZDAwMjBhYTNj
NDMuLjJlMzJjZmI2OWJkNzMxODEwMmM2NDcyZDkyMmYxZDdjMGJlNGYzZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ3JlYXRlIGEgZGVlcCBjb3B5IG9mIHRoaXMgU2VjdXJpdHlPcmlnaW4uIFRoaXMgbWV0aG9k
IGlzIHVzZWZ1bAogICAgIC8vIHdoZW4gbWFyc2hhbGxpbmcgYSBTZWN1cml0eU9yaWdpbiB0byBh
bm90aGVyIHRocmVhZC4KLSAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBpc29sYXRlZENv
cHkoKTsKKyAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAogICAgIC8vIFNldCB0aGUgZG9tYWluIHByb3BlcnR5IG9mIHRoaXMgc2VjdXJpdHkgb3Jp
Z2luIHRvIG5ld0RvbWFpbi4gVGhpcwogICAgIC8vIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHdo
ZXRoZXIgbmV3RG9tYWluIGlzIGEgc3VmZml4IG9mIHRoZSBjdXJyZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAppbmRleCBkMzFkYTc2
Y2IwNzJjMmQyZThjZDI0Y2M4NDFmNjU0ZmIzYTYxZDk0Li43NjlkZThjZGFlYTcxNzA2M2ZjOWFi
OTZhYjQ5NzY4MjI5ZTFmZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAKQEAgLTQyLDE1ICs0MiwxNSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBzdGF0aWMKLVBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyQ29udGV4dD4g
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIERlZGlj
YXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUpCitQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckNvbnRleHQ+IERlZGljYXRlZFdv
cmtlckNvbnRleHQ6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQqIHRocmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCiB7Ci0gICAgUmVmUHRyPERlZGlj
YXRlZFdvcmtlckNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRocmVhZCkpOworICAgIFJlZlB0cjxE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IERlZGljYXRlZFdv
cmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIHRvcE9yaWdpbikp
OwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5RnJvbVN0cmluZyhjb250
ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOwogICAgIHJldHVy
biBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6RGVkaWNh
dGVkV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQqIHRocmVhZCkKLSAgICA6IFdvcmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdz
LCB0aHJlYWQpCitEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4gc2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCisgICAgOiBXb3JrZXJDb250ZXh0KHVy
bCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCB0b3BPcmlnaW4pCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKaW5kZXggZmRk
MTE4OWM1MmM5N2FjNTdiYTc1OTNhYjZhNDU4NGQ0MzBhNjUzYS4uMTJmN2NhMjA5NWEwMmEyMDE2
NmNjNTE2ZTAwZjRmMjA4MzBkYmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQgOiBwdWJsaWMgV29ya2VyQ29u
dGV4dCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFdvcmtlckNvbnRleHQgQmFzZTsK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyQ29udGV4dD4gY3JlYXRl
KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2Vj
dXJpdHlQb2xpY3lUeXBlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29y
a2VyQ29udGV4dD4gY3JlYXRlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
UGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiB0b3BPcmlnaW4pOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtl
ckNvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFk
KCk7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dChjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4s
IERlZGljYXRlZFdvcmtlclRocmVhZCopOworICAgICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gdG9wT3JpZ2luKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggODFh
NGVkZjJiYzY0Y2VkODY1YWI5NjU3YmYwNjQ5ZmJlNWVlOGJhZS4uNzM4ZDJjMDU0NjhlODY3NmY1
MzUyOTFjZWZiOTgzY2NjMWRjMGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcApAQCAtMzksMTMgKzM5LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IERlZGljYXRl
ZFdvcmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2Vy
T2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpCitQYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3Jv
dXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZGljYXRlZFdvcmtlclRocmVhZChzY3Jp
cHRVUkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5
LCB3b3JrZXJPYmplY3RQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNv
bnRlbnRTZWN1cml0eVBvbGljeVR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZGlj
YXRlZFdvcmtlclRocmVhZChzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNv
ZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQcm94eSwgc3RhcnRNb2RlLCBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbikp
OwogfQogCi1EZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdz
KiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYg
d29ya2VyTG9hZGVyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2Vj
dXJpdHlQb2xpY3lUeXBlKQotICAgIDogV29ya2VyVGhyZWFkKHVybCwgdXNlckFnZW50LCBzZXR0
aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHksIHdvcmtlck9iamVjdFByb3h5LCBz
dGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlw
ZSkKK0RlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNl
dHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3Jr
ZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3Jr
ZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0
eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCisgICAgOiBXb3Jr
ZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2Fk
ZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9s
aWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pCiAgICAgLCBtX3dvcmtl
ck9iamVjdFByb3h5KHdvcmtlck9iamVjdFByb3h5KQogewogfQpAQCAtNTQsOSArNTQsOSBAQCBE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6On5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKQogewogfQogCi1Q
YXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29y
a2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNz
T3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1
cml0eVBvbGljeVR5cGUpCitQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IERlZGljYXRlZFdvcmtl
clRocmVhZDo6Y3JlYXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHRvcE9yaWdpbikKIHsKLSAgICByZXR1cm4gRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3Jl
YXRlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3VyaXR5UG9saWN5
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKKyAgICByZXR1cm4gRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6Y3JlYXRlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pOwogfQog
CiB2b2lkIERlZGljYXRlZFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCmluZGV4IDVhYTEzZDBkMTJl
YzZiMWU1ZDkyMTIxNThkZmY3YjFlMDNkZjA3MzAuLjVkOTQwNzJiZTViNDU5YWE5YWQzMGNkNDVj
YTAxZGJmN2U5NGZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaApAQCAtNDEsMTYgKzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIERlZGljYXRlZFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhy
ZWFkPiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
TG9hZGVyUHJveHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtl
clRocmVhZD4gY3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogICAg
ICAgICBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlck9iamVjdFByb3h5OyB9CiAgICAgICAgIH5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQo
KTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckNv
bnRleHQ+IGNyZWF0ZVdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IGNyZWF0ZVdvcmtlckNvbnRleHQo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0
dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wKCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAgICAgRGVkaWNhdGVkV29ya2VyVGhyZWFk
KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5n
cyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJP
YmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkm
IG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCmluZGV4IGNiZDJhMzQwYTZjYzMyMTgzYzgzNWY3MDUx
ZjMzZGMxZjgwMGRmMDYuLjc5OTcwMDJhY2FmODY5OWE0NWI5ODcyYzg1NWQ3Yjc3YjA1Y2RlZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcApA
QCAtNTksNyArNTksNyBAQCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlckNvbnRleHQ+IFNoYXJlZFdv
cmtlckNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsCiB9CiAKIFNoYXJlZFdvcmtl
ckNvbnRleHQ6OlNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGlu
Z3M+IHNldHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKLSAgICA6IFdvcmtlckNv
bnRleHQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQpCisgICAgOiBXb3JrZXJDb250
ZXh0KHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCAwKQogICAgICwgbV9uYW1lKG5h
bWUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
clRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5j
cHAKaW5kZXggZDM5YjMzNTFkYWVmODkwYTVhZDhkYzRmYzdlOTk4NjcxNmExOGQwMC4uNTYzMTU4
N2FkY2JiNjRmY2ZkYWQwMWZjMGVhZTMzMDEwZGE4NzRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcApAQCAtNDQsNyArNDQsNyBAQCBQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjbwogfQogCiBTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRo
cmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVw
b3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
c3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpCi0gICAg
OiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3Jr
ZXJMb2FkZXJQcm94eSwgd29ya2VyUmVwb3J0aW5nUHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorICAgIDogV29ya2VyVGhy
ZWFkKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJv
eHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgMCkKICAgICAsIG1fbmFtZShuYW1lLmlzb2xh
dGVkQ29weSgpKQogewogfQpAQCAtNTMsNyArNTMsNyBAQCBTaGFyZWRXb3JrZXJUaHJlYWQ6On5T
aGFyZWRXb3JrZXJUaHJlYWQoKQogewogfQogCi1QYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IFNo
YXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdz
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpCitQYXNzUmVmUHRyPFdv
cmtlckNvbnRleHQ+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyQ29udGV4dChjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0
dGluZ3M+IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KQogewogICAgIHJldHVybiBTaGFyZWRXb3JrZXJD
b250ZXh0OjpjcmVhdGUobV9uYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRoaXMsIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCBjMzQzODI0ZWIx
ZDRjOTc2NTc1ZjBiNThhNjlmODEwOGJlNzU4NDEwLi5jMzgzMzEzZjdiMzRkNmY0ZDllOTFkOGVm
NWVhZDllMTllMGE3NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
VGhyZWFkLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB+
U2hhcmVkV29ya2VyVGhyZWFkKCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29u
c3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
SGVhZGVyVHlwZSk7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBj
cmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
UGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNoYXJlZFdv
cmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcAppbmRleCBlNWJkMTVlYTZhZWNiNjVjMzZlZDQ2MmJmN2ZmM2M2ODdmZWFjNzJh
Li5kN2VhZjVkYjQ2ZWU4Y2E3ODBlYjc2MWM4ZjQyYjQ3NmM5MDU1NzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
fTsKIAotV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBX
b3JrZXJUaHJlYWQqIHRocmVhZCkKK1dvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRp
bmdzPiBzZXR0aW5ncywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHRvcE9yaWdpbikKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fdXNlckFnZW50KHVz
ZXJBZ2VudCkKICAgICAsIG1fZ3JvdXBTZXR0aW5ncyhzZXR0aW5ncykKQEAgLTk2LDYgKzk2LDcg
QEAgV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHQKICNlbmRpZgogICAgICwgbV9jbG9zaW5nKGZhbHNl
KQogICAgICwgbV9ldmVudFF1ZXVlKFdvcmtlckV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKKyAg
ICAsIG1fdG9wT3JpZ2luKHRvcE9yaWdpbikKIHsKICAgICBzZXRTZWN1cml0eU9yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAppbmRleCAzNDgxOWQwN2NkYmE2YjQ5NWY2ODUwYzAzYjk3NjExNmRkNTI4NDQxLi5h
NmQ2MGM4MTQyOWI2ZTQyZmQyYjk5MTI0N2U3NWExZTMwMDU1OTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTM4LDggKzEzOCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgdW5yZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyKik7CiAgICAg
ICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCk7CiAKKyAgICAgICAgY29uc3QgU2VjdXJp
dHlPcmlnaW4qIHRvcE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9
CisKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBXb3JrZXJU
aHJlYWQqKTsKKyAgICAgICAgV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFdvcmtlclRocmVhZCosIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAgIHZvaWQgYXBwbHlD
b250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgUGFzc1JlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKQEAgLTE4Myw2ICsxODUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX3dvcmtlck9ic2VydmVyczsKIAogICAg
ICAgICBPd25QdHI8V29ya2VyRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOworCisgICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCA2ZjgzOWYwYTZmZGViODk1ZGQ4ZTA1YmZmOTcwZmE0MDM2Y2NjMmM1Li5k
ZmJiNDUzOTVkOTZkMWFlMjBlYzNjYmEyY2Y4NjViYzVjNTU4Nzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMjgxLDcgKzI4MSw4
IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyQ29udGV4dChjb25zdCBL
VVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluCiAgICAgICAgIHNldHRpbmdzID0gZG9jdW1lbnQt
PnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRpbmdzKCk7CiAgICAgUmVmUHRyPERlZGljYXRlZFdv
cmtlclRocmVhZD4gdGhyZWFkID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2NyaXB0
VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCAqdGhpcywgKnRoaXMsIHN0YXJ0
TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGVwcmVjYXRl
ZEhlYWRlclR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGVwcmVjYXRlZEhlYWRlclR5cGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgd29ya2VyVGhyZWFkQ3JlYXRlZCh0aHJlYWQpOwogICAgIHRocmVhZC0+c3RhcnQoKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyQ29udGV4dChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIHRoaXMsIHNjcmlwdFVSTCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggYmQwMzU1YzQxMzI0YjZhNDI3YzA1Y2I0MGNj
YmE3OWY4OTIxOGUxYS4uZDE4YzkwZGNhMjkxMzQ1MTNhMjMyYjQwMzVkNDM1ZTVlNjdhNjI4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNzEsOSArNzEsOSBA
QCB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCkKIHN0cnVjdCBXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gY3JlYXRlKGNvbnN0IEtV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGlu
Z3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkK
KyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gY3JlYXRlKGNv
bnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3Vw
U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoc2NyaXB0VVJMLCB1c2Vy
QWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0
aW5ncywgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbikpOwogICAgIH0KIAogICAgIEtVUkwgbV9z
Y3JpcHRVUkw7CkBAIC04MywxNyArODMsMTkgQEAgcHVibGljOgogICAgIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSBtX3N0YXJ0TW9kZTsKICAgICBTdHJpbmcgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7
CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIG1fY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdG9wT3JpZ2luOwogcHJp
dmF0ZToKLSAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CisgICAgV29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29u
c3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBT
ZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4pOwogfTsKIAotV29ya2VyVGhyZWFkU3RhcnR1cERhdGE6Oldvcmtl
clRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKK1dvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBz
b3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBl
IGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pCiAgICAgOiBtX3NjcmlwdFVSTChzY3JpcHRVUkwuY29weSgpKQogICAgICwgbV91c2VyQWdl
bnQodXNlckFnZW50Lmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNv
ZGUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3N0YXJ0TW9kZShzdGFydE1vZGUpCiAgICAgLCBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeShjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5
KCkpCiAgICAgLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUoY29udGVudFNlY3VyaXR5UG9s
aWN5VHlwZSkKKyAgICAsIG1fdG9wT3JpZ2luKHRvcE9yaWdpbiA/IHRvcE9yaWdpbi0+aXNvbGF0
ZWRDb3B5KCkgOiAwKQogewogICAgIGlmICghc2V0dGluZ3MpCiAgICAgICAgIHJldHVybjsKQEAg
LTEwNCwxMSArMTA2LDExIEBAIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRT
dGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0CiAgICAgbV9ncm91cFNl
dHRpbmdzLT5zZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoc2V0dGluZ3MtPmluZGV4ZWREQkRhdGFi
YXNlUGF0aCgpLmlzb2xhdGVkQ29weSgpKTsKIH0KIAotV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJl
YWQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
TG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29y
a2VyUmVwb3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKK1dvcmtlclRocmVhZDo6V29ya2Vy
VGhyZWFkKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkm
IHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKiB0b3BPcmlnaW4pCiAgICAgOiBtX3RocmVhZElEKDApCiAgICAgLCBtX3dvcmtlckxvYWRl
clByb3h5KHdvcmtlckxvYWRlclByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3
b3JrZXJSZXBvcnRpbmdQcm94eSkKLSAgICAsIG1fc3RhcnR1cERhdGEoV29ya2VyVGhyZWFkU3Rh
cnR1cERhdGE6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNv
ZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlKSkKKyAgICAsIG1fc3RhcnR1cERhdGEoV29ya2VyVGhyZWFkU3RhcnR1cERhdGE6OmNy
ZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHN0YXJ0TW9k
ZSwgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BP
cmlnaW4pKQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNsaWVudCgwKQogI2VuZGlmCkBAIC0xNDYs
NyArMTQ4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAgewog
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Ci0gICAgICAg
IG1fd29ya2VyQ29udGV4dCA9IGNyZWF0ZVdvcmtlckNvbnRleHQobV9zdGFydHVwRGF0YS0+bV9z
Y3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCBtX3N0YXJ0dXBEYXRhLT5tX2dy
b3VwU2V0dGluZ3MucmVsZWFzZSgpLCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBv
bGljeSwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKKyAgICAg
ICAgbV93b3JrZXJDb250ZXh0ID0gY3JlYXRlV29ya2VyQ29udGV4dChtX3N0YXJ0dXBEYXRhLT5t
X3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQsIG1fc3RhcnR1cERhdGEtPm1f
Z3JvdXBTZXR0aW5ncy5yZWxlYXNlKCksIG1fc3RhcnR1cERhdGEtPm1fY29udGVudFNlY3VyaXR5
UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIG1fc3Rh
cnR1cERhdGEtPm1fdG9wT3JpZ2luLnJlbGVhc2UoKSk7CiAKICAgICAgICAgaWYgKG1fcnVuTG9v
cC50ZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB3b3JrZXIgd2FzIHRlcm1pbmF0
ZWQgYmVmb3JlIHRoZSB0aHJlYWQgaGFkIGEgY2hhbmNlIHRvIHJ1bi4gU2luY2UgdGhlIGNvbnRl
eHQgZGlkbid0IGV4aXN0IHlldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmlu
ZGV4IDY3MGUzY2QxY2JhZmU1YjI4NThmMjllNDM0N2NkMWUxZDk1MDU3MzkuLmRjMzA3MmZjYjU2
NTQ0N2I0Y2E0MmQ2YzExZDkwYjQ3NzkxMzc3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5LmgiCiAjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjksMTAgKzcwLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBXb3JrZXJU
aHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNl
dHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBX
b3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlw
ZSk7CisgICAgICAgIFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCAgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBX
b3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsK
IAogICAgICAgICAvLyBGYWN0b3J5IG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBuZXcgd29ya2VyIGNv
bnRleHQgZm9yIHRoZSB0aHJlYWQuCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJD
b250ZXh0PiBjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gY3JlYXRlV29ya2VyQ29u
dGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRv
cE9yaWdpbikgPSAwOwogCiAgICAgICAgIC8vIEV4ZWN1dGVzIHRoZSBldmVudCBsb29wIGZvciB0
aGUgd29ya2VyIHRocmVhZC4gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBwZXJmb3Jt
IGFjdGlvbnMgYmVmb3JlL2FmdGVyIGVudGVyaW5nIHRoZSBldmVudCBsb29wLgogICAgICAgICB2
aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IGM2ZmQ1MDU4OTg4ZTM2ZDMyM2Nj
ZjgwMzFkYWZkNzNlM2ExNTA1MDUuLmNkNzY5NTdmZGQ0ZmE3Yzk0MzZjYjNmOWJjOWI2ZWU0NzZj
MjhmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuY3BwCkBAIC05NCw3ICs5NCw4IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6
c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nCiAg
ICAgICAgIHNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRpbmdz
KCk7CiAgICAgUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gdGhyZWFkID0gRGVkaWNhdGVk
V29ya2VyVGhyZWFkOjpjcmVhdGUoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3Vy
Y2VDb2RlLCAqdGhpcywgKnRoaXMsIHN0YXJ0TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVh
ZGVyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+ZGVwcmVjYXRlZEhlYWRlclR5cGUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGVw
cmVjYXRlZEhlYWRlclR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+dG9wRG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgbV9wcm94eS0+d29ya2VyVGhyZWFkQ3JlYXRl
ZCh0aHJlYWQpOwogICAgIHRocmVhZC0+c3RhcnQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFN0YXJ0V29ya2VyQ29udGV4dChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0
KCksIG1fcHJveHksIHNjcmlwdFVSTCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTJmZDdmYzkyMWNjOTUwMjRhOGVhZTk5
M2FmNWI3ZTRkYjE5ZTZkYy4uYTcxNjJiMTY5ZmY4NTY1ZjJmMDMzMmZmMTIwY2VhZjE0ZmVhZTIw
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTE3ICBKZWZmcmV5IFBmYXUgIDxqcGZh
dUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2YgV2ViIFNRTCBkYXRhYmFz
ZXMgaW4gdGhpcmQtcGFydHkgd2ViIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCB0ZXN0cyBmb3IgYWNjZXNzaW5nIG9wZW5EYXRh
YmFzZSBmcm9tIGEgdGhpcmQgcGFydHkgYW5kIGZpcnN0IHBhcnR5IGRlZGljYXRlZCB3b3JrZXJz
IHdoZW4gdGhpcmQtcGFydHkgYmxvY2tpbmcgaXMgb24gYW5kIG9mZi4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwtYWxsb3dlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLXdvcmtlci13ZWJzcWwtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItd2Vic3FsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdl
YnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNl
cy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci13b3JrZXItd2Vic3FsLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2RvY3VtZW50LWZvci1jcm9zcy1v
cmlnaW4td29ya2VyLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy93b3JrZXItZm9yLXdlYnNxbC5qczogQWRkZWQuCisgICAgICAgIChz
ZWxmLm9ubWVzc2FnZSk6CisKIDIwMTItMDgtMTQgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxl
LmNvbT4KIAogICAgICAgICBBbGxvdyBibG9ja2luZyBvZiBXZWIgU1FMIGRhdGFiYXNlcyBpbiB0
aGlyZC1wYXJ0eSBkb2N1bWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwtYWxsb3dlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItd2Vi
c3FsLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NDZiYjQwZTVhMTI1MzBjMWVh
MDAxNGEwZjMyZGZkODZjNDUyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItd2Vic3FsLWFsbG93ZWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFu
eSBlcnJvcnM6CisKKworVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoK
KworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci13
ZWJzcWwtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4td29ya2VyLXdlYnNxbC1hbGxvd2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA3ODgwZWIw
MDE4MjhkNzE3NGIyOWI5NDZkMmZiMTJjNjk5YzcwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwtYWxs
b3dlZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFy
IGZyYW1lcyA9IDI7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworCXRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJLS1mcmFt
ZXM7CisJaWYgKCFmcmFtZXMgJiYgd2luZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZGVjcmVtZW50OworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBl
cnJvcnM6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itd29ya2VyLXdlYnNxbC5odG1sIj48L2lm
cmFtZT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6PC9wPgor
PGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jv
c3Mtb3JpZ2luLWlmcmFtZS1mb3Itd29ya2VyLXdlYnNxbC5odG1sIj48L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3Mtb3JpZ2luLXdvcmtlci13ZWJzcWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmE3YmMxY2U5MDUwZTJkNmE3ZGM3ZDQ1MzQxMzBkZDg3ZjU3MjI3NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLXdvcmtlci13ZWJzcWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgaWZy
YW1lIHNob3VsZCByZXR1cm4gYSBzZWN1cml0eSBlcnJvcjoKKworCitUaGlzIGlmcmFtZSBzaG91
bGQgbm90IHJldHVybiBhbnkgZXJyb3JzOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorU0VDVVJJVFlfRVJSCisKKy0t
LS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0t
LS0KK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRlYjE3ZjA3YmI0MTEyYTM3NDM0ODBhZGY0MDY0NmE5YzIyM2FmMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXIt
d2Vic3FsLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisJdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisJdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKKwl0ZXN0UnVubmVy
LnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKwlpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7Cit9CisK
K2RvY3VtZW50LmxvY2F0aW9uID0gInJlc291cmNlcy9kb2N1bWVudC1mb3ItY3Jvc3Mtb3JpZ2lu
LXdvcmtlci13ZWJzcWwuaHRtbCIKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jl
c291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci13b3JrZXItd2Vic3FsLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1l
LWZvci13b3JrZXItd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE1MjQ0ZDcwMjFhODg2ODgxN2Rl
ZWU3ZTFiNDRmYWU3NjM3YzAzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXdvcmtlci13
ZWJzcWwuaHRtbApAQCAtMCwwICsxLDIxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK3dp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwl2YXIgd29ya2VyID0gbmV3IFdvcmtlcignd29y
a2VyLWZvci13ZWJzcWwuanMnKTsKKwl3b3JrZXIucG9zdE1lc3NhZ2UodHJ1ZSk7CisJd29ya2Vy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisJCWlmIChldmVudC5kYXRhKSB7CisJCQl3
aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICcqJyk7CisJCQlkb2N1bWVudC53
cml0ZShldmVudC5kYXRhKTsKKwkJfSBlbHNlIHsKKwkJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3Nh
Z2UoJ05vIGV4Y2VwdGlvbicsICcqJyk7CisJCQlkb2N1bWVudC53cml0ZSgnTm8gZXhjZXB0aW9u
Jyk7CisJCX0KKwl9OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwv
aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3Vy
Y2VzL2RvY3VtZW50LWZvci1jcm9zcy1vcmlnaW4td29ya2VyLXdlYnNxbC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZm9yLWNyb3NzLW9y
aWdpbi13b3JrZXItd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRjMmUzZDRjYTFiNTNhMzM2YzQ4
MDVjMDhkMjAxOWRkZTIxZTBjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2RvY3VtZW50LWZvci1jcm9zcy1vcmlnaW4td29ya2Vy
LXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
dmFyIGZyYW1lcyA9IDI7CisKK2Z1bmN0aW9uIGRlY3JlbWVudChldmVudCkgeworCS0tZnJhbWVz
OworCWlmICghZnJhbWVzICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0
aW5ncy5zZXRUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZChmYWxzZSk7CisJCXRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGRlY3JlbWVu
dDsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0
dXJuIGEgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itd29ya2VyLXdl
YnNxbC5odG1sIj48L2lmcmFtZT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFu
eSBlcnJvcnM6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itd29ya2VyLXdlYnNxbC5odG1sIj48
L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL3dvcmtlci1mb3Itd2Vic3FsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvd29ya2VyLWZvci13ZWJzcWwuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTFhOWI4NzVjMmE2NjE4ODU4NTk3NDc5OGQxM2RiNDZjZWQ3NjdiMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3dvcmtlci1mb3It
d2Vic3FsLmpzCkBAIC0wLDAgKzEsOCBAQAorc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsK
Kwl0cnkgeworCQl2YXIgZGIgPSBzZWxmLm9wZW5EYXRhYmFzZSgndGVzdGRiJywgJzEuMCcsICdU
ZXN0aW5nIGRhdGFiYXNlJywgNTEyICogMTAyNCk7CisJCXNlbGYucG9zdE1lc3NhZ2UobnVsbCk7
CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCXNlbGYucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5h
bWUpOworCX0KK30K
</data>
<flag name="review"
          id="169535"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>