<?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>80992</bug_id>
          
          <creation_ts>2012-03-13 08:51:26 -0700</creation_ts>
          <short_desc>Web Inspector: provide a way to reload page with given script preprocessor.</short_desc>
          <delta_ts>2013-01-10 02:16:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>arv</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>johnjbarton</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>577365</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-13 08:51:26 -0700</bug_when>
    <thetext>Downstream bug: http://code.google.com/p/chromium/issues/detail?id=107238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577370</commentid>
    <comment_count>1</comment_count>
      <attachid>131627</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-13 08:53:40 -0700</bug_when>
    <thetext>Created attachment 131627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577444</commentid>
    <comment_count>2</comment_count>
      <attachid>131627</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 09:45:17 -0700</bug_when>
    <thetext>Comment on attachment 131627
Patch

Attachment 131627 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11941638

New failing tests:
inspector/debugger/debugger-script-preprocessor.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577484</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-13 10:07:58 -0700</bug_when>
    <thetext>Why does this need to be V8/Chrome specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577534</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-13 10:52:01 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why does this need to be V8/Chrome specific?

We&apos;d like to be able to preprocess everything, including eval and new Function. These calls are processed within VM, so need to be handled in a VM-specific manner. Once I land this, I&apos;ll look into implementing JSC part and if I fail, I&apos;ll file corresponding bug against JSC team.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577549</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-13 10:58:40 -0700</bug_when>
    <thetext>I see, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584534</commentid>
    <comment_count>6</comment_count>
      <attachid>131627</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-03-21 13:00:41 -0700</bug_when>
    <thetext>Comment on attachment 131627
Patch

Please revise the ChangeLog and provide information on what changed and why (overall summary and per function).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587716</commentid>
    <comment_count>7</comment_count>
      <attachid>133806</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-26 07:27:12 -0700</bug_when>
    <thetext>Created attachment 133806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587782</commentid>
    <comment_count>8</comment_count>
      <attachid>133806</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-26 08:39:47 -0700</bug_when>
    <thetext>Comment on attachment 133806
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:63
&gt; +    ScriptPreprocessor(const String&amp; preprocessorScript)

Should be explicit.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:70
&gt; +        m_utilityContext = v8::Context::New(0, globalTemplate);

Should be just m_utilityContext = v8::Context::New();

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:74
&gt; +        v8::Local&lt;v8::Context&gt; context = v8::Local&lt;v8::Context&gt;::New(m_utilityContext);

No need to wrap it into a local handle, just pass m_utilityContext to the Scope constructor below.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:78
&gt; +        tryCatch.SetVerbose(true);

Note that this wouldn&apos;t make any effect as you don&apos;t add any message handlers to the utility isolate.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:109
&gt; +        tryCatch.SetVerbose(true);

Same here, we may want to propagate the exceptions to the consonle agent.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:115
&gt; +            v8::String::Utf8Value utf8Value(resultValue);

Does it always return UTF-8, not UTF-16?

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:126
&gt; +            if (!m_utilityContext.IsEmpty()) {

You should probably also dispose m_preprocessorFunction here.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.h:132
&gt; +    static bool s_isCompilingInjectedScript;

This field should be per isolate, not static, otherwise it will break workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587919</commentid>
    <comment_count>9</comment_count>
      <attachid>133806</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-26 11:03:28 -0700</bug_when>
    <thetext>Comment on attachment 133806
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:63
&gt;&gt; +    ScriptPreprocessor(const String&amp; preprocessorScript)
&gt; 
&gt; Should be explicit.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:70
&gt;&gt; +        m_utilityContext = v8::Context::New(0, globalTemplate);
&gt; 
&gt; Should be just m_utilityContext = v8::Context::New();

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:74
&gt;&gt; +        v8::Local&lt;v8::Context&gt; context = v8::Local&lt;v8::Context&gt;::New(m_utilityContext);
&gt; 
&gt; No need to wrap it into a local handle, just pass m_utilityContext to the Scope constructor below.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:78
&gt;&gt; +        tryCatch.SetVerbose(true);
&gt; 
&gt; Note that this wouldn&apos;t make any effect as you don&apos;t add any message handlers to the utility isolate.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:109
&gt;&gt; +        tryCatch.SetVerbose(true);
&gt; 
&gt; Same here, we may want to propagate the exceptions to the consonle agent.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:115
&gt;&gt; +            v8::String::Utf8Value utf8Value(resultValue);
&gt; 
&gt; Does it always return UTF-8, not UTF-16?

Utf8Value wrapper is taking care of conversion.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:126
&gt;&gt; +            if (!m_utilityContext.IsEmpty()) {
&gt; 
&gt; You should probably also dispose m_preprocessorFunction here.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.h:132
&gt;&gt; +    static bool s_isCompilingInjectedScript;
&gt; 
&gt; This field should be per isolate, not static, otherwise it will break workers.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587920</commentid>
    <comment_count>10</comment_count>
      <attachid>133848</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-26 11:04:57 -0700</bug_when>
    <thetext>Created attachment 133848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588764</commentid>
    <comment_count>11</comment_count>
      <attachid>133848</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-03-27 04:46:04 -0700</bug_when>
    <thetext>Comment on attachment 133848
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:80
&gt; +        if (tryCatch.HasCaught())

We should come up with some error reporting mechanism here.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:137
&gt; +    String m_preprocessorBody;

This field is unused, please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732851</commentid>
    <comment_count>12</comment_count>
      <attachid>166718</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-10-02 11:19:30 -0700</bug_when>
    <thetext>Created attachment 166718
Rebase + one fix: ScriptDebugServer::setScriptSource callDebuggerMethod(liveEditScriptSource... because the JS method was renamed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732856</commentid>
    <comment_count>13</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-10-02 11:22:08 -0700</bug_when>
    <thetext>One bit of the rebase I was unsure of:

Source/WebCore/bindings/v8/custom/V8InjectedScriptManager.cpp

V8RecursionScope::MicrotaskSuppression recursionScope; // REVIEW: should this immediately follow Compile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732943</commentid>
    <comment_count>14</comment_count>
      <attachid>166718</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-02 12:23:37 -0700</bug_when>
    <thetext>Comment on attachment 166718
Rebase + one fix: ScriptDebugServer::setScriptSource callDebuggerMethod(liveEditScriptSource... because the JS method was renamed

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

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:133
&gt; +            if (!m_preprocessorFunction.IsEmpty()) {
&gt; +                m_preprocessorFunction.Dispose();
&gt; +                m_preprocessorFunction.Clear();
&gt; +            }

Whenever you find yourself writing code like this, please use ScopedPersistent instead.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:144
&gt; +    v8::Persistent&lt;v8::Context&gt; m_utilityContext;

Please use ScopedPersistent rather than holding raw persistent handles in member variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734631</commentid>
    <comment_count>15</comment_count>
      <attachid>167091</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-10-04 06:04:14 -0700</bug_when>
    <thetext>Created attachment 167091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734670</commentid>
    <comment_count>16</comment_count>
      <attachid>167091</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 07:38:27 -0700</bug_when>
    <thetext>Comment on attachment 167091
Patch

Attachment 167091 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14173175

New failing tests:
inspector/debugger/debugger-script-preprocessor.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734740</commentid>
    <comment_count>17</comment_count>
      <attachid>167091</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-04 09:11:44 -0700</bug_when>
    <thetext>Comment on attachment 167091
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:107
&gt; +        RecursionScopeSuppression suppressionScope;

Please use MicrotaskSuppression instead.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:149
&gt; +    v8::Isolate* m_utilityIsolate;

You don&apos;t seem to use the isolate anymore, please remove this.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:447
&gt; +            if (!m_scriptPreprocessor)

You need to protect against evals in the preprocessor script that would trigger recursive BeforeCompile events.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.h:109
&gt; +    ~ScriptDebugServer();

Please make destructor virtual.

&gt; Source/WebCore/bindings/v8/custom/V8InjectedScriptManager.cpp:99
&gt; +    v8::TryCatch tryCatch;

Please add tryCatch.SetVerbose(true) so that the errors are propagated to the console.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.h:80
&gt; +    virtual void didClearMainFrameWindowObject();

This method should probably be moved to PageDebuggerAgent completely as there is no such thing as main frame in worker.

&gt; LayoutTests/inspector/debugger/debugger-script-preprocessor.html:23
&gt; +                return script + &quot;//@ sourceURL=window_should_not_be_there&quot;;

Please add FAIL word somewhere in this line to make it clear that it is a failure case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738199</commentid>
    <comment_count>18</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-10-09 14:36:09 -0700</bug_when>
    <thetext>A few more changes are needed to surface the feature for extensions:

diff --git a/Source/WebCore/inspector/front-end/ExtensionServer.js b/Source/WebCore/inspector/front-end/ExtensionServer.js
index 8166e7c..27969a8 100644
--- a/Source/WebCore/inspector/front-end/ExtensionServer.js
+++ b/Source/WebCore/inspector/front-end/ExtensionServer.js
@@ -396,7 +396,8 @@ WebInspector.ExtensionServer.prototype = {
             // returns empty object for compatibility with InjectedScriptManager on the backend.
             injectedScript = &quot;((function(){&quot; + options.injectedScript + &quot;})(),function(){return {}})&quot;;
         }
-        PageAgent.reload(!!options.ignoreCache, injectedScript);
+        var preprocessingScript = options.preprocessingScript;
+        PageAgent.reload(!!options.ignoreCache, injectedScript, preprocessingScript);
         return this._status.OK();
     },
 
diff --git a/Source/WebCore/inspector/front-end/externs.js b/Source/WebCore/inspector/front-end/externs.js
index ba5bbc9..9135a8e 100644
--- a/Source/WebCore/inspector/front-end/externs.js
+++ b/Source/WebCore/inspector/front-end/externs.js
@@ -253,6 +253,7 @@ function ExtensionDescriptor() {
 function ExtensionReloadOptions() {
     this.ignoreCache = false;
     this.injectedScript = &quot;&quot;;
+    this.preprocessingScript = &quot;&quot;;
     this.userAgent = &quot;&quot;;
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738228</commentid>
    <comment_count>19</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-10-09 15:01:11 -0700</bug_when>
    <thetext>Some feedback from trying this patch in my app:

  1) We need errors in the preprocessing step to show up; they currently just vanish and as far as I can tell the un-processed script proceeds.

  2) The preprocessing script will need environmental metadata, eg the script tag attributes and the page URL. The key use case will be transcoding and we&apos;ll want to build sourcemaps for backcoding. These sourcemaps need the script tag filename.

  3) The biggest plus of this approach is synchrony with the browser runtime: the transcoded output runs in the same order as the original source; the downside is that the only communications path (I guess) between the transcoder and other system components is the source output. So, for example, development tools relying on syntax trees will need to encode a copy of the original source in a comment, then re-compile it outside of the web page.  If the preprocessingScript were a bit more like chrome extension content-scripts or web workers, we could leave the state in the world of the preprocessingScript then query it with postMessage() for tools. Ok maybe that&apos;s asking a lot ;-).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738253</commentid>
    <comment_count>20</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-10-09 15:21:49 -0700</bug_when>
    <thetext>Oops, sorry I spoke too soon.

With a preprocessing script like:

  function transcode(str) {
    return  str + &quot;\nconsole.log(&apos;transcoded by preprocessingScript&apos;);\n//@ sourceURL=fake_url&quot;+Math.random();
  }

and a script tag:

 &lt;script&gt;
  function transcodeMe() {}
  &lt;/script&gt;

The console output is

with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {
(function getScripts() { // runs in the web page
    var scriptElements = document.querySelectorAll(&apos;script&apos;);
    var scripts = [];
    for(var i = 0; i &lt; scriptElements.length; i++) {
      var elt = scriptElements[i];
      //console.log(&quot;scripts[&quot;+i+&quot;/&quot;+scriptElements.length+&quot;] &quot;+elt.src);
      scripts.push({
        src: elt.src,
        textContent: elt.textContent
      });
    }

    return scripts;
  }([]));
}
console.log(&apos;transcoded by preprocessingScript&apos;);
//@ sourceURL=fake_url0.6286467798054218

getScripts is a function I injected with chrome.devtools.inspectedWindow.eval

So somehow the signals are getting crossed....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738933</commentid>
    <comment_count>21</comment_count>
      <attachid>167994</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-10-10 07:10:50 -0700</bug_when>
    <thetext>Created attachment 167994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739924</commentid>
    <comment_count>22</comment_count>
      <attachid>167091</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-10-11 06:53:14 -0700</bug_when>
    <thetext>Comment on attachment 167091
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:107
&gt;&gt; +        RecursionScopeSuppression suppressionScope;
&gt; 
&gt; Please use MicrotaskSuppression instead.

I intentionally used specific suppressor.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:149
&gt;&gt; +    v8::Isolate* m_utilityIsolate;
&gt; 
&gt; You don&apos;t seem to use the isolate anymore, please remove this.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:447
&gt;&gt; +            if (!m_scriptPreprocessor)
&gt; 
&gt; You need to protect against evals in the preprocessor script that would trigger recursive BeforeCompile events.

Done.

&gt;&gt; Source/WebCore/bindings/v8/ScriptDebugServer.h:109
&gt;&gt; +    ~ScriptDebugServer();
&gt; 
&gt; Please make destructor virtual.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8InjectedScriptManager.cpp:99
&gt;&gt; +    v8::TryCatch tryCatch;
&gt; 
&gt; Please add tryCatch.SetVerbose(true) so that the errors are propagated to the console.

Done.

&gt;&gt; Source/WebCore/inspector/InspectorDebuggerAgent.h:80
&gt;&gt; +    virtual void didClearMainFrameWindowObject();
&gt; 
&gt; This method should probably be moved to PageDebuggerAgent completely as there is no such thing as main frame in worker.

Done.

&gt;&gt; LayoutTests/inspector/debugger/debugger-script-preprocessor.html:23
&gt;&gt; +                return script + &quot;//@ sourceURL=window_should_not_be_there&quot;;
&gt; 
&gt; Please add FAIL word somewhere in this line to make it clear that it is a failure case.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739933</commentid>
    <comment_count>23</comment_count>
      <attachid>167994</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-11 07:03:25 -0700</bug_when>
    <thetext>Comment on attachment 167994
Patch

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

Please file bug on the issues raised by John.

&gt; Source/WebCore/bindings/v8/ScriptDebugServer.cpp:122
&gt; +        v8::Local&lt;v8::Context&gt; context = v8::Local&lt;v8::Context&gt;::New(m_utilityContext.get());

You should check for empty m_utilityContext here.

&gt; Source/WebCore/inspector/Inspector.json:227
&gt; +                    { &quot;name&quot;: &quot;scriptPreprocessor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Script body that should evaluate to function that will preprocess all the scripts before their compilation.&quot;, &quot;hidden&quot;: true }

Please describe the function signature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740040</commentid>
    <comment_count>24</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-10-11 09:26:02 -0700</bug_when>
    <thetext>&gt; So somehow the signals are getting crossed....

I think this works as intended (at least as coded). Pre-processor processes all the scripts before they get into VM on the lowest level possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740274</commentid>
    <comment_count>25</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-10-11 14:41:52 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; So somehow the signals are getting crossed....
&gt; 
&gt; I think this works as intended (at least as coded). Pre-processor processes all the scripts before they get into VM on the lowest level possible.

Then I don&apos;t understand how to use this feature:
1) It does not seem to preprocess script tags in the page that I want to preprocess and 
2) it does preprocess code I  add to work with the preprocessing system (and thus do not want preprocessed). I can puts some sentinel in every eval I guess, seems hacky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782683</commentid>
    <comment_count>26</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-12-04 10:35:22 -0800</bug_when>
    <thetext>The patch from 10/10 needs a one function call rename in bindings/v8/ScriptDebugServer.cpp line 454 for
https://bugs.webkit.org/show_bug.cgi?id=103013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783195</commentid>
    <comment_count>27</comment_count>
      <attachid>177630</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-04 18:01:39 -0800</bug_when>
    <thetext>Created attachment 177630
[Patch] rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785847</commentid>
    <comment_count>28</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-07 06:14:33 -0800</bug_when>
    <thetext>Committed r136949: &lt;http://trac.webkit.org/changeset/136949&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786038</commentid>
    <comment_count>29</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-12-07 12:13:56 -0800</bug_when>
    <thetext>The new test files intended for this bug are now on bug 104384</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804192</commentid>
    <comment_count>30</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-10 02:16:25 -0800</bug_when>
    <thetext>This patch breaks Debugger domain.
GlobalObjectCleared event is not dispatched anymore when navigation within single renderer occurs.
See https://bugs.webkit.org/show_bug.cgi?id=106543</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131627</attachid>
            <date>2012-03-13 08:53:40 -0700</date>
            <delta_ts>2012-03-26 07:27:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80992-20120313195338.patch</filename>
            <type>text/plain</type>
            <size>29312</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMTAyNWYxZDQ2NGE4
OWU2NjU3NDY4ZjJmYjZjZTZiZjIyNTc4ZS4uMjNiYmZjNDVjZTBkZjYxNDU4ZGMwMmYxMWI2MWM4
NjU5YmNjY2QzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTEzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1s
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6CisgICAg
ICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVidWdnZXJT
Y3JpcHQuanM6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjpTY3JpcHRQ
cmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlw
dFByZXByb2Nlc3Nvcjo6cHJlcHJvY2Vzc1NvdXJjZUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcjo6flNjcmlwdFByZXByb2Nlc3Nv
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpjb21waWxlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6On5TY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpzZXRTY3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNj
cmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6cGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNj
cmlwdFByZXByb2Nlc3Nvcik6CisgICAgICAgIChJbnNwZWN0b3JQYWdlQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dl
ckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
ZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6c3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdp
bmRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFnZURlYnVn
Z2VyQWdlbnQpOgorCiAyMDEyLTAzLTEyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENoYW5nZXMgdG8gdGhlIGxpc3Qgb2Yg
c2NyaXB0cyBmb3IgZnJvbnQtZW5kIGNvbXBpbGF0aW9uIHNob3VsZCBub3QgcmVxdWlyZSB1cGRh
dGUgb2YgbnVtYmVyIG9mIHNjcmlwdHMgaW4gbW9kdWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggMGVjZDVhODcwNzZkYzFkNWFjNzAx
MTE4OGEyMTk1MzZiZGNmZjYyYS4uOWY4YmVmMzZmZTE4M2I2ZjNhNTE0ZGI0Mjc3Zjg0YzU2ZWQy
NWMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCkBAIC05MCw2ICs5MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zU29vbigpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhU
aW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4qID0gMCkgPSAwOwogCisgICAgdm9pZCBzZXRTY3JpcHRQ
cmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJikgeyB9CisKICAgICBib29sIGlzUGF1c2VkKCkgeyBy
ZXR1cm4gbV9wYXVzZWQ7IH0KIAogICAgIGNsYXNzIFRhc2sgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcwppbmRleCBiNGQwYjkxOGM0NzlkZTQ1ZGVlMDZk
YmExY2QxMzM1ZDJkNmVmNzFlLi4xODcxMDI4MTI5MmJjN2VjYTMwNWNlOTkzNGUzYWRmM2QyYWVk
ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlw
dC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcwpA
QCAtMTc5LDcgKzE3OSw3IEBAIERlYnVnZ2VyU2NyaXB0LnN0ZXBPdXRPZkZ1bmN0aW9uID0gZnVu
Y3Rpb24oZXhlY1N0YXRlKQogICAgIGV4ZWNTdGF0ZS5wcmVwYXJlU3RlcChEZWJ1Zy5TdGVwQWN0
aW9uLlN0ZXBPdXQsIDEpOwogfQogCi1EZWJ1Z2dlclNjcmlwdC5zZXRTY3JpcHRTb3VyY2UgPSBm
dW5jdGlvbihzY3JpcHRJZCwgbmV3U291cmNlLCBwcmV2aWV3KQorRGVidWdnZXJTY3JpcHQubGl2
ZUVkaXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHRJZCwgbmV3U291cmNlLCBwcmV2aWV3
KQogewogICAgIHZhciBzY3JpcHRzID0gRGVidWcuc2NyaXB0cygpOwogICAgIHZhciBzY3JpcHRU
b0VkaXQgPSBudWxsOwpAQCAtMjA2LDYgKzIwNiwxNiBAQCBEZWJ1Z2dlclNjcmlwdC5zZXRCcmVh
a3BvaW50c0FjdGl2YXRlZCA9IGZ1bmN0aW9uKGV4ZWNTdGF0ZSwgYXJncykKICAgICBEZWJ1Zy5k
ZWJ1Z2dlckZsYWdzKCkuYnJlYWtQb2ludHNBY3RpdmUuc2V0VmFsdWUoYXJncy5lbmFibGVkKTsK
IH0KIAorRGVidWdnZXJTY3JpcHQuZ2V0U2NyaXB0U291cmNlID0gZnVuY3Rpb24oZXZlbnREYXRh
KQoreworICAgIHJldHVybiBldmVudERhdGEuc2NyaXB0KCkuc291cmNlKCk7Cit9CisKK0RlYnVn
Z2VyU2NyaXB0LnNldFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKGV2ZW50RGF0YSwgc291cmNlKQor
eworICAgIGV2ZW50RGF0YS5zY3JpcHQoKS5zZXRTb3VyY2Uoc291cmNlKTsKK30KKwogRGVidWdn
ZXJTY3JpcHQuX2ZyYW1lTWlycm9yVG9KU0NhbGxGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lTWlycm9y
LCBjYWxsZXJGcmFtZSkKIHsKICAgICAvLyBHZXQgZnVuY3Rpb24gbmFtZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBiNzA1NTIz
YjcxZjU4Yjk5ZjAzMmYzOWI2YTY1MDRjODEwZjBlNWI1Li4yMDNhNTIyZDA2NjgzNzMwZWRkOGI1
MzA4NzczNTQ3NjY3MWRkNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01NywxMiArNTcsMTA3IEBAIHByaXZhdGU6CiAKIH0K
IAorY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3NvciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0UHJlcHJvY2Vzc29yKTsKK3B1YmxpYzoKKyAgICBTY3Jp
cHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBwcmVwcm9jZXNzb3JTY3JpcHQpCisgICAgICAg
IDogbV91dGlsaXR5SXNvbGF0ZSh2ODo6SXNvbGF0ZTo6TmV3KCkpCisgICAgeworICAgICAgICB2
ODo6SXNvbGF0ZTo6U2NvcGUgaXNvbGF0ZShtX3V0aWxpdHlJc29sYXRlKTsKKyAgICAgICAgdjg6
OkhhbmRsZVNjb3BlIHNjb3BlOworCisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RU
ZW1wbGF0ZT4gZ2xvYmFsVGVtcGxhdGU7CisgICAgICAgIG1fdXRpbGl0eUNvbnRleHQgPSB2ODo6
Q29udGV4dDo6TmV3KDAsIGdsb2JhbFRlbXBsYXRlKTsKKyAgICAgICAgaWYgKG1fdXRpbGl0eUNv
bnRleHQuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX3V0
aWxpdHlDb250ZXh0KTsKKyAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShj
b250ZXh0KTsKKworICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CisgICAgICAgIHRyeUNh
dGNoLlNldFZlcmJvc2UodHJ1ZSk7CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBw
cmVwcm9jZXNzb3IgPSB2ODo6U3RyaW5nOjpOZXcocHJlcHJvY2Vzc29yU2NyaXB0LnV0ZjgoKS5k
YXRhKCksIHByZXByb2Nlc3NvclNjcmlwdC51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB2ODo6
SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUocHJlcHJvY2Vz
c29yKTsKKworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHByZXByb2Nlc3NvckZ1bmN0
aW9uID0gc2NyaXB0LT5SdW4oKTsKKworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkg
fHwgIXByZXByb2Nlc3NvckZ1bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbV9wcmVwcm9jZXNzb3JGdW5jdGlvbiA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvbj46Ok5ldyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QocHJlcHJvY2Vz
c29yRnVuY3Rpb24pKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcHJlcHJvY2Vzc1NvdXJjZUNvZGUo
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdjg6Oklzb2xhdGU6OlNj
b3BlIGlzb2xhdGUobV91dGlsaXR5SXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBz
Y29wZTsKKworICAgICAgICBpZiAobV9wcmVwcm9jZXNzb3JGdW5jdGlvbi5Jc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZTsKKworICAgICAgICB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGlsaXR5Q29u
dGV4dCk7CisgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7
CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzb3VyY2VDb2RlU3RyaW5nID0gdjg6
OlN0cmluZzo6TmV3KHNvdXJjZUNvZGUudXRmOCgpLmRhdGEoKSwgc291cmNlQ29kZS51dGY4KCku
bGVuZ3RoKCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBzb3Vy
Y2VDb2RlU3RyaW5nIH07CisKKyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgICAg
ICB0cnlDYXRjaC5TZXRWZXJib3NlKHRydWUpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVzdWx0VmFsdWUgPSBtX3ByZXByb2Nlc3NvckZ1bmN0aW9uLT5DYWxsKGNvbnRleHQtPkds
b2JhbCgpLCAxLCBhcmd2KTsKKyAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGU7CisKKyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT5J
c1N0cmluZygpKSB7CisgICAgICAgICAgICB2ODo6U3RyaW5nOjpVdGY4VmFsdWUgdXRmOFZhbHVl
KHJlc3VsdFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCp1dGY4
VmFsdWUsIHV0ZjhWYWx1ZS5sZW5ndGgoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
c291cmNlQ29kZTsKKyAgICB9CisKKyAgICB+U2NyaXB0UHJlcHJvY2Vzc29yKCkKKyAgICB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHY4OjpJc29sYXRlOjpTY29wZSBpc29sYXRlKG1fdXRpbGl0
eUlzb2xhdGUpOworICAgICAgICAgICAgaWYgKCFtX3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIG1fdXRpbGl0eUNvbnRleHQuRGlzcG9zZSgpOworICAgICAgICAg
ICAgICAgIG1fdXRpbGl0eUNvbnRleHQuQ2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBtX3V0aWxpdHlJc29sYXRlLT5EaXNwb3NlKCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIHY4OjpJc29sYXRlKiBtX3V0aWxpdHlJc29sYXRlOworICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpDb250ZXh0PiBtX3V0aWxpdHlDb250ZXh0OworICAgIFN0cmluZyBtX3ByZXByb2Nlc3Nv
ckJvZHk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiBtX3ByZXByb2Nlc3NvckZ1
bmN0aW9uOworfTsKKwordjg6OkxvY2FsPHY4OjpTY3JpcHQ+IFNjcmlwdERlYnVnU2VydmVyOjpj
b21waWxlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UpCit7CisgICAg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNfaXNDb21waWxpbmdJbmplY3RlZFNjcmlwdCA9IHRydWU7Cisg
ICAgdjg6OkxvY2FsPHY4OjpTY3JpcHQ+IHJlc3VsdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhT
dHJpbmcoc2NyaXB0U291cmNlKSk7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNfaXNDb21waWxp
bmdJbmplY3RlZFNjcmlwdCA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNfaXNDb21waWxpbmdJbmplY3RlZFNjcmlwdCA9IGZhbHNlOwor
CiBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoKQogICAgIDogbV9wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKERvbnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fYnJlYWtwb2lu
dHNBY3RpdmF0ZWQodHJ1ZSkKIHsKIH0KIAorU2NyaXB0RGVidWdTZXJ2ZXI6On5TY3JpcHREZWJ1
Z1NlcnZlcigpCit7Cit9CisKIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRC
cmVha3BvaW50LCBpbnQqIGFjdHVhbExpbmVOdW1iZXIsIGludCogYWN0dWFsQ29sdW1uTnVtYmVy
KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKQEAgLTIyOCw3ICszMjMsNyBAQCBib29s
IFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgY29uc3QgU3RyaW5nJiBuZQogICAgIGlmICghaXNQYXVzZWQoKSkKICAgICAgICAgY29udGV4
dFNjb3BlID0gYWRvcHRQdHIobmV3IHY4OjpDb250ZXh0OjpTY29wZSh2ODo6RGVidWc6OkdldERl
YnVnQ29udGV4dCgpKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24g
PSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJzZXRTY3JpcHRTb3VyY2UiKSkpOworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImxpdmVFZGl0U2NyaXB0
U291cmNlIikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFN0cmlu
Zyhzb3VyY2VJRCksIHY4U3RyaW5nKG5ld0NvbnRlbnQpLCB2OEJvb2xlYW4ocHJldmlldykgfTsK
IAogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKQEAgLTI1Miw2ICszNDcsMTUgQEAgYm9vbCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQs
IGNvbnN0IFN0cmluZyYgbmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJvY2Vzc29y
Qm9keSkKK3sKKyAgICBpZiAocHJlcHJvY2Vzc29yQm9keS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9zY3JpcHRQcmVwcm9jZXNzb3IuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX3NjcmlwdFByZXByb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBTY3JpcHRQcmVwcm9jZXNzb3Io
cHJlcHJvY2Vzc29yQm9keSkpOworfQorCiBTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y3VycmVudENhbGxGcmFtZSgpCiB7CiAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwpAQCAtMzI3LDcg
KzQzMSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25z
dCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoZXZlbnQgIT0gdjg6OkJyZWFrICYmIGV2ZW50ICE9IHY4OjpFeGNlcHRpb24g
JiYgZXZlbnQgIT0gdjg6OkFmdGVyQ29tcGlsZSkKKyAgICBpZiAoZXZlbnQgIT0gdjg6OkJyZWFr
ICYmIGV2ZW50ICE9IHY4OjpFeGNlcHRpb24gJiYgZXZlbnQgIT0gdjg6OkFmdGVyQ29tcGlsZSAm
JiBldmVudCAhPSB2ODo6QmVmb3JlQ29tcGlsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gZXZlbnRDb250ZXh0ID0gZXZlbnREZXRhaWxzLkdldEV2ZW50
Q29udGV4dCgpOwpAQCAtMzM2LDcgKzQ0MCwyMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpo
YW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAog
ICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gZ2V0RGVidWdMaXN0ZW5lckZvckNv
bnRleHQoZXZlbnRDb250ZXh0KTsKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOwotICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkg
eworICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkJlZm9yZUNvbXBpbGUpIHsKKyAgICAgICAgICAg
IGlmICghbV9zY3JpcHRQcmVwcm9jZXNzb3IgfHwgU2NyaXB0RGVidWdTZXJ2ZXI6OnNfaXNDb21w
aWxpbmdJbmplY3RlZFNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0Nv
bnRleHQoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0
U291cmNlRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2Vy
U2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3JpcHRTb3VyY2UiKSkpOwor
ICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgZXZlbnREZXRhaWxz
LkdldEV2ZW50RGF0YSgpIH07CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2Ny
aXB0ID0gZ2V0U2NyaXB0U291cmNlRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KSwgMSwgYXJndik7CisKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRT
Y3JpcHRTb3VyY2VGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVi
dWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIp
KSk7CisgICAgICAgICAgICBTdHJpbmcgcGF0Y2hlZFNjcmlwdCA9IG1fc2NyaXB0UHJlcHJvY2Vz
c29yLT5wcmVwcm9jZXNzU291cmNlQ29kZSh0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZp
bmVkQ2hlY2soc2NyaXB0KSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
djJbXSA9IHsgZXZlbnREZXRhaWxzLkdldEV2ZW50RGF0YSgpLCB2OFN0cmluZyhwYXRjaGVkU2Ny
aXB0KSB9OworICAgICAgICAgICAgc2V0U2NyaXB0U291cmNlRnVuY3Rpb24tPkNhbGwobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKSwgMiwgYXJndjIpOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09
IHY4OjpBZnRlckNvbXBpbGUpIHsKICAgICAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250
ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAgICAgICAgICAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gb25BZnRlckNvbXBpbGVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5n
OjpOZXcoImdldEFmdGVyQ29tcGlsZVNjcmlwdCIpKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCkgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGRl
ODQ2NTE0MDExZTE3NTFmZDc3ZDIwZjlkNzRhMjVhMDgzNmJlN2MuLjc1MzU3NmYwYThhNmM0MjA2
ODIzODg4NDgxNWFhMjE0MjVjNjE3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNTMsNiArNTMsOCBAQCBjbGFzcyBTY3JpcHRWYWx1
ZTsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y3JpcHREZWJ1Z1NlcnZlcik7CiBwdWJsaWM6CisgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6U2Ny
aXB0PiBjb21waWxlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UpOwor
CiAgICAgU3RyaW5nIHNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U2NyaXB0QnJlYWtwb2ludCYsIGludCogYWN0dWFsTGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1
bW5OdW1iZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFr
cG9pbnRJZCk7CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CkBAIC04NCw2ICs4Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpIHsgfQogICAg
IHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9
IDApIHsgfQogCisgICAgdm9pZCBzZXRTY3JpcHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBw
cmVwcm9jZXNzb3JCb2R5KTsKKwogICAgIGNsYXNzIFRhc2sgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+VGFzaygpIHsgfQpAQCAtOTYsNyArMTAwLDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsKLSAgICB+U2NyaXB0RGVidWdTZXJ2ZXIo
KSB7IH0KKyAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICAKICAgICBTY3JpcHRWYWx1ZSBj
dXJyZW50Q2FsbEZyYW1lKCk7CiAKQEAgLTExMywxNCArMTE3LDIwIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc291cmNlT2JqZWN0KTsKIAogICAgIHZvaWQgZW5z
dXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpOwotICAgIAorCisgICAgU3RyaW5nIHByZXByb2Nl
c3NTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7CisKICAgICBQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6
Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9l
eGVjdXRpb25TdGF0ZTsKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1fcGF1c2VkQ29udGV4
dDsKLQogICAgIGJvb2wgbV9icmVha3BvaW50c0FjdGl2YXRlZDsKICAgICBPd25IYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZTsKKworcHJp
dmF0ZToKKyAgICBjbGFzcyBTY3JpcHRQcmVwcm9jZXNzb3I7CisgICAgc3RhdGljIGJvb2wgc19p
c0NvbXBpbGluZ0luamVjdGVkU2NyaXB0OworICAgIE93blB0cjxTY3JpcHRQcmVwcm9jZXNzb3I+
IG1fc2NyaXB0UHJlcHJvY2Vzc29yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOGJiNDI4MWUzODgyYjI0MjBiY2UxM2ZlZGY2MTQ3
NzlmNzY1YzhhMy4uNTg4MGU5YWY4YzRkNTk1YTEwMzNjMjM2NDM0ODYwN2FkMjkzM2ZiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nU3RhdGUuaCIKQEAgLTk1LDEwICs5NiwxNSBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdQog
ICAgIC8vIGluc3BlY3RvcidzIHN0dWZmKSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGEgZmV3IGxp
bmVzIGJlbG93IHdpdGggSW5qZWN0ZWRTY3JpcHRIb3N0IHdyYXBwZXIsCiAgICAgLy8gaW5qZWN0
ZWQgc2NyaXB0IGlkIGFuZCBleHBsaWNpdCByZWZlcmVuY2UgdG8gdGhlIGluc3BlY3RlZCBnbG9i
YWwgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQKICAgICAvLyB0byBjcmVhdGUgYW5k
IGNvbmZpZ3VyZSBJbmplY3RlZFNjcmlwdCBpbnN0YW5jZSB0aGF0IGlzIGdvaW5nIHRvIGJlIHVz
ZWQgYnkgdGhlIGluc3BlY3Rvci4KLSAgICB2ODo6TG9jYWw8djg6OlNjcmlwdD4gc2NyaXB0ID0g
djg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2UpKTsKKworICAgIHY4OjpU
cnlDYXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6TG9jYWw8djg6OlNjcmlwdD4gc2NyaXB0ID0gU2Ny
aXB0RGVidWdTZXJ2ZXI6OmNvbXBpbGVJbmplY3RlZFNjcmlwdChzY3JpcHRTb3VyY2UpOworICAg
IGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgp
OworCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdiA9IHNjcmlwdC0+UnVuKCk7Ci0gICAgQVNT
RVJUKCF2LklzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHYtPklzRnVuY3Rpb24oKSk7CisgICAgaWYg
KHRyeUNhdGNoLkhhc0NhdWdodCgpIHx8ICF2LT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biBTY3JpcHRPYmplY3QoKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7
CiAgICAgICBzY3JpcHRIb3N0V3JhcHBlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgppbmRleCBiYTFkN2JkYzE2N2Y0MmU5MjJhNTQyOTZiOWRmODc2ZTM5OTdlOWM4Li41
Y2U4NTRhMDlmNDgzYzI4NzI0YzdjYTZhMmQ5NTc0MWMxYWY5OWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMjIsNyArMjIyLDggQEAKICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJyZWxvYWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlnbm9yZUNhY2hlIiwgInR5cGUiOiAiYm9v
bGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBicm93c2Vy
IGNhY2hlIGlzIGlnbm9yZWQgKGFzIGlmIHRoZSB1c2VyIHByZXNzZWQgU2hpZnQrcmVmcmVzaCku
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SWYgc2V0LCB0aGUgc2NyaXB0IHdpbGwgYmUgaW5qZWN0ZWQgaW50byBhbGwgZnJhbWVzIG9mIHRo
ZSBpbnNwZWN0ZWQgcGFnZSBhZnRlciByZWxvYWQuIiB9CisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQsIHRoZSBzY3JpcHQgd2lsbCBiZSBp
bmplY3RlZCBpbnRvIGFsbCBmcmFtZXMgb2YgdGhlIGluc3BlY3RlZCBwYWdlIGFmdGVyIHJlbG9h
ZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyaXB0UHJlcHJvY2Vzc29y
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlNj
cmlwdCBib2R5IHRoYXQgc2hvdWxkIGV2YWx1YXRlIHRvIGZ1bmN0aW9uIHRoYXQgd2lsbCBwcmVw
cm9jZXNzIGFsbCB0aGUgc2NyaXB0cyBiZWZvcmUgdGhlaXIgY29tcGlsYXRpb24uIiB9CiAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVsb2FkcyBn
aXZlbiBwYWdlIG9wdGlvbmFsbHkgaWdub3JpbmcgdGhlIGNhY2hlLiIKICAgICAgICAgICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggY2M5NjgyYmY0MmVkODg5YTYwNGVkN2Q2NGI1Y2EzY2Y0MTM3OThkZC4uMjc3ZjJjYWUz
NTRjYmJiMTE3ZGE0MjNiNDgxOTExZjhjMWE3ZmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIElu
c3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVj
dG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKGNvbnNvbGVBZ2VudFB0
ci5yZWxlYXNlKCkpOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgT3du
UHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IGRlYnVnZ2VyQWdlbnRQdHIoUGFnZURlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCks
IHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgT3duUHRyPEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ+IGRlYnVnZ2VyQWdlbnRQdHIoUGFnZURlYnVnZ2VyQWdlbnQ6OmNy
ZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2Vu
dCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQg
PSBkZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChkZWJ1Z2dlckFn
ZW50UHRyLnJlbGVhc2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGE2YWJmYTQzNTMwYTI5N2VlZmQ2Mzg2ZThhZGZl
MGQ0NTNjM2I5ZTQuLmFjMzQxN2M2MTU2Y2RlMmFiZTVmZWM5OTY2OTU4NzA0MDQ4ZDAwOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRl
bmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOwogCi0gICAgdm9pZCBkaWRDbGVhck1h
aW5GcmFtZVdpbmRvd09iamVjdCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhck1haW5GcmFt
ZVdpbmRvd09iamVjdCgpOwogICAgIGJvb2wgaXNQYXVzZWQoKTsKIAogICAgIC8vIFBhcnQgb2Yg
dGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAppbmRleCA1NTM4NGYyYTIyNTI0YzhjZGEwMjk2YmNkYmFlYmJkNDg5Njg5M2Ey
Li5lNTc3NTRjYWQ5OWI0MmNmNDEwNzIwNDg5ZmNhMDQ5NWRmMTViNzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzgyLDkgKzM4
MiwxMCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0CiAgICAgc2NyaXB0cy0+cmVtb3ZlKGlkZW50
aWZpZXIpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5n
KiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBv
cHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
cmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNo
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIGNvbnN0IFN0
cmluZyogb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IpCiB7CiAgICAgbV9wZW5kaW5nU2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQgPyAq
b3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDogIiI7CisgICAgbV9wZW5kaW5nU2NyaXB0
UHJlcHJvY2Vzc29yID0gb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IgPyAqb3B0aW9uYWxTY3Jp
cHRQcmVwcm9jZXNzb3IgOiAiIjsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
cmVsb2FkKG9wdGlvbmFsSWdub3JlQ2FjaGUgPyAqb3B0aW9uYWxJZ25vcmVDYWNoZSA6IGZhbHNl
KTsKIH0KIApAQCAtNzAwLDcgKzcwMSw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFt
ZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmIChsb2FkZXItPmZy
YW1lKCkgPT0gbV9wYWdlLT5tYWluRnJhbWUoKSkgewogICAgICAgICBtX3NjcmlwdFRvRXZhbHVh
dGVPbkxvYWRPbmNlID0gbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CisgICAg
ICAgIG1fc2NyaXB0UHJlcHJvY2Vzc29yID0gbV9wZW5kaW5nU2NyaXB0UHJlcHJvY2Vzc29yOwog
ICAgICAgICBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IFN0cmluZygpOwor
ICAgICAgICBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3IgPSBTdHJpbmcoKTsKICAgICB9CiAg
ICAgbV9mcm9udGVuZC0+ZnJhbWVOYXZpZ2F0ZWQoYnVpbGRPYmplY3RGb3JGcmFtZShsb2FkZXIt
PmZyYW1lKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCBkZjk1ZWUyMGY1ODg1ZTBkOGM1NjFmMmY5MDFiNzI4OWM1MGNkZTJkLi4z
MWRmMDdmZmJmMWU5NzE0NzliMDJlNGIzMTA2ODU4MzQzZjA1MGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1
YWwgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Ny
aXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIG9w
dGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRl
T25Mb2FkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9v
bCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZh
bHVhdGVPbkxvYWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IpOwog
ICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJs
KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4mIGNvb2tpZXMsIFdURjo6U3RyaW5nKiBjb29raWVzU3RyaW5nKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7CkBAIC0xMjMsMTIgKzEyMywxNCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBB
UEkKKyAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgRnJhbWUqIG1haW5G
cmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJhbWUqIGZyYW1l
Rm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICBTdHJpbmcgZnJhbWVJZChGcmFtZSop
OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAgIEZyYW1lKiBhc3Nl
cnRGcmFtZShFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKKyAgICBTdHJpbmcgc2NyaXB0
UHJlcHJvY2Vzc29yKCkgeyByZXR1cm4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7IH0KICAgICBzdGF0
aWMgRG9jdW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJh
bWUqKTsKIAogcHJpdmF0ZToKQEAgLTE0Niw2ICsxNDgsOCBAQCBwcml2YXRlOgogICAgIGxvbmcg
bV9sYXN0U2NyaXB0SWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZE9uY2U7CiAgICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7
CisgICAgU3RyaW5nIG1fcGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBTdHJpbmcgbV9z
Y3JpcHRQcmVwcm9jZXNzb3I7CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFtZVRv
SWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJUb0Zy
YW1lOwogICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVu
dGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggNmI4NjIzMmRlYTE1M2M2MGVhZWM1NzFiMjJjNTkwNmQxNzNhYTZmNC4uYzE4OTI5
MmQzYmRjMWQxZjQ0YmVkMjkzZmNjMGI0ODZkYmFhZmY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMywxOCArMzMsMTkgQEAKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogCisj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVn
U2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxQYWdlRGVidWdn
ZXJBZ2VudD4gUGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2Uq
IGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQorUGFzc093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gUGFnZURlYnVnZ2VyQWdlbnQ6OmNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JT
dGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFBhZ2VEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluc3Bl
Y3RvclN0YXRlLCBpbnNwZWN0ZWRQYWdlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMs
IGluc3BlY3RvclN0YXRlLCBwYWdlQWdlbnQsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpOwogfQog
Ci1QYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBQ
YWdlKiBpbnNwZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlcikKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9y
U3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQo
aW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdl
cikKLSAgICAsIG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdlKQorICAgICwgbV9wYWdlQWdl
bnQocGFnZUFnZW50KQogewogfQogCkBAIC01NCwxMiArNTUsMTIgQEAgUGFnZURlYnVnZ2VyQWdl
bnQ6On5QYWdlRGVidWdnZXJBZ2VudCgpCiAKIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0YXJ0
TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQogewotICAgIHNjcmlwdERlYnVnU2VydmVyKCku
YWRkTGlzdGVuZXIodGhpcywgbV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZl
cigpLmFkZExpc3RlbmVyKHRoaXMsIG1fcGFnZUFnZW50LT5wYWdlKCkpOwogfQogCiB2b2lkIFBh
Z2VEZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQogewotICAg
IHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgbV9pbnNwZWN0ZWRQYWdl
KTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3RlbmVyKHRoaXMsIG1fcGFnZUFn
ZW50LT5wYWdlKCkpOwogfQogCiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIFBhZ2VEZWJ1Z2dlckFn
ZW50OjpzY3JpcHREZWJ1Z1NlcnZlcigpCkBAIC02Nyw2ICs2OCwxMiBAQCBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXImIFBhZ2VEZWJ1Z2dlckFnZW50OjpzY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgcmV0
dXJuIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCk7CiB9CiAKK3ZvaWQgUGFnZURlYnVn
Z2VyQWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCkKK3sKKyAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOworICAgIHNj
cmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0UHJlcHJvY2Vzc29yKG1fcGFnZUFnZW50LT5zY3Jp
cHRQcmVwcm9jZXNzb3IoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA3ZDZhZjZj
MmI2MzUxYmY3NGU5Mjk3NDMxZTcwNzE4ZmE3ZTY2MGViLi42MTM4NTFiNmRmNTJlZDJhNTI3Mjhh
YTMyNzVmZTRiYzEyOGJhYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURl
YnVnZ2VyQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI7CiAKQEAgLTQ0LDE2ICs0NSwxNyBAQCBjbGFzcyBQYWdlRGVidWdnZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQYWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdl
QWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5QYWdlRGVidWdn
ZXJBZ2VudCgpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1Nj
cmlwdERlYnVnU2VydmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHRE
ZWJ1Z1NlcnZlcigpOwogICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHRE
ZWJ1Z1NlcnZlcigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09i
amVjdCgpOwogCi0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwotICAgIFBhZ2Uq
IGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKKyAgICBQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmYzFlYmEzNzMxMDQxNzAzZjEx
NmJiOGU1NTBkMzRjMjYyNjg2MzkuLmZjMDgyMGQ0Y2QwNjY4Y2RiNmQ4MWIzMDAyYTZiMDc3ZjMy
YmI3NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0xMyAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRl
IGEgd2F5IHRvIHJlbG9hZCBwYWdlIHdpdGggZ2l2ZW4gc2NyaXB0IHByZXByb2Nlc3Nvci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwOTkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNz
b3IuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNraXAgbmV3IGZhaWxpbmcgdGVz
dCBvbiBHVEsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCmluZGV4IDFhMTViN2RiYWJlMTQxOTYzYjM3NGMyY2RjODlmY2EwMzUyNjE5
MjAuLmMxMThkNTkyNzNkNTQzM2E5MTY2MzJmZGJjODA3MDEwMTI2ZGE1YjUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0x
ODgsMTMgKzE4OCwxMyBAQCBJbnNwZWN0b3JUZXN0Lm5hdmlnYXRlID0gZnVuY3Rpb24odXJsLCBj
YWxsYmFjaykKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9j
YXRpb24gPSAnIiArIHVybCArICInIik7CiB9CiAKLUluc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9
IGZ1bmN0aW9uKGNhbGxiYWNrKQorSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24o
Y2FsbGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3NvcikKIHsK
ICAgICBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNh
ZmVXcmFwKGNhbGxiYWNrKTsKIAogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsp
CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fcmVzZXQoKTsKLSAgICBQYWdl
QWdlbnQucmVsb2FkKGZhbHNlKTsKKyAgICBQYWdlQWdlbnQucmVsb2FkKGZhbHNlLCBzY3JpcHRU
b0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCiBJbnNwZWN0b3JUZXN0
LnBhZ2VMb2FkZWQgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nv
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI0NmMzZTVmMDMwNzVlYWQxNjJlNzVkYzNmNTY1
ODBhMzE4ZDBhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitUZXN0cyBzY3JpcHQgcHJlcHJvY2Vzc29yIChhYmlsaXR5IHRvIHByZXByb2Nlc3Mg
YWxsIHNjcmlwdHMgdXBvbiByZWxvYWQpLgorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KK1BhZ2Ug
cmVsb2FkZWQuCitpbnNwZWN0b3ItdGVzdC5qcworZGVidWdnZXItdGVzdC5qcworZGVidWdnZXIt
c2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0
bWwKK2Zha2VfdXJsCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXBy
b2Nlc3Nvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNDE5ZDFlZjkzMWIwMmU0YTE2MTdmODk0OTk0YjQz
MDU1YzExM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rp
b24gbG9hZCgpCit7CisgICAgZXZhbCgiZnVuY3Rpb24gZHluYW1pYyIgKyAiU2NyaXB0KCkge30i
KTsgCisgICAgcnVuVGVzdCgpOworfQorCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBm
dW5jdGlvbiBwcmVwcm9jZXNzb3Ioc2NyaXB0KQorICAgIHsKKyAgICAgICAgaWYgKHNjcmlwdC5p
bmRleE9mKCJkeW5hbWljIiArICJTY3JpcHQiKSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm4g
c2NyaXB0ICsgIi8vQCBzb3VyY2VVUkw9ZmFrZV91cmwiOworICAgICAgICByZXR1cm4gc2NyaXB0
OworICAgIH0KKworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwor
CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxv
YWRQYWdlKHN0ZXAyLCB1bmRlZmluZWQsICIoIiArIHByZXByb2Nlc3NvciArICIpIik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gYWNjZXB0
KHNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgdmFyIHNjcmlwdHMgPSBJbnNwZWN0b3JUZXN0LnF1ZXJ5U2NyaXB0cyhhY2NlcHQp
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVG
b3JVUkwoc2NyaXB0c1tpXS5zb3VyY2VVUkwpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0ibG9hZCgpIj4KKzxwPgorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAoYWJp
bGl0eSB0byBwcmVwcm9jZXNzIGFsbCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKzwvcD4KKworPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133806</attachid>
            <date>2012-03-26 07:27:12 -0700</date>
            <delta_ts>2012-03-26 11:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80992-20120326182710.patch</filename>
            <type>text/plain</type>
            <size>30680</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjczMjUwOTdhZmYxNTUy
MGU0MWM2MTkyNmFkZjMyZDBkNTM2YzRlYS4uYWZkYTk0YTQ4YWJkMmFmMjY5YjQxYWM5MTEzMzEw
OWNhODBhNDBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAzLTI2ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgd2F5IHRvIGluamVjdCAncHJlcHJvY2Vzc29yJyBzY3Jp
cHQgdGhhdCB3b3VsZCBwcm9jZXNzCisgICAgICAgIGVhY2ggSmF2YVNjcmlwdCBmaWxlIGJlZm9y
ZSBpdCBnZXRzIGludG8gdGhlIFZNIGZvciBjb21waWxhdGlvbi4gVGhhdCB3YXkgaW5zcGVjdG9y
CisgICAgICAgIGNhbiBleHBvc2UgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgYXNzZXNzaW5nIGNvZGUg
Y292ZXJhZ2Ugb3IgdHJhY2luZyBhbGwgdGhlIGNhbGxzLgorCisgICAgICAgIFByZXByb2Nlc3Nv
ciBzY3JpcHQgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGFnZW50IHdoZXJlIGl0IHdhaXRzIGZvciBy
ZWxvYWQgdG8gaGFwcGVuLgorICAgICAgICBVcG9uIHJlbG9hZCwgU2NyaXB0RGVidWdTZXJ2ZXIg
aXMgdXNpbmcgaXQgdG8gcGF0Y2ggdGhlIHNjcmlwdCBzb3VyY2VzLgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAg
KFNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlw
dC5qczoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHRQcmVwcm9jZXNzb3I6OlNjcmlwdFByZXBy
b2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJl
cHJvY2Vzc29yOjpwcmVwcm9jZXNzU291cmNlQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjp+U2NyaXB0UHJlcHJvY2Vzc29yKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OmNvbXBpbGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6flNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0
UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKEluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VE
ZWJ1Z2dlckFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdl
bnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFn
ZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VEZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYWdlRGVidWdnZXJB
Z2VudCk6CisKIDIwMTItMDMtMjIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNaWdyYXRlIEluc3BlY3RvckNTU0FnZW50
IHRvIHN0cmljdCBwcm90b2NvbCB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggMGVjZDVhODcwNzZkYzFkNWFjNzAxMTE4OGEyMTk1
MzZiZGNmZjYyYS4uYjY0OWJiNDMwZWI3MDgyZWI4MjRlZGIyMGNlZTQxN2I5NTg2NGYzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC05
MCw2ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nv
b24oKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2Ny
aXB0RGVidWdTZXJ2ZXI+KiA9IDApID0gMDsKIAorICAgIHZvaWQgc2V0U2NyaXB0UHJlcHJvY2Vz
c29yKGNvbnN0IFN0cmluZyYpCisgICAgeworICAgICAgICAvLyBGSVhNRSh3ZWJraXQub3JnL2Iv
ODIyMDMpOiBJbXBsZW1lbnQgcHJlcHJvY2Vzc29yLgorICAgIH0KKwogICAgIGJvb2wgaXNQYXVz
ZWQoKSB7IHJldHVybiBtX3BhdXNlZDsgfQogCiAgICAgY2xhc3MgVGFzayB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCmluZGV4IGI0ZDBiOTE4YzQ3OWRl
NDVkZWUwNmRiYTFjZDEzMzVkMmQ2ZWY3MWUuLjE4NzEwMjgxMjkyYmM3ZWNhMzA1Y2U5OTM0ZTNh
ZGYzZDJhZWRmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVn
Z2VyU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2Ny
aXB0LmpzCkBAIC0xNzksNyArMTc5LDcgQEAgRGVidWdnZXJTY3JpcHQuc3RlcE91dE9mRnVuY3Rp
b24gPSBmdW5jdGlvbihleGVjU3RhdGUpCiAgICAgZXhlY1N0YXRlLnByZXBhcmVTdGVwKERlYnVn
LlN0ZXBBY3Rpb24uU3RlcE91dCwgMSk7CiB9CiAKLURlYnVnZ2VyU2NyaXB0LnNldFNjcmlwdFNv
dXJjZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIHByZXZpZXcpCitEZWJ1Z2dlclNj
cmlwdC5saXZlRWRpdFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2Us
IHByZXZpZXcpCiB7CiAgICAgdmFyIHNjcmlwdHMgPSBEZWJ1Zy5zY3JpcHRzKCk7CiAgICAgdmFy
IHNjcmlwdFRvRWRpdCA9IG51bGw7CkBAIC0yMDYsNiArMjA2LDE2IEBAIERlYnVnZ2VyU2NyaXB0
LnNldEJyZWFrcG9pbnRzQWN0aXZhdGVkID0gZnVuY3Rpb24oZXhlY1N0YXRlLCBhcmdzKQogICAg
IERlYnVnLmRlYnVnZ2VyRmxhZ3MoKS5icmVha1BvaW50c0FjdGl2ZS5zZXRWYWx1ZShhcmdzLmVu
YWJsZWQpOwogfQogCitEZWJ1Z2dlclNjcmlwdC5nZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihl
dmVudERhdGEpCit7CisgICAgcmV0dXJuIGV2ZW50RGF0YS5zY3JpcHQoKS5zb3VyY2UoKTsKK30K
KworRGVidWdnZXJTY3JpcHQuc2V0U2NyaXB0U291cmNlID0gZnVuY3Rpb24oZXZlbnREYXRhLCBz
b3VyY2UpCit7CisgICAgZXZlbnREYXRhLnNjcmlwdCgpLnNldFNvdXJjZShzb3VyY2UpOworfQor
CiBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJh
bWVNaXJyb3IsIGNhbGxlckZyYW1lKQogewogICAgIC8vIEdldCBmdW5jdGlvbiBuYW1lLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4
IGI3MDU1MjNiNzFmNThiOTlmMDMyZjM5YjZhNjUwNGM4MTBmMGU1YjUuLjIwM2E1MjJkMDY2ODM3
MzBlZGQ4YjUzMDg3NzM1NDc2NjcxZGQ0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTU3LDEyICs1NywxMDcgQEAgcHJpdmF0
ZToKIAogfQogCitjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHRQcmVwcm9jZXNzb3IpOworcHVibGljOgor
ICAgIFNjcmlwdFByZXByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIHByZXByb2Nlc3NvclNjcmlwdCkK
KyAgICAgICAgOiBtX3V0aWxpdHlJc29sYXRlKHY4OjpJc29sYXRlOjpOZXcoKSkKKyAgICB7Cisg
ICAgICAgIHY4OjpJc29sYXRlOjpTY29wZSBpc29sYXRlKG1fdXRpbGl0eUlzb2xhdGUpOworICAg
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdFRlbXBsYXRlPiBnbG9iYWxUZW1wbGF0ZTsKKyAgICAgICAgbV91dGlsaXR5Q29udGV4
dCA9IHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVtcGxhdGUpOworICAgICAgICBpZiAobV91
dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
djg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6
TmV3KG1fdXRpbGl0eUNvbnRleHQpOworICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4
dFNjb3BlKGNvbnRleHQpOworCisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAg
ICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKKworICAgICAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHByZXByb2Nlc3NvciA9IHY4OjpTdHJpbmc6Ok5ldyhwcmVwcm9jZXNzb3JTY3JpcHQu
dXRmOCgpLmRhdGEoKSwgcHJlcHJvY2Vzc29yU2NyaXB0LnV0ZjgoKS5sZW5ndGgoKSk7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShw
cmVwcm9jZXNzb3IpOworCisgICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcHJlcHJvY2Vz
c29yRnVuY3Rpb24gPSBzY3JpcHQtPlJ1bigpOworCisgICAgICAgIGlmICh0cnlDYXRjaC5IYXND
YXVnaHQoKSB8fCAhcHJlcHJvY2Vzc29yRnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX3ByZXByb2Nlc3NvckZ1bmN0aW9uID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChw
cmVwcm9jZXNzb3JGdW5jdGlvbikpOworICAgIH0KKworICAgIFN0cmluZyBwcmVwcm9jZXNzU291
cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCisgICAgeworICAgICAgICB2ODo6SXNv
bGF0ZTo6U2NvcGUgaXNvbGF0ZShtX3V0aWxpdHlJc29sYXRlKTsKKyAgICAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOworCisgICAgICAgIGlmIChtX3ByZXByb2Nlc3NvckZ1bmN0aW9uLklzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlOworCisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX3V0
aWxpdHlDb250ZXh0KTsKKyAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShj
b250ZXh0KTsKKworICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNvdXJjZUNvZGVTdHJp
bmcgPSB2ODo6U3RyaW5nOjpOZXcoc291cmNlQ29kZS51dGY4KCkuZGF0YSgpLCBzb3VyY2VDb2Rl
LnV0ZjgoKS5sZW5ndGgoKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10g
PSB7IHNvdXJjZUNvZGVTdHJpbmcgfTsKKworICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
CisgICAgICAgIHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7CisgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZXN1bHRWYWx1ZSA9IG1fcHJlcHJvY2Vzc29yRnVuY3Rpb24tPkNhbGwoY29u
dGV4dC0+R2xvYmFsKCksIDEsIGFyZ3YpOworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0
KCkpCisgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZTsKKworICAgICAgICBpZiAocmVzdWx0
VmFsdWUtPklzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIHY4OjpTdHJpbmc6OlV0ZjhWYWx1ZSB1
dGY4VmFsdWUocmVzdWx0VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoKnV0ZjhWYWx1ZSwgdXRmOFZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBzb3VyY2VDb2RlOworICAgIH0KKworICAgIH5TY3JpcHRQcmVwcm9jZXNzb3IoKQor
ICAgIHsKKyAgICAgICAgeworICAgICAgICAgICAgdjg6Oklzb2xhdGU6OlNjb3BlIGlzb2xhdGUo
bV91dGlsaXR5SXNvbGF0ZSk7CisgICAgICAgICAgICBpZiAoIW1fdXRpbGl0eUNvbnRleHQuSXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgbV91dGlsaXR5Q29udGV4dC5EaXNwb3NlKCk7Cisg
ICAgICAgICAgICAgICAgbV91dGlsaXR5Q29udGV4dC5DbGVhcigpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIG1fdXRpbGl0eUlzb2xhdGUtPkRpc3Bvc2UoKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdjg6Oklzb2xhdGUqIG1fdXRpbGl0eUlzb2xhdGU7CisgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fdXRpbGl0eUNvbnRleHQ7CisgICAgU3RyaW5nIG1fcHJl
cHJvY2Vzc29yQm9keTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+IG1fcHJlcHJv
Y2Vzc29yRnVuY3Rpb247Cit9OworCit2ODo6TG9jYWw8djg6OlNjcmlwdD4gU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNvbXBpbGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSkK
K3sKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c19pc0NvbXBpbGluZ0luamVjdGVkU2NyaXB0ID0g
dHJ1ZTsKKyAgICB2ODo6TG9jYWw8djg6OlNjcmlwdD4gcmVzdWx0ID0gdjg6OlNjcmlwdDo6Q29t
cGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2UpKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c19p
c0NvbXBpbGluZ0luamVjdGVkU2NyaXB0ID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c19pc0NvbXBpbGluZ0luamVjdGVkU2NyaXB0ID0g
ZmFsc2U7CisKIFNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgOiBt
X3BhdXNlT25FeGNlcHRpb25zU3RhdGUoRG9udFBhdXNlT25FeGNlcHRpb25zKQogICAgICwgbV9i
cmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQogewogfQogCitTY3JpcHREZWJ1Z1NlcnZlcjo6flNj
cmlwdERlYnVnU2VydmVyKCkKK3sKK30KKwogU3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQm
IHNjcmlwdEJyZWFrcG9pbnQsIGludCogYWN0dWFsTGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1
bW5OdW1iZXIpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwpAQCAtMjI4LDcgKzMyMyw3
IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcm
IHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5lCiAgICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAg
ICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBm
dW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQu
Z2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46
OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGl2ZUVk
aXRTY3JpcHRTb3VyY2UiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IHY4U3RyaW5nKHNvdXJjZUlEKSwgdjhTdHJpbmcobmV3Q29udGVudCksIHY4Qm9vbGVhbihwcmV2
aWV3KSB9OwogCiAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwpAQCAtMjUyLDYgKzM0NywxNSBA
QCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBwcmVw
cm9jZXNzb3JCb2R5KQoreworICAgIGlmIChwcmVwcm9jZXNzb3JCb2R5LmlzRW1wdHkoKSkgewor
ICAgICAgICBtX3NjcmlwdFByZXByb2Nlc3Nvci5jbGVhcigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fc2NyaXB0UHJlcHJvY2Vzc29yID0gYWRvcHRQdHIobmV3IFNjcmlwdFByZXBy
b2Nlc3NvcihwcmVwcm9jZXNzb3JCb2R5KSk7Cit9CisKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVn
U2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CkBA
IC0zMjcsNyArNDMxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2
ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChldmVudCAhPSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4
Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJDb21waWxlKQorICAgIGlmIChldmVudCAhPSB2
ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJD
b21waWxlICYmIGV2ZW50ICE9IHY4OjpCZWZvcmVDb21waWxlKQogICAgICAgICByZXR1cm47CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBldmVudENvbnRleHQgPSBldmVudERldGFpbHMu
R2V0RXZlbnRDb250ZXh0KCk7CkBAIC0zMzYsNyArNDQwLDIwIEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYg
ZXZlbnRECiAgICAgU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIgPSBnZXREZWJ1Z0xpc3Rl
bmVyRm9yQ29udGV4dChldmVudENvbnRleHQpOwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIGlmIChldmVudCA9PSB2ODo6QWZ0ZXJD
b21waWxlKSB7CisgICAgICAgIGlmIChldmVudCA9PSB2ODo6QmVmb3JlQ29tcGlsZSkgeworICAg
ICAgICAgICAgaWYgKCFtX3NjcmlwdFByZXByb2Nlc3NvciB8fCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c19pc0NvbXBpbGluZ0luamVjdGVkU2NyaXB0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6Okdl
dERlYnVnQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBn
ZXRTY3JpcHRTb3VyY2VGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldFNjcmlwdFNvdXJj
ZSIpKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBldmVu
dERldGFpbHMuR2V0RXZlbnREYXRhKCkgfTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzY3JpcHQgPSBnZXRTY3JpcHRTb3VyY2VGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2Ny
aXB0LmdldCgpLCAxLCBhcmd2KTsKKworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IHNldFNjcmlwdFNvdXJjZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNh
c3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0U2NyaXB0
U291cmNlIikpKTsKKyAgICAgICAgICAgIFN0cmluZyBwYXRjaGVkU2NyaXB0ID0gbV9zY3JpcHRQ
cmVwcm9jZXNzb3ItPnByZXByb2Nlc3NTb3VyY2VDb2RlKHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxs
T3JVbmRlZmluZWRDaGVjayhzY3JpcHQpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2MltdID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCksIHY4U3RyaW5nKHBh
dGNoZWRTY3JpcHQpIH07CisgICAgICAgICAgICBzZXRTY3JpcHRTb3VyY2VGdW5jdGlvbi0+Q2Fs
bChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAyLCBhcmd2Mik7CisgICAgICAgIH0gZWxzZSBpZiAo
ZXZlbnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkgewogICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNj
b3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKICAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBvbkFmdGVyQ29tcGlsZUZ1bmN0aW9uID0gdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4
OjpTdHJpbmc6Ok5ldygiZ2V0QWZ0ZXJDb21waWxlU2NyaXB0IikpKTsKICAgICAgICAgICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEo
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
aW5kZXggZGU4NDY1MTQwMTFlMTc1MWZkNzdkMjBmOWQ3NGEyNWEwODM2YmU3Yy4uNzUzNTc2ZjBh
OGE2YzQyMDY4MjM4ODg0ODE1YWEyMTQyNWM2MTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC01Myw2ICs1Myw4IEBAIGNsYXNzIFNj
cmlwdFZhbHVlOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdjg6OkxvY2Fs
PHY4OjpTY3JpcHQ+IGNvbXBpbGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNv
dXJjZSk7CisKICAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFj
dHVhbENvbHVtbk51bWJlcik7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmlu
ZyYgYnJlYWtwb2ludElkKTsKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKQEAgLTg0LDYg
Kzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCkg
eyB9CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhUaW1lcjxTY3JpcHREZWJ1Z1Nl
cnZlcj4qID0gMCkgeyB9CiAKKyAgICB2b2lkIHNldFNjcmlwdFByZXByb2Nlc3Nvcihjb25zdCBT
dHJpbmcmIHByZXByb2Nlc3NvckJvZHkpOworCiAgICAgY2xhc3MgVGFzayB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9CkBAIC05Niw3ICsxMDAsNyBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBTY3JpcHREZWJ1Z1NlcnZlcigpOwotICAgIH5TY3JpcHREZWJ1
Z1NlcnZlcigpIHsgfQorICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpOwogICAgIAogICAgIFNjcmlw
dFZhbHVlIGN1cnJlbnRDYWxsRnJhbWUoKTsKIApAQCAtMTEzLDE0ICsxMTcsMjAgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShTY3JpcHREZWJ1Z0xpc3RlbmVy
KiBsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzb3VyY2VPYmplY3QpOwogCiAgICAg
dm9pZCBlbnN1cmVEZWJ1Z2dlclNjcmlwdENvbXBpbGVkKCk7Ci0gICAgCisKKyAgICBTdHJpbmcg
cHJlcHJvY2Vzc1NvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKwogICAgIFBh
dXNlT25FeGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgIE93bkhh
bmRsZTx2ODo6T2JqZWN0PiBtX2RlYnVnZ2VyU2NyaXB0OwogICAgIE93bkhhbmRsZTx2ODo6T2Jq
ZWN0PiBtX2V4ZWN1dGlvblN0YXRlOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVz
ZWRDb250ZXh0OwotCiAgICAgYm9vbCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOwogICAgIE93bkhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9icmVha1Byb2dyYW1DYWxsYmFja1RlbXBsYXRl
OworCitwcml2YXRlOgorICAgIGNsYXNzIFNjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBzdGF0aWMg
Ym9vbCBzX2lzQ29tcGlsaW5nSW5qZWN0ZWRTY3JpcHQ7CisgICAgT3duUHRyPFNjcmlwdFByZXBy
b2Nlc3Nvcj4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCA4YmI0MjgxZTM4ODJiMjQyMGJjZTEz
ZmVkZjYxNDc3OWY3NjVjOGEzLi41ODgwZTlhZjhjNGQ1OTVhMTAzM2MyMzY0MzQ4NjA3YWQyOTMz
ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmdTdGF0ZS5oIgpAQCAtOTUsMTAgKzk2LDE1IEBAIFNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc2Ny
aXB0U291CiAgICAgLy8gaW5zcGVjdG9yJ3Mgc3R1ZmYpIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQg
YSBmZXcgbGluZXMgYmVsb3cgd2l0aCBJbmplY3RlZFNjcmlwdEhvc3Qgd3JhcHBlciwKICAgICAv
LyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVj
dGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNy
ZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcg
dG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgotICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBz
Y3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworCisg
ICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3Jp
cHQgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6Y29tcGlsZUluamVjdGVkU2NyaXB0KHNjcmlwdFNvdXJj
ZSk7CisgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgICAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KCk7CisKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2ID0gc2NyaXB0LT5SdW4oKTsK
LSAgICBBU1NFUlQoIXYuSXNFbXB0eSgpKTsKLSAgICBBU1NFUlQodi0+SXNGdW5jdGlvbigpKTsK
KyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkgfHwgIXYtPklzRnVuY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFy
Z3NbXSA9IHsKICAgICAgIHNjcmlwdEhvc3RXcmFwcGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCmluZGV4IGJhMWQ3YmRjMTY3ZjQyZTkyMmE1NDI5NmI5ZGY4NzZlMzk5
N2U5YzguLjVjZTg1NGEwOWY0ODNjMjg3MjRjN2NhNmEyZDk1NzQxYzFhZjk5ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTIyMiw3ICsyMjIsOCBAQAogICAg
ICAgICAgICAgICAgICJuYW1lIjogInJlbG9hZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaWdub3JlQ2FjaGUiLCAidHlw
ZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHRydWUs
IGJyb3dzZXIgY2FjaGUgaXMgaWdub3JlZCAoYXMgaWYgdGhlIHVzZXIgcHJlc3NlZCBTaGlmdCty
ZWZyZXNoKS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJJZiBzZXQsIHRoZSBzY3JpcHQgd2lsbCBiZSBpbmplY3RlZCBpbnRvIGFsbCBmcmFt
ZXMgb2YgdGhlIGluc3BlY3RlZCBwYWdlIGFmdGVyIHJlbG9hZC4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzY3JpcHRUb0V2YWx1YXRlT25Mb2FkIiwgInR5cGUiOiAic3RyaW5n
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHNldCwgdGhlIHNjcmlwdCB3
aWxsIGJlIGluamVjdGVkIGludG8gYWxsIGZyYW1lcyBvZiB0aGUgaW5zcGVjdGVkIHBhZ2UgYWZ0
ZXIgcmVsb2FkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JpcHRQcmVw
cm9jZXNzb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiU2NyaXB0IGJvZHkgdGhhdCBzaG91bGQgZXZhbHVhdGUgdG8gZnVuY3Rpb24gdGhhdCB3
aWxsIHByZXByb2Nlc3MgYWxsIHRoZSBzY3JpcHRzIGJlZm9yZSB0aGVpciBjb21waWxhdGlvbi4i
IH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJS
ZWxvYWRzIGdpdmVuIHBhZ2Ugb3B0aW9uYWxseSBpZ25vcmluZyB0aGUgY2FjaGUuIgogICAgICAg
ICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCBkODNkNmM2Yzg0YWNkZjczYzJlZWM1MmQ3N2JmZWVjNWEzZTI0ODk3Li43
ZGYwMmFhM2RlNzg5NzIzNjhhOGQwMjk0Mjk2NzlkYmI0ODVlMmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMjgsNyArMTI4
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQoY29uc29s
ZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudFB0cihQYWdl
RGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpKTsKKyAgICBPd25Q
dHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudFB0cihQYWdlRGVidWdnZXJB
Z2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwg
cGFnZUFnZW50LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwogICAgIG1fZGVidWdn
ZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRl
YnVnZ2VyQWdlbnRQdHIucmVsZWFzZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNDZlM2EzMzE1MTBhZGU0ZGQ4Nzk5
YzVmMDVlOWNhNjc5OTY0ZWQ5My4uNjkyNmU0MjQ4MWEwZThiMjc5ZjhlOGI0NGY1NDY3MGQ2OWE4
OTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiAKLSAgICB2b2lkIGRp
ZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFy
TWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAgICAgYm9vbCBpc1BhdXNlZCgpOwogCiAgICAgLy8g
UGFydCBvZiB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGE1OWE0YzliYjZmNzhlY2U2NDhmYTg5ODQ5ZDRlODc0
ZDNkZDE3YWEuLmU0M2NjZThjNWQ2YjY5MzkxOThkYmM5YTE1YjUzN2RjZDJkNGQ3NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0z
ODIsOSArMzgyLDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZW1vdmVTY3JpcHRUb0V2
YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QKICAgICBzY3JpcHRzLT5yZW1v
dmUoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoRXJy
b3JTdHJpbmcqLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBT
dHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCkKK3ZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbEln
bm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFByZXByb2Nlc3NvcikKIHsKICAgICBtX3BlbmRp
bmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZCA/ICpvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQgOiAiIjsKKyAgICBtX3BlbmRp
bmdTY3JpcHRQcmVwcm9jZXNzb3IgPSBvcHRpb25hbFNjcmlwdFByZXByb2Nlc3NvciA/ICpvcHRp
b25hbFNjcmlwdFByZXByb2Nlc3NvciA6ICIiOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNoZSA/ICpvcHRpb25hbElnbm9yZUNhY2hl
IDogZmFsc2UpOwogfQogCkBAIC03MDMsNyArNzA0LDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKGxv
YWRlci0+ZnJhbWUoKSA9PSBtX3BhZ2UtPm1haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fc2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25j
ZTsKKyAgICAgICAgbV9zY3JpcHRQcmVwcm9jZXNzb3IgPSBtX3BlbmRpbmdTY3JpcHRQcmVwcm9j
ZXNzb3I7CiAgICAgICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlID0gU3Ry
aW5nKCk7CisgICAgICAgIG1fcGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvciA9IFN0cmluZygpOwog
ICAgIH0KICAgICBtX2Zyb250ZW5kLT5mcmFtZU5hdmlnYXRlZChidWlsZE9iamVjdEZvckZyYW1l
KGxvYWRlci0+ZnJhbWUoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCmluZGV4IDFlM2UxMmE5NmM3ZmFlMmZjZjNmYzliODZhM2I5ZWIzYjBl
NGY0YTQuLmU0ZjEyOThlYTdmM2VjM2FmYjJiZjk0Mzk0Y2ViYzJiZjg0YmJhNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRv
RXZhbHVhdGVPbkxvYWQpOworICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoRXJyb3JTdHJpbmcqLCBj
b25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2Ny
aXB0VG9FdmFsdWF0ZU9uTG9hZCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFByZXByb2Nl
c3Nvcik7CiAgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPiA+JiBjb29r
aWVzLCBXVEY6OlN0cmluZyogY29va2llc1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4pOwpAQCAtMTIzLDEyICsxMjMsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXN0b3JlKCk7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJCisgICAgUGFnZSogcGFn
ZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQogICAgIEZyYW1lKiBtYWluRnJhbWUoKTsKICAgICBTdHJp
bmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCk7CiAgICAgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBTdHJpbmcgbG9h
ZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFtZSogYXNzZXJ0RnJhbWUoRXJyb3JTdHJp
bmcqLCBTdHJpbmcgZnJhbWVJZCk7CisgICAgU3RyaW5nIHNjcmlwdFByZXByb2Nlc3NvcigpIHsg
cmV0dXJuIG1fc2NyaXB0UHJlcHJvY2Vzc29yOyB9CiAgICAgc3RhdGljIERvY3VtZW50TG9hZGVy
KiBhc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIEZyYW1lKik7CiAKIHByaXZhdGU6
CkBAIC0xNDYsNiArMTQ4LDggQEAgcHJpdmF0ZToKICAgICBsb25nIG1fbGFzdFNjcmlwdElkZW50
aWZpZXI7CiAgICAgU3RyaW5nIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlOwog
ICAgIFN0cmluZyBtX3NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlOworICAgIFN0cmluZyBtX3Bl
bmRpbmdTY3JpcHRQcmVwcm9jZXNzb3I7CisgICAgU3RyaW5nIG1fc2NyaXB0UHJlcHJvY2Vzc29y
OwogICAgIEhhc2hNYXA8RnJhbWUqLCBTdHJpbmc+IG1fZnJhbWVUb0lkZW50aWZpZXI7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIEZyYW1lKj4gbV9pZGVudGlmaWVyVG9GcmFtZTsKICAgICBIYXNoTWFw
PERvY3VtZW50TG9hZGVyKiwgU3RyaW5nPiBtX2xvYWRlclRvSWRlbnRpZmllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDExM2RkNGU1
MDJlMGYxYmUxM2ZlZjRlNmJjOGI3ZTFjZjQ1NzMwMzIuLjg4ODg4MDYyOGZhNDU0ODg0MGRkNzZl
MTg1NTUwMjE1Y2MzMGE3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtMzQsMTggKzM0LDE5IEBACiAKICNpbmNsdWRlICJQYWdlRGVi
dWdnZXJBZ2VudC5oIgogCisjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gUGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5z
cGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorUGFzc093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gUGFn
ZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdl
cikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VEZWJ1Z2dlckFnZW50KGluc3RydW1l
bnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbnNwZWN0ZWRQYWdlLCBpbmplY3RlZFNjcmlw
dE1hbmFnZXIpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VEZWJ1Z2dlckFnZW50KGlu
c3RydW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBwYWdlQWdlbnQsIGluamVjdGVkU2Ny
aXB0TWFuYWdlcikpOwogfQogCi1QYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IGluc3BlY3RvclN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdn
ZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdl
KQorICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogewogfQogCkBAIC01NSwxMiArNTYsMTIg
QEAgUGFnZURlYnVnZ2VyQWdlbnQ6On5QYWdlRGVidWdnZXJBZ2VudCgpCiAKIHZvaWQgUGFnZURl
YnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQogewotICAgIHNj
cmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhpcywgbV9pbnNwZWN0ZWRQYWdlKTsKKyAg
ICBzY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMsIG1fcGFnZUFnZW50LT5wYWdl
KCkpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVi
dWdTZXJ2ZXIoKQogewotICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhp
cywgbV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3Rl
bmVyKHRoaXMsIG1fcGFnZUFnZW50LT5wYWdlKCkpOwogfQogCiBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXImIFBhZ2VEZWJ1Z2dlckFnZW50OjpzY3JpcHREZWJ1Z1NlcnZlcigpCkBAIC02OCw2ICs2OSwx
MiBAQCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIFBhZ2VEZWJ1Z2dlckFnZW50OjpzY3JpcHREZWJ1
Z1NlcnZlcigpCiAgICAgcmV0dXJuIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCk7CiB9
CiAKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0
KCkKK3sKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdpbmRv
d09iamVjdCgpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0UHJlcHJvY2Vzc29y
KG1fcGFnZUFnZW50LT5zY3JpcHRQcmVwcm9jZXNzb3IoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdl
bnQuaAppbmRleCA3ZDZhZjZjMmI2MzUxYmY3NGU5Mjk3NDMxZTcwNzE4ZmE3ZTY2MGViLi42MTM4
NTFiNmRmNTJlZDJhNTI3MjhhYTMyNzVmZTRiYzEyOGJhYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7CiAKQEAgLTQ0LDE2ICs0NSwxNyBAQCBjbGFz
cyBQYWdlRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZURlYnVn
Z2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQ
YWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFn
ZURlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3Rh
dGUqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2
aXJ0dWFsIH5QYWdlRGVidWdnZXJBZ2VudCgpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0
b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpOwogICAgIHZpcnR1YWwgUGFnZVNjcmlwdERl
YnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVh
ck1haW5GcmFtZVdpbmRvd09iamVjdCgpOwogCi0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFu
YWdlciopOwotICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKKyAgICBQYWdlRGVidWdn
ZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdl
bnQqIG1fcGFnZUFnZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI0
Yjk5N2ZjNDBlYWU5YTQ3MTY2MDFkNWRlYTZmZWRiNzkxMDViZWYuLjQ5ZTI2NDk3ZTgyOThmMzdh
NDlkNmE2NDc3YmIxNmE3MTJlOTQyN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOCBAQAogMjAxMi0wMy0y
NiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIg
SW5zcGVjdG9yOiBwcm92aWRlIGEgd2F5IHRvIHJlbG9hZCBwYWdlIHdpdGggZ2l2ZW4gc2NyaXB0
IHByZXByb2Nlc3Nvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwOTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAg
KGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2Vy
LXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKworMjAxMi0wMy0yNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBOb3QgcmV2aWV3ZWQ6IFtjaHJvbWl1bV0gcmViYXNl
bGluaW5nIHBsdWdpbnMvZW1iZWQtYXR0cmlidXRlcy1zdHlsZS4KIAogICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L3BsdWdpbnMvZW1iZWQtYXR0cmlidXRlcy1zdHlsZS1leHBlY3Rl
ZC5wbmc6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzCmluZGV4IDFhMTViN2RiYWJlMTQxOTYzYjM3NGMyY2RjODlmY2EwMzUyNjE5MjAu
LmMxMThkNTkyNzNkNTQzM2E5MTY2MzJmZGJjODA3MDEwMTI2ZGE1YjUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0xODgs
MTMgKzE4OCwxMyBAQCBJbnNwZWN0b3JUZXN0Lm5hdmlnYXRlID0gZnVuY3Rpb24odXJsLCBjYWxs
YmFjaykKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9jYXRp
b24gPSAnIiArIHVybCArICInIik7CiB9CiAKLUluc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQorSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oY2Fs
bGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3NvcikKIHsKICAg
ICBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVX
cmFwKGNhbGxiYWNrKTsKIAogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmspCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fcmVzZXQoKTsKLSAgICBQYWdlQWdl
bnQucmVsb2FkKGZhbHNlKTsKKyAgICBQYWdlQWdlbnQucmVsb2FkKGZhbHNlLCBzY3JpcHRUb0V2
YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCiBJbnNwZWN0b3JUZXN0LnBh
Z2VMb2FkZWQgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEwOGRjZThkM2ZlZjY5M2Y3ZmI5ZjQ3Njc0MTFiMzNi
NzU2MTRkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEx
IEBACitUZXN0cyBzY3JpcHQgcHJlcHJvY2Vzc29yIChhYmlsaXR5IHRvIHByZXByb2Nlc3MgYWxs
IHNjcmlwdHMgdXBvbiByZWxvYWQpLgorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KK1BhZ2UgcmVs
b2FkZWQuCitpbnNwZWN0b3ItdGVzdC5qcworZGVidWdnZXItdGVzdC5qcworZGVidWdnZXItc2Ny
aXB0LXByZXByb2Nlc3Nvci5odG1sCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0bWwK
KworRGVidWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZTQxOWQxZWY5MzFiMDJlNGExNjE3Zjg5NDk5NGI0MzA1NWMxMTNmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2Vy
LXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbApAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWQoKQor
eworICAgIGV2YWwoImZ1bmN0aW9uIGR5bmFtaWMiICsgIlNjcmlwdCgpIHt9Iik7IAorICAgIHJ1
blRlc3QoKTsKK30KKwordmFyIHRlc3QgPSBmdW5jdGlvbigpCit7CisgICAgZnVuY3Rpb24gcHJl
cHJvY2Vzc29yKHNjcmlwdCkKKyAgICB7CisgICAgICAgIGlmIChzY3JpcHQuaW5kZXhPZigiZHlu
YW1pYyIgKyAiU2NyaXB0IikgIT09IC0xKQorICAgICAgICAgICAgcmV0dXJuIHNjcmlwdCArICIv
L0Agc291cmNlVVJMPWZha2VfdXJsIjsKKyAgICAgICAgcmV0dXJuIHNjcmlwdDsKKyAgICB9CisK
KyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKKworICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShzdGVw
MiwgdW5kZWZpbmVkLCAiKCIgKyBwcmVwcm9jZXNzb3IgKyAiKSIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGFjY2VwdChzY3JpcHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHZh
ciBzY3JpcHRzID0gSW5zcGVjdG9yVGVzdC5xdWVyeVNjcmlwdHMoYWNjZXB0KTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNjcmlw
dHNbaV0uc291cmNlVVJMKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dl
clRlc3QoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9
ImxvYWQoKSI+Cis8cD4KK1Rlc3RzIHNjcmlwdCBwcmVwcm9jZXNzb3IgKGFiaWxpdHkgdG8gcHJl
cHJvY2VzcyBhbGwgc2NyaXB0cyB1cG9uIHJlbG9hZCkuCis8L3A+CisKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9k
ZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3Jp
cHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjQ2YzNlNWYwMzA3NWVh
ZDE2MmU3NWRjM2Y1NjU4MGEzMThkMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVw
cm9jZXNzb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHNjcmlwdCBwcmVw
cm9jZXNzb3IgKGFiaWxpdHkgdG8gcHJlcHJvY2VzcyBhbGwgc2NyaXB0cyB1cG9uIHJlbG9hZCku
CisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorUGFnZSByZWxvYWRlZC4KK2luc3BlY3Rvci10ZXN0
LmpzCitkZWJ1Z2dlci10ZXN0LmpzCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0bWwK
K2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorZmFrZV91cmwKK0RlYnVnZ2VyIHdh
cyBkaXNhYmxlZC4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133848</attachid>
            <date>2012-03-26 11:04:57 -0700</date>
            <delta_ts>2012-10-04 06:04:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80992-20120326220455.patch</filename>
            <type>text/plain</type>
            <size>30439</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU5OGU5M2ZhM2Q0NzQy
ODU2ODZkYmVjMTI3MGU4YzEzMzAxOTc0Zi4uNmM4MTYyOTRlODRlMGVhNjZmM2I4Yjg5MGIzYzRk
MDhmNmMxMjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEyLTAzLTI2ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgd2F5IHRvIGluamVjdCAncHJlcHJvY2Vzc29yJyBzY3Jp
cHQgdGhhdCB3b3VsZCBwcm9jZXNzCisgICAgICAgIGVhY2ggSmF2YVNjcmlwdCBmaWxlIGJlZm9y
ZSBpdCBnZXRzIGludG8gdGhlIFZNIGZvciBjb21waWxhdGlvbi4gVGhhdCB3YXkgaW5zcGVjdG9y
CisgICAgICAgIGNhbiBleHBvc2UgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgYXNzZXNzaW5nIGNvZGUg
Y292ZXJhZ2Ugb3IgdHJhY2luZyBhbGwgdGhlIGNhbGxzLgorCisgICAgICAgIFByZXByb2Nlc3Nv
ciBzY3JpcHQgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGFnZW50IHdoZXJlIGl0IHdhaXRzIGZvciBy
ZWxvYWQgdG8gaGFwcGVuLgorICAgICAgICBVcG9uIHJlbG9hZCwgU2NyaXB0RGVidWdTZXJ2ZXIg
aXMgdXNpbmcgaXQgdG8gcGF0Y2ggdGhlIHNjcmlwdCBzb3VyY2VzLgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0bWwKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAg
KFNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlw
dC5qczoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHRQcmVwcm9jZXNzb3I6OlNjcmlwdFByZXBy
b2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJl
cHJvY2Vzc29yOjpwcmVwcm9jZXNzU291cmNlQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjp+U2NyaXB0UHJlcHJvY2Vzc29yKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OmNvbXBpbGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6flNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0
UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKEluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VE
ZWJ1Z2dlckFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdl
bnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFn
ZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VEZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYWdlRGVidWdnZXJB
Z2VudCk6CisKKzIwMTItMDMtMjYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogJ3VzZSBzdHJpY3QnIGV4Y2VwdGlvbnMgc3Rv
cCBpbiBpbnNwZWN0b3IgY29kZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODIxOTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmgKaW5kZXggMGVjZDVhODcwNzZkYzFkNWFjNzAxMTE4OGEyMTk1MzZiZGNm
ZjYyYS4uYjY0OWJiNDMwZWI3MDgyZWI4MjRlZGIyMGNlZTQxN2I5NTg2NGYzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC05MCw2ICs5
MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVi
dWdTZXJ2ZXI+KiA9IDApID0gMDsKIAorICAgIHZvaWQgc2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNv
bnN0IFN0cmluZyYpCisgICAgeworICAgICAgICAvLyBGSVhNRSh3ZWJraXQub3JnL2IvODIyMDMp
OiBJbXBsZW1lbnQgcHJlcHJvY2Vzc29yLgorICAgIH0KKwogICAgIGJvb2wgaXNQYXVzZWQoKSB7
IHJldHVybiBtX3BhdXNlZDsgfQogCiAgICAgY2xhc3MgVGFzayB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCmluZGV4IGI0ZDBiOTE4YzQ3OWRlNDVkZWUw
NmRiYTFjZDEzMzVkMmQ2ZWY3MWUuLmIyMmZlOTIzY2EyOTc2MTQ0MGVkOGY5NjQ5N2E5NmNmZWJh
ZjM2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2Ny
aXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0Lmpz
CkBAIC0xNzksNyArMTc5LDcgQEAgRGVidWdnZXJTY3JpcHQuc3RlcE91dE9mRnVuY3Rpb24gPSBm
dW5jdGlvbihleGVjU3RhdGUpCiAgICAgZXhlY1N0YXRlLnByZXBhcmVTdGVwKERlYnVnLlN0ZXBB
Y3Rpb24uU3RlcE91dCwgMSk7CiB9CiAKLURlYnVnZ2VyU2NyaXB0LnNldFNjcmlwdFNvdXJjZSA9
IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIHByZXZpZXcpCitEZWJ1Z2dlclNjcmlwdC5s
aXZlRWRpdFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIHByZXZp
ZXcpCiB7CiAgICAgdmFyIHNjcmlwdHMgPSBEZWJ1Zy5zY3JpcHRzKCk7CiAgICAgdmFyIHNjcmlw
dFRvRWRpdCA9IG51bGw7CkBAIC0yMDYsNiArMjA2LDE4IEBAIERlYnVnZ2VyU2NyaXB0LnNldEJy
ZWFrcG9pbnRzQWN0aXZhdGVkID0gZnVuY3Rpb24oZXhlY1N0YXRlLCBhcmdzKQogICAgIERlYnVn
LmRlYnVnZ2VyRmxhZ3MoKS5icmVha1BvaW50c0FjdGl2ZS5zZXRWYWx1ZShhcmdzLmVuYWJsZWQp
OwogfQogCitEZWJ1Z2dlclNjcmlwdC5nZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihldmVudERh
dGEpCit7CisgICAgcmV0dXJuIGV2ZW50RGF0YS5zY3JpcHQoKS5zb3VyY2UoKTsKK30KKworRGVi
dWdnZXJTY3JpcHQuc2V0U2NyaXB0U291cmNlID0gZnVuY3Rpb24oZXZlbnREYXRhLCBzb3VyY2Up
Cit7CisgICAgaWYgKGV2ZW50RGF0YS5zY3JpcHQoKS5kYXRhKCkgPT09ICJpbmplY3RlZC1zY3Jp
cHQiKQorICAgICAgICByZXR1cm47CisgICAgZXZlbnREYXRhLnNjcmlwdCgpLnNldFNvdXJjZShz
b3VyY2UpOworfQorCiBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0g
ZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNhbGxlckZyYW1lKQogewogICAgIC8vIEdldCBmdW5jdGlv
biBuYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCmluZGV4IGI3MDU1MjNiNzFmNThiOTlmMDMyZjM5YjZhNjUwNGM4MTBmMGU1YjUuLjIz
MGU5NzBkNDRjZjg4NzkyOWNiMGY1YzQyZTY5ZGRhNGE4MTFkMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTU3LDEyICs1Nyw5
NyBAQCBwcml2YXRlOgogCiB9CiAKK2NsYXNzIFNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHRQcmVw
cm9jZXNzb3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFByZXByb2Nlc3Nvcik7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0IFN0cmluZyYg
cHJlcHJvY2Vzc29yU2NyaXB0KQorICAgICAgICA6IG1fdXRpbGl0eUlzb2xhdGUodjg6Oklzb2xh
dGU6Ok5ldygpKQorICAgIHsKKyAgICAgICAgdjg6Oklzb2xhdGU6OlNjb3BlIGlzb2xhdGUobV91
dGlsaXR5SXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKworICAgICAg
ICBtX3V0aWxpdHlDb250ZXh0ID0gdjg6OkNvbnRleHQ6Ok5ldygpOworICAgICAgICBpZiAobV91
dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX3V0aWxpdHlDb250ZXh0KTsKKworICAg
ICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiBwcmVwcm9jZXNzb3IgPSB2ODo6U3RyaW5nOjpOZXcocHJlcHJvY2Vzc29yU2NyaXB0LnV0
ZjgoKS5kYXRhKCksIHByZXByb2Nlc3NvclNjcmlwdC51dGY4KCkubGVuZ3RoKCkpOworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUocHJl
cHJvY2Vzc29yKTsKKworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHByZXByb2Nlc3Nv
ckZ1bmN0aW9uID0gc2NyaXB0LT5SdW4oKTsKKworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1
Z2h0KCkgfHwgIXByZXByb2Nlc3NvckZ1bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV9wcmVwcm9jZXNzb3JGdW5jdGlvbiA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QocHJl
cHJvY2Vzc29yRnVuY3Rpb24pKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcHJlcHJvY2Vzc1NvdXJj
ZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdjg6Oklzb2xh
dGU6OlNjb3BlIGlzb2xhdGUobV91dGlsaXR5SXNvbGF0ZSk7CisgICAgICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKKworICAgICAgICBpZiAobV9wcmVwcm9jZXNzb3JGdW5jdGlvbi5Jc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZTsKKworICAgICAgICB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGls
aXR5Q29udGV4dCk7CisgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29u
dGV4dCk7CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzb3VyY2VDb2RlU3RyaW5n
ID0gdjg6OlN0cmluZzo6TmV3KHNvdXJjZUNvZGUudXRmOCgpLmRhdGEoKSwgc291cmNlQ29kZS51
dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0g
eyBzb3VyY2VDb2RlU3RyaW5nIH07CisKKyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwor
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0VmFsdWUgPSBtX3ByZXByb2Nlc3Nv
ckZ1bmN0aW9uLT5DYWxsKGNvbnRleHQtPkdsb2JhbCgpLCAxLCBhcmd2KTsKKyAgICAgICAgaWYg
KHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGU7CisK
KyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT5Jc1N0cmluZygpKSB7CisgICAgICAgICAgICB2ODo6
U3RyaW5nOjpVdGY4VmFsdWUgdXRmOFZhbHVlKHJlc3VsdFZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KCp1dGY4VmFsdWUsIHV0ZjhWYWx1ZS5sZW5ndGgoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gc291cmNlQ29kZTsKKyAgICB9CisKKyAgICB+U2Ny
aXB0UHJlcHJvY2Vzc29yKCkKKyAgICB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHY4OjpJc29s
YXRlOjpTY29wZSBpc29sYXRlKG1fdXRpbGl0eUlzb2xhdGUpOworICAgICAgICAgICAgaWYgKCFt
X3ByZXByb2Nlc3NvckZ1bmN0aW9uLklzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG1fcHJl
cHJvY2Vzc29yRnVuY3Rpb24uRGlzcG9zZSgpOworICAgICAgICAgICAgICAgIG1fcHJlcHJvY2Vz
c29yRnVuY3Rpb24uQ2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV91
dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBtX3V0aWxpdHlDb250
ZXh0LkRpc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxpdHlDb250ZXh0LkNsZWFyKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV91dGlsaXR5SXNvbGF0ZS0+RGlz
cG9zZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2ODo6SXNvbGF0ZSogbV91dGlsaXR5SXNv
bGF0ZTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV91dGlsaXR5Q29udGV4dDsK
KyAgICBTdHJpbmcgbV9wcmVwcm9jZXNzb3JCb2R5OworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvbj4gbV9wcmVwcm9jZXNzb3JGdW5jdGlvbjsKK307CisKIFNjcmlwdERlYnVnU2VydmVy
OjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgOiBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUoRG9u
dFBhdXNlT25FeGNlcHRpb25zKQogICAgICwgbV9icmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQog
ewogfQogCitTY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERlYnVnU2VydmVyKCkKK3sKK30KKwog
U3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQsIGludCogYWN0
dWFsTGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1bW5OdW1iZXIpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwpAQCAtMjI4LDcgKzMxMyw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6
OnNldFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5l
CiAgICAgaWYgKCFpc1BhdXNlZCgpKQogICAgICAgICBjb250ZXh0U2NvcGUgPSBhZG9wdFB0cihu
ZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXco
InNldFNjcmlwdFNvdXJjZSIpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0
aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQo
KS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGl2ZUVkaXRTY3JpcHRTb3VyY2UiKSkpOwogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IHY4U3RyaW5nKHNvdXJjZUlEKSwgdjhTdHJp
bmcobmV3Q29udGVudCksIHY4Qm9vbGVhbihwcmV2aWV3KSB9OwogCiAgICAgdjg6OlRyeUNhdGNo
IHRyeUNhdGNoOwpAQCAtMjUyLDYgKzMzNywxNSBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpz
ZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZQog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRTY3JpcHRQ
cmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBwcmVwcm9jZXNzb3JCb2R5KQoreworICAgIGlmIChw
cmVwcm9jZXNzb3JCb2R5LmlzRW1wdHkoKSkgeworICAgICAgICBtX3NjcmlwdFByZXByb2Nlc3Nv
ci5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc2NyaXB0UHJlcHJvY2Vz
c29yID0gYWRvcHRQdHIobmV3IFNjcmlwdFByZXByb2Nlc3NvcihwcmVwcm9jZXNzb3JCb2R5KSk7
Cit9CisKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkK
IHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CkBAIC0zMjcsNyArNDIxLDcgQEAgdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnRE
ZXRhaWxzJiBldmVudEQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChldmVudCAh
PSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0
ZXJDb21waWxlKQorICAgIGlmIChldmVudCAhPSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4
Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJDb21waWxlICYmIGV2ZW50ICE9IHY4OjpCZWZv
cmVDb21waWxlKQogICAgICAgICByZXR1cm47CiAKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBldmVudENvbnRleHQgPSBldmVudERldGFpbHMuR2V0RXZlbnRDb250ZXh0KCk7CkBAIC0zMzYs
NyArNDMwLDIwIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChj
b25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIgPSBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dChldmVudENvbnRleHQp
OwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0g
ICAgICAgIGlmIChldmVudCA9PSB2ODo6QWZ0ZXJDb21waWxlKSB7CisgICAgICAgIGlmIChldmVu
dCA9PSB2ODo6QmVmb3JlQ29tcGlsZSkgeworICAgICAgICAgICAgaWYgKCFtX3NjcmlwdFByZXBy
b2Nlc3NvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHY4OjpDb250
ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7Cisg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0U291cmNlRnVuY3Rp
b24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgp
LT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3JpcHRTb3VyY2UiKSkpOworICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgZXZlbnREZXRhaWxzLkdldEV2ZW50RGF0
YSgpIH07CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2NyaXB0ID0gZ2V0U2Ny
aXB0U291cmNlRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7
CisKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRTY3JpcHRTb3VyY2VG
dW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQu
Z2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CisgICAgICAg
ICAgICBTdHJpbmcgcGF0Y2hlZFNjcmlwdCA9IG1fc2NyaXB0UHJlcHJvY2Vzc29yLT5wcmVwcm9j
ZXNzU291cmNlQ29kZSh0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soc2Ny
aXB0KSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndjJbXSA9IHsgZXZl
bnREZXRhaWxzLkdldEV2ZW50RGF0YSgpLCB2OFN0cmluZyhwYXRjaGVkU2NyaXB0KSB9OworICAg
ICAgICAgICAgc2V0U2NyaXB0U291cmNlRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKSwgMiwgYXJndjIpOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09IHY4OjpBZnRlckNv
bXBpbGUpIHsKICAgICAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6
OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gb25BZnRlckNvbXBpbGVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldEFm
dGVyQ29tcGlsZVNjcmlwdCIpKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCkgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGRlODQ2NTE0MDExZTE3
NTFmZDc3ZDIwZjlkNzRhMjVhMDgzNmJlN2MuLjNlZjc3YWM4YmZlMDU3NzU1MTYzYzM4OThkZWI1
MGVkMTcxZmZlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuaApAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9uc1Nvb24oKSB7IH0KICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKSB7IH0KIAorICAgIHZvaWQgc2V0U2NyaXB0
UHJlcHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJvY2Vzc29yQm9keSk7CisKICAgICBjbGFz
cyBUYXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRhc2soKSB7IH0KQEAgLTk2
LDcgKzk4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIo
KTsKLSAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKyAgICB+U2NyaXB0RGVidWdTZXJ2ZXIo
KTsKICAgICAKICAgICBTY3JpcHRWYWx1ZSBjdXJyZW50Q2FsbEZyYW1lKCk7CiAKQEAgLTExMywx
NCArMTE1LDE5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2Uo
U2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc291
cmNlT2JqZWN0KTsKIAogICAgIHZvaWQgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpOwot
ICAgIAorCisgICAgU3RyaW5nIHByZXByb2Nlc3NTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSk7CisKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAg
ICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsKICAgICB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IG1fcGF1c2VkQ29udGV4dDsKLQogICAgIGJvb2wgbV9icmVha3BvaW50c0Fj
dGl2YXRlZDsKICAgICBPd25IYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fYnJlYWtQcm9n
cmFtQ2FsbGJhY2tUZW1wbGF0ZTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBTY3JpcHRQcmVwcm9j
ZXNzb3I7CisgICAgT3duUHRyPFNjcmlwdFByZXByb2Nlc3Nvcj4gbV9zY3JpcHRQcmVwcm9jZXNz
b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAppbmRleCA4YmI0MjgxZTM4ODJiMjQyMGJjZTEzZmVkZjYxNDc3OWY3NjVjOGEzLi43YWQ3YWM3
ZmM3ZDM1Yjc1MjI2MjY5ZmMyYWNlMWYxOWQzMTRjYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgpAQCAtOTUs
MTAgKzk2LDE2IEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUlu
amVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0U291CiAgICAgLy8gaW5zcGVjdG9yJ3Mg
c3R1ZmYpIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYSBmZXcgbGluZXMgYmVsb3cgd2l0aCBJbmpl
Y3RlZFNjcmlwdEhvc3Qgd3JhcHBlciwKICAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4
cGxpY2l0IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5j
dGlvbiBpcyBleHBlY3RlZAogICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVk
U2NyaXB0IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9y
LgotICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxl
KHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOworCisgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwor
ICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4
U3RyaW5nKHNjcmlwdFNvdXJjZSksIDAsIDAsIHY4U3RyaW5nKCJpbmplY3RlZC1zY3JpcHQiKSk7
CisKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiBTY3JpcHRP
YmplY3QoKTsKKwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigpOwot
ICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwotICAgIEFTU0VSVCh2LT5Jc0Z1bmN0aW9uKCkpOwor
ICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSB8fCAhdi0+SXNGdW5jdGlvbigpKQorICAgICAg
ICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
c1tdID0gewogICAgICAgc2NyaXB0SG9zdFdyYXBwZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggYmJkYjE2NmM4NzU5MDlkNjNj
ZDZkOGZhYmNhZjRjNGEzMTIyM2Q4Zi4uYWUzMjlmZmE0M2ZlNTIwOTgwZjM3NGNjMzkxMWFhNTli
NzFkNmFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaApAQCAtNjMsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjYXJkSW5q
ZWN0ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3Vw
KGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogCi0KIHByaXZhdGU6CiAgICAgdHlwZWRlZiBi
b29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKICAgICBleHBs
aWNpdCBJbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYmExZDdiZGMxNjdmNDJl
OTIyYTU0Mjk2YjlkZjg3NmUzOTk3ZTljOC4uNWNlODU0YTA5ZjQ4M2MyODcyNGM3Y2E2YTJkOTU3
NDFjMWFmOTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAt
MjIyLDcgKzIyMiw4IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVsb2FkIiwKICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJpZ25vcmVDYWNoZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiSWYgdHJ1ZSwgYnJvd3NlciBjYWNoZSBpcyBpZ25vcmVkIChhcyBpZiB0aGUg
dXNlciBwcmVzc2VkIFNoaWZ0K3JlZnJlc2gpLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzY3JpcHRUb0V2YWx1YXRlT25Mb2FkIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHNldCwgdGhlIHNjcmlwdCB3aWxsIGJlIGlu
amVjdGVkIGludG8gYWxsIGZyYW1lcyBvZiB0aGUgaW5zcGVjdGVkIHBhZ2UgYWZ0ZXIgcmVsb2Fk
LiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
SWYgc2V0LCB0aGUgc2NyaXB0IHdpbGwgYmUgaW5qZWN0ZWQgaW50byBhbGwgZnJhbWVzIG9mIHRo
ZSBpbnNwZWN0ZWQgcGFnZSBhZnRlciByZWxvYWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInNjcmlwdFByZXByb2Nlc3NvciIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTY3JpcHQgYm9keSB0aGF0IHNob3VsZCBldmFsdWF0
ZSB0byBmdW5jdGlvbiB0aGF0IHdpbGwgcHJlcHJvY2VzcyBhbGwgdGhlIHNjcmlwdHMgYmVmb3Jl
IHRoZWlyIGNvbXBpbGF0aW9uLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlJlbG9hZHMgZ2l2ZW4gcGFnZSBvcHRpb25hbGx5IGlnbm9yaW5n
IHRoZSBjYWNoZS4iCiAgICAgICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ4M2Q2YzZjODRhY2RmNzNjMmVlYzUy
ZDc3YmZlZWM1YTNlMjQ4OTcuLjdkZjAyYWEzZGU3ODk3MjM2OGE4ZDAyOTQyOTY3OWRiYjQ4NWUy
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1f
YWdlbnRzLmFwcGVuZChjb25zb2xlQWdlbnRQdHIucmVsZWFzZSgpKTsKIAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBk
ZWJ1Z2dlckFnZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci5nZXQoKSkpOworICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFn
ZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudFB0ci5nZXQoKTsKICAg
ICBtX2FnZW50cy5hcHBlbmQoZGVidWdnZXJBZ2VudFB0ci5yZWxlYXNlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA0
NmUzYTMzMTUxMGFkZTRkZDg3OTljNWYwNWU5Y2E2Nzk5NjRlZDkzLi42OTI2ZTQyNDgxYTBlOGIy
NzlmOGU4YjQ0ZjU0NjcwZDY5YTg5N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3Rv
cmUoKTsKIAotICAgIHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKICAgICBib29sIGlz
UGF1c2VkKCk7CiAKICAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYTU5YTRjOWJiNmY3
OGVjZTY0OGZhODk4NDlkNGU4NzRkM2RkMTdhYS4uZTQzY2NlOGM1ZDZiNjkzOTE5OGRiYzlhMTVi
NTM3ZGNkMmQ0ZDc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTM4Miw5ICszODIsMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dAogICAgIHNjcmlwdHMtPnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFs
SWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vz
c29yKQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlID0gb3B0aW9u
YWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZCA6ICIiOworICAgIG1fcGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvciA9IG9wdGlvbmFsU2NyaXB0
UHJlcHJvY2Vzc29yID8gKm9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29yIDogIiI7CiAgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnJlbG9hZChvcHRpb25hbElnbm9yZUNhY2hlID8g
Km9wdGlvbmFsSWdub3JlQ2FjaGUgOiBmYWxzZSk7CiB9CiAKQEAgLTcwMyw3ICs3MDQsOSBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKIHsKICAgICBpZiAobG9hZGVyLT5mcmFtZSgpID09IG1fcGFnZS0+bWFpbkZyYW1lKCkp
IHsKICAgICAgICAgbV9zY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IG1fcGVuZGluZ1Njcmlw
dFRvRXZhbHVhdGVPbkxvYWRPbmNlOworICAgICAgICBtX3NjcmlwdFByZXByb2Nlc3NvciA9IG1f
cGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvcjsKICAgICAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZE9uY2UgPSBTdHJpbmcoKTsKKyAgICAgICAgbV9wZW5kaW5nU2NyaXB0UHJlcHJv
Y2Vzc29yID0gU3RyaW5nKCk7CiAgICAgfQogICAgIG1fZnJvbnRlbmQtPmZyYW1lTmF2aWdhdGVk
KGJ1aWxkT2JqZWN0Rm9yRnJhbWUobG9hZGVyLT5mcmFtZSgpKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMWUzZTEyYTk2YzdmYWUy
ZmNmM2ZjOWI4NmEzYjllYjNiMGU0ZjRhNC4uZTRmMTI5OGVhN2YzZWMzYWZiMmJmOTQzOTRjZWJj
MmJmODRiYmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc291cmNlLCBTdHJpbmcqIHJlc3VsdCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9pZCByZWxvYWQo
RXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk7CisgICAgdmlydHVhbCB2b2lkIHJl
bG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29yKTsKICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdmlydHVhbCB2b2lkIGdldENvb2tp
ZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQ
YWdlOjpDb29raWU+ID4mIGNvb2tpZXMsIFdURjo6U3RyaW5nKiBjb29raWVzU3RyaW5nKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7CkBAIC0xMjMsMTIgKzEyMywxNCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAogICAgIC8vIENyb3NzLWFnZW50
cyBBUEkKKyAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgRnJhbWUqIG1h
aW5GcmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJhbWUqIGZy
YW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICBTdHJpbmcgZnJhbWVJZChGcmFt
ZSopOwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAgIEZyYW1lKiBh
c3NlcnRGcmFtZShFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKKyAgICBTdHJpbmcgc2Ny
aXB0UHJlcHJvY2Vzc29yKCkgeyByZXR1cm4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7IH0KICAgICBz
dGF0aWMgRG9jdW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwg
RnJhbWUqKTsKIAogcHJpdmF0ZToKQEAgLTE0Niw2ICsxNDgsOCBAQCBwcml2YXRlOgogICAgIGxv
bmcgbV9sYXN0U2NyaXB0SWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZE9uY2U7CiAgICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9u
Y2U7CisgICAgU3RyaW5nIG1fcGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBTdHJpbmcg
bV9zY3JpcHRQcmVwcm9jZXNzb3I7CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFt
ZVRvSWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJU
b0ZyYW1lOwogICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9J
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggMTEzZGQ0ZTUwMmUwZjFiZTEzZmVmNGU2YmM4YjdlMWNmNDU3MzAzMi4uODg4
ODgwNjI4ZmE0NTQ4ODQwZGQ3NmUxODU1NTAyMTVjYzMwYTczYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNCwxOCArMzQsMTkgQEAK
IAogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdn
ZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitQYXNzT3duUHRyPFBh
Z2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0
ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZURl
YnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluc3BlY3Rl
ZFBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UGFnZURlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIHBh
Z2VBZ2VudCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CiB9CiAKLVBhZ2VEZWJ1Z2dlckFnZW50
OjpQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2Us
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorUGFnZURlYnVn
Z2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQogICAgIDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9pbnNwZWN0
ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCisgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiB7CiB9
CiAKQEAgLTU1LDEyICs1NiwxMiBAQCBQYWdlRGVidWdnZXJBZ2VudDo6flBhZ2VEZWJ1Z2dlckFn
ZW50KCkKIAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1
Z1NlcnZlcigpCiB7Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5hZGRMaXN0ZW5lcih0aGlzLCBt
X2luc3BlY3RlZFBhZ2UpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhp
cywgbV9wYWdlQWdlbnQtPnBhZ2UoKSk7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0
b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCiB7Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIo
KS5yZW1vdmVMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIHNjcmlwdERlYnVn
U2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgbV9wYWdlQWdlbnQtPnBhZ2UoKSk7CiB9CiAK
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgUGFnZURlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2Vy
dmVyKCkKQEAgLTY4LDYgKzY5LDEyIEBAIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgUGFnZURlYnVn
Z2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKCkKICAgICByZXR1cm4gUGFnZVNjcmlwdERlYnVn
U2VydmVyOjpzaGFyZWQoKTsKIH0KIAordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkQ2xlYXJN
YWluRnJhbWVXaW5kb3dPYmplY3QoKQoreworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5z
ZXRTY3JpcHRQcmVwcm9jZXNzb3IobV9wYWdlQWdlbnQtPnNjcmlwdFByZXByb2Nlc3NvcigpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCmluZGV4IDdkNmFmNmMyYjYzNTFiZjc0ZTkyOTc0MzFl
NzA3MThmYTdlNjYwZWIuLjYxMzg1MWI2ZGY1MmVkMmE1MjcyOGFhMzI3NWZlNGJjMTI4YmFjMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC0z
Nyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjsKIApAQCAt
NDQsMTYgKzQ1LDE3IEBAIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluamVjdGVkU2Ny
aXB0TWFuYWdlciopOwogICAgIHZpcnR1YWwgflBhZ2VEZWJ1Z2dlckFnZW50KCk7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CiAgICAg
dmlydHVhbCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAKLSAgICBQYWdl
RGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdl
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7Ci0gICAgUGFnZSogY29uc3QgbV9pbnNwZWN0ZWRQ
YWdlOworICAgIFBhZ2VEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0
b3JTdGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwor
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYTNmMjBlNWIzMDcwMDE4ZTJjNGZjMzhlYWZlYzNjMDNiNWZhNDI4
Mi4uNzBkODRjZWMxZmE1ZjgzMzNkZmY1OGFjZjM2YzVlNzQ1ODY0ZTE1MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE4IEBACiAyMDEyLTAzLTI2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBh
Z2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJvY2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRl
c3QucmVsb2FkUGFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNj
cmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2Ny
aXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisyMDEyLTAzLTI2ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6ICd1c2Ugc3RyaWN0JyBleGNlcHRpb25zIHN0b3AgaW4gaW5zcGVjdG9yIGNvZGUKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTk5CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5k
ZXggMWExNWI3ZGJhYmUxNDE5NjNiMzc0YzJjZGM4OWZjYTAzNTI2MTkyMC4uYzExOGQ1OTI3M2Q1
NDMzYTkxNjYzMmZkYmM4MDcwMTAxMjZkYTViNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTE4OCwxMyArMTg4LDEzIEBA
IEluc3BlY3RvclRlc3QubmF2aWdhdGUgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQogICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoIndpbmRvdy5sb2NhdGlvbiA9ICciICsgdXJs
ICsgIiciKTsKIH0KIAotSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJh
Y2spCitJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaywgc2NyaXB0
VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKQogewogICAgIEluc3BlY3RvclRl
c3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2sp
OwogCiAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yaykKICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLl9yZXNldCgpOwotICAgIFBhZ2VBZ2VudC5yZWxvYWQoZmFs
c2UpOworICAgIFBhZ2VBZ2VudC5yZWxvYWQoZmFsc2UsIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQs
IHNjcmlwdFByZXByb2Nlc3Nvcik7CiB9CiAKIEluc3BlY3RvclRlc3QucGFnZUxvYWRlZCA9IGZ1
bmN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1
Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MTA4ZGNlOGQzZmVmNjkzZjdmYjlmNDc2NzQxMWIzM2I3NTYxNGQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNj
cmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHNj
cmlwdCBwcmVwcm9jZXNzb3IgKGFiaWxpdHkgdG8gcHJlcHJvY2VzcyBhbGwgc2NyaXB0cyB1cG9u
IHJlbG9hZCkuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorUGFnZSByZWxvYWRlZC4KK2luc3Bl
Y3Rvci10ZXN0LmpzCitkZWJ1Z2dlci10ZXN0LmpzCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vz
c29yLmh0bWwKK2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorCitEZWJ1Z2dlciB3
YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBlNDE5ZDFlZjkzMWIwMmU0YTE2MTdmODk0OTk0YjQzMDU1YzExM2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXBy
b2Nlc3Nvci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZCgpCit7CisgICAgZXZhbCgi
ZnVuY3Rpb24gZHluYW1pYyIgKyAiU2NyaXB0KCkge30iKTsgCisgICAgcnVuVGVzdCgpOworfQor
Cit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBmdW5jdGlvbiBwcmVwcm9jZXNzb3Ioc2Ny
aXB0KQorICAgIHsKKyAgICAgICAgaWYgKHNjcmlwdC5pbmRleE9mKCJkeW5hbWljIiArICJTY3Jp
cHQiKSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gc2NyaXB0ICsgIi8vQCBzb3VyY2VVUkw9
ZmFrZV91cmwiOworICAgICAgICByZXR1cm4gc2NyaXB0OworICAgIH0KKworICAgIEluc3BlY3Rv
clRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEoKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHN0ZXAyLCB1bmRlZmluZWQs
ICIoIiArIHByZXByb2Nlc3NvciArICIpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIo
KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gYWNjZXB0KHNjcmlwdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHNjcmlwdHMgPSBJ
bnNwZWN0b3JUZXN0LnF1ZXJ5U2NyaXB0cyhhY2NlcHQpOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdChXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0c1tpXS5zb3VyY2VV
UkwpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAg
IH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZCgpIj4KKzxw
PgorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAoYWJpbGl0eSB0byBwcmVwcm9jZXNzIGFsbCBz
Y3JpcHRzIHVwb24gcmVsb2FkKS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNz
b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNDZjM2U1ZjAzMDc1ZWFkMTYyZTc1ZGMzZjU2
NTgwYTMxOGQwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAoYWJp
bGl0eSB0byBwcmVwcm9jZXNzIGFsbCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKworRGVidWdnZXIg
d2FzIGVuYWJsZWQuCitQYWdlIHJlbG9hZGVkLgoraW5zcGVjdG9yLXRlc3QuanMKK2RlYnVnZ2Vy
LXRlc3QuanMKK2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorZGVidWdnZXItc2Ny
aXB0LXByZXByb2Nlc3Nvci5odG1sCitmYWtlX3VybAorRGVidWdnZXIgd2FzIGRpc2FibGVkLgor
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166718</attachid>
            <date>2012-10-02 11:19:30 -0700</date>
            <delta_ts>2012-10-04 06:04:08 -0700</delta_ts>
            <desc>Rebase + one fix: ScriptDebugServer::setScriptSource callDebuggerMethod(liveEditScriptSource... because the JS method was renamed</desc>
            <filename>bug-80992-20121002111842.patch</filename>
            <type>text/plain</type>
            <size>32038</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc5YTcyYTUwMjdlODkw
ZWUwNjczNTVkZmRjZTI0YmE3MTBiZjI5OC4uMjA3NDZhZDJjNTRlOGRmMTlkNzgyMWU1OGQzYjZh
OTYxYmRjODM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEwLTAyICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgd2F5IHRvIGluamVjdCAncHJlcHJvY2Vzc29yJyBzY3Jp
cHQgdGhhdCB3b3VsZCBwcm9jZXNzCisgICAgICAgIGVhY2ggSmF2YVNjcmlwdCBmaWxlIGJlZm9y
ZSBpdCBnZXRzIGludG8gdGhlIFZNIGZvciBjb21waWxhdGlvbi4gVGhhdCB3YXkgaW5zcGVjdG9y
CisgICAgICAgIGNhbiBleHBvc2UgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgYXNzZXNzaW5nIGNvZGUg
Y292ZXJhZ2Ugb3IgdHJhY2luZyBhbGwgdGhlIGNhbGxzLgorCisgICAgICAgIFByZXByb2Nlc3Nv
ciBzY3JpcHQgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGFnZW50IHdoZXJlIGl0IHdhaXRzIGZvciBy
ZWxvYWQgdG8gaGFwcGVuLgorICAgICAgICBVcG9uIHJlbG9hZCwgU2NyaXB0RGVidWdTZXJ2ZXIg
aXMgdXNpbmcgaXQgdG8gcGF0Y2ggdGhlIHNjcmlwdCBzb3VyY2VzLgorCisgICAgICAgIAorICAg
ICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nv
ci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6
CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanM6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjpT
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OlNjcmlwdFByZXByb2Nlc3Nvcjo6cHJlcHJvY2Vzc1NvdXJjZUNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcjo6flNjcmlwdFByZXBy
b2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoSW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
ZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5G
cmFtZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFn
ZURlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTEwLTAxICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIENocm9taXVtIGJ1aWxkIGZpeC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4
IDA4OTQxMDZhYTE5MDQwODAxZWRlMzIwNDAxNzlhNmEyZjMwZDU4MjcuLjE3MDJiZmU3ZjU3MTQw
YWY2NGVlM2IwNDIzY2QyZjNiYWQ5YTdhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtODksNiArODksMTEgQEAgcHVibGljOgogICAg
IHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKSA9IDA7
CiAKKyAgICB2b2lkIHNldFNjcmlwdFByZXByb2Nlc3Nvcihjb25zdCBTdHJpbmcmKQorICAgIHsK
KyAgICAgICAgLy8gRklYTUUod2Via2l0Lm9yZy9iLzgyMjAzKTogSW1wbGVtZW50IHByZXByb2Nl
c3Nvci4KKyAgICB9CisKICAgICBib29sIGlzUGF1c2VkKCkgeyByZXR1cm4gbV9wYXVzZWQ7IH0K
IAogICAgIHZvaWQgY29tcGlsZVNjcmlwdChTY3JpcHRTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFN0cmluZyogc2NyaXB0SWQsIFN0cmlu
ZyogZXhjZXB0aW9uTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9EZWJ1Z2dlclNjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVn
Z2VyU2NyaXB0LmpzCmluZGV4IDkxNGI2ZjI2MjQ3NGU2ODIxYzc5NmMzNjBjNzExYzBjNjljYjYy
NzQuLjBjNDBjYzFlNzJjZjc3YmQ3NDUwOWFhNWUyZjBjYmZmMTc0ZTkzNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCkBAIC0xOTYsNyArMTk2LDcg
QEAgRGVidWdnZXJTY3JpcHQuc3RlcE91dE9mRnVuY3Rpb24gPSBmdW5jdGlvbihleGVjU3RhdGUp
CiAgICAgZXhlY1N0YXRlLnByZXBhcmVTdGVwKERlYnVnLlN0ZXBBY3Rpb24uU3RlcE91dCwgMSk7
CiB9CiAKLURlYnVnZ2VyU2NyaXB0LnNldFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdElk
LCBuZXdTb3VyY2UsIHByZXZpZXcpCitEZWJ1Z2dlclNjcmlwdC5saXZlRWRpdFNjcmlwdFNvdXJj
ZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIHByZXZpZXcpCiB7CiAgICAgdmFyIHNj
cmlwdHMgPSBEZWJ1Zy5zY3JpcHRzKCk7CiAgICAgdmFyIHNjcmlwdFRvRWRpdCA9IG51bGw7CkBA
IC0yMjMsNiArMjIzLDE4IEBAIERlYnVnZ2VyU2NyaXB0LnNldEJyZWFrcG9pbnRzQWN0aXZhdGVk
ID0gZnVuY3Rpb24oZXhlY1N0YXRlLCBhcmdzKQogICAgIERlYnVnLmRlYnVnZ2VyRmxhZ3MoKS5i
cmVha1BvaW50c0FjdGl2ZS5zZXRWYWx1ZShhcmdzLmVuYWJsZWQpOwogfQogCitEZWJ1Z2dlclNj
cmlwdC5nZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihldmVudERhdGEpCit7CisgICAgcmV0dXJu
IGV2ZW50RGF0YS5zY3JpcHQoKS5zb3VyY2UoKTsKK30KKworRGVidWdnZXJTY3JpcHQuc2V0U2Ny
aXB0U291cmNlID0gZnVuY3Rpb24oZXZlbnREYXRhLCBzb3VyY2UpCit7CisgICAgaWYgKGV2ZW50
RGF0YS5zY3JpcHQoKS5kYXRhKCkgPT09ICJpbmplY3RlZC1zY3JpcHQiKQorICAgICAgICByZXR1
cm47CisgICAgZXZlbnREYXRhLnNjcmlwdCgpLnNldFNvdXJjZShzb3VyY2UpOworfQorCiBEZWJ1
Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJy
b3IsIGNhbGxlckZyYW1lKQogewogICAgIC8vIEdldCBmdW5jdGlvbiBuYW1lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGVmMTY5
MWVlYzIzYzJmMzMxMzExZTYyNzMxZmVhMzMxMzczNjI4OTQuLjBjNDFhNzQzOWI5Mzc1YmYxZGEw
ZGQxNzNjOWJjOTkxZDVlNDMwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTY1LDEyICs2NSw5NyBAQCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTgogICAgIHJldHVybiBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLCBhcmdjLCBhcmd2KTsKIH0KIAorY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFBy
ZXByb2Nlc3NvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0UHJlcHJvY2Vzc29y
KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTY3JpcHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5n
JiBwcmVwcm9jZXNzb3JTY3JpcHQpCisgICAgICAgIDogbV91dGlsaXR5SXNvbGF0ZSh2ODo6SXNv
bGF0ZTo6TmV3KCkpCisgICAgeworICAgICAgICB2ODo6SXNvbGF0ZTo6U2NvcGUgaXNvbGF0ZSht
X3V0aWxpdHlJc29sYXRlKTsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworCisgICAg
ICAgIG1fdXRpbGl0eUNvbnRleHQgPSB2ODo6Q29udGV4dDo6TmV3KCk7CisgICAgICAgIGlmICht
X3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fdXRpbGl0eUNvbnRleHQpOworCisg
ICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKworICAgICAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHByZXByb2Nlc3NvciA9IHY4OjpTdHJpbmc6Ok5ldyhwcmVwcm9jZXNzb3JTY3JpcHQu
dXRmOCgpLmRhdGEoKSwgcHJlcHJvY2Vzc29yU2NyaXB0LnV0ZjgoKS5sZW5ndGgoKSk7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZShw
cmVwcm9jZXNzb3IpOworCisgICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcHJlcHJvY2Vz
c29yRnVuY3Rpb24gPSBzY3JpcHQtPlJ1bigpOworCisgICAgICAgIGlmICh0cnlDYXRjaC5IYXND
YXVnaHQoKSB8fCAhcHJlcHJvY2Vzc29yRnVuY3Rpb24tPklzRnVuY3Rpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX3ByZXByb2Nlc3NvckZ1bmN0aW9uID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uPjo6TmV3KHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChw
cmVwcm9jZXNzb3JGdW5jdGlvbikpOworICAgIH0KKworICAgIFN0cmluZyBwcmVwcm9jZXNzU291
cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCisgICAgeworICAgICAgICB2ODo6SXNv
bGF0ZTo6U2NvcGUgaXNvbGF0ZShtX3V0aWxpdHlJc29sYXRlKTsKKyAgICAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOworCisgICAgICAgIGlmIChtX3ByZXByb2Nlc3NvckZ1bmN0aW9uLklzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlOworCisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX3V0
aWxpdHlDb250ZXh0KTsKKyAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShj
b250ZXh0KTsKKworICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNvdXJjZUNvZGVTdHJp
bmcgPSB2ODo6U3RyaW5nOjpOZXcoc291cmNlQ29kZS51dGY4KCkuZGF0YSgpLCBzb3VyY2VDb2Rl
LnV0ZjgoKS5sZW5ndGgoKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10g
PSB7IHNvdXJjZUNvZGVTdHJpbmcgfTsKKworICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHRWYWx1ZSA9IG1fcHJlcHJvY2Vz
c29yRnVuY3Rpb24tPkNhbGwoY29udGV4dC0+R2xvYmFsKCksIDEsIGFyZ3YpOworICAgICAgICBp
ZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZTsK
KworICAgICAgICBpZiAocmVzdWx0VmFsdWUtPklzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIHY4
OjpTdHJpbmc6OlV0ZjhWYWx1ZSB1dGY4VmFsdWUocmVzdWx0VmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoKnV0ZjhWYWx1ZSwgdXRmOFZhbHVlLmxlbmd0aCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzb3VyY2VDb2RlOworICAgIH0KKworICAgIH5T
Y3JpcHRQcmVwcm9jZXNzb3IoKQorICAgIHsKKyAgICAgICAgeworICAgICAgICAgICAgdjg6Oklz
b2xhdGU6OlNjb3BlIGlzb2xhdGUobV91dGlsaXR5SXNvbGF0ZSk7CisgICAgICAgICAgICBpZiAo
IW1fcHJlcHJvY2Vzc29yRnVuY3Rpb24uSXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgbV9w
cmVwcm9jZXNzb3JGdW5jdGlvbi5EaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgbV9wcmVwcm9j
ZXNzb3JGdW5jdGlvbi5DbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFt
X3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG1fdXRpbGl0eUNv
bnRleHQuRGlzcG9zZSgpOworICAgICAgICAgICAgICAgIG1fdXRpbGl0eUNvbnRleHQuQ2xlYXIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX3V0aWxpdHlJc29sYXRlLT5E
aXNwb3NlKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHY4OjpJc29sYXRlKiBtX3V0aWxpdHlJ
c29sYXRlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX3V0aWxpdHlDb250ZXh0
OworICAgIFN0cmluZyBtX3ByZXByb2Nlc3NvckJvZHk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uPiBtX3ByZXByb2Nlc3NvckZ1bmN0aW9uOworfTsKKwogU2NyaXB0RGVidWdTZXJ2
ZXI6OlNjcmlwdERlYnVnU2VydmVyKCkKICAgICA6IG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShE
b250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUp
CiB7CiB9CiAKK1NjcmlwdERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQor
CiBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBz
b3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCwgaW50KiBh
Y3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcikKIHsKICAgICB2ODo6SGFu
ZGxlU2NvcGUgc2NvcGU7CkBAIC0yMzUsMTMgKzMyMCwxMiBAQCBib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5n
JiBuZQogCiAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOwogICAgIHRyeUNhdGNoLlNldFZlcmJv
c2UoZmFsc2UpOwotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gY2FsbERlYnVn
Z2VyTWV0aG9kKCJzZXRTY3JpcHRTb3VyY2UiLCAzLCBhcmd2KTsKKyAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2OHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgibGl2ZUVkaXRTY3JpcHRTb3Vy
Y2UiLCAzLCBhcmd2KTsKICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpIHsKICAgICAgICAg
djg6OkxvY2FsPHY4OjpNZXNzYWdlPiBtZXNzYWdlID0gdHJ5Q2F0Y2guTWVzc2FnZSgpOwogICAg
ICAgICBpZiAoIW1lc3NhZ2UuSXNFbXB0eSgpKQogICAgICAgICAgICAgKmVycm9yID0gdG9XZWJD
b3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKG1lc3NhZ2UtPkdldCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgKmVycm9yID0gIlVua25vd24gZXJyb3IuIjsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NFUlQoIXY4cmVzdWx0LklzRW1wdHkoKSk7CkBA
IC0yNjIsNiArMzQ2LDE1IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxTdGFj
ayhTY3JpcHRWYWx1ZSogY2FsbEZyYW1lKQogfQogCiAKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnNldFNjcmlwdFByZXByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIHByZXByb2Nlc3NvckJvZHkpCit7
CisgICAgaWYgKHByZXByb2Nlc3NvckJvZHkuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fc2NyaXB0
UHJlcHJvY2Vzc29yLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zY3Jp
cHRQcmVwcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgU2NyaXB0UHJlcHJvY2Vzc29yKHByZXByb2Nl
c3NvckJvZHkpKTsKK30KKwogU2NyaXB0VmFsdWUgU2NyaXB0RGVidWdTZXJ2ZXI6OmN1cnJlbnRD
YWxsRnJhbWUoKQogewogICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKQEAgLTMzNiw3ICs0MjksNyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRl
YnVnOjpFdmVudERldGFpbHMmIGV2ZW50RAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGV2ZW50ICE9IHY4OjpCcmVhayAmJiBldmVudCAhPSB2ODo6RXhjZXB0aW9uICYmIGV2ZW50
ICE9IHY4OjpBZnRlckNvbXBpbGUpCisgICAgaWYgKGV2ZW50ICE9IHY4OjpCcmVhayAmJiBldmVu
dCAhPSB2ODo6RXhjZXB0aW9uICYmIGV2ZW50ICE9IHY4OjpBZnRlckNvbXBpbGUgJiYgZXZlbnQg
IT0gdjg6OkJlZm9yZUNvbXBpbGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGV2ZW50Q29udGV4dCA9IGV2ZW50RGV0YWlscy5HZXRFdmVudENvbnRleHQo
KTsKQEAgLTM0NSw3ICs0MzgsMjAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhE
ZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICBTY3Jp
cHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KGV2
ZW50Q29udGV4dCk7CiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKLSAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpBZnRlckNvbXBpbGUpIHsKKyAgICAg
ICAgaWYgKGV2ZW50ID09IHY4OjpCZWZvcmVDb21waWxlKSB7CisgICAgICAgICAgICBpZiAoIW1f
c2NyaXB0UHJlcHJvY2Vzc29yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29u
dGV4dCgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBnZXRTY3JpcHRT
b3VyY2VGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJT
Y3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldFNjcmlwdFNvdXJjZSIpKSk7Cisg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBldmVudERldGFpbHMu
R2V0RXZlbnREYXRhKCkgfTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzY3Jp
cHQgPSBnZXRTY3JpcHRTb3VyY2VGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgp
LCAxLCBhcmd2KTsKKworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHNldFNj
cmlwdFNvdXJjZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0U2NyaXB0U291cmNlIikp
KTsKKyAgICAgICAgICAgIFN0cmluZyBwYXRjaGVkU2NyaXB0ID0gbV9zY3JpcHRQcmVwcm9jZXNz
b3ItPnByZXByb2Nlc3NTb3VyY2VDb2RlKHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmlu
ZWRDaGVjayhzY3JpcHQpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2
MltdID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCksIHY4U3RyaW5nKHBhdGNoZWRTY3Jp
cHQpIH07CisgICAgICAgICAgICBzZXRTY3JpcHRTb3VyY2VGdW5jdGlvbi0+Q2FsbChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLCAyLCBhcmd2Mik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0g
djg6OkFmdGVyQ29tcGlsZSkgewogICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKICAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPiBvbkFmdGVyQ29tcGlsZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6
Ok5ldygiZ2V0QWZ0ZXJDb21waWxlU2NyaXB0IikpKTsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhcmd2W10gPSB7IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggMWI5
NWY2ZmE5MTg4NTU5NWVmNjdlNmU2ODE4MWIyY2JkODkzYTQ5Ny4uY2IyNGMxY2MzMWU1Zjc2NTVl
ZDRkZDBlZDEwOTM4Y2U5ODM2MzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpIHsgfQogICAgIHZvaWQgcmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApIHsgfQogCisgICAgdm9p
ZCBzZXRTY3JpcHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBwcmVwcm9jZXNzb3JCb2R5KTsK
KwogICAgIGNsYXNzIFRhc2sgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGFzaygp
IHsgfQpAQCAtMTA0LDcgKzEwNiw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFNjcmlw
dERlYnVnU2VydmVyKCk7Ci0gICAgflNjcmlwdERlYnVnU2VydmVyKCkgeyB9CisgICAgflNjcmlw
dERlYnVnU2VydmVyKCk7CiAgICAgCiAgICAgU2NyaXB0VmFsdWUgY3VycmVudENhbGxGcmFtZSgp
OwogCkBAIC0xMjQsMTQgKzEyNiwxOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiBjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQg
YXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAKKyAgICBTdHJpbmcgcHJlcHJv
Y2Vzc1NvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKwogICAgIFBhdXNlT25F
eGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgIFNjb3BlZFBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBTY29wZWRQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBtX3BhdXNlZENvbnRleHQ7Ci0KICAgICBib29sIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQ7CiAg
ICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9icmVha1Byb2dyYW1D
YWxsYmFja1RlbXBsYXRlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBPd25QdHI8U2NvcGVkUGVyc2lz
dGVudDx2ODo6U2NyaXB0PiA+ID4gbV9jb21waWxlZFNjcmlwdHM7CisgICAgCitwcml2YXRlOgor
ICAgIGNsYXNzIFNjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBPd25QdHI8U2NyaXB0UHJlcHJvY2Vz
c29yPiBtX3NjcmlwdFByZXByb2Nlc3NvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDNiZDJkNGU1NjcxYjljN2E1Y2UxZTUxN2Jj
NWM2ZjVkZjJkYTIwMGQuLjM2MDAyNDhjMDRkZTM0MTc4MWFlOTQxYWI3ZmI1MjUzYjk4MWI3MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhE
T01XaW5kb3cuaCIKQEAgLTk0LDExICs5NSwxNyBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdQog
ICAgIC8vIGluc3BlY3RvcidzIHN0dWZmKSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGEgZmV3IGxp
bmVzIGJlbG93IHdpdGggSW5qZWN0ZWRTY3JpcHRIb3N0IHdyYXBwZXIsCiAgICAgLy8gaW5qZWN0
ZWQgc2NyaXB0IGlkIGFuZCBleHBsaWNpdCByZWZlcmVuY2UgdG8gdGhlIGluc3BlY3RlZCBnbG9i
YWwgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQKICAgICAvLyB0byBjcmVhdGUgYW5k
IGNvbmZpZ3VyZSBJbmplY3RlZFNjcmlwdCBpbnN0YW5jZSB0aGF0IGlzIGdvaW5nIHRvIGJlIHVz
ZWQgYnkgdGhlIGluc3BlY3Rvci4KLSAgICB2ODo6TG9jYWw8djg6OlNjcmlwdD4gc2NyaXB0ID0g
djg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2UpKTsKLSAgICBWOFJlY3Vy
c2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiByZWN1cnNpb25TY29wZTsKKworICAgIHY4
OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICB2ODo6TG9jYWw8djg6OlNjcmlwdD4gc2NyaXB0ID0g
djg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2UpLCAwLCAwLCB2OFN0cmlu
ZygiaW5qZWN0ZWQtc2NyaXB0IikpOworCisgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQor
ICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisKKyAgICBWOFJlY3Vyc2lvblNjb3BlOjpN
aWNyb3Rhc2tTdXBwcmVzc2lvbiByZWN1cnNpb25TY29wZTsgLy8gUkVWSUVXOiBzaG91bGQgdGhp
cyBpbW1lZGlhdGVseSBmb2xsb3cgQ29tcGlsZT8KICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
ID0gc2NyaXB0LT5SdW4oKTsKLSAgICBBU1NFUlQoIXYuSXNFbXB0eSgpKTsKLSAgICBBU1NFUlQo
di0+SXNGdW5jdGlvbigpKTsKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkgfHwgIXYtPklz
RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSA9IHsKICAgICAgIHNjcmlwdEhvc3RXcmFwcGVyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDM5ZWQ4N2Q4NmJiNDk3NzMz
OGMzYzczZjU2ZTcyMzU0YzNiMjdlYWYuLjFlZTZhYWM2NGZlYjhmMjc2NTM2ZmY3ODQwNDZmMWIy
MmFjMGFhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTIy
Myw3ICsyMjMsOCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogInJlbG9hZCIsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aWdub3JlQ2FjaGUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIklmIHRydWUsIGJyb3dzZXIgY2FjaGUgaXMgaWdub3JlZCAoYXMgaWYgdGhlIHVz
ZXIgcHJlc3NlZCBTaGlmdCtyZWZyZXNoKS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQsIHRoZSBzY3JpcHQgd2lsbCBiZSBpbmpl
Y3RlZCBpbnRvIGFsbCBmcmFtZXMgb2YgdGhlIGluc3BlY3RlZCBwYWdlIGFmdGVyIHJlbG9hZC4i
IH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklm
IHNldCwgdGhlIHNjcmlwdCB3aWxsIGJlIGluamVjdGVkIGludG8gYWxsIGZyYW1lcyBvZiB0aGUg
aW5zcGVjdGVkIHBhZ2UgYWZ0ZXIgcmVsb2FkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzY3JpcHRQcmVwcm9jZXNzb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU2NyaXB0IGJvZHkgdGhhdCBzaG91bGQgZXZhbHVhdGUg
dG8gZnVuY3Rpb24gdGhhdCB3aWxsIHByZXByb2Nlc3MgYWxsIHRoZSBzY3JpcHRzIGJlZm9yZSB0
aGVpciBjb21waWxhdGlvbi4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJSZWxvYWRzIGdpdmVuIHBhZ2Ugb3B0aW9uYWxseSBpZ25vcmluZyB0
aGUgY2FjaGUuIgogICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA2MDk1NTE5YTNiYmIzMzEwODI5YjA1ZTRh
NDMxNzVmYWQyYzhhZWE4Li43YTE5YzIzZmJjM2JiMmM0M2I5ZGQ5NDA3YTNjMzU4ZGZiYzQyYmJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29u
dHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2Fn
ZW50cy5hcHBlbmQoY29uc29sZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVi
dWdnZXJBZ2VudFB0cihQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIu
Z2V0KCksIG1fb3ZlcmxheS5nZXQoKSkpOworICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50PiBkZWJ1Z2dlckFnZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBtX2RlYnVnZ2VyQWdl
bnQgPSBkZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChkZWJ1Z2dl
ckFnZW50UHRyLnJlbGVhc2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGQxMTE4ZGM0OTMyMGUzZmRjZDk3YmMzZDkw
NDNlZjM1M2YwM2RhY2YuLmU5ZDdlNDM0ZjllYzBkODY4NzE4ODU3NWJjNTQ0MjYyY2I5OWIxYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJv
bnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOwogCi0gICAgdm9pZCBkaWRDbGVh
ck1haW5GcmFtZVdpbmRvd09iamVjdCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhck1haW5G
cmFtZVdpbmRvd09iamVjdCgpOwogICAgIGJvb2wgaXNQYXVzZWQoKTsKICAgICB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVmMzllNmYx
MzkzMDVjZmFiOGRhODE4ZTNhMTFkMDk2ZjM4ZjZjNjQuLjJlNDMzNGQxOWIxZTIyMzE0YjQ5NTU1
ZDczN2FjNWVhOTVhN2RiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MDUsOSArNDA1LDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QKICAgICBzY3JpcHRzLT5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
U2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFByZXBy
b2Nlc3NvcikKIHsKICAgICBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IG9w
dGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCA/ICpvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQgOiAiIjsKKyAgICBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3IgPSBvcHRpb25hbFNj
cmlwdFByZXByb2Nlc3NvciA/ICpvcHRpb25hbFNjcmlwdFByZXByb2Nlc3NvciA6ICIiOwogICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNo
ZSA/ICpvcHRpb25hbElnbm9yZUNhY2hlIDogZmFsc2UpOwogfQogCkBAIC03NzksNyArNzgwLDkg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiB7CiAgICAgaWYgKGxvYWRlci0+ZnJhbWUoKSA9PSBtX3BhZ2UtPm1haW5GcmFt
ZSgpKSB7CiAgICAgICAgIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBtX3BlbmRpbmdT
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZTsKKyAgICAgICAgbV9zY3JpcHRQcmVwcm9jZXNzb3Ig
PSBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3I7CiAgICAgICAgIG1fcGVuZGluZ1NjcmlwdFRv
RXZhbHVhdGVPbkxvYWRPbmNlID0gU3RyaW5nKCk7CisgICAgICAgIG1fcGVuZGluZ1NjcmlwdFBy
ZXByb2Nlc3NvciA9IFN0cmluZygpOwogICAgIH0KICAgICBtX2Zyb250ZW5kLT5mcmFtZU5hdmln
YXRlZChidWlsZE9iamVjdEZvckZyYW1lKGxvYWRlci0+ZnJhbWUoKSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDdiNzFiMjExZmE0
NGVlMTFlMzU2ZDdlMWEwNWVmY2RmYWVmMDRkOWYuLjcxYjM0NzU3ZmUyMzI4ZTI4NTdmZjk4Njg2
ZjgzMjhkYTQyNDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGFkZFNjcmlwdFRvRXZhbHVh
dGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgU3RyaW5nKiByZXN1
bHQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVs
b2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpOworICAgIHZpcnR1YWwgdm9p
ZCByZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFNjcmlwdFByZXByb2Nlc3Nvcik7CiAgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRD
b29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6UGFnZTo6Q29va2llPiA+JiBjb29raWVzLCBXVEY6OlN0cmluZyogY29va2llc1N0cmluZyk7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pOwpAQCAtMTQ1LDEyICsxNDUsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiAKICAgICAvLyBDcm9zcy1h
Z2VudHMgQVBJCisgICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQogICAgIEZyYW1l
KiBtYWluRnJhbWUoKTsKICAgICBTdHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1l
KiBmcmFtZUZvcklkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgU3RyaW5nIGZyYW1lSWQo
RnJhbWUqKTsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFt
ZSogYXNzZXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBTdHJpbmcgZnJhbWVJZCk7CisgICAgU3RyaW5n
IHNjcmlwdFByZXByb2Nlc3NvcigpIHsgcmV0dXJuIG1fc2NyaXB0UHJlcHJvY2Vzc29yOyB9CiAg
ICAgc3RhdGljIERvY3VtZW50TG9hZGVyKiBhc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmlu
ZyosIEZyYW1lKik7CiAKIHByaXZhdGU6CkBAIC0xNzEsNiArMTczLDggQEAgcHJpdmF0ZToKICAg
ICBsb25nIG1fbGFzdFNjcmlwdElkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1fcGVuZGluZ1Njcmlw
dFRvRXZhbHVhdGVPbkxvYWRPbmNlOwogICAgIFN0cmluZyBtX3NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlOworICAgIFN0cmluZyBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3I7CisgICAgU3Ry
aW5nIG1fc2NyaXB0UHJlcHJvY2Vzc29yOwogICAgIEhhc2hNYXA8RnJhbWUqLCBTdHJpbmc+IG1f
ZnJhbWVUb0lkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIEZyYW1lKj4gbV9pZGVudGlm
aWVyVG9GcmFtZTsKICAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgU3RyaW5nPiBtX2xvYWRl
clRvSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IGM5NzMyM2JmMWI4OWI5YTlkMTBkYzgzMTVkOTNhMmJmMjdiZTJiMmIu
Ljg1NjYxY2RkNGQyNzgxYzVjYWFmZjZhZjVmYzZjNDk4NWUyNzA2ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzYsMTkgKzM2LDIw
IEBACiAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5o
IgorI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRl
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRl
KiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCitQ
YXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBp
bnNwZWN0b3JTdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVy
bGF5KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZURlYnVnZ2VyQWdlbnQoaW5zdHJ1
bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluc3BlY3RlZFBhZ2UsIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgb3ZlcmxheSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZURlYnVn
Z2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIHBhZ2VBZ2VudCwg
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBvdmVybGF5KSk7CiB9CiAKLVBhZ2VEZWJ1Z2dlckFnZW50
OjpQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2Us
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JP
dmVybGF5KiBvdmVybGF5KQorUGFnZURlYnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBp
bnNwZWN0b3JTdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVy
bGF5KQogICAgIDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBp
bnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGluc3BlY3RlZFBhZ2UpCisgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBt
X292ZXJsYXkob3ZlcmxheSkKIHsKIH0KQEAgLTU5LDEyICs2MCwxMiBAQCBQYWdlRGVidWdnZXJB
Z2VudDo6flBhZ2VEZWJ1Z2dlckFnZW50KCkKIAogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6c3Rh
cnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCiB7Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIo
KS5hZGRMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIHNjcmlwdERlYnVnU2Vy
dmVyKCkuYWRkTGlzdGVuZXIodGhpcywgbV9wYWdlQWdlbnQtPnBhZ2UoKSk7CiB9CiAKIHZvaWQg
UGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCiB7Ci0g
ICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBh
Z2UpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgbV9wYWdl
QWdlbnQtPnBhZ2UoKSk7CiB9CiAKIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgUGFnZURlYnVnZ2Vy
QWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKCkKQEAgLTg1LDcgKzg2LDcgQEAgdm9pZCBQYWdlRGVi
dWdnZXJBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0
SWQpIHsKLSAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkU2NyaXB0
U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSk7CisgICAgICAgIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKG1fcGFnZUFnZW50LT5tYWluRnJh
bWUoKSk7CiAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIH0KICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcklkKCpl
eGVjdXRpb25Db250ZXh0SWQpOwpAQCAtOTksNiArMTAwLDEyIEBAIHZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBtZXNz
YWdlKQogICAgIG1fb3ZlcmxheS0+c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UobWVzc2FnZSk7
CiB9CiAKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2Jq
ZWN0KCkKK3sKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdp
bmRvd09iamVjdCgpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0UHJlcHJvY2Vz
c29yKG1fcGFnZUFnZW50LT5zY3JpcHRQcmVwcm9jZXNzb3IoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBF
TkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuaAppbmRleCA4MTAwNTJlYTMxN2VlNTI1ZDkwZWIwYjFjOTYyOTAxZjQ2MTI3ZjA5Li45
ZDc5YTM5MWRlNDU1OTYxMWJkYWJhZDJhYWZkODdiZmFlYjdjNzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMzgsNiArMzgsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OworY2xhc3MgSW5zcGVj
dG9yUGFnZUFnZW50OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjsK
IApAQCAtNDUsNyArNDYsOCBAQCBjbGFzcyBQYWdlRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdn
ZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5z
cGVjdG9yT3ZlcmxheSopOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdl
bnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0
b3JQYWdlQWdlbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7
CiAgICAgdmlydHVhbCB+UGFnZURlYnVnZ2VyQWdlbnQoKTsKIAogcHJpdmF0ZToKQEAgLTU4LDgg
KzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nKik7CiAKLSAgICBQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
SW5zcGVjdG9yU3RhdGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9y
T3ZlcmxheSopOwotICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKKworICAgIFBhZ2VEZWJ1Z2dl
ckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBh
Z2VBZ2VudCosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqKTsKKyAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3Rvck92ZXJsYXkq
IG1fb3ZlcmxheTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OWFhZGFkNWVjMTk1ZDRiNzMyOGFlMzEwNjI3NGNh
NmJkOWNjZjgyLi42ODFmYzJkZTk5YWMwNmUzYmQwYmFmNTBjYzMzYTgyYjU2ZjI3ZWRiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTAtMDIgICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8g
cmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJvY2Vzc29yLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA5OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QuaGFyZFJlbG9hZFBhZ2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0
b3JUZXN0Lkluc3BlY3RvclRlc3QucmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0lu
c3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQt
cHJlcHJvY2Vzc29yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMTItMTAtMDEgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJydW5p
bmdAZGlnaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBoaXhpZTc2IHdlYnNvY2tldCB0ZXN0IGZy
b20gUXQgNS4wIFdLMiBUZXN0RXhwZWN0YXRpb25zIHNraXBwZWQgbGlzdC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXggN2Q3
MTQ5YzY2NDU4YjVjNjAzZTUxYjlhZWE3NDY5OTk3NmIxNTc3MS4uNjk4N2I5Mjc1MzAzZDRkZTY1
ZDE2M2NhZDhiZmE5ZWZhZmNjYTkxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTE5MiwyMiArMTkyLDIzIEBAIEluc3Bl
Y3RvclRlc3QubmF2aWdhdGUgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQogICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoIndpbmRvdy5sb2NhdGlvbiA9ICciICsgdXJsICsgIici
KTsKIH0KIAotSW5zcGVjdG9yVGVzdC5oYXJkUmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNr
KQorSW5zcGVjdG9yVGVzdC5oYXJkUmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBzY3Jp
cHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpCiB7Ci0gICAgSW5zcGVjdG9y
VGVzdC5faW5uZXJSZWxvYWRQYWdlKHRydWUsIGNhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0
Ll9pbm5lclJlbG9hZFBhZ2UodHJ1ZSwgY2FsbGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQs
IHNjcmlwdFByZXByb2Nlc3Nvcik7CiB9CiAKLUluc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQorSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oY2Fs
bGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3NvcikKIHsKLSAg
ICBJbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UoZmFsc2UsIGNhbGxiYWNrKTsKKyAgICBJ
bnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UoZmFsc2UsIGNhbGxiYWNrLCBzY3JpcHRUb0V2
YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCi1JbnNwZWN0b3JUZXN0Ll9p
bm5lclJlbG9hZFBhZ2UgPSBmdW5jdGlvbihoYXJkUmVsb2FkLCBjYWxsYmFjaykKK0luc3BlY3Rv
clRlc3QuX2lubmVyUmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGhhcmRSZWxvYWQsIGNhbGxiYWNrLCBz
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpCiB7CiAgICAgSW5zcGVj
dG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxs
YmFjayk7CiAKLSAgICBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5fcmVzZXQoKTsKLSAg
ICBQYWdlQWdlbnQucmVsb2FkKGhhcmRSZWxvYWQpOworICAgIGlmIChXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmspCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fcmVzZXQo
KTsKKyAgICBQYWdlQWdlbnQucmVsb2FkKGhhcmRSZWxvYWQsIHNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQsIHNjcmlwdFByZXByb2Nlc3Nvcik7CiB9CiAKIEluc3BlY3RvclRlc3QucGFnZUxvYWRlZCA9
IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9k
ZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MTA4ZGNlOGQzZmVmNjkzZjdmYjlmNDc2NzQxMWIzM2I3NTYxNGQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2Vy
LXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3Rz
IHNjcmlwdCBwcmVwcm9jZXNzb3IgKGFiaWxpdHkgdG8gcHJlcHJvY2VzcyBhbGwgc2NyaXB0cyB1
cG9uIHJlbG9hZCkuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorUGFnZSByZWxvYWRlZC4KK2lu
c3BlY3Rvci10ZXN0LmpzCitkZWJ1Z2dlci10ZXN0LmpzCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJv
Y2Vzc29yLmh0bWwKK2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorCitEZWJ1Z2dl
ciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlNDE5ZDFlZjkzMWIwMmU0YTE2MTdmODk0OTk0YjQzMDU1YzExM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXBy
ZXByb2Nlc3Nvci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9hZCgpCit7CisgICAgZXZh
bCgiZnVuY3Rpb24gZHluYW1pYyIgKyAiU2NyaXB0KCkge30iKTsgCisgICAgcnVuVGVzdCgpOwor
fQorCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBmdW5jdGlvbiBwcmVwcm9jZXNzb3Io
c2NyaXB0KQorICAgIHsKKyAgICAgICAgaWYgKHNjcmlwdC5pbmRleE9mKCJkeW5hbWljIiArICJT
Y3JpcHQiKSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gc2NyaXB0ICsgIi8vQCBzb3VyY2VV
Ukw9ZmFrZV91cmwiOworICAgICAgICByZXR1cm4gc2NyaXB0OworICAgIH0KKworICAgIEluc3Bl
Y3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOworCisgICAgZnVuY3Rpb24gc3RlcDEo
KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHN0ZXAyLCB1bmRlZmlu
ZWQsICIoIiArIHByZXByb2Nlc3NvciArICIpIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3Rl
cDIoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gYWNjZXB0KHNjcmlwdCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHNjcmlwdHMg
PSBJbnNwZWN0b3JUZXN0LnF1ZXJ5U2NyaXB0cyhhY2NlcHQpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0c1tpXS5zb3Vy
Y2VVUkwpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOwor
ICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZCgpIj4K
KzxwPgorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAoYWJpbGl0eSB0byBwcmVwcm9jZXNzIGFs
bCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9j
ZXNzb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNDZjM2U1ZjAzMDc1ZWFkMTYyZTc1ZGMz
ZjU2NTgwYTMxOGQwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAo
YWJpbGl0eSB0byBwcmVwcm9jZXNzIGFsbCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKworRGVidWdn
ZXIgd2FzIGVuYWJsZWQuCitQYWdlIHJlbG9hZGVkLgoraW5zcGVjdG9yLXRlc3QuanMKK2RlYnVn
Z2VyLXRlc3QuanMKK2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorZGVidWdnZXIt
c2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCitmYWtlX3VybAorRGVidWdnZXIgd2FzIGRpc2FibGVk
LgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167091</attachid>
            <date>2012-10-04 06:04:14 -0700</date>
            <delta_ts>2012-10-11 06:53:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80992-20121004170323.patch</filename>
            <type>text/plain</type>
            <size>32511</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM4NGFlOGQ3YTg4MTYz
MjhkMDkyNjE3MzFkNTk1Yzk5ZWE5NDc5MS4uOTk4YzA4ZDQxYTczNTVhY2VjYWZjM2ZjYjE5YjIw
ZmI2ZTQzZWUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEwLTAzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgd2F5IHRvIGluamVjdCAncHJlcHJvY2Vzc29yJyBzY3Jp
cHQgdGhhdCB3b3VsZCBwcm9jZXNzCisgICAgICAgIGVhY2ggSmF2YVNjcmlwdCBmaWxlIGJlZm9y
ZSBpdCBnZXRzIGludG8gdGhlIFZNIGZvciBjb21waWxhdGlvbi4gVGhhdCB3YXkgaW5zcGVjdG9y
CisgICAgICAgIGNhbiBleHBvc2UgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgYXNzZXNzaW5nIGNvZGUg
Y292ZXJhZ2Ugb3IgdHJhY2luZyBhbGwgdGhlIGNhbGxzLgorCisgICAgICAgIFByZXByb2Nlc3Nv
ciBzY3JpcHQgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGFnZW50IHdoZXJlIGl0IHdhaXRzIGZvciBy
ZWxvYWQgdG8gaGFwcGVuLgorICAgICAgICBVcG9uIHJlbG9hZCwgU2NyaXB0RGVidWdTZXJ2ZXIg
aXMgdXNpbmcgaXQgdG8gcGF0Y2ggdGhlIHNjcmlwdCBzb3VyY2VzLgorCisgICAgICAgIAorICAg
ICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nv
ci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6
CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanM6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjpT
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OlNjcmlwdFByZXByb2Nlc3Nvcjo6cHJlcHJvY2Vzc1NvdXJjZUNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcjo6flNjcmlwdFByZXBy
b2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoSW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
ZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5G
cmFtZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFn
ZURlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTEwLTA0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgY29kZSBmb3IgaW5wdXRbdHlwZT1kYXRlXSB3aXRoIHRo
ZSBtdWx0aXBsZSBmaWVsZHMgVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5oCmluZGV4IDA4OTQxMDZhYTE5MDQwODAxZWRlMzIwNDAxNzlhNmEyZjMw
ZDU4MjcuLjE3MDJiZmU3ZjU3MTQwYWY2NGVlM2IwNDIzY2QyZjNiYWQ5YTdhZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtODksNiAr
ODksMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERl
YnVnU2VydmVyPiogPSAwKSA9IDA7CiAKKyAgICB2b2lkIHNldFNjcmlwdFByZXByb2Nlc3Nvcihj
b25zdCBTdHJpbmcmKQorICAgIHsKKyAgICAgICAgLy8gRklYTUUod2Via2l0Lm9yZy9iLzgyMjAz
KTogSW1wbGVtZW50IHByZXByb2Nlc3Nvci4KKyAgICB9CisKICAgICBib29sIGlzUGF1c2VkKCkg
eyByZXR1cm4gbV9wYXVzZWQ7IH0KIAogICAgIHZvaWQgY29tcGlsZVNjcmlwdChTY3JpcHRTdGF0
ZSosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFN0
cmluZyogc2NyaXB0SWQsIFN0cmluZyogZXhjZXB0aW9uTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzCmluZGV4IDkxNGI2ZjI2MjQ3NGU2ODIx
Yzc5NmMzNjBjNzExYzBjNjljYjYyNzQuLjBjNDBjYzFlNzJjZjc3YmQ3NDUwOWFhNWUyZjBjYmZm
MTc0ZTkzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2Vy
U2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0
LmpzCkBAIC0xOTYsNyArMTk2LDcgQEAgRGVidWdnZXJTY3JpcHQuc3RlcE91dE9mRnVuY3Rpb24g
PSBmdW5jdGlvbihleGVjU3RhdGUpCiAgICAgZXhlY1N0YXRlLnByZXBhcmVTdGVwKERlYnVnLlN0
ZXBBY3Rpb24uU3RlcE91dCwgMSk7CiB9CiAKLURlYnVnZ2VyU2NyaXB0LnNldFNjcmlwdFNvdXJj
ZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIHByZXZpZXcpCitEZWJ1Z2dlclNjcmlw
dC5saXZlRWRpdFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIHBy
ZXZpZXcpCiB7CiAgICAgdmFyIHNjcmlwdHMgPSBEZWJ1Zy5zY3JpcHRzKCk7CiAgICAgdmFyIHNj
cmlwdFRvRWRpdCA9IG51bGw7CkBAIC0yMjMsNiArMjIzLDE4IEBAIERlYnVnZ2VyU2NyaXB0LnNl
dEJyZWFrcG9pbnRzQWN0aXZhdGVkID0gZnVuY3Rpb24oZXhlY1N0YXRlLCBhcmdzKQogICAgIERl
YnVnLmRlYnVnZ2VyRmxhZ3MoKS5icmVha1BvaW50c0FjdGl2ZS5zZXRWYWx1ZShhcmdzLmVuYWJs
ZWQpOwogfQogCitEZWJ1Z2dlclNjcmlwdC5nZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihldmVu
dERhdGEpCit7CisgICAgcmV0dXJuIGV2ZW50RGF0YS5zY3JpcHQoKS5zb3VyY2UoKTsKK30KKwor
RGVidWdnZXJTY3JpcHQuc2V0U2NyaXB0U291cmNlID0gZnVuY3Rpb24oZXZlbnREYXRhLCBzb3Vy
Y2UpCit7CisgICAgaWYgKGV2ZW50RGF0YS5zY3JpcHQoKS5kYXRhKCkgPT09ICJpbmplY3RlZC1z
Y3JpcHQiKQorICAgICAgICByZXR1cm47CisgICAgZXZlbnREYXRhLnNjcmlwdCgpLnNldFNvdXJj
ZShzb3VyY2UpOworfQorCiBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1l
ID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNhbGxlckZyYW1lKQogewogICAgIC8vIEdldCBmdW5j
dGlvbiBuYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCmluZGV4IGVmMTY5MWVlYzIzYzJmMzMxMzExZTYyNzMxZmVhMzMxMzczNjI4OTQu
LjY3NDQ5ZDdiN2I0OTU3ZDBmNDc2ODU1MGM0YzZmMDhlMGRiZjM0YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKIAogI2luY2x1ZGUgIkRlYnVnZ2VyU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiSmF2
YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlNjb3BlZFBlcnNpc3RlbnQuaCIKICNpbmNs
dWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC01Niw2ICs1NywyMyBAQCBwcml2YXRlOgogICAgIE93
blB0cjxTY3JpcHREZWJ1Z1NlcnZlcjo6VGFzaz4gbV90YXNrOwogfTsKIAorY2xhc3MgUmVjdXJz
aW9uU2NvcGVTdXBwcmVzc2lvbiB7CitwdWJsaWM6CisgICAgUmVjdXJzaW9uU2NvcGVTdXBwcmVz
c2lvbigpCisgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgVjhQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCgpLT5pbmNyZW1lbnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCk7CisjZW5k
aWYKKyAgICB9CisKKyAgICB+UmVjdXJzaW9uU2NvcGVTdXBwcmVzc2lvbigpCisgICAgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5kZWNyZW1l
bnRJbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxldmVsKCk7CisjZW5kaWYKKyAgICB9Cit9OworCiB9
CiAKIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFNjcmlwdERlYnVnU2VydmVyOjpjYWxsRGVidWdnZXJN
ZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSkKQEAgLTY1LDEyICs4Myw4NSBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbERlYnVnZ2VyTWV0aG9kKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TgogICAgIHJldHVybiBmdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCBhcmdj
LCBhcmd2KTsKIH0KIAorY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nv
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0UHJlcHJvY2Vzc29yKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBTY3JpcHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBwcmVwcm9j
ZXNzb3JTY3JpcHQpCisgICAgICAgIDogbV91dGlsaXR5SXNvbGF0ZSh2ODo6SXNvbGF0ZTo6TmV3
KCkpCisgICAgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisKKyAgICAgICAgbV91
dGlsaXR5Q29udGV4dC5zZXQodjg6OkNvbnRleHQ6Ok5ldygpKTsKKyAgICAgICAgaWYgKG1fdXRp
bGl0eUNvbnRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHY4
OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUobV91dGlsaXR5Q29udGV4dC5nZXQoKSk7CisK
KyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworCisgICAgICAgIHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gcHJlcHJvY2Vzc29yID0gdjg6OlN0cmluZzo6TmV3KHByZXByb2Nlc3NvclNjcmlw
dC51dGY4KCkuZGF0YSgpLCBwcmVwcm9jZXNzb3JTY3JpcHQudXRmOCgpLmxlbmd0aCgpKTsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxl
KHByZXByb2Nlc3Nvcik7CisKKyAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBSZWN1cnNpb25TY29wZVN1cHByZXNzaW9uIHN1cHBy
ZXNzaW9uU2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwcmVwcm9jZXNzb3JG
dW5jdGlvbiA9IHNjcmlwdC0+UnVuKCk7CisKKyAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdo
dCgpIHx8ICFwcmVwcm9jZXNzb3JGdW5jdGlvbi0+SXNGdW5jdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1fcHJlcHJvY2Vzc29yRnVuY3Rpb24uc2V0KHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPjo6Q2FzdChwcmVwcm9jZXNzb3JGdW5jdGlvbikpOworICAgIH0KKworICAg
IFN0cmluZyBwcmVwcm9jZXNzU291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCisg
ICAgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisKKyAgICAgICAgaWYgKG1fcHJl
cHJvY2Vzc29yRnVuY3Rpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNv
ZGU7CisKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkxvY2Fs
PHY4OjpDb250ZXh0Pjo6TmV3KG1fdXRpbGl0eUNvbnRleHQuZ2V0KCkpOworICAgICAgICB2ODo6
Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworCisgICAgICAgIHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gc291cmNlQ29kZVN0cmluZyA9IHY4OjpTdHJpbmc6Ok5ldyhzb3VyY2VD
b2RlLnV0ZjgoKS5kYXRhKCksIHNvdXJjZUNvZGUudXRmOCgpLmxlbmd0aCgpKTsKKyAgICAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgc291cmNlQ29kZVN0cmluZyB9OworCisg
ICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgUmVjdXJzaW9uU2NvcGVTdXBw
cmVzc2lvbiBzdXBwcmVzc2lvblNjb3BlOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVzdWx0VmFsdWUgPSBtX3ByZXByb2Nlc3NvckZ1bmN0aW9uLT5DYWxsKGNvbnRleHQtPkdsb2Jh
bCgpLCAxLCBhcmd2KTsKKyAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHNvdXJjZUNvZGU7CisKKyAgICAgICAgaWYgKHJlc3VsdFZhbHVlLT5Jc1N0
cmluZygpKSB7CisgICAgICAgICAgICB2ODo6U3RyaW5nOjpVdGY4VmFsdWUgdXRmOFZhbHVlKHJl
c3VsdFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KCp1dGY4VmFs
dWUsIHV0ZjhWYWx1ZS5sZW5ndGgoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc291
cmNlQ29kZTsKKyAgICB9CisKKyAgICB+U2NyaXB0UHJlcHJvY2Vzc29yKCkKKyAgICB7CisgICAg
ICAgIG1fdXRpbGl0eUlzb2xhdGUtPkRpc3Bvc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
djg6Oklzb2xhdGUqIG1fdXRpbGl0eUlzb2xhdGU7CisgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6
Q29udGV4dD4gbV91dGlsaXR5Q29udGV4dDsKKyAgICBTdHJpbmcgbV9wcmVwcm9jZXNzb3JCb2R5
OworICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiBtX3ByZXByb2Nlc3NvckZ1bmN0
aW9uOworfTsKKwogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKCkKICAgICA6
IG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBt
X2JyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpCiB7CiB9CiAKK1NjcmlwdERlYnVnU2VydmVyOjp+
U2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCiBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2lu
dCYgc2NyaXB0QnJlYWtwb2ludCwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENv
bHVtbk51bWJlcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBAIC0yMzUsNyArMzI2
LDcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKIAogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRj
aDsKICAgICB0cnlDYXRjaC5TZXRWZXJib3NlKGZhbHNlKTsKLSAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2OHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0U2NyaXB0U291cmNlIiwgMywg
YXJndik7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJN
ZXRob2QoImxpdmVFZGl0U2NyaXB0U291cmNlIiwgMywgYXJndik7CiAgICAgaWYgKHRyeUNhdGNo
Lkhhc0NhdWdodCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4gbWVzc2FnZSA9
IHRyeUNhdGNoLk1lc3NhZ2UoKTsKICAgICAgICAgaWYgKCFtZXNzYWdlLklzRW1wdHkoKSkKQEAg
LTI2Miw2ICszNTMsMTMgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNr
KFNjcmlwdFZhbHVlKiBjYWxsRnJhbWUpCiB9CiAKIAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJvY2Vzc29yQm9keSkKK3sK
KyAgICBtX3NjcmlwdFByZXByb2Nlc3Nvci5jbGVhcigpOworICAgIGlmICghcHJlcHJvY2Vzc29y
Qm9keS5pc0VtcHR5KCkpCisgICAgICAgIG1fc2NyaXB0UHJlcHJvY2Vzc29yID0gYWRvcHRQdHIo
bmV3IFNjcmlwdFByZXByb2Nlc3NvcihwcmVwcm9jZXNzb3JCb2R5KSk7Cit9CisKIFNjcmlwdFZh
bHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQo
aXNQYXVzZWQoKSk7CkBAIC0zMzYsNyArNDM0LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChldmVudCAhPSB2ODo6QnJlYWsgJiYg
ZXZlbnQgIT0gdjg6OkV4Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJDb21waWxlKQorICAg
IGlmIChldmVudCAhPSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4Y2VwdGlvbiAmJiBldmVu
dCAhPSB2ODo6QWZ0ZXJDb21waWxlICYmIGV2ZW50ICE9IHY4OjpCZWZvcmVDb21waWxlKQogICAg
ICAgICByZXR1cm47CiAKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBldmVudENvbnRleHQg
PSBldmVudERldGFpbHMuR2V0RXZlbnRDb250ZXh0KCk7CkBAIC0zNDUsNyArNDQzLDIwIEBAIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6
OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIg
PSBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dChldmVudENvbnRleHQpOwogICAgIGlmIChsaXN0
ZW5lcikgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIGlmIChldmVu
dCA9PSB2ODo6QWZ0ZXJDb21waWxlKSB7CisgICAgICAgIGlmIChldmVudCA9PSB2ODo6QmVmb3Jl
Q29tcGlsZSkgeworICAgICAgICAgICAgaWYgKCFtX3NjcmlwdFByZXByb2Nlc3NvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250
ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CisgICAgICAgICAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2NyaXB0U291cmNlRnVuY3Rpb24gPSB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmlu
Zzo6TmV3KCJnZXRTY3JpcHRTb3VyY2UiKSkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFyZ3ZbXSA9IHsgZXZlbnREZXRhaWxzLkdldEV2ZW50RGF0YSgpIH07CisgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2NyaXB0ID0gZ2V0U2NyaXB0U291cmNlRnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisKKyAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRTY3JpcHRTb3VyY2VGdW5jdGlvbiA9IHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6
U3RyaW5nOjpOZXcoInNldFNjcmlwdFNvdXJjZSIpKSk7CisgICAgICAgICAgICBTdHJpbmcgcGF0
Y2hlZFNjcmlwdCA9IG1fc2NyaXB0UHJlcHJvY2Vzc29yLT5wcmVwcm9jZXNzU291cmNlQ29kZSh0
b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soc2NyaXB0KSk7CisgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndjJbXSA9IHsgZXZlbnREZXRhaWxzLkdldEV2
ZW50RGF0YSgpLCB2OFN0cmluZyhwYXRjaGVkU2NyaXB0KSB9OworICAgICAgICAgICAgc2V0U2Ny
aXB0U291cmNlRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMiwgYXJndjIp
OworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09IHY4OjpBZnRlckNvbXBpbGUpIHsKICAgICAg
ICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1
Z0NvbnRleHQoKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gb25BZnRl
ckNvbXBpbGVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdn
ZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldEFmdGVyQ29tcGlsZVNjcmlw
dCIpKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBldmVu
dERldGFpbHMuR2V0RXZlbnREYXRhKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDFiOTVmNmZhOTE4ODU1OTVlZjY3ZTZlNjgxODFi
MmNiZDg5M2E0OTcuLmNiMjRjMWNjMzFlNWY3NjU1ZWQ0ZGQwZWQxMDkzOGNlOTgzNjM0ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
ODYsNiArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nv
b24oKSB7IH0KICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERl
YnVnU2VydmVyPiogPSAwKSB7IH0KIAorICAgIHZvaWQgc2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNv
bnN0IFN0cmluZyYgcHJlcHJvY2Vzc29yQm9keSk7CisKICAgICBjbGFzcyBUYXNrIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRhc2soKSB7IH0KQEAgLTEwNCw3ICsxMDYsNyBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBTY3JpcHREZWJ1Z1NlcnZlcigpOwotICAgIH5TY3Jp
cHREZWJ1Z1NlcnZlcigpIHsgfQorICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpOwogICAgIAogICAg
IFNjcmlwdFZhbHVlIGN1cnJlbnRDYWxsRnJhbWUoKTsKIApAQCAtMTI0LDE0ICsxMjYsMTkgQEAg
cHJvdGVjdGVkOgogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2FsbERlYnVnZ2VyTWV0aG9k
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10pOwogCisgICAgU3RyaW5nIHByZXByb2Nlc3NTb3VyY2VDb2RlKGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSk7CisKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZTsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZGVidWdn
ZXJTY3JpcHQ7CiAgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2V4ZWN1dGlvblN0
YXRlOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVzZWRDb250ZXh0OwotCiAgICAg
Ym9vbCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOwogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZTsKICAgICBIYXNo
TWFwPFN0cmluZywgT3duUHRyPFNjb3BlZFBlcnNpc3RlbnQ8djg6OlNjcmlwdD4gPiA+IG1fY29t
cGlsZWRTY3JpcHRzOworICAgIAorcHJpdmF0ZToKKyAgICBjbGFzcyBTY3JpcHRQcmVwcm9jZXNz
b3I7CisgICAgT3duUHRyPFNjcmlwdFByZXByb2Nlc3Nvcj4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApp
bmRleCAzYmQyZDRlNTY3MWI5YzdhNWNlMWU1MTdiYzVjNmY1ZGYyZGEyMDBkLi45NWFkYmU2OWIy
ODNjNTBlNmY2OWY5NjNiOTFmMmNlZWY2ODYxNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRl
ICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCkBAIC05NCwxMSArOTUs
MTcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRTb3UKICAgICAvLyBpbnNwZWN0b3IncyBzdHVmZikg
dGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhIGZldyBsaW5lcyBiZWxvdyB3aXRoIEluamVjdGVkU2Ny
aXB0SG9zdCB3cmFwcGVyLAogICAgIC8vIGluamVjdGVkIHNjcmlwdCBpZCBhbmQgZXhwbGljaXQg
cmVmZXJlbmNlIHRvIHRoZSBpbnNwZWN0ZWQgZ2xvYmFsIG9iamVjdC4gVGhlIGZ1bmN0aW9uIGlz
IGV4cGVjdGVkCiAgICAgLy8gdG8gY3JlYXRlIGFuZCBjb25maWd1cmUgSW5qZWN0ZWRTY3JpcHQg
aW5zdGFuY2UgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGJ5IHRoZSBpbnNwZWN0b3IuCi0gICAg
djg6OkxvY2FsPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhTdHJp
bmcoc2NyaXB0U291cmNlKSk7CisKKyAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CisgICAgdjg6
OkxvY2FsPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhTdHJpbmco
c2NyaXB0U291cmNlKSwgMCwgMCwgdjhTdHJpbmcoImluamVjdGVkLXNjcmlwdCIpKTsKKworICAg
IGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgp
OworCiAgICAgVjhSZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gcmVjdXJzaW9u
U2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdiA9IHNjcmlwdC0+UnVuKCk7Ci0gICAg
QVNTRVJUKCF2LklzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHYtPklzRnVuY3Rpb24oKSk7CisgICAg
aWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpIHx8ICF2LT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJl
dHVybiBTY3JpcHRPYmplY3QoKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10g
PSB7CiAgICAgICBzY3JpcHRIb3N0V3JhcHBlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgppbmRleCAwMWEzZTJhOTFiNDQyNWMwNjAwZjkxZWQ4NzQxMGJiMWRkYzE1OGUw
Li5kZjgzOTEwMzUzNjY1NmQ4YmIyNjM5ZTc4OWY4MDllNDIyM2FkNjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMjMsNyArMjIzLDggQEAKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJyZWxvYWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlnbm9yZUNhY2hlIiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBicm93
c2VyIGNhY2hlIGlzIGlnbm9yZWQgKGFzIGlmIHRoZSB1c2VyIHByZXNzZWQgU2hpZnQrcmVmcmVz
aCkuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiSWYgc2V0LCB0aGUgc2NyaXB0IHdpbGwgYmUgaW5qZWN0ZWQgaW50byBhbGwgZnJhbWVzIG9m
IHRoZSBpbnNwZWN0ZWQgcGFnZSBhZnRlciByZWxvYWQuIiB9CisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCIsICJ0eXBlIjogInN0cmluZyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQsIHRoZSBzY3JpcHQgd2lsbCBi
ZSBpbmplY3RlZCBpbnRvIGFsbCBmcmFtZXMgb2YgdGhlIGluc3BlY3RlZCBwYWdlIGFmdGVyIHJl
bG9hZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyaXB0UHJlcHJvY2Vz
c29yIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IlNjcmlwdCBib2R5IHRoYXQgc2hvdWxkIGV2YWx1YXRlIHRvIGZ1bmN0aW9uIHRoYXQgd2lsbCBw
cmVwcm9jZXNzIGFsbCB0aGUgc2NyaXB0cyBiZWZvcmUgdGhlaXIgY29tcGlsYXRpb24uIiwgImhp
ZGRlbiI6IHRydWUgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlbG9hZHMgZ2l2ZW4gcGFnZSBvcHRpb25hbGx5IGlnbm9yaW5nIHRoZSBjYWNo
ZS4iCiAgICAgICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDYwOTU1MTlhM2JiYjMzMTA4MjliMDVlNGE0MzE3NWZh
ZDJjOGFlYTguLjdhMTljMjNmYmMzYmIyYzQzYjlkZDk0MDdhM2MzNThkZmJjNDJiYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTEzMiw3ICsxMzIsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1fYWdlbnRzLmFw
cGVuZChjb25zb2xlQWdlbnRQdHIucmVsZWFzZSgpKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFn
ZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwg
bV9vdmVybGF5LmdldCgpKSk7CisgICAgT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IGRl
YnVnZ2VyQWdlbnRQdHIoUGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2VBZ2VudCwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIG1fb3ZlcmxheS5nZXQoKSkpOwogICAgIG1fZGVidWdnZXJBZ2VudCA9IGRl
YnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRlYnVnZ2VyQWdlbnRQ
dHIucmVsZWFzZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggZDExMThkYzQ5MzIwZTNmZGNkOTdiYzNkOTA0M2VmMzUz
ZjAzZGFjZi4uZTlkN2U0MzRmOWVjMGQ4Njg3MTg4NTc1YmM1NDQyNjJjYjk5YjFjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBA
IC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgp
OwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiAKLSAgICB2b2lkIGRpZENsZWFyTWFpbkZy
YW1lV2luZG93T2JqZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyTWFpbkZyYW1lV2lu
ZG93T2JqZWN0KCk7CiAgICAgYm9vbCBpc1BhdXNlZCgpOwogICAgIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZWYzOWU2ZjEzOTMwNWNm
YWI4ZGE4MThlM2ExMWQwOTZmMzhmNmM2NC4uMmU0MzM0ZDE5YjFlMjIzMTRiNDk1NTVkNzM3YWM1
ZWE5NWE3ZGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKQEAgLTQwNSw5ICs0MDUsMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdAog
ICAgIHNjcmlwdHMtPnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSWdu
b3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKQor
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRU
b0V2YWx1YXRlT25Mb2FkLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29y
KQogewogICAgIG1fcGVuZGluZ1NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlID0gb3B0aW9uYWxT
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkID8gKm9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCA6
ICIiOworICAgIG1fcGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvciA9IG9wdGlvbmFsU2NyaXB0UHJl
cHJvY2Vzc29yID8gKm9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29yIDogIiI7CiAgICAgbV9wYWdl
LT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnJlbG9hZChvcHRpb25hbElnbm9yZUNhY2hlID8gKm9w
dGlvbmFsSWdub3JlQ2FjaGUgOiBmYWxzZSk7CiB9CiAKQEAgLTc3OSw3ICs3ODAsOSBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKIHsKICAgICBpZiAobG9hZGVyLT5mcmFtZSgpID09IG1fcGFnZS0+bWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgbV9zY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IG1fcGVuZGluZ1NjcmlwdFRv
RXZhbHVhdGVPbkxvYWRPbmNlOworICAgICAgICBtX3NjcmlwdFByZXByb2Nlc3NvciA9IG1fcGVu
ZGluZ1NjcmlwdFByZXByb2Nlc3NvcjsKICAgICAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0
ZU9uTG9hZE9uY2UgPSBTdHJpbmcoKTsKKyAgICAgICAgbV9wZW5kaW5nU2NyaXB0UHJlcHJvY2Vz
c29yID0gU3RyaW5nKCk7CiAgICAgfQogICAgIG1fZnJvbnRlbmQtPmZyYW1lTmF2aWdhdGVkKGJ1
aWxkT2JqZWN0Rm9yRnJhbWUobG9hZGVyLT5mcmFtZSgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggN2I3MWIyMTFmYTQ0ZWUxMWUz
NTZkN2UxYTA1ZWZjZGZhZWYwNGQ5Zi4uNzFiMzQ3NTdmZTIzMjhlMjg1N2ZmOTg2ODZmODMyOGRh
NDI0OGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc291cmNlLCBTdHJpbmcqIHJlc3VsdCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoRXJy
b3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk7CisgICAgdmlydHVhbCB2b2lkIHJlbG9h
ZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0
cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsU2NyaXB0UHJlcHJvY2Vzc29yKTsKICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdmlydHVhbCB2b2lkIGdldENvb2tpZXMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdl
OjpDb29raWU+ID4mIGNvb2tpZXMsIFdURjo6U3RyaW5nKiBjb29raWVzU3RyaW5nKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbik7CkBAIC0xNDUsMTIgKzE0NSwxNCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBB
UEkKKyAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgRnJhbWUqIG1haW5G
cmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJhbWUqIGZyYW1l
Rm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICBTdHJpbmcgZnJhbWVJZChGcmFtZSop
OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAgIEZyYW1lKiBhc3Nl
cnRGcmFtZShFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKKyAgICBTdHJpbmcgc2NyaXB0
UHJlcHJvY2Vzc29yKCkgeyByZXR1cm4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7IH0KICAgICBzdGF0
aWMgRG9jdW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJh
bWUqKTsKIAogcHJpdmF0ZToKQEAgLTE3MSw2ICsxNzMsOCBAQCBwcml2YXRlOgogICAgIGxvbmcg
bV9sYXN0U2NyaXB0SWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZE9uY2U7CiAgICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7
CisgICAgU3RyaW5nIG1fcGVuZGluZ1NjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBTdHJpbmcgbV9z
Y3JpcHRQcmVwcm9jZXNzb3I7CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFtZVRv
SWRlbnRpZmllcjsKICAgICBIYXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJUb0Zy
YW1lOwogICAgIEhhc2hNYXA8RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVu
dGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggYzk3MzIzYmYxYjg5YjlhOWQxMGRjODMxNWQ5M2EyYmYyN2JlMmIyYi4uODU2NjFj
ZGQ0ZDI3ODFjNWNhYWZmNmFmNWZjNmM0OTg1ZTI3MDZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNiwxOSArMzYsMjAgQEAKIAog
I2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NP
d25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3Bl
Y3RvclN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKK1Bhc3NPd25Q
dHI8UGFnZURlYnVnZ2VyQWdlbnQ+IFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3Rv
clN0YXRlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5n
QWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5zcGVjdGVkUGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBvdmVybGF5KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlRGVidWdnZXJBZ2Vu
dChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgcGFnZUFnZW50LCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIG92ZXJsYXkpKTsKIH0KIAotUGFnZURlYnVnZ2VyQWdlbnQ6OlBhZ2VE
ZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
c3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkq
IG92ZXJsYXkpCitQYWdlRGVidWdnZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3Rv
clN0YXRlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAg
ICAgOiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluc3BlY3Rv
clN0YXRlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5z
cGVjdGVkUGFnZSkKKyAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fb3Zlcmxh
eShvdmVybGF5KQogewogfQpAQCAtNTksMTIgKzYwLDEyIEBAIFBhZ2VEZWJ1Z2dlckFnZW50Ojp+
UGFnZURlYnVnZ2VyQWdlbnQoKQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzdGFydExpc3Rl
bmluZ1NjcmlwdERlYnVnU2VydmVyKCkKIHsKLSAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExp
c3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFnZSk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5h
ZGRMaXN0ZW5lcih0aGlzLCBtX3BhZ2VBZ2VudC0+cGFnZSgpKTsKIH0KIAogdm9pZCBQYWdlRGVi
dWdnZXJBZ2VudDo6c3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKIHsKLSAgICBzY3Jp
cHREZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFnZSk7Cisg
ICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlzLCBtX3BhZ2VBZ2VudC0+
cGFnZSgpKTsKIH0KIAogUGFnZVNjcmlwdERlYnVnU2VydmVyJiBQYWdlRGVidWdnZXJBZ2VudDo6
c2NyaXB0RGVidWdTZXJ2ZXIoKQpAQCAtODUsNyArODYsNyBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFn
ZW50Ojp1bm11dGVDb25zb2xlKCkKIEluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50Ojpp
bmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQq
IGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewot
ICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0ZSht
X2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpKTsK
ICAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZv
cihzY3JpcHRTdGF0ZSk7CiAgICAgfQogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlv
bkNvbnRleHRJZCk7CkBAIC05OSw2ICsxMDAsMTIgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6
c2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCiAg
ICAgbV9vdmVybGF5LT5zZXRQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZShtZXNzYWdlKTsKIH0KIAor
dm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKQor
eworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2Jq
ZWN0KCk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRTY3JpcHRQcmVwcm9jZXNzb3IobV9w
YWdlQWdlbnQtPnNjcmlwdFByZXByb2Nlc3NvcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5o
CmluZGV4IDgxMDA1MmVhMzE3ZWU1MjVkOTBlYjBiMWM5NjI5MDFmNDYxMjdmMDkuLmY2YzhkMzkw
MGY3NjRhNzgwYjFjZTA2ZTJlMGQwNzA2ZDZlNjg5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CitjbGFzcyBJbnNwZWN0b3JQYWdl
QWdlbnQ7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVyOwogCkBAIC00
NSw3ICs0Niw3IEBAIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JP
dmVybGF5Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IGNyZWF0
ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdl
bnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmly
dHVhbCB+UGFnZURlYnVnZ2VyQWdlbnQoKTsKIAogcHJpdmF0ZToKQEAgLTU4LDggKzU5LDEwIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKik7
CiAKLSAgICBQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9y
U3RhdGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSop
OwotICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKKworICAgIFBhZ2VEZWJ1Z2dlckFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCos
IEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqKTsKKyAgICBJbnNwZWN0
b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3Zlcmxh
eTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBhNmZiMGU5MTYyZTlkMjUwMTNhMWQyZTdmNjVhNzIzOTM3YzM5NTdk
Li4xNjYzNDM1ZDUwNWRhNWQyNDhjM2RiMDcyNjEyYzBjY2M0MGQ4OTRiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMTAtMDMgICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBh
Z2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJvY2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRl
c3QuaGFyZFJlbG9hZFBhZ2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QucmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRl
c3QuSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vz
c29yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9k
ZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKIDIwMTItMTAtMDQgIFR1bGxpbyBMdWNlbmEgIDx0dWxsaW8ubHVjZW5hQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgW1F0XSBjc3MyLjEvMjAxMTAzMjMvdGV4dC1pbmRlbnQtaW50cmluc2lj
LTAwKiBmYWlsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCmluZGV4IDdkNzE0OWM2NjQ1OGI1YzYwM2U1MWI5YWVhNzQ2OTk5NzZiMTU3
NzEuLjY5ODdiOTI3NTMwM2Q0ZGU2NWQxNjNjYWQ4YmZhOWVmYWZjY2E5MTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0x
OTIsMjIgKzE5MiwyMyBAQCBJbnNwZWN0b3JUZXN0Lm5hdmlnYXRlID0gZnVuY3Rpb24odXJsLCBj
YWxsYmFjaykKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9j
YXRpb24gPSAnIiArIHVybCArICInIik7CiB9CiAKLUluc3BlY3RvclRlc3QuaGFyZFJlbG9hZFBh
Z2UgPSBmdW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRlc3QuaGFyZFJlbG9hZFBhZ2UgPSBm
dW5jdGlvbihjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vz
c29yKQogewotICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZSh0cnVlLCBjYWxsYmFj
ayk7CisgICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKHRydWUsIGNhbGxiYWNrLCBz
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCi1JbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRlc3QucmVs
b2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3Jp
cHRQcmVwcm9jZXNzb3IpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKGZh
bHNlLCBjYWxsYmFjayk7CisgICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKGZhbHNl
LCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKTsK
IH0KIAotSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlID0gZnVuY3Rpb24oaGFyZFJlbG9h
ZCwgY2FsbGJhY2spCitJbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UgPSBmdW5jdGlvbiho
YXJkUmVsb2FkLCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJv
Y2Vzc29yKQogewogICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3Bl
Y3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwogCi0gICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJu
ZXR3b3JrIikuX3Jlc2V0KCk7Ci0gICAgUGFnZUFnZW50LnJlbG9hZChoYXJkUmVsb2FkKTsKKyAg
ICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrKQorICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsuX3Jlc2V0KCk7CisgICAgUGFnZUFnZW50LnJlbG9hZChoYXJkUmVsb2Fk
LCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCiBJbnNw
ZWN0b3JUZXN0LnBhZ2VMb2FkZWQgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXBy
ZXByb2Nlc3Nvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg4ZGFmYWNkYjc0NzAwZDcwZjUx
M2Q3YTJjOGUyYTVjNWI1YTVjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACitUZXN0cyBzY3JpcHQgcHJlcHJvY2Vzc29yIChhYmlsaXR5IHRvIHBy
ZXByb2Nlc3MgYWxsIHNjcmlwdHMgdXBvbiByZWxvYWQpLgorCitEZWJ1Z2dlciB3YXMgZW5hYmxl
ZC4KK1BhZ2UgcmVsb2FkZWQuCitpbnNwZWN0b3ItdGVzdC5qcworZGVidWdnZXItdGVzdC5qcwor
ZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJv
Y2Vzc29yLmh0bWwKKworCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXBy
ZXByb2Nlc3Nvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4OWI2NjM3MGM2NTE3MDM0ZjFlNzNlZmI1ZTU4
YThlMTBkYjQ2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCkBAIC0wLDAgKzEsNjAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gbG9hZCgpCit7CisgICAgZXZhbCgiZnVuY3Rpb24gZHluYW1pYyIgKyAiU2NyaXB0MSgp
IHt9Iik7IAorICAgIGV2YWwoImZ1bmN0aW9uIGR5bmFtaWMiICsgIlNjcmlwdDIoKSB7fSIpOyAK
KyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZ1bmN0aW9uIHBy
ZXByb2Nlc3NvcihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoc2NyaXB0LmluZGV4T2YoImR5
bmFtaWMiICsgIlNjcmlwdDEiKSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gc2NyaXB0ICsg
Ii8vQCBzb3VyY2VVUkw9ZHluYW1pY1NjcmlwdDEiOworICAgICAgICBpZiAoc2NyaXB0LmluZGV4
T2YoImR5bmFtaWMiICsgIlNjcmlwdDIiKSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHcgPSBldmFsKCJ3aW5kb3ciKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2NyaXB0ICsgIi8vQCBzb3VyY2VVUkw9d2luZG93X3Nob3VsZF9ub3RfYmVfdGhlcmUi
OworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBzY3Jp
cHQgKyAiLy9AIHNvdXJjZVVSTD1keW5hbWljU2NyaXB0MiI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHNjcmlwdDsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0
LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7
CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShzdGVwMiwgdW5kZWZpbmVkLCAiKCIg
KyBwcmVwcm9jZXNzb3IgKyAiKSIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIGFjY2VwdChzY3JpcHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHZhciBzY3JpcHRzID0gSW5zcGVj
dG9yVGVzdC5xdWVyeVNjcmlwdHMoYWNjZXB0KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNjcmlwdHNbaV0uc291cmNlVVJMKSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
RGVidWdnZXJUZXN0LmJpbmQoSW5zcGVjdG9yVGVzdCkpOworICAgIH0KK30KKworPC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZCgpIj4KKzxwPgorVGVzdHMgc2NyaXB0IHBy
ZXByb2Nlc3NvciAoYWJpbGl0eSB0byBwcmVwcm9jZXNzIGFsbCBzY3JpcHRzIHVwb24gcmVsb2Fk
KS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9j
ZXNzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVj
dG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1ODk2M2IzYjA1NGZhMjc4NjVhMWJiMTEzODAxYjdhMjhmMzkyZmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVi
dWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAoYWJpbGl0eSB0byBwcmVwcm9jZXNz
IGFsbCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCitQYWdl
IHJlbG9hZGVkLgoraW5zcGVjdG9yLXRlc3QuanMKK2RlYnVnZ2VyLXRlc3QuanMKK2RlYnVnZ2Vy
LXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5o
dG1sCitkeW5hbWljU2NyaXB0MQorZHluYW1pY1NjcmlwdDIKK1BhZ2UgcmVsb2FkZWQuCitEZWJ1
Z2dlciB3YXMgZGlzYWJsZWQuCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167994</attachid>
            <date>2012-10-10 07:10:50 -0700</date>
            <delta_ts>2012-12-04 18:01:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80992-20121010180948.patch</filename>
            <type>text/plain</type>
            <size>37491</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RkY2YzZTY0N2UxY2M4
YjdhNDg3ZTBlZjFjNGQ0ZjNhOGI2YzUxYi4uMDQyZTA3MjQ5ODJkNmQxZjBkOTNhYzBiNGU4MjMw
YjUzMThmY2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEwLTAzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgd2F5IHRvIGluamVjdCAncHJlcHJvY2Vzc29yJyBzY3Jp
cHQgdGhhdCB3b3VsZCBwcm9jZXNzCisgICAgICAgIGVhY2ggSmF2YVNjcmlwdCBmaWxlIGJlZm9y
ZSBpdCBnZXRzIGludG8gdGhlIFZNIGZvciBjb21waWxhdGlvbi4gVGhhdCB3YXkgaW5zcGVjdG9y
CisgICAgICAgIGNhbiBleHBvc2UgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgYXNzZXNzaW5nIGNvZGUg
Y292ZXJhZ2Ugb3IgdHJhY2luZyBhbGwgdGhlIGNhbGxzLgorCisgICAgICAgIFByZXByb2Nlc3Nv
ciBzY3JpcHQgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGFnZW50IHdoZXJlIGl0IHdhaXRzIGZvciBy
ZWxvYWQgdG8gaGFwcGVuLgorICAgICAgICBVcG9uIHJlbG9hZCwgU2NyaXB0RGVidWdTZXJ2ZXIg
aXMgdXNpbmcgaXQgdG8gcGF0Y2ggdGhlIHNjcmlwdCBzb3VyY2VzLgorCisgICAgICAgIAorICAg
ICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nv
ci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6
CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanM6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjpT
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OlNjcmlwdFByZXByb2Nlc3Nvcjo6cHJlcHJvY2Vzc1NvdXJjZUNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcjo6flNjcmlwdFByZXBy
b2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoSW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
ZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5G
cmFtZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFn
ZURlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTEwLTEwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgU1FMUmVzdWx0U2V0LnJvd3NBZmZlY3Rl
ZCBub3QgY2xlYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmgKaW5kZXggZjI0NTI5NjRhOTA1NWU0MTQ3NGZmMDRkMjFjMDk2OTliNTBkNDIwNi4u
YWZiNjQ3MjJlNjI4ODFhODgyM2ZhMmQwN2NhMGZjZmY1YTg0M2QyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC04OSw2ICs4OSwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2
ZXI+KiA9IDApID0gMDsKIAorICAgIHZvaWQgc2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0IFN0
cmluZyYpCisgICAgeworICAgICAgICAvLyBGSVhNRSh3ZWJraXQub3JnL2IvODIyMDMpOiBJbXBs
ZW1lbnQgcHJlcHJvY2Vzc29yLgorICAgIH0KKwogICAgIGJvb2wgaXNQYXVzZWQoKSB7IHJldHVy
biBtX3BhdXNlZDsgfQogCiAgICAgdm9pZCBjb21waWxlU2NyaXB0KFNjcmlwdFN0YXRlKiwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU3RyaW5nKiBz
Y3JpcHRJZCwgU3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5kZXggNjJjY2I3MzZiNWQ2NmNkZGEwNDFjMGU4
OWE0ZWIxNDg5MmQ1M2FiYy4uN2MyMDAxMzRmNzY0NTI3MzEzYmFkY2Y4MDU1MmI0YTFlNTU1Mjc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKQEAg
LTIxMCw3ICsyMTAsNyBAQCBEZWJ1Z2dlclNjcmlwdC5zdGVwT3V0T2ZGdW5jdGlvbiA9IGZ1bmN0
aW9uKGV4ZWNTdGF0ZSkKICAgICBleGVjU3RhdGUucHJlcGFyZVN0ZXAoRGVidWcuU3RlcEFjdGlv
bi5TdGVwT3V0LCAxKTsKIH0KIAotRGVidWdnZXJTY3JpcHQuc2V0U2NyaXB0U291cmNlID0gZnVu
Y3Rpb24oc2NyaXB0SWQsIG5ld1NvdXJjZSwgcHJldmlldykKK0RlYnVnZ2VyU2NyaXB0LmxpdmVF
ZGl0U2NyaXB0U291cmNlID0gZnVuY3Rpb24oc2NyaXB0SWQsIG5ld1NvdXJjZSwgcHJldmlldykK
IHsKICAgICB2YXIgc2NyaXB0cyA9IERlYnVnLnNjcmlwdHMoKTsKICAgICB2YXIgc2NyaXB0VG9F
ZGl0ID0gbnVsbDsKQEAgLTIzNyw2ICsyMzcsMTggQEAgRGVidWdnZXJTY3JpcHQuc2V0QnJlYWtw
b2ludHNBY3RpdmF0ZWQgPSBmdW5jdGlvbihleGVjU3RhdGUsIGFyZ3MpCiAgICAgRGVidWcuZGVi
dWdnZXJGbGFncygpLmJyZWFrUG9pbnRzQWN0aXZlLnNldFZhbHVlKGFyZ3MuZW5hYmxlZCk7CiB9
CiAKK0RlYnVnZ2VyU2NyaXB0LmdldFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKGV2ZW50RGF0YSkK
K3sKKyAgICByZXR1cm4gZXZlbnREYXRhLnNjcmlwdCgpLnNvdXJjZSgpOworfQorCitEZWJ1Z2dl
clNjcmlwdC5zZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihldmVudERhdGEsIHNvdXJjZSkKK3sK
KyAgICBpZiAoZXZlbnREYXRhLnNjcmlwdCgpLmRhdGEoKSA9PT0gImluamVjdGVkLXNjcmlwdCIp
CisgICAgICAgIHJldHVybjsKKyAgICBldmVudERhdGEuc2NyaXB0KCkuc2V0U291cmNlKHNvdXJj
ZSk7Cit9CisKIERlYnVnZ2VyU2NyaXB0Ll9mcmFtZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5j
dGlvbihmcmFtZU1pcnJvciwgY2FsbGVyRnJhbWUpCiB7CiAgICAgLy8gR2V0IGZ1bmN0aW9uIG5h
bWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAKaW5kZXggZWMwYzY4ODcxNGIwNmZhYzMxNmI1ZTdmMTI3NjZhZjQwMzdmMmM1My4uNDM0NzYy
YzFlMTAzODliNGVkY2ExYTA1MmQ3ODJiMWY4MWRiYzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
CiAjaW5jbHVkZSAiRGVidWdnZXJTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiU2NvcGVkUGVyc2lzdGVudC5oIgogI2luY2x1ZGUgIlNj
cmlwdERlYnVnTGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKQEAgLTU2LDYgKzU3LDIzIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFNj
cmlwdERlYnVnU2VydmVyOjpUYXNrPiBtX3Rhc2s7CiB9OwogCitjbGFzcyBSZWN1cnNpb25TY29w
ZVN1cHByZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBSZWN1cnNpb25TY29wZVN1cHByZXNzaW9uKCkK
KyAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPmluY3JlbWVudEludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRpZgorICAg
IH0KKworICAgIH5SZWN1cnNpb25TY29wZVN1cHByZXNzaW9uKCkKKyAgICB7CisjaWZuZGVmIE5E
RUJVRworICAgICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmRlY3JlbWVudEludGVy
bmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoKTsKKyNlbmRpZgorICAgIH0KK307CisKIH0KIAogdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdKQpAQCAtNjUsMTIgKzgzLDgyIEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFNjcmlwdERl
YnVnU2VydmVyOjpjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OCiAgICAg
cmV0dXJuIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIGFyZ2MsIGFyZ3Yp
OwogfQogCitjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHRQcmVwcm9jZXNzb3IpOworcHVibGljOgorICAg
IGV4cGxpY2l0IFNjcmlwdFByZXByb2Nlc3Nvcihjb25zdCBTdHJpbmcmIHByZXByb2Nlc3NvclNj
cmlwdCkKKyAgICB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKworICAgICAgICBt
X3V0aWxpdHlDb250ZXh0LnNldCh2ODo6Q29udGV4dDo6TmV3KCkpOworICAgICAgICBpZiAobV91
dGlsaXR5Q29udGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX3V0aWxpdHlDb250ZXh0LmdldCgpKTsK
KworICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CisKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiBwcmVwcm9jZXNzb3IgPSB2ODo6U3RyaW5nOjpOZXcocHJlcHJvY2Vzc29yU2Ny
aXB0LnV0ZjgoKS5kYXRhKCksIHByZXByb2Nlc3NvclNjcmlwdC51dGY4KCkubGVuZ3RoKCkpOwor
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBp
bGUocHJlcHJvY2Vzc29yKTsKKworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIFJlY3Vyc2lvblNjb3BlU3VwcHJlc3Npb24gc3Vw
cHJlc3Npb25TY29wZTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHByZXByb2Nlc3Nv
ckZ1bmN0aW9uID0gc2NyaXB0LT5SdW4oKTsKKworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1
Z2h0KCkgfHwgIXByZXByb2Nlc3NvckZ1bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV9wcmVwcm9jZXNzb3JGdW5jdGlvbi5zZXQodjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHByZXByb2Nlc3NvckZ1bmN0aW9uKSk7CisgICAgfQorCisg
ICAgU3RyaW5nIHByZXByb2Nlc3NTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkK
KyAgICB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKworICAgICAgICBpZiAobV9w
cmVwcm9jZXNzb3JGdW5jdGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gc291cmNl
Q29kZTsKKworICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGlsaXR5Q29udGV4dC5nZXQoKSk7CisgICAgICAgIHY4
OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBzb3VyY2VDb2RlU3RyaW5nID0gdjg6OlN0cmluZzo6TmV3KHNvdXJj
ZUNvZGUudXRmOCgpLmRhdGEoKSwgc291cmNlQ29kZS51dGY4KCkubGVuZ3RoKCkpOworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBzb3VyY2VDb2RlU3RyaW5nIH07CisK
KyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgICAgICBSZWN1cnNpb25TY29wZVN1
cHByZXNzaW9uIHN1cHByZXNzaW9uU2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZXN1bHRWYWx1ZSA9IG1fcHJlcHJvY2Vzc29yRnVuY3Rpb24tPkNhbGwoY29udGV4dC0+R2xv
YmFsKCksIDEsIGFyZ3YpOworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAg
ICAgICAgICByZXR1cm4gc291cmNlQ29kZTsKKworICAgICAgICBpZiAocmVzdWx0VmFsdWUtPklz
U3RyaW5nKCkpIHsKKyAgICAgICAgICAgIHY4OjpTdHJpbmc6OlV0ZjhWYWx1ZSB1dGY4VmFsdWUo
cmVzdWx0VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoKnV0ZjhW
YWx1ZSwgdXRmOFZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBz
b3VyY2VDb2RlOworICAgIH0KKworICAgIH5TY3JpcHRQcmVwcm9jZXNzb3IoKQorICAgIHsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV91dGls
aXR5Q29udGV4dDsKKyAgICBTdHJpbmcgbV9wcmVwcm9jZXNzb3JCb2R5OworICAgIFNjb3BlZFBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiBtX3ByZXByb2Nlc3NvckZ1bmN0aW9uOworfTsKKwogU2Ny
aXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKCkKICAgICA6IG1fcGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBtX2JyZWFrcG9pbnRzQWN0
aXZhdGVkKHRydWUpCiB7CiB9CiAKK1NjcmlwdERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2
ZXIoKQoreworfQorCiBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtw
b2ludCwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcikKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBAIC0yMzUsNyArMzIzLDcgQEAgYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmUKIAogICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKICAgICB0cnlDYXRj
aC5TZXRWZXJib3NlKGZhbHNlKTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OHJlc3VsdCA9
IGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0U2NyaXB0U291cmNlIiwgMywgYXJndik7CisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBjYWxsRGVidWdnZXJNZXRob2QoImxpdmVFZGl0
U2NyaXB0U291cmNlIiwgMywgYXJndik7CiAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKSB7
CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4gbWVzc2FnZSA9IHRyeUNhdGNoLk1lc3Nh
Z2UoKTsKICAgICAgICAgaWYgKCFtZXNzYWdlLklzRW1wdHkoKSkKQEAgLTI2Miw2ICszNTAsMTMg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKiBj
YWxsRnJhbWUpCiB9CiAKIAordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJv
Y2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJvY2Vzc29yQm9keSkKK3sKKyAgICBtX3NjcmlwdFBy
ZXByb2Nlc3Nvci5jbGVhcigpOworICAgIGlmICghcHJlcHJvY2Vzc29yQm9keS5pc0VtcHR5KCkp
CisgICAgICAgIG1fc2NyaXB0UHJlcHJvY2Vzc29yID0gYWRvcHRQdHIobmV3IFNjcmlwdFByZXBy
b2Nlc3NvcihwcmVwcm9jZXNzb3JCb2R5KSk7Cit9CisKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVn
U2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CkBA
IC0zMzYsNyArNDMxLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2
ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRhaWxzJiBldmVudEQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChldmVudCAhPSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4
Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJDb21waWxlKQorICAgIGlmIChldmVudCAhPSB2
ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJD
b21waWxlICYmIGV2ZW50ICE9IHY4OjpCZWZvcmVDb21waWxlKQogICAgICAgICByZXR1cm47CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBldmVudENvbnRleHQgPSBldmVudERldGFpbHMu
R2V0RXZlbnRDb250ZXh0KCk7CkBAIC0zNDUsNyArNDQwLDIyIEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYg
ZXZlbnRECiAgICAgU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIgPSBnZXREZWJ1Z0xpc3Rl
bmVyRm9yQ29udGV4dChldmVudENvbnRleHQpOwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAg
ICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIGlmIChldmVudCA9PSB2ODo6QWZ0ZXJD
b21waWxlKSB7CisgICAgICAgIGlmIChldmVudCA9PSB2ODo6QmVmb3JlQ29tcGlsZSkgeworICAg
ICAgICAgICAgaWYgKCFtX3NjcmlwdFByZXByb2Nlc3NvcikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIE93blB0cjxTY3JpcHRQcmVwcm9jZXNzb3I+IHByZXByb2Nlc3Nv
cihtX3NjcmlwdFByZXByb2Nlc3Nvci5yZWxlYXNlKCkpOworICAgICAgICAgICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKKyAg
ICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBnZXRTY3JpcHRTb3VyY2VGdW5jdGlv
biA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCkt
PkdldCh2ODo6U3RyaW5nOjpOZXcoImdldFNjcmlwdFNvdXJjZSIpKSk7CisgICAgICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRh
KCkgfTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzY3JpcHQgPSBnZXRTY3Jp
cHRTb3VyY2VGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsK
KworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHNldFNjcmlwdFNvdXJjZUZ1
bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0U2NyaXB0U291cmNlIikpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBwYXRjaGVkU2NyaXB0ID0gcHJlcHJvY2Vzc29yLT5wcmVwcm9jZXNzU291cmNl
Q29kZSh0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2soc2NyaXB0KSk7Cisg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndjJbXSA9IHsgZXZlbnREZXRhaWxz
LkdldEV2ZW50RGF0YSgpLCB2OFN0cmluZyhwYXRjaGVkU2NyaXB0KSB9OworICAgICAgICAgICAg
c2V0U2NyaXB0U291cmNlRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMiwg
YXJndjIpOworICAgICAgICAgICAgbV9zY3JpcHRQcmVwcm9jZXNzb3IgPSBwcmVwcm9jZXNzb3Iu
cmVsZWFzZSgpOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09IHY4OjpBZnRlckNvbXBpbGUp
IHsKICAgICAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVn
OjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj4gb25BZnRlckNvbXBpbGVGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldEFmdGVyQ29t
cGlsZVNjcmlwdCIpKSk7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltd
ID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDViYzczOTIzMWQxZDhmZjgyYWE3
YWUwNGQwZmRhZDI4ODA3NGJhOWQuLmU2Y2JkYjk1ZGI2MGFlNjVhNzUwMzE5OWMwODExYjlhNTY4
MGNkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuaApAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1
bmN0aW9uc1Nvb24oKSB7IH0KICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVy
PFNjcmlwdERlYnVnU2VydmVyPiogPSAwKSB7IH0KIAorICAgIHZvaWQgc2V0U2NyaXB0UHJlcHJv
Y2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJvY2Vzc29yQm9keSk7CisKICAgICBjbGFzcyBUYXNr
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRhc2soKSB7IH0KQEAgLTEwNSw3ICsx
MDcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBTY3JpcHREZWJ1Z1NlcnZlcigpOwot
ICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQorICAgIHZpcnR1YWwgflNjcmlwdERlYnVnU2Vy
dmVyKCk7CiAgICAgCiAgICAgU2NyaXB0VmFsdWUgY3VycmVudENhbGxGcmFtZSgpOwogCkBAIC0x
MjUsMTQgKzEyNywxOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBj
YWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAKKyAgICBTdHJpbmcgcHJlcHJvY2Vzc1NvdXJj
ZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKKwogICAgIFBhdXNlT25FeGNlcHRpb25z
U3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOwogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtX3BhdXNl
ZENvbnRleHQ7Ci0KICAgICBib29sIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQ7CiAgICAgU2NvcGVk
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9icmVha1Byb2dyYW1DYWxsYmFja1Rl
bXBsYXRlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBPd25QdHI8U2NvcGVkUGVyc2lzdGVudDx2ODo6
U2NyaXB0PiA+ID4gbV9jb21waWxlZFNjcmlwdHM7CisgICAgCitwcml2YXRlOgorICAgIGNsYXNz
IFNjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBPd25QdHI8U2NyaXB0UHJlcHJvY2Vzc29yPiBtX3Nj
cmlwdFByZXByb2Nlc3NvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCmluZGV4IDNiZDJkNGU1NjcxYjljN2E1Y2UxZTUxN2JjNWM2ZjVkZjJk
YTIwMGQuLmU3NWM5NDY3NjM1ZTI3Y2IwYjcwODU0ZTY3NWNmMjUwYjMxMmEyZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkJpbmRpbmdT
dGF0ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
SG9zdC5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cu
aCIKQEAgLTk0LDExICs5NSwxOCBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdQogICAgIC8vIGlu
c3BlY3RvcidzIHN0dWZmKSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGEgZmV3IGxpbmVzIGJlbG93
IHdpdGggSW5qZWN0ZWRTY3JpcHRIb3N0IHdyYXBwZXIsCiAgICAgLy8gaW5qZWN0ZWQgc2NyaXB0
IGlkIGFuZCBleHBsaWNpdCByZWZlcmVuY2UgdG8gdGhlIGluc3BlY3RlZCBnbG9iYWwgb2JqZWN0
LiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQKICAgICAvLyB0byBjcmVhdGUgYW5kIGNvbmZpZ3Vy
ZSBJbmplY3RlZFNjcmlwdCBpbnN0YW5jZSB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgYnkgdGhl
IGluc3BlY3Rvci4KLSAgICB2ODo6TG9jYWw8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlw
dDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2UpKTsKKworICAgIHY4OjpUcnlDYXRjaCB0
cnlDYXRjaDsKKyAgICB0cnlDYXRjaC5TZXRWZXJib3NlKHRydWUpOworICAgIHY4OjpMb2NhbDx2
ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNv
dXJjZSksIDAsIDAsIHY4U3RyaW5nKCJpbmplY3RlZC1zY3JpcHQiKSk7CisKKyAgICBpZiAodHJ5
Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKwogICAg
IFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwog
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigpOwotICAgIEFTU0VSVCgh
di5Jc0VtcHR5KCkpOwotICAgIEFTU0VSVCh2LT5Jc0Z1bmN0aW9uKCkpOworICAgIGlmICh0cnlD
YXRjaC5IYXNDYXVnaHQoKSB8fCAhdi0+SXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gU2Ny
aXB0T2JqZWN0KCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnc1tdID0gewogICAg
ICAgc2NyaXB0SG9zdFdyYXBwZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KaW5kZXggMTM0NWVmYTMxMDVjZjM4YWM1ZDJiNzZhNThiMTM1YTA2MWNkMWMxMi4uODQyNzQw
OGU1ZTJkODIwZDRjZjJkODlmYmIxMjNkODA3YmMxMTc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjIzLDcgKzIyMyw4IEBACiAgICAgICAgICAgICAgICAg
Im5hbWUiOiAicmVsb2FkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpZ25vcmVDYWNoZSIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgdHJ1ZSwgYnJvd3NlciBjYWNo
ZSBpcyBpZ25vcmVkIChhcyBpZiB0aGUgdXNlciBwcmVzc2VkIFNoaWZ0K3JlZnJlc2gpLiIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzY3JpcHRUb0V2YWx1YXRlT25Mb2FkIiwg
InR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHNl
dCwgdGhlIHNjcmlwdCB3aWxsIGJlIGluamVjdGVkIGludG8gYWxsIGZyYW1lcyBvZiB0aGUgaW5z
cGVjdGVkIHBhZ2UgYWZ0ZXIgcmVsb2FkLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInNjcmlwdFRvRXZhbHVhdGVPbkxvYWQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYgc2V0LCB0aGUgc2NyaXB0IHdpbGwgYmUgaW5qZWN0
ZWQgaW50byBhbGwgZnJhbWVzIG9mIHRoZSBpbnNwZWN0ZWQgcGFnZSBhZnRlciByZWxvYWQuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdFByZXByb2Nlc3NvciIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTY3JpcHQg
Ym9keSB0aGF0IHNob3VsZCBldmFsdWF0ZSB0byBmdW5jdGlvbiB0aGF0IHdpbGwgcHJlcHJvY2Vz
cyBhbGwgdGhlIHNjcmlwdHMgYmVmb3JlIHRoZWlyIGNvbXBpbGF0aW9uLiIsICJoaWRkZW4iOiB0
cnVlIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJSZWxvYWRzIGdpdmVuIHBhZ2Ugb3B0aW9uYWxseSBpZ25vcmluZyB0aGUgY2FjaGUuIgogICAg
ICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCA2MDk1NTE5YTNiYmIzMzEwODI5YjA1ZTRhNDMxNzVmYWQyYzhhZWE4
Li43YTE5YzIzZmJjM2JiMmM0M2I5ZGQ5NDA3YTNjMzU4ZGZiYzQyYmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMzIsNyAr
MTMyLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBw
YWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQoY29u
c29sZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLSAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudFB0cihQ
YWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9z
dGF0ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fb3Zlcmxh
eS5nZXQoKSkpOworICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFn
ZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdl
dCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFn
ZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChkZWJ1Z2dlckFnZW50UHRyLnJlbGVh
c2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcAppbmRleCBhNzdjMDZmYjVkYzIwNTA5M2Q1Y2FhYWNlZTdkYzgyYTQ5Zjc0
ZWY5Li5jMTRmOWM3MmJjNmJjMWI4OWNiZTRjZTVlN2M0NjdkZDM0ZWVhZjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC0xODQsMTQgKzE4NCw2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSkKICAgICAgICAgc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpCi17Ci0gICAgbV9z
Y3JpcHRzLmNsZWFyKCk7Ci0gICAgbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2lu
dElkcy5jbGVhcigpOwotICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICBtX2Zyb250ZW5kLT5n
bG9iYWxPYmplY3RDbGVhcmVkKCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
aXNQYXVzZWQoKQogewogICAgIHJldHVybiBzY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCk7
CkBAIC03MzQsNiArNzI2LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJC
cmVha0RldGFpbHMoKQogICAgIG1fYnJlYWtBdXhEYXRhID0gMDsKIH0KIAordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpyZXNldCgpCit7CisgICAgbV9zY3JpcHRzLmNsZWFyKCk7CisgICAg
bV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5jbGVhcigpOworICAgIGlm
IChtX2Zyb250ZW5kKQorICAgICAgICBtX2Zyb250ZW5kLT5nbG9iYWxPYmplY3RDbGVhcmVkKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggZDExMThkYzQ5MzIwZTNm
ZGNkOTdiYzNkOTA0M2VmMzUzZjAzZGFjZi4uMjkzZmExNGZjY2EyY2E5ZjAzMDViNjA5YThkZDZk
ZTgyYWIyYzE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCkBAIC03Nyw3ICs3Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiAKLSAgICB2
b2lkIGRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAgICAgYm9vbCBpc1BhdXNlZCgp
OwogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSk7CiAKQEAgLTE0MSw2ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqLCBjb25zdCBT
Y3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU2NyaXB0VmFsdWUmIGV4Y2VwdGlvbik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CisgICAgdm9pZCByZXNldCgpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgZW5hYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGFiYjVkNzViOTNjNmU0NDEx
YmEzZDI5MTQxMDYxYzFmOTJmYjczNWUuLjA3YmUzNzRiMzcyMTlmOThkN2YwOGQzMDljZGU1OTcw
NzRkMTJlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlckFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFn
ZW50LmgiCiAjaW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIlNjcmlwdEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgpAQCAtMTIwLDcgKzEyMSw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGRJbXBsKEluc3RydW1lbnRpbmdBZ2VuCiAgICAgaWYgKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckFnZW50KCkpCiAgICAg
ICAgIGluc3BlY3RvckFnZW50LT5kaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoZnJhbWUsIHdv
cmxkKTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoKSkgeworICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogZGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPnBhZ2VEZWJ1Z2dlckFnZW50KCkpIHsKICAg
ICAgICAgaWYgKHBhZ2VBZ2VudCAmJiB3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSAm
JiBmcmFtZSA9PSBwYWdlQWdlbnQtPm1haW5GcmFtZSgpKQogICAgICAgICAgICAgZGVidWdnZXJB
Z2VudC0+ZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDJiOWZhM2I1
MGU5N2Y0YzM4Nzk3NzQzYjc1OTg4ZjA1YWZhNmQyYTEuLmI2MGQ1NTk5YTA5MjE5YjIwYjdmMzBm
YmQxYzdjNDAxMmY5ZTQ1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MDUsOSArNDA1LDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QKICAgICBzY3JpcHRzLT5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9u
TG9hZCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25z
dCBib29sKiBjb25zdCBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
U2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFByZXBy
b2Nlc3NvcikKIHsKICAgICBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IG9w
dGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCA/ICpvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQgOiAiIjsKKyAgICBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3IgPSBvcHRpb25hbFNj
cmlwdFByZXByb2Nlc3NvciA/ICpvcHRpb25hbFNjcmlwdFByZXByb2Nlc3NvciA6ICIiOwogICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5yZWxvYWQob3B0aW9uYWxJZ25vcmVDYWNo
ZSA/ICpvcHRpb25hbElnbm9yZUNhY2hlIDogZmFsc2UpOwogfQogCkBAIC03NzksNyArNzgwLDkg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiB7CiAgICAgaWYgKGxvYWRlci0+ZnJhbWUoKSA9PSBtX3BhZ2UtPm1haW5GcmFt
ZSgpKSB7CiAgICAgICAgIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBtX3BlbmRpbmdT
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZTsKKyAgICAgICAgbV9zY3JpcHRQcmVwcm9jZXNzb3Ig
PSBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3I7CiAgICAgICAgIG1fcGVuZGluZ1NjcmlwdFRv
RXZhbHVhdGVPbkxvYWRPbmNlID0gU3RyaW5nKCk7CisgICAgICAgIG1fcGVuZGluZ1NjcmlwdFBy
ZXByb2Nlc3NvciA9IFN0cmluZygpOwogICAgIH0KICAgICBtX2Zyb250ZW5kLT5mcmFtZU5hdmln
YXRlZChidWlsZE9iamVjdEZvckZyYW1lKGxvYWRlci0+ZnJhbWUoKSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDdiNzFiMjExZmE0
NGVlMTFlMzU2ZDdlMWEwNWVmY2RmYWVmMDRkOWYuLjcxYjM0NzU3ZmUyMzI4ZTI4NTdmZjk4Njg2
ZjgzMjhkYTQyNDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGFkZFNjcmlwdFRvRXZhbHVh
dGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgU3RyaW5nKiByZXN1
bHQpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVs
b2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpOworICAgIHZpcnR1YWwgdm9p
ZCByZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFNjcmlwdFByZXByb2Nlc3Nvcik7CiAgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRD
b29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6UGFnZTo6Q29va2llPiA+JiBjb29raWVzLCBXVEY6OlN0cmluZyogY29va2llc1N0cmluZyk7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pOwpAQCAtMTQ1LDEyICsxNDUsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiAKICAgICAvLyBDcm9zcy1h
Z2VudHMgQVBJCisgICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQogICAgIEZyYW1l
KiBtYWluRnJhbWUoKTsKICAgICBTdHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1l
KiBmcmFtZUZvcklkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgU3RyaW5nIGZyYW1lSWQo
RnJhbWUqKTsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFt
ZSogYXNzZXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBTdHJpbmcgZnJhbWVJZCk7CisgICAgU3RyaW5n
IHNjcmlwdFByZXByb2Nlc3NvcigpIHsgcmV0dXJuIG1fc2NyaXB0UHJlcHJvY2Vzc29yOyB9CiAg
ICAgc3RhdGljIERvY3VtZW50TG9hZGVyKiBhc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmlu
ZyosIEZyYW1lKik7CiAKIHByaXZhdGU6CkBAIC0xNzEsNiArMTczLDggQEAgcHJpdmF0ZToKICAg
ICBsb25nIG1fbGFzdFNjcmlwdElkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1fcGVuZGluZ1Njcmlw
dFRvRXZhbHVhdGVPbkxvYWRPbmNlOwogICAgIFN0cmluZyBtX3NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlOworICAgIFN0cmluZyBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3I7CisgICAgU3Ry
aW5nIG1fc2NyaXB0UHJlcHJvY2Vzc29yOwogICAgIEhhc2hNYXA8RnJhbWUqLCBTdHJpbmc+IG1f
ZnJhbWVUb0lkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIEZyYW1lKj4gbV9pZGVudGlm
aWVyVG9GcmFtZTsKICAgICBIYXNoTWFwPERvY3VtZW50TG9hZGVyKiwgU3RyaW5nPiBtX2xvYWRl
clRvSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0
cnVtZW50aW5nQWdlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGlu
Z0FnZW50cy5oCmluZGV4IDIzMDZlN2ExZThhMDU3MGEzMDMyNTVkNjIyNmEzN2U0NDI2YTFhZjYu
LjQ1ZjBhZWIyYWNiZmIxM2JmOGRmMDQzZDg1NzZiNjJmZjNlYjNiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtNTQsNiArNTQsNyBA
QCBjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQ7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFn
ZURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBQYWdlUnVudGltZUFnZW50OwogY2xhc3MgV29ya2VyQ29u
dGV4dDsKIApAQCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9pbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQoMCkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
ICAgICAgICAgLCBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQoMCkKKyAgICAgICAgLCBtX3BhZ2VE
ZWJ1Z2dlckFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KDAp
CiAgICAgICAgICwgbV9pbnNwZWN0b3JQcm9maWxlckFnZW50KDApCiAjZW5kaWYKQEAgLTEzOCw2
ICsxNDAsOSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogaW5zcGVjdG9y
RGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudDsg
fQogICAgIHZvaWQgc2V0SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQogCisgICAg
UGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlRGVidWdnZXJBZ2VudDsgfQorICAgIHZvaWQgc2V0UGFnZURlYnVnZ2VyQWdlbnQoUGFnZURl
YnVnZ2VyQWdlbnQqIGFnZW50KSB7IG1fcGFnZURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQorCiAg
ICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsgfQogICAgIHZvaWQg
c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBh
Z2VudCkgeyBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQogCkBAIC0xNzMs
NiArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQq
IG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDsKKyAgICBQYWdlRGVidWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2VudDsKICAg
ICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7
CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogbV9pbnNwZWN0b3JQcm9maWxlckFnZW50Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBjOTczMjNiZjFiODliOWE5ZDEwZGM4MzE1ZDkzYTJiZjI3YmUyYjJiLi4wZTBhNTUy
YzZmMGZkOWNlNTA5MWRjZGQxMWQ2NjNlNDk2N2Y1NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM2LDE5ICszNiwyMSBAQAogCiAj
aW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRz
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+
IFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBQYWdlKiBpbnNwZWN0
ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5z
cGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKK1Bhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IFBh
Z2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBQYWdlRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwg
aW5zcGVjdGVkUGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBvdmVybGF5KSk7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQYWdlRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBp
bnNwZWN0b3JTdGF0ZSwgcGFnZUFnZW50LCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIG92ZXJsYXkp
KTsKIH0KIAotUGFnZURlYnVnZ2VyQWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JT
dGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCitQYWdlRGVidWdnZXJB
Z2VudDo6UGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKKyAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQogewogfQpAQCAtNTcs
MTQgKzU5LDI2IEBAIFBhZ2VEZWJ1Z2dlckFnZW50Ojp+UGFnZURlYnVnZ2VyQWdlbnQoKQogewog
fQogCit2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nKQoreworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZShlcnJvclN0cmluZyk7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlRGVidWdnZXJBZ2VudCh0aGlzKTsK
K30KKwordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcpCit7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShlcnJvclN0cmlu
Zyk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlRGVidWdnZXJBZ2VudCgwKTsK
K30KKwogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1Nl
cnZlcigpCiB7Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5hZGRMaXN0ZW5lcih0aGlzLCBtX2lu
c3BlY3RlZFBhZ2UpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhpcywg
bV9wYWdlQWdlbnQtPnBhZ2UoKSk7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BM
aXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCiB7Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5y
ZW1vdmVMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIHNjcmlwdERlYnVnU2Vy
dmVyKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgbV9wYWdlQWdlbnQtPnBhZ2UoKSk7CiB9CiAKIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlciYgUGFnZURlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVy
KCkKQEAgLTg1LDcgKzk5LDcgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6dW5tdXRlQ29uc29s
ZSgpCiBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0
SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5t
YWluRnJhbWUoKSk7CisgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3Js
ZFNjcmlwdFN0YXRlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKSk7CiAgICAgICAgIHJldHVybiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwog
ICAgIH0KICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0
TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwpAQCAt
OTksNiArMTEzLDEyIEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBtZXNzYWdlKQogICAgIG1fb3ZlcmxheS0+c2V0
UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKK3ZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCkKK3sKKyAgICByZXNldCgpOwor
ICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc2V0U2NyaXB0UHJlcHJvY2Vzc29yKG1fcGFnZUFnZW50
LT5zY3JpcHRQcmVwcm9jZXNzb3IoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA4
MTAwNTJlYTMxN2VlNTI1ZDkwZWIwYjFjOTYyOTAxZjQ2MTI3ZjA5Li5kZTM4YWY3NDQyMWI1ZGE1
MWFmNThhODNkOGNlZjRjNTY4ZDY0MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50Owog
Y2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjsKIApAQCAtNDUsOSArNDYs
MTQgQEAgY2xhc3MgUGFnZURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZURlYnVnZ2VyQWdlbnQpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFBhZ2VEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkq
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCosIElu
amVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqKTsKICAgICB2aXJ0dWFsIH5Q
YWdlRGVidWdnZXJBZ2VudCgpOwogCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisKKyAgICB2b2lk
IGRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CkBAIC01OCw4ICs2NCw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwo
RXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKik7CiAK
LSAgICBQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3Rh
dGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOwot
ICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKKyAgICBQYWdlRGVidWdnZXJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdlbnQq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CisgICAgSW5zcGVj
dG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJs
YXk7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNGQ3MDM1MGE4Zjg3MTZiOWM0ODdhMjA0M2U5NzFmMzgzZjMzYjFk
NS4uNTQxZTU5MDExYTEwN2UxN2U3Zjg5MWE4Y2Q5NzEyOTBhOTRiNTdiMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDEyLTEwLTAzICAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIGEgd2F5IHRvIHJlbG9hZCBw
YWdlIHdpdGggZ2l2ZW4gc2NyaXB0IHByZXByb2Nlc3Nvci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwOTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmhhcmRSZWxvYWRQYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5J
bnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JU
ZXN0Lkluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nl
c3Nvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3Iv
ZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorCiAyMDEyLTEwLTEwICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEu
Y29zdGFAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFVwZGF0ZSBzb21lIHBpeGVsIGV4cGVj
dGF0aW9ucyBmb3IgdGhlIG5ldyBDYWlybywgYW5kIGFkZCBtb3JlIGJhc2VsaW5lcyBmb3Igb3Ro
ZXIgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCmluZGV4IDdkNzE0OWM2NjQ1OGI1YzYwM2U1MWI5YWVhNzQ2OTk5NzZiMTU3
NzEuLjY5ODdiOTI3NTMwM2Q0ZGU2NWQxNjNjYWQ4YmZhOWVmYWZjY2E5MTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0x
OTIsMjIgKzE5MiwyMyBAQCBJbnNwZWN0b3JUZXN0Lm5hdmlnYXRlID0gZnVuY3Rpb24odXJsLCBj
YWxsYmFjaykKICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9j
YXRpb24gPSAnIiArIHVybCArICInIik7CiB9CiAKLUluc3BlY3RvclRlc3QuaGFyZFJlbG9hZFBh
Z2UgPSBmdW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRlc3QuaGFyZFJlbG9hZFBhZ2UgPSBm
dW5jdGlvbihjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vz
c29yKQogewotICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZSh0cnVlLCBjYWxsYmFj
ayk7CisgICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKHRydWUsIGNhbGxiYWNrLCBz
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCi1JbnNwZWN0
b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRlc3QucmVs
b2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3Jp
cHRQcmVwcm9jZXNzb3IpCiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKGZh
bHNlLCBjYWxsYmFjayk7CisgICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKGZhbHNl
LCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKTsK
IH0KIAotSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlID0gZnVuY3Rpb24oaGFyZFJlbG9h
ZCwgY2FsbGJhY2spCitJbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UgPSBmdW5jdGlvbiho
YXJkUmVsb2FkLCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJv
Y2Vzc29yKQogewogICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3Bl
Y3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwogCi0gICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJu
ZXR3b3JrIikuX3Jlc2V0KCk7Ci0gICAgUGFnZUFnZW50LnJlbG9hZChoYXJkUmVsb2FkKTsKKyAg
ICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrKQorICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLm5ldHdvcmsuX3Jlc2V0KCk7CisgICAgUGFnZUFnZW50LnJlbG9hZChoYXJkUmVsb2Fk
LCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCiBJbnNw
ZWN0b3JUZXN0LnBhZ2VMb2FkZWQgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXBy
ZXByb2Nlc3Nvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUwNDQ5YmU2NWNhZmIwYjE2M2Y2
NmVjMjMwNTdiMmIzN2Q5ODg3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEzIEBACitUZXN0cyBzY3JpcHQgcHJlcHJvY2Vzc29yIChhYmlsaXR5IHRvIHBy
ZXByb2Nlc3MgYWxsIHNjcmlwdHMgdXBvbiByZWxvYWQpLgorCitEZWJ1Z2dlciB3YXMgZW5hYmxl
ZC4KK1BhZ2UgcmVsb2FkZWQuCitpbnNwZWN0b3ItdGVzdC5qcworZGVidWdnZXItdGVzdC5qcwor
ZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCitkZWJ1Z2dlci1zY3JpcHQtcHJlcHJv
Y2Vzc29yLmh0bWwKKworCitQYWdlIHJlbG9hZGVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2Ny
aXB0LXByZXByb2Nlc3Nvci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWVmNmFhNWQ1NWI4
ZGE2YTdjM2FlOTRkYTYzMDY2YTBkYjE0MjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbApA
QCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWQoKQoreworICAgIGV2YWwoImZ1bmN0aW9uIGR5bmFt
aWMiICsgIlNjcmlwdDEoKSB7fSIpOyAKKyAgICBldmFsKCJmdW5jdGlvbiBkeW5hbWljIiArICJT
Y3JpcHQyKCkge30iKTsgCisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBmdW5jdGlvbiBwcmVwcm9jZXNzb3Ioc2NyaXB0KQorICAgIHsKKyAgICAgICAgaWYgKHNj
cmlwdC5pbmRleE9mKCJkeW5hbWljIiArICJTY3JpcHQxIikgIT09IC0xKQorICAgICAgICAgICAg
cmV0dXJuIHNjcmlwdCArICIvL0Agc291cmNlVVJMPWR5bmFtaWNTY3JpcHQxIjsKKyAgICAgICAg
aWYgKHNjcmlwdC5pbmRleE9mKCJkeW5hbWljIiArICJTY3JpcHQyIikgIT09IC0xKSB7CisgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZhciB3ID0gZXZhbCgid2luZG93Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNjcmlwdCArICIvL0Agc291cmNlVVJMPUZBSUxfd2luZG93
X3Nob3VsZF9ub3RfYmVfdGhlcmUiOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBzY3JpcHQgKyAiLy9AIHNvdXJjZVVSTD1keW5hbWljU2NyaXB0MiI7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNjcmlwdDsKKyAgICB9
CisKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKKworICAgIGZ1
bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShz
dGVwMiwgdW5kZWZpbmVkLCAiKCIgKyBwcmVwcm9jZXNzb3IgKyAiKSIpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGFjY2VwdChzY3JpcHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHZhciBzY3JpcHRzID0gSW5zcGVjdG9yVGVzdC5xdWVyeVNjcmlwdHMoYWNjZXB0KTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNj
cmlwdHNbaV0uc291cmNlVVJMKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0LmJpbmQoSW5zcGVjdG9yVGVzdCkpOwor
ICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZCgpIj4K
KzxwPgorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAoYWJpbGl0eSB0byBwcmVwcm9jZXNzIGFs
bCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9j
ZXNzb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ODk2M2IzYjA1NGZhMjc4NjVhMWJiMTEz
ODAxYjdhMjhmMzkyZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nvci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgc2NyaXB0IHByZXByb2Nlc3NvciAo
YWJpbGl0eSB0byBwcmVwcm9jZXNzIGFsbCBzY3JpcHRzIHVwb24gcmVsb2FkKS4KKworRGVidWdn
ZXIgd2FzIGVuYWJsZWQuCitQYWdlIHJlbG9hZGVkLgoraW5zcGVjdG9yLXRlc3QuanMKK2RlYnVn
Z2VyLXRlc3QuanMKK2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3IuaHRtbAorZGVidWdnZXIt
c2NyaXB0LXByZXByb2Nlc3Nvci5odG1sCitkeW5hbWljU2NyaXB0MQorZHluYW1pY1NjcmlwdDIK
K1BhZ2UgcmVsb2FkZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177630</attachid>
            <date>2012-12-04 18:01:39 -0800</date>
            <delta_ts>2012-12-04 18:01:39 -0800</delta_ts>
            <desc>[Patch] rebaselined</desc>
            <filename>bug-80992-20121205055904.patch</filename>
            <type>text/plain</type>
            <size>34327</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM4ODQ3NWIyNjhhODNi
Yjc2MGJiZGVhNWU0MDVmYjQzNGI2ZTlhYi4uZjFkYzE2MjUyNGJiNzI5MmI1MzhhYzIzNzRjMjUw
NTRlNGZmNDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEwLTAzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHByb3ZpZGUgYSB3YXkgdG8gcmVsb2FkIHBhZ2Ugd2l0aCBnaXZlbiBzY3JpcHQgcHJlcHJv
Y2Vzc29yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgd2F5IHRvIGluamVjdCAncHJlcHJvY2Vzc29yJyBzY3Jp
cHQgdGhhdCB3b3VsZCBwcm9jZXNzCisgICAgICAgIGVhY2ggSmF2YVNjcmlwdCBmaWxlIGJlZm9y
ZSBpdCBnZXRzIGludG8gdGhlIFZNIGZvciBjb21waWxhdGlvbi4gVGhhdCB3YXkgaW5zcGVjdG9y
CisgICAgICAgIGNhbiBleHBvc2UgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgYXNzZXNzaW5nIGNvZGUg
Y292ZXJhZ2Ugb3IgdHJhY2luZyBhbGwgdGhlIGNhbGxzLgorCisgICAgICAgIFByZXByb2Nlc3Nv
ciBzY3JpcHQgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGFnZW50IHdoZXJlIGl0IHdhaXRzIGZvciBy
ZWxvYWQgdG8gaGFwcGVuLgorICAgICAgICBVcG9uIHJlbG9hZCwgU2NyaXB0RGVidWdTZXJ2ZXIg
aXMgdXNpbmcgaXQgdG8gcGF0Y2ggdGhlIHNjcmlwdCBzb3VyY2VzLgorCisgICAgICAgIAorICAg
ICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc2NyaXB0LXByZXByb2Nlc3Nv
ci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFByZXByb2Nlc3Nvcik6
CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanM6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0UHJlcHJvY2Vzc29yOjpT
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OlNjcmlwdFByZXByb2Nlc3Nvcjo6cHJlcHJvY2Vzc1NvdXJjZUNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdFByZXByb2Nlc3Nvcjo6flNjcmlwdFByZXBy
b2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnNldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
Y3JpcHRQcmVwcm9jZXNzb3IpOgorICAgICAgICAoSW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
ZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5G
cmFtZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFn
ZURlYnVnZ2VyQWdlbnQpOgorCiAyMDEyLTEyLTA0ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIHBhcnNlciogbWV0aG9kcyBpbiBDb250YWluZXJOb2Rl
IHNob3VsZCBub3Qgc3VwcG9ydCBEb2N1bWVudEZyYWdtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBlOTdmZDYxODg0YTkyOWRhM2U4
ZTkwZGQzYjI0OWNkMzI2MjNmMjBjLi42NGFkYzRhZTJmNDQ5N2Q4ZTQ1ZmRjOGVjZjU4YjkwYmM2
NjA5ZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmgKQEAgLTkwLDYgKzkwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zU29vbigpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
cyhUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4qID0gMCkgPSAwOwogCisgICAgdm9pZCBzZXRTY3Jp
cHRQcmVwcm9jZXNzb3IoY29uc3QgU3RyaW5nJikKKyAgICB7CisgICAgICAgIC8vIEZJWE1FKHdl
YmtpdC5vcmcvYi84MjIwMyk6IEltcGxlbWVudCBwcmVwcm9jZXNzb3IuCisgICAgfQorCiAgICAg
Ym9vbCBpc1BhdXNlZCgpIHsgcmV0dXJuIG1fcGF1c2VkOyB9CiAKICAgICB2b2lkIGNvbXBpbGVT
Y3JpcHQoU2NyaXB0U3RhdGUqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCBTdHJpbmcqIHNjcmlwdElkLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQu
anMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcwppbmRleCA2
MmNjYjczNmI1ZDY2Y2RkYTA0MWMwZTg5YTRlYjE0ODkyZDUzYWJjLi43YzIwMDEzNGY3NjQ1Mjcz
MTNiYWRjZjgwNTUyYjRhMWU1NTUyNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9EZWJ1Z2dlclNjcmlwdC5qcwpAQCAtMjEwLDcgKzIxMCw3IEBAIERlYnVnZ2VyU2NyaXB0LnN0
ZXBPdXRPZkZ1bmN0aW9uID0gZnVuY3Rpb24oZXhlY1N0YXRlKQogICAgIGV4ZWNTdGF0ZS5wcmVw
YXJlU3RlcChEZWJ1Zy5TdGVwQWN0aW9uLlN0ZXBPdXQsIDEpOwogfQogCi1EZWJ1Z2dlclNjcmlw
dC5zZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHRJZCwgbmV3U291cmNlLCBwcmV2aWV3
KQorRGVidWdnZXJTY3JpcHQubGl2ZUVkaXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHRJ
ZCwgbmV3U291cmNlLCBwcmV2aWV3KQogewogICAgIHZhciBzY3JpcHRzID0gRGVidWcuc2NyaXB0
cygpOwogICAgIHZhciBzY3JpcHRUb0VkaXQgPSBudWxsOwpAQCAtMjM3LDYgKzIzNywxOCBAQCBE
ZWJ1Z2dlclNjcmlwdC5zZXRCcmVha3BvaW50c0FjdGl2YXRlZCA9IGZ1bmN0aW9uKGV4ZWNTdGF0
ZSwgYXJncykKICAgICBEZWJ1Zy5kZWJ1Z2dlckZsYWdzKCkuYnJlYWtQb2ludHNBY3RpdmUuc2V0
VmFsdWUoYXJncy5lbmFibGVkKTsKIH0KIAorRGVidWdnZXJTY3JpcHQuZ2V0U2NyaXB0U291cmNl
ID0gZnVuY3Rpb24oZXZlbnREYXRhKQoreworICAgIHJldHVybiBldmVudERhdGEuc2NyaXB0KCku
c291cmNlKCk7Cit9CisKK0RlYnVnZ2VyU2NyaXB0LnNldFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9u
KGV2ZW50RGF0YSwgc291cmNlKQoreworICAgIGlmIChldmVudERhdGEuc2NyaXB0KCkuZGF0YSgp
ID09PSAiaW5qZWN0ZWQtc2NyaXB0IikKKyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50RGF0YS5z
Y3JpcHQoKS5zZXRTb3VyY2Uoc291cmNlKTsKK30KKwogRGVidWdnZXJTY3JpcHQuX2ZyYW1lTWly
cm9yVG9KU0NhbGxGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lTWlycm9yLCBjYWxsZXJGcmFtZSkKIHsK
ICAgICAvLyBHZXQgZnVuY3Rpb24gbmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBhZDlkOTY3ZGFjZDIyMWNlYzE5YzVkZjhm
MTAwN2Y2MjcyZDUwYWFjLi45MGY2Y2E3NzAxYTYwZTMyYWUzMjM4NWQ0ZmEwOGYxZjRhNWYzZTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJEZWJ1Z2dlclNjcmlwdFNvdXJjZS5o
IgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTY29wZWRQZXJz
aXN0ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtNTYsNiArNTcsMjMgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8U2NyaXB0RGVidWdTZXJ2ZXI6OlRhc2s+IG1fdGFzazsKIH07
CiAKK2NsYXNzIFJlY3Vyc2lvblNjb3BlU3VwcHJlc3Npb24geworcHVibGljOgorICAgIFJlY3Vy
c2lvblNjb3BlU3VwcHJlc3Npb24oKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFY4
UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+aW5jcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNp
b25MZXZlbCgpOworI2VuZGlmCisgICAgfQorCisgICAgflJlY3Vyc2lvblNjb3BlU3VwcHJlc3Np
b24oKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1
cnJlbnQoKS0+ZGVjcmVtZW50SW50ZXJuYWxTY3JpcHRSZWN1cnNpb25MZXZlbCgpOworI2VuZGlm
CisgICAgfQorfTsKKwogfQogCiB2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZl
cjo6Y2FsbERlYnVnZ2VyTWV0aG9kKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgaW50IGFyZ2Ms
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCkBAIC02NSwxMiArODMsODMgQEAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxEZWJ1Z2dlck1ldGhvZChjb25z
dCBjaGFyKiBmdW5jdGlvbk4KICAgICByZXR1cm4gZnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKSwgYXJnYywgYXJndik7CiB9CiAKK2NsYXNzIFNjcmlwdERlYnVnU2VydmVyOjpT
Y3JpcHRQcmVwcm9jZXNzb3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFByZXBy
b2Nlc3Nvcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0
IFN0cmluZyYgcHJlcHJvY2Vzc29yU2NyaXB0KQorICAgIHsKKyAgICAgICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOworCisgICAgICAgIG1fdXRpbGl0eUNvbnRleHQuc2V0KHY4OjpDb250ZXh0OjpO
ZXcoKSk7CisgICAgICAgIGlmIChtX3V0aWxpdHlDb250ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1f
dXRpbGl0eUNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsK
KworICAgICAgICBTdHJpbmcgd3JhcHBlZFNjcmlwdCA9IG1ha2VTdHJpbmcoIigiLCBwcmVwcm9j
ZXNzb3JTY3JpcHQsICIpIik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJlcHJv
Y2Vzc29yID0gdjg6OlN0cmluZzo6TmV3KHdyYXBwZWRTY3JpcHQudXRmOCgpLmRhdGEoKSwgd3Jh
cHBlZFNjcmlwdC51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpTY3Jp
cHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUocHJlcHJvY2Vzc29yKTsKKworICAgICAg
ICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IFJlY3Vyc2lvblNjb3BlU3VwcHJlc3Npb24gc3VwcHJlc3Npb25TY29wZTsKKyAgICAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHByZXByb2Nlc3NvckZ1bmN0aW9uID0gc2NyaXB0LT5SdW4oKTsK
KworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkgfHwgIXByZXByb2Nlc3NvckZ1bmN0
aW9uLT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9wcmVw
cm9jZXNzb3JGdW5jdGlvbi5zZXQodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KHByZXBy
b2Nlc3NvckZ1bmN0aW9uKSk7CisgICAgfQorCisgICAgU3RyaW5nIHByZXByb2Nlc3NTb3VyY2VD
b2RlKGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKKworICAgICAgICBpZiAobV9wcmVwcm9jZXNzb3JGdW5jdGlvbi5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZTsKKworICAgICAgICB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGls
aXR5Q29udGV4dC5nZXQoKSk7CisgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2Nv
cGUoY29udGV4dCk7CisKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzb3VyY2VDb2Rl
U3RyaW5nID0gdjg6OlN0cmluZzo6TmV3KHNvdXJjZUNvZGUudXRmOCgpLmRhdGEoKSwgc291cmNl
Q29kZS51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdID0geyBzb3VyY2VDb2RlU3RyaW5nIH07CisKKyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNh
dGNoOworICAgICAgICBSZWN1cnNpb25TY29wZVN1cHByZXNzaW9uIHN1cHByZXNzaW9uU2NvcGU7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHRWYWx1ZSA9IG1fcHJlcHJvY2Vz
c29yRnVuY3Rpb24tPkNhbGwoY29udGV4dC0+R2xvYmFsKCksIDEsIGFyZ3YpOworICAgICAgICBp
ZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZTsK
KworICAgICAgICBpZiAocmVzdWx0VmFsdWUtPklzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIHY4
OjpTdHJpbmc6OlV0ZjhWYWx1ZSB1dGY4VmFsdWUocmVzdWx0VmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoKnV0ZjhWYWx1ZSwgdXRmOFZhbHVlLmxlbmd0aCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzb3VyY2VDb2RlOworICAgIH0KKworICAgIH5T
Y3JpcHRQcmVwcm9jZXNzb3IoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2NvcGVk
UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV91dGlsaXR5Q29udGV4dDsKKyAgICBTdHJpbmcgbV9w
cmVwcm9jZXNzb3JCb2R5OworICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiBtX3By
ZXByb2Nlc3NvckZ1bmN0aW9uOworfTsKKwogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVn
U2VydmVyKCkKICAgICA6IG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2Vw
dGlvbnMpCiAgICAgLCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpCiB7CiB9CiAKK1Njcmlw
dERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCiBTdHJpbmcgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCwgaW50KiBhY3R1YWxMaW5lTnVtYmVy
LCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7
CkBAIC0yMzUsNyArMzI0LDcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0U291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmUKIAogICAgIHY4OjpU
cnlDYXRjaCB0cnlDYXRjaDsKICAgICB0cnlDYXRjaC5TZXRWZXJib3NlKGZhbHNlKTsKLSAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2OHJlc3VsdCA9IGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0U2Ny
aXB0U291cmNlIiwgMywgYXJndik7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQg
PSBjYWxsRGVidWdnZXJNZXRob2QoImxpdmVFZGl0U2NyaXB0U291cmNlIiwgMywgYXJndik7CiAg
ICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6TWVz
c2FnZT4gbWVzc2FnZSA9IHRyeUNhdGNoLk1lc3NhZ2UoKTsKICAgICAgICAgaWYgKCFtZXNzYWdl
LklzRW1wdHkoKSkKQEAgLTI2Miw2ICszNTEsMTMgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbFN0YWNrKFNjcmlwdFZhbHVlKiBjYWxsRnJhbWUpCiB9CiAKIAordm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJv
Y2Vzc29yQm9keSkKK3sKKyAgICBtX3NjcmlwdFByZXByb2Nlc3Nvci5jbGVhcigpOworICAgIGlm
ICghcHJlcHJvY2Vzc29yQm9keS5pc0VtcHR5KCkpCisgICAgICAgIG1fc2NyaXB0UHJlcHJvY2Vz
c29yID0gYWRvcHRQdHIobmV3IFNjcmlwdFByZXByb2Nlc3NvcihwcmVwcm9jZXNzb3JCb2R5KSk7
Cit9CisKIFNjcmlwdFZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkK
IHsKICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7CkBAIC0zMzYsNyArNDMyLDcgQEAgdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnRE
ZXRhaWxzJiBldmVudEQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChldmVudCAh
PSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0
ZXJDb21waWxlKQorICAgIGlmIChldmVudCAhPSB2ODo6QnJlYWsgJiYgZXZlbnQgIT0gdjg6OkV4
Y2VwdGlvbiAmJiBldmVudCAhPSB2ODo6QWZ0ZXJDb21waWxlICYmIGV2ZW50ICE9IHY4OjpCZWZv
cmVDb21waWxlKQogICAgICAgICByZXR1cm47CiAKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBldmVudENvbnRleHQgPSBldmVudERldGFpbHMuR2V0RXZlbnRDb250ZXh0KCk7CkBAIC0zNDUs
NyArNDQxLDIyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVY4RGVidWdFdmVudChj
b25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnRECiAgICAgU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIgPSBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dChldmVudENvbnRleHQp
OwogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0g
ICAgICAgIGlmIChldmVudCA9PSB2ODo6QWZ0ZXJDb21waWxlKSB7CisgICAgICAgIGlmIChldmVu
dCA9PSB2ODo6QmVmb3JlQ29tcGlsZSkgeworICAgICAgICAgICAgaWYgKCFtX3NjcmlwdFByZXBy
b2Nlc3NvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIE93blB0cjxT
Y3JpcHRQcmVwcm9jZXNzb3I+IHByZXByb2Nlc3NvcihtX3NjcmlwdFByZXByb2Nlc3Nvci5yZWxl
YXNlKCkpOworICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6
RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiBnZXRTY3JpcHRTb3VyY2VGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXcoImdldFNj
cmlwdFNvdXJjZSIpKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltd
ID0geyBldmVudERldGFpbHMuR2V0RXZlbnREYXRhKCkgfTsKKyAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzY3JpcHQgPSBnZXRTY3JpcHRTb3VyY2VGdW5jdGlvbi0+Q2FsbChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKworICAgICAgICAgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+IHNldFNjcmlwdFNvdXJjZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5j
dGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygi
c2V0U2NyaXB0U291cmNlIikpKTsKKyAgICAgICAgICAgIFN0cmluZyBwYXRjaGVkU2NyaXB0ID0g
cHJlcHJvY2Vzc29yLT5wcmVwcm9jZXNzU291cmNlQ29kZSh0b1dlYkNvcmVTdHJpbmdXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soc2NyaXB0KSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXJndjJbXSA9IHsgZXZlbnREZXRhaWxzLkdldEV2ZW50RGF0YSgpLCB2OFN0cmluZyhw
YXRjaGVkU2NyaXB0KSB9OworICAgICAgICAgICAgc2V0U2NyaXB0U291cmNlRnVuY3Rpb24tPkNh
bGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMiwgYXJndjIpOworICAgICAgICAgICAgbV9zY3Jp
cHRQcmVwcm9jZXNzb3IgPSBwcmVwcm9jZXNzb3IucmVsZWFzZSgpOworICAgICAgICB9IGVsc2Ug
aWYgKGV2ZW50ID09IHY4OjpBZnRlckNvbXBpbGUpIHsKICAgICAgICAgICAgIHY4OjpDb250ZXh0
OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7CiAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gb25BZnRlckNvbXBpbGVGdW5jdGlvbiA9
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdl
dCh2ODo6U3RyaW5nOjpOZXcoImdldEFmdGVyQ29tcGlsZVNjcmlwdCIpKSk7CiAgICAgICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBldmVudERldGFpbHMuR2V0RXZlbnRE
YXRhKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERl
YnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5oCmluZGV4IDViYzczOTIzMWQxZDhmZjgyYWE3YWUwNGQwZmRhZDI4ODA3NGJhOWQuLmU2Y2Jk
Yjk1ZGI2MGFlNjVhNzUwMzE5OWMwODExYjlhNTY4MGNkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtODYsNiArODYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKSB7IH0KICAgICB2b2lk
IHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKSB7
IH0KIAorICAgIHZvaWQgc2V0U2NyaXB0UHJlcHJvY2Vzc29yKGNvbnN0IFN0cmluZyYgcHJlcHJv
Y2Vzc29yQm9keSk7CisKICAgICBjbGFzcyBUYXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgflRhc2soKSB7IH0KQEAgLTEwNSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBTY3JpcHREZWJ1Z1NlcnZlcigpOwotICAgIH5TY3JpcHREZWJ1Z1NlcnZlcigpIHsg
fQorICAgIHZpcnR1YWwgflNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgCiAgICAgU2NyaXB0VmFs
dWUgY3VycmVudENhbGxGcmFtZSgpOwogCkBAIC0xMjUsMTQgKzEyNywxOSBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsRGVidWdnZXJNZXRob2QoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7
CiAKKyAgICBTdHJpbmcgcHJlcHJvY2Vzc1NvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlKTsKKwogICAgIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgbV9wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlOwogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9kZWJ1Z2dlclNjcmlwdDsK
ICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZXhlY3V0aW9uU3RhdGU7CiAgICAg
djg6OkxvY2FsPHY4OjpDb250ZXh0PiBtX3BhdXNlZENvbnRleHQ7Ci0KICAgICBib29sIG1fYnJl
YWtwb2ludHNBY3RpdmF0ZWQ7CiAgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbV9icmVha1Byb2dyYW1DYWxsYmFja1RlbXBsYXRlOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBPd25QdHI8U2NvcGVkUGVyc2lzdGVudDx2ODo6U2NyaXB0PiA+ID4gbV9jb21waWxlZFNjcmlw
dHM7CisgICAgCitwcml2YXRlOgorICAgIGNsYXNzIFNjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBP
d25QdHI8U2NyaXB0UHJlcHJvY2Vzc29yPiBtX3NjcmlwdFByZXByb2Nlc3NvcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDNhMGIy
OWI1MWY3MWEzMmQxMDg1YWNlMjliZjI3YWFiODhjOTA2OGUuLmRkMzc0NzM1YWYwMmJjYjk2OTMy
OTdmZGJlMDdlNTYzOWU0ODJiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIlNjcmlwdERl
YnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKQEAgLTk1LDExICs5NiwxOCBAQCBTY3Jp
cHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25z
dCBTdHJpbmcmIHNjcmlwdFNvdQogICAgIC8vIGluc3BlY3RvcidzIHN0dWZmKSB0aGUgZnVuY3Rp
b24gaXMgY2FsbGVkIGEgZmV3IGxpbmVzIGJlbG93IHdpdGggSW5qZWN0ZWRTY3JpcHRIb3N0IHdy
YXBwZXIsCiAgICAgLy8gaW5qZWN0ZWQgc2NyaXB0IGlkIGFuZCBleHBsaWNpdCByZWZlcmVuY2Ug
dG8gdGhlIGluc3BlY3RlZCBnbG9iYWwgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQK
ICAgICAvLyB0byBjcmVhdGUgYW5kIGNvbmZpZ3VyZSBJbmplY3RlZFNjcmlwdCBpbnN0YW5jZSB0
aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgYnkgdGhlIGluc3BlY3Rvci4KLSAgICB2ODo6TG9jYWw8
djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRT
b3VyY2UpKTsKKworICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICB0cnlDYXRjaC5TZXRW
ZXJib3NlKHRydWUpOworICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2Ny
aXB0OjpDb21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSksIDAsIDAsIHY4U3RyaW5nKCJpbmpl
Y3RlZC1zY3JpcHQiKSk7CisKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAg
IHJldHVybiBTY3JpcHRPYmplY3QoKTsKKwogICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1pY3JvdGFz
a1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYg
PSBzY3JpcHQtPlJ1bigpOwotICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwotICAgIEFTU0VSVCh2
LT5Jc0Z1bmN0aW9uKCkpOworICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSB8fCAhdi0+SXNG
dW5jdGlvbigpKQorICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CiAKICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJnc1tdID0gewogICAgICAgc2NyaXB0SG9zdFdyYXBwZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOGYyMmM3YWZlMTgxNmNhY2Y1
MjczZjg3NmE5NTk4ODk3MjllMjc2OS4uZDIxYjUyMGNlZjIxZjc5Njg2NzM0MDYyZGRiM2I3ZjNk
NmIxZDEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjMw
LDcgKzIzMCw4IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVsb2FkIiwKICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJp
Z25vcmVDYWNoZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiSWYgdHJ1ZSwgYnJvd3NlciBjYWNoZSBpcyBpZ25vcmVkIChhcyBpZiB0aGUgdXNl
ciBwcmVzc2VkIFNoaWZ0K3JlZnJlc2gpLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzY3JpcHRUb0V2YWx1YXRlT25Mb2FkIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklmIHNldCwgdGhlIHNjcmlwdCB3aWxsIGJlIGluamVj
dGVkIGludG8gYWxsIGZyYW1lcyBvZiB0aGUgaW5zcGVjdGVkIHBhZ2UgYWZ0ZXIgcmVsb2FkLiIg
fQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmlwdFRvRXZhbHVhdGVPbkxvYWQi
LCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiSWYg
c2V0LCB0aGUgc2NyaXB0IHdpbGwgYmUgaW5qZWN0ZWQgaW50byBhbGwgZnJhbWVzIG9mIHRoZSBp
bnNwZWN0ZWQgcGFnZSBhZnRlciByZWxvYWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInNjcmlwdFByZXByb2Nlc3NvciIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTY3JpcHQgYm9keSB0aGF0IHNob3VsZCBldmFsdWF0ZSB0
byBmdW5jdGlvbiB0aGF0IHdpbGwgcHJlcHJvY2VzcyBhbGwgdGhlIHNjcmlwdHMgYmVmb3JlIHRo
ZWlyIGNvbXBpbGF0aW9uLiIsICJoaWRkZW4iOiB0cnVlIH0KICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZWxvYWRzIGdpdmVuIHBhZ2Ugb3B0aW9u
YWxseSBpZ25vcmluZyB0aGUgY2FjaGUuIgogICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjNmYyNjNkYzdm
N2EyODliMjQ5ZTBlOGUwNDdhNWY1OGVhZDNjYzc4Li5kMDM4ODZiNGFiNmMyY2FmZjA3OGVkZTRh
ZTdlYzE2MjQyYWEzMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQoY29uc29sZUFnZW50UHRyLnJlbGVhc2UoKSk7CiAK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBPd25QdHI8SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudD4gZGVidWdnZXJBZ2VudFB0cihQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fb3ZlcmxheS5nZXQoKSkpOworICAgIE93blB0cjxJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50PiBkZWJ1Z2dlckFnZW50UHRyKFBhZ2VEZWJ1Z2dlckFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdl
bnQsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX292ZXJsYXkuZ2V0KCkpKTsKICAg
ICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChkZWJ1Z2dlckFnZW50UHRyLnJlbGVhc2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlNjUzMTUw
MDBlYTEwOTM4NDA3N2Y3MWY1ODM4OGMzYTQxMWZmNDcyLi45Y2Y4ZDAxY2JjNmYyYmY1OGIxZjgw
OWVmYTVhZjBjMDgxOWEyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xODYsMTQgKzE4Niw2IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBi
b29sIGFjdGl2ZSkKICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5kZWFjdGl2YXRlQnJlYWtw
b2ludHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5G
cmFtZVdpbmRvd09iamVjdCgpCi17Ci0gICAgbV9zY3JpcHRzLmNsZWFyKCk7Ci0gICAgbV9icmVh
a3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5jbGVhcigpOwotICAgIGlmIChtX2Zy
b250ZW5kKQotICAgICAgICBtX2Zyb250ZW5kLT5nbG9iYWxPYmplY3RDbGVhcmVkKCk7Ci19Ci0K
IGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aXNQYXVzZWQoKQogewogICAgIHJldHVybiBz
Y3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCk7CkBAIC03NTksNiArNzUxLDE0IEBAIHZvaWQg
U2NyaXB0RGVidWdMaXN0ZW5lcjo6U2NyaXB0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplCiAgICAgaW5mby5hZGRNZW1iZXIoc291cmNlTWFwcGluZ1VSTCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzZXQoKQoreworICAgIG1fc2Ny
aXB0cy5jbGVhcigpOworICAgIG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJ
ZHMuY2xlYXIoKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9mcm9udGVuZC0+Z2xv
YmFsT2JqZWN0Q2xlYXJlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDgxYmNlZWRlYzY5OWY3NzEyY2VkYmJmNDBkOTY5ZGEyOTYwMDEyYmIuLmM0ZmJmYTRhNzBk
ODZiMzY0ZjBkZWUzYTkxMmY1ODljMmFmMzcxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNzcsNyArNzcsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzdG9yZSgpOwogCi0gICAgdm9pZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOwog
ICAgIGJvb2wgaXNQYXVzZWQoKTsKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUpOwogCkBAIC0xNDQsNiArMTQzLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNj
cmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFNjcmlwdFZh
bHVlJiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOworICAgIHZv
aWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRl
eCA2ZjZhOWFiNmVmMjFjNjFiMGE3YjA2MGIyNjhhZjkzODMyYzA2Njk2Li4xMWFlM2Y3MGRmNTIy
OGFmNDEyMmRjMTdlNWExYjYyMjRkNTFhMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNjAsNiArNjAsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JXb3JrZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNs
dWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKQEAgLTEyMCw3ICsxMjEsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbgogICAgIGlmIChJ
bnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JBZ2VudCgpKQogICAgICAgICBpbnNwZWN0b3JBZ2VudC0+ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKGZyYW1lLCB3b3JsZCk7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKKyAgICBpZiAoUGFnZURl
YnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5wYWdlRGVi
dWdnZXJBZ2VudCgpKSB7CiAgICAgICAgIGlmIChwYWdlQWdlbnQgJiYgd29ybGQgPT0gbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkgJiYgZnJhbWUgPT0gcGFnZUFnZW50LT5tYWluRnJhbWUoKSkKICAg
ICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAwNGE1NDVlMjBhNmJiYmM0MTljM2UzZDEwNmFlYTJkYzNlMDIzNWVkLi40YjMw
NmY3N2FmZmZkNGI4YWY1Yzc0OTUxMjY2MGE2NDBhYmQyYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNDM1LDkgKzQzNSwxMCBA
QCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0CiAgICAgc2NyaXB0cy0+cmVtb3ZlKGlkZW50aWZpZXIp
OwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nKiwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2Fk
KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IpCiB7CiAgICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQgPyAqb3B0aW9u
YWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDogIiI7CisgICAgbV9wZW5kaW5nU2NyaXB0UHJlcHJv
Y2Vzc29yID0gb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IgPyAqb3B0aW9uYWxTY3JpcHRQcmVw
cm9jZXNzb3IgOiAiIjsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+cmVsb2Fk
KG9wdGlvbmFsSWdub3JlQ2FjaGUgPyAqb3B0aW9uYWxJZ25vcmVDYWNoZSA6IGZhbHNlKTsKIH0K
IApAQCAtODI1LDcgKzgyNiw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmln
YXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmIChsb2FkZXItPmZyYW1lKCkg
PT0gbV9wYWdlLT5tYWluRnJhbWUoKSkgewogICAgICAgICBtX3NjcmlwdFRvRXZhbHVhdGVPbkxv
YWRPbmNlID0gbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CisgICAgICAgIG1f
c2NyaXB0UHJlcHJvY2Vzc29yID0gbV9wZW5kaW5nU2NyaXB0UHJlcHJvY2Vzc29yOwogICAgICAg
ICBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZSA9IFN0cmluZygpOworICAgICAg
ICBtX3BlbmRpbmdTY3JpcHRQcmVwcm9jZXNzb3IgPSBTdHJpbmcoKTsKICAgICB9CiAgICAgbV9m
cm9udGVuZC0+ZnJhbWVOYXZpZ2F0ZWQoYnVpbGRPYmplY3RGb3JGcmFtZShsb2FkZXItPmZyYW1l
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aAppbmRleCA1ZDQ2OGExNWJjMzcwNGQwYzY2ZDA5MmIzZDIxMzgwZjA2MGE1NDhjLi45M2ZlZDBl
MWZlYWVlMmE5ZWMxMWMwMWJhY2Y4MWM1Nzk3OGI1MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9p
ZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIG9wdGlvbmFs
SWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0
aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVP
bkxvYWQsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRQcmVwcm9jZXNzb3IpOwogICAgIHZp
cnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4gPiYgY29va2llcywgV1RGOjpTdHJp
bmcqIGNvb2tpZXNTdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKTsK
QEAgLTE1MywxMiArMTUzLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYlZpZXdSZXNpemVkKGNv
bnN0IEludFNpemUmKTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKKyAgICBQYWdlKiBwYWdl
KCkgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgRnJhbWUqIG1haW5GcmFtZSgpOwogICAgIFN0cmlu
ZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJhbWUqIGZyYW1lRm9ySWQoY29uc3QgU3RyaW5n
JiBmcmFtZUlkKTsKICAgICBTdHJpbmcgZnJhbWVJZChGcmFtZSopOwogICAgIFN0cmluZyBsb2Fk
ZXJJZChEb2N1bWVudExvYWRlciopOwogICAgIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmlu
ZyosIFN0cmluZyBmcmFtZUlkKTsKKyAgICBTdHJpbmcgc2NyaXB0UHJlcHJvY2Vzc29yKCkgeyBy
ZXR1cm4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7IH0KICAgICBzdGF0aWMgRG9jdW1lbnRMb2FkZXIq
IGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJhbWUqKTsKIAogcHJpdmF0ZToK
QEAgLTE4Miw2ICsxODQsOCBAQCBwcml2YXRlOgogICAgIGxvbmcgbV9sYXN0U2NyaXB0SWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CiAg
ICAgU3RyaW5nIG1fc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CisgICAgU3RyaW5nIG1fcGVu
ZGluZ1NjcmlwdFByZXByb2Nlc3NvcjsKKyAgICBTdHJpbmcgbV9zY3JpcHRQcmVwcm9jZXNzb3I7
CiAgICAgSGFzaE1hcDxGcmFtZSosIFN0cmluZz4gbV9mcmFtZVRvSWRlbnRpZmllcjsKICAgICBI
YXNoTWFwPFN0cmluZywgRnJhbWUqPiBtX2lkZW50aWZpZXJUb0ZyYW1lOwogICAgIEhhc2hNYXA8
RG9jdW1lbnRMb2FkZXIqLCBTdHJpbmc+IG1fbG9hZGVyVG9JZGVudGlmaWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjEx
NmY5NDMxM2MyYjI4N2JlYjc4ZWU5ZDcyZTE3YjQ1Zi4uZTQ5MzQxMDMyMDM5YTllZDU4OWMyMTY4
NDFmZTFlNDE1NmJjYzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEluc3BlY3RvclJlc291cmNl
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yV29y
a2VyQWdlbnQ7CiBjbGFzcyBQYWdlOworY2xhc3MgUGFnZURlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBQ
YWdlUnVudGltZUFnZW50OwogY2xhc3MgV29ya2VyQ29udGV4dDsKIGNsYXNzIFdvcmtlclJ1bnRp
bWVBZ2VudDsKQEAgLTgxLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KDApCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CiAgICAgICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KDApCisgICAgICAgICwgbV9wYWdl
RGVidWdnZXJBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgw
KQogICAgICAgICAsIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgwKQogI2VuZGlmCkBAIC0xMzgs
NiArMTQwLDkgQEAgcHVibGljOgogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQ7
IH0KICAgICB2b2lkIHNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KIAorICAg
IFBhZ2VEZWJ1Z2dlckFnZW50KiBwYWdlRGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZURlYnVnZ2VyQWdlbnQ7IH0KKyAgICB2b2lkIHNldFBhZ2VEZWJ1Z2dlckFnZW50KFBhZ2VE
ZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX3BhZ2VEZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KKwog
ICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7IH0KICAgICB2b2lk
IHNldEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCog
YWdlbnQpIHsgbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KIApAQCAtMTcz
LDYgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KiBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2luc3BlY3RvckRlYnVn
Z2VyQWdlbnQ7CisgICAgUGFnZURlYnVnZ2VyQWdlbnQqIG1fcGFnZURlYnVnZ2VyQWdlbnQ7CiAg
ICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OwogICAgIEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggYzk3MzIzYmYxYjg5YjlhOWQxMGRjODMxNWQ5M2EyYmYyN2JlMmIyYi4uMGUwYTU1
MmM2ZjBmZDljZTUwOTFkY2RkMTFkNjYzZTQ5NjdmNTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNiwxOSArMzYsMjEgQEAKIAog
I2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50
PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVj
dGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIElu
c3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCitQYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQ
YWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUGFnZURlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUs
IGluc3BlY3RlZFBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlciwgb3ZlcmxheSkpOworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgUGFnZURlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywg
aW5zcGVjdG9yU3RhdGUsIHBhZ2VBZ2VudCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBvdmVybGF5
KSk7CiB9CiAKLVBhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9y
U3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQorUGFnZURlYnVnZ2Vy
QWdlbnQ6OlBhZ2VEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yRGVidWdnZXJB
Z2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQotICAgICwgbV9pbnNwZWN0ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCisgICAgLCBtX3Bh
Z2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKIHsKIH0KQEAgLTU3
LDE0ICs1OSwyNiBAQCBQYWdlRGVidWdnZXJBZ2VudDo6flBhZ2VEZWJ1Z2dlckFnZW50KCkKIHsK
IH0KIAordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZykKK3sKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoZXJyb3JTdHJpbmcp
OworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZURlYnVnZ2VyQWdlbnQodGhpcyk7
Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nKQoreworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoZXJyb3JTdHJp
bmcpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZURlYnVnZ2VyQWdlbnQoMCk7
Cit9CisKIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdT
ZXJ2ZXIoKQogewotICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhpcywgbV9p
bnNwZWN0ZWRQYWdlKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMs
IG1fcGFnZUFnZW50LT5wYWdlKCkpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzdG9w
TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQogewotICAgIHNjcmlwdERlYnVnU2VydmVyKCku
cmVtb3ZlTGlzdGVuZXIodGhpcywgbV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBzY3JpcHREZWJ1Z1Nl
cnZlcigpLnJlbW92ZUxpc3RlbmVyKHRoaXMsIG1fcGFnZUFnZW50LT5wYWdlKCkpOwogfQogCiBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXImIFBhZ2VEZWJ1Z2dlckFnZW50OjpzY3JpcHREZWJ1Z1NlcnZl
cigpCkBAIC04NSw3ICs5OSw3IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnVubXV0ZUNvbnNv
bGUoKQogSW5qZWN0ZWRTY3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4
dElkKQogewogICAgIGlmICghZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKG1faW5zcGVjdGVkUGFnZS0+
bWFpbkZyYW1lKCkpOworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29y
bGRTY3JpcHRTdGF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpOwogICAgICAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsK
ICAgICB9CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9uQ29udGV4dElkKTsKQEAg
LTk5LDYgKzExMywxMiBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2Fn
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogbWVzc2FnZSkKICAgICBtX292ZXJsYXktPnNl
dFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKG1lc3NhZ2UpOwogfQogCit2b2lkIFBhZ2VEZWJ1Z2dl
ckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpCit7CisgICAgcmVzZXQoKTsK
KyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFNjcmlwdFByZXByb2Nlc3NvcihtX3BhZ2VBZ2Vu
dC0+c2NyaXB0UHJlcHJvY2Vzc29yKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXgg
ODEwMDUyZWEzMTdlZTUyNWQ5MGViMGIxYzk2MjkwMWY0NjEyN2YwOS4uZGUzOGFmNzQ0MjFiNWRh
NTFhZjU4YTgzZDhjZWY0YzU2OGQ2NDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7CiAKQEAgLTQ1LDkgKzQ2
LDE0IEBAIGNsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxQYWdlRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0
b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5
Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZURlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+
UGFnZURlYnVnZ2VyQWdlbnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOworCisgICAgdm9p
ZCBkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOworCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpOwpAQCAtNTgsOCArNjQsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyopOwog
Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0
YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkqKTsK
LSAgICBQYWdlKiBjb25zdCBtX2luc3BlY3RlZFBhZ2U7CisgICAgUGFnZURlYnVnZ2VyQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yUGFnZUFnZW50
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVy
bGF5OwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDliNjE3YmQ1MDA5MzNlNzY5NGM3ZTMzOTcxZmE3ODdmNjI5YTRj
YjAuLmZjZjRhYjJkMTY3OTRlNzBmMTVjNjE1MzAxZjdlZTk1N2RmNzQ4ZGYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMi0xMC0wMyAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBhIHdheSB0byByZWxvYWQg
cGFnZSB3aXRoIGdpdmVuIHNjcmlwdCBwcmVwcm9jZXNzb3IuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDk5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9y
VGVzdC5oYXJkUmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3Qu
SW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdC5JbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9kZWJ1Z2dlci1zY3JpcHQtcHJlcHJvY2Vzc29yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9j
ZXNzb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
L2RlYnVnZ2VyL2RlYnVnZ2VyLXNjcmlwdC1wcmVwcm9jZXNzb3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKwogMjAxMi0xMi0wNCAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIC0gYWRkIG1pc3NpbmcganMtdGVzdC1wcmUu
anMgaW5jbHVkZSB0byBhdm9pZCB1c2UtaHJlZi11cGRhdGUtY3Jhc2guc3ZnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDdk
NzE0OWM2NjQ1OGI1YzYwM2U1MWI5YWVhNzQ2OTk5NzZiMTU3NzEuLjY5ODdiOTI3NTMwM2Q0ZGU2
NWQxNjNjYWQ4YmZhOWVmYWZjY2E5MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0xOTIsMjIgKzE5MiwyMyBAQCBJbnNw
ZWN0b3JUZXN0Lm5hdmlnYXRlID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9jYXRpb24gPSAnIiArIHVybCArICIn
Iik7CiB9CiAKLUluc3BlY3RvclRlc3QuaGFyZFJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFj
aykKK0luc3BlY3RvclRlc3QuaGFyZFJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaywgc2Ny
aXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKQogewotICAgIEluc3BlY3Rv
clRlc3QuX2lubmVyUmVsb2FkUGFnZSh0cnVlLCBjYWxsYmFjayk7CisgICAgSW5zcGVjdG9yVGVz
dC5faW5uZXJSZWxvYWRQYWdlKHRydWUsIGNhbGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
LCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCi1JbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBm
dW5jdGlvbihjYWxsYmFjaykKK0luc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGNh
bGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpCiB7Ci0g
ICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKGZhbHNlLCBjYWxsYmFjayk7CisgICAg
SW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKGZhbHNlLCBjYWxsYmFjaywgc2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKTsKIH0KIAotSW5zcGVjdG9yVGVzdC5f
aW5uZXJSZWxvYWRQYWdlID0gZnVuY3Rpb24oaGFyZFJlbG9hZCwgY2FsbGJhY2spCitJbnNwZWN0
b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UgPSBmdW5jdGlvbihoYXJkUmVsb2FkLCBjYWxsYmFjaywg
c2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKQogewogICAgIEluc3Bl
Y3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2Fs
bGJhY2spOwogCi0gICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikuX3Jlc2V0KCk7Ci0g
ICAgUGFnZUFnZW50LnJlbG9hZChoYXJkUmVsb2FkKTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrKQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX3Jlc2V0
KCk7CisgICAgUGFnZUFnZW50LnJlbG9hZChoYXJkUmVsb2FkLCBzY3JpcHRUb0V2YWx1YXRlT25M
b2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwogfQogCiBJbnNwZWN0b3JUZXN0LnBhZ2VMb2FkZWQg
PSBmdW5jdGlvbigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>