<?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>89107</bug_id>
          
          <creation_ts>2012-06-14 09:17:07 -0700</creation_ts>
          <short_desc>Web Inspector: Extract InjectedScriptBase class from the InjectedScript</short_desc>
          <delta_ts>2012-06-19 16:46:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>88973</blocked>
    
    <blocked>89530</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>eustas.bug</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>649220</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 09:17:07 -0700</bug_when>
    <thetext>Extract methods from the InjectedScript that do not depend on the concrete InjectedScriptSource.js implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649224</commentid>
    <comment_count>1</comment_count>
      <attachid>147599</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 09:22:22 -0700</bug_when>
    <thetext>Created attachment 147599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649227</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 09:26:39 -0700</bug_when>
    <thetext>Attachment 147599 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptBase.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:90:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650092</commentid>
    <comment_count>3</comment_count>
      <attachid>147599</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-15 05:17:59 -0700</bug_when>
    <thetext>Comment on attachment 147599
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650093</commentid>
    <comment_count>4</comment_count>
      <attachid>147599</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-15 05:22:17 -0700</bug_when>
    <thetext>Comment on attachment 147599
Patch

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

&gt; Source/WebCore/inspector/InjectedScript.cpp:53
&gt; +    : InjectedScriptBase()

This looks redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650102</commentid>
    <comment_count>5</comment_count>
      <attachid>147599</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-15 05:51:38 -0700</bug_when>
    <thetext>Comment on attachment 147599
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScript.cpp:53
&gt;&gt; +    : InjectedScriptBase()
&gt; 
&gt; This looks redundant.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650103</commentid>
    <comment_count>6</comment_count>
      <attachid>147795</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-15 05:51:57 -0700</bug_when>
    <thetext>Created attachment 147795
Patch to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650107</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-15 05:55:10 -0700</bug_when>
    <thetext>Attachment 147795 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptBase.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:90:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650109</commentid>
    <comment_count>8</comment_count>
      <attachid>147795</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-15 06:02:05 -0700</bug_when>
    <thetext>Comment on attachment 147795
Patch to land

It is not clear where this is going. Do you have a complete proof of concept implementation of what you are targeting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651752</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 14:45:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 147795 [details])
&gt; It is not clear where this is going. Do you have a complete proof of concept implementation of what you are targeting?

So, we will have one InjectedScript coupled with the InjectedScriptManager and InjectedScriptSource.js, but support injecting different modules (such as WebGL injected script) into it. This way we will hide module implementation details from those classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651759</commentid>
    <comment_count>10</comment_count>
      <attachid>148175</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 14:52:59 -0700</bug_when>
    <thetext>Created attachment 148175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651797</commentid>
    <comment_count>11</comment_count>
      <attachid>148175</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-18 15:19:47 -0700</bug_when>
    <thetext>Comment on attachment 148175
Patch

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

&gt; Source/WebCore/inspector/InjectedScript.cpp:260
&gt; +    ScriptValue resultValue = callFunctionWithEvalEnabled(function, hadException);
&gt; +    ASSERT(!hadException);
&gt; +
&gt; +    if (hadException || resultValue.hasNoValue() || !resultValue.isObject())
&gt; +        return ScriptObject();

So we ASSERT() if we had exception, but do not assert if we return invalid/unexpected result. Is that right?

&gt; Source/WebCore/inspector/InjectedScriptSource.js:423
&gt; +        return (this._modules[name] = eval(&quot;(&quot; + source + &quot;)&quot;));

please split that into assignment and return, e.g. 
var module = eval(...);
this._modules[name] = module;
return module;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651806</commentid>
    <comment_count>12</comment_count>
      <attachid>148175</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 15:29:52 -0700</bug_when>
    <thetext>Comment on attachment 148175
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScript.cpp:260
&gt;&gt; +        return ScriptObject();
&gt; 
&gt; So we ASSERT() if we had exception, but do not assert if we return invalid/unexpected result. Is that right?

Done. Added those to the ASSERT

&gt;&gt; Source/WebCore/inspector/InjectedScriptSource.js:423
&gt;&gt; +        return (this._modules[name] = eval(&quot;(&quot; + source + &quot;)&quot;));
&gt; 
&gt; please split that into assignment and return, e.g. 
&gt; var module = eval(...);
&gt; this._modules[name] = module;
&gt; return module;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651810</commentid>
    <comment_count>13</comment_count>
      <attachid>148187</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 15:31:40 -0700</bug_when>
    <thetext>Created attachment 148187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651836</commentid>
    <comment_count>14</comment_count>
      <attachid>148187</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-18 15:57:36 -0700</bug_when>
    <thetext>Comment on attachment 148187
Patch

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

&gt; Source/WebCore/inspector/InjectedScript.cpp:276
&gt; +    ASSERT(!hadException &amp;&amp; !resultValue.hasNoValue() &amp;&amp; resultValue.isObject());
&gt; +
&gt; +    if (hadException || resultValue.hasNoValue() || !resultValue.isObject())

The relationship between the assert and the conditional below is obscured by the inverted condition. This would better go as
 if (hadException || resultValue.hasNoValue() || !resultValue.isObject()) {
     ASSERT_NOT_REACHED();
     return ScriptObject();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651843</commentid>
    <comment_count>15</comment_count>
      <attachid>148187</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 16:03:21 -0700</bug_when>
    <thetext>Comment on attachment 148187
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScript.cpp:276
&gt;&gt; +    if (hadException || resultValue.hasNoValue() || !resultValue.isObject())
&gt; 
&gt; The relationship between the assert and the conditional below is obscured by the inverted condition. This would better go as
&gt;  if (hadException || resultValue.hasNoValue() || !resultValue.isObject()) {
&gt;      ASSERT_NOT_REACHED();
&gt;      return ScriptObject();
&gt; }

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651845</commentid>
    <comment_count>16</comment_count>
      <attachid>148196</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 16:03:57 -0700</bug_when>
    <thetext>Created attachment 148196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651848</commentid>
    <comment_count>17</comment_count>
      <attachid>148196</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-18 16:05:53 -0700</bug_when>
    <thetext>Comment on attachment 148196
Patch

LGTM. Pavel?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652021</commentid>
    <comment_count>18</comment_count>
      <attachid>148243</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-18 21:42:50 -0700</bug_when>
    <thetext>Created attachment 148243
=Another API proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652031</commentid>
    <comment_count>19</comment_count>
      <attachid>148243</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-18 22:09:23 -0700</bug_when>
    <thetext>Comment on attachment 148243
=Another API proposal

Attachment 148243 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12979359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652233</commentid>
    <comment_count>20</comment_count>
      <attachid>148243</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-19 01:58:19 -0700</bug_when>
    <thetext>Comment on attachment 148243
=Another API proposal

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

&gt; Source/WebCore/inspector/InjectedScript.h:107
&gt; +      virtual void visitArguments(ScriptCallArgumentHandler&amp;) = 0;

This API looks awkward to me, why not have just callModuleFunction(moduleName, functionName, arguments) method on InjectedScript? Can you describe what kind of modules do you need? Are they going to have some fixed API like InjectedScript or they may some random objects with a set of methods? Will they need to access injected script structures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652235</commentid>
    <comment_count>21</comment_count>
      <attachid>148196</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-19 01:59:28 -0700</bug_when>
    <thetext>Comment on attachment 148196
Patch

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

&gt; Source/WebCore/inspector/InjectedScript.h:103
&gt; +    ScriptObject getModule(const String&amp; name);

moduleForName ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652415</commentid>
    <comment_count>22</comment_count>
      <attachid>148243</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-19 07:13:57 -0700</bug_when>
    <thetext>Comment on attachment 148243
=Another API proposal

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

&gt;&gt; Source/WebCore/inspector/InjectedScript.h:107
&gt;&gt; +      virtual void visitArguments(ScriptCallArgumentHandler&amp;) = 0;
&gt; 
&gt; This API looks awkward to me, why not have just callModuleFunction(moduleName, functionName, arguments) method on InjectedScript? Can you describe what kind of modules do you need? Are they going to have some fixed API like InjectedScript or they may some random objects with a set of methods? Will they need to access injected script structures?

What type would arguments have in the callModuleFunction(moduleName, functionName, arguments)?
Module is an abstract thing with a random set of methods that would accept a random set of arguments.
Probably some modules will need an access to InjectedScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652685</commentid>
    <comment_count>23</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-19 12:27:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 147795 [details])
&gt; It is not clear where this is going. Do you have a complete proof of concept implementation of what you are targeting?

So, we discussed the API with Pavel and came back to this patch.

The idea is to add a new InjectedModule abstract class that will inherit InjectedScriptBase to reuse implementation, and which javascript code will be injected via InjectedScript&apos;s addModule. This is to be implemented next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652690</commentid>
    <comment_count>24</comment_count>
      <attachid>148392</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-19 12:42:15 -0700</bug_when>
    <thetext>Created attachment 148392
Removed irrelevant files and rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652694</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 12:46:43 -0700</bug_when>
    <thetext>Attachment 148392 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptBase.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:90:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652718</commentid>
    <comment_count>26</comment_count>
      <attachid>148392</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-19 13:13:01 -0700</bug_when>
    <thetext>Comment on attachment 148392
Removed irrelevant files and rebased.

Attachment 148392 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12992021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652753</commentid>
    <comment_count>27</comment_count>
      <attachid>148392</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-19 13:46:09 -0700</bug_when>
    <thetext>Comment on attachment 148392
Removed irrelevant files and rebased.

Attachment 148392 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12981516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652756</commentid>
    <comment_count>28</comment_count>
      <attachid>148392</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-19 13:46:25 -0700</bug_when>
    <thetext>Comment on attachment 148392
Removed irrelevant files and rebased.

Attachment 148392 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12974822</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652784</commentid>
    <comment_count>29</comment_count>
      <attachid>148392</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-19 14:04:50 -0700</bug_when>
    <thetext>Comment on attachment 148392
Removed irrelevant files and rebased.

Looks good, please make sure it is rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652791</commentid>
    <comment_count>30</comment_count>
      <attachid>148417</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-19 14:09:17 -0700</bug_when>
    <thetext>Created attachment 148417
Rebased patch to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652793</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 14:12:05 -0700</bug_when>
    <thetext>Attachment 148417 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptBase.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:90:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652911</commentid>
    <comment_count>32</comment_count>
      <attachid>148448</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-19 15:56:19 -0700</bug_when>
    <thetext>Created attachment 148448
Rebased again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652916</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 16:01:18 -0700</bug_when>
    <thetext>Attachment 148448 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptBase.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:90:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652937</commentid>
    <comment_count>34</comment_count>
      <attachid>148448</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-19 16:21:23 -0700</bug_when>
    <thetext>Comment on attachment 148448
Rebased again.

Clearing flags on attachment: 148448

Committed r120769: &lt;http://trac.webkit.org/changeset/120769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652938</commentid>
    <comment_count>35</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-19 16:21:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147599</attachid>
            <date>2012-06-14 09:22:22 -0700</date>
            <delta_ts>2012-06-15 05:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89107-20120614202220.patch</filename>
            <type>text/plain</type>
            <size>39865</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyNzU4NTg2MTkxMTBl
Yjc1ZGE0NGUyODUxYWI0YjM3YmQzNGY4Zi4uZGFjZjVkZTRlYjA5ZjIxZThjZDQ4OTAzYWJmZjVl
MDc0NjJlZjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgSW5qZWN0ZWRTY3JpcHRCYXNlIGNsYXNzIGZyb20gdGhlIEluamVjdGVkU2Ny
aXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEw
NworCisgICAgICAgIEV4dHJhY3QgbWV0aG9kcyBmcm9tIHRoZSBJbmplY3RlZFNjcmlwdCB0aGF0
IGRvIG5vdCBkZXBlbmQgb24KKyAgICAgICAgdGhlIGNvbmNyZXRlIEluamVjdGVkU2NyaXB0U291
cmNlLmpzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oOgorICAgICAgICAoU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6OlNjcmlwdFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRPYmplY3Q6
OlNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY3JpcHRPYmplY3QuaDoKKyAgICAgICAgKFNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRPYmplY3Q6On5TY3JpcHRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6SW5q
ZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25Pbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6ZmluZE9iamVjdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omlu
c3BlY3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2Jq
ZWN0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1Njcmlw
dFZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNj
cmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dEJhc2U6Om1ha2VDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6
bWFrZUV2YWxDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjp+SW5qZWN0ZWRTY3JpcHRCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6aGFzTm9WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OnNjcmlwdFN0YXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorCiAyMDEyLTA2LTE0ICBFZGFlbmEgU2Fs
aW5hcyBKYXNzbyAgPGVkYWVuYUBhcHBsZS5jb20+CiAKICAgICAgICAgZWwuZ2V0QXR0cmlidXRl
KCd0eXBlJykgcmV0dXJucyAnbnVsbCcgd2hlbiBzZXR0aW5nIGVsLnR5cGUgdG8gbnVsbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBlMWFjM2Y4ZmU3OGZjODVjMGM0ZDE1YzA4OTc2YjVkYjJkMTUy
YmFjLi5jNjViMGFhYTE2N2VmNGE3N2RiNWUwMjM1M2M1YjNiNjMxNzIxY2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtOTMwLDYgKzkzMCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0Zh
Y3RvcnkuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorICAgIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDU0ZjkxZmMwNzk1NTUxMzE3ZDdhN2I1NGU1MGI0YjQ1MThjZTEzYWIuLjA1NGQzYWU2ZWY1NDky
Y2NlYWUxMWY3NWQ0YjJkM2FlYWNhNmE3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMjY1Miw2ICsyNjUyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFz
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCAxNGY3ZWQxODBhNzEyYmU1MDQ4OGFjODVjNjFjNmNlNDI2ZDdkMzg0Li41YWRkYWI5
YTczNGUwZWZhZmY2NjhjMjI3NmQwNmE4NmJiMzdjNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg5MSw2
ICs4OTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAgXAorICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAgXApAQCAtMjAzNyw2ICsyMDM4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVj
dG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3Rv
cnkuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAorICAgIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5o
IFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YTQ1MGQ3NjM0NGMxNjYz
NjgyZWFkNzYxNDk4ZmYwYWI5ZTM4NmFlLi5kOTljZjg4NjZhMWQ0ZWMzY2YwNDliNDhlOTlkMDM1
NmYzN2M4YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzYxLDYgKzI3NjEsOCBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMTdhZTBkZjUxNjY2NjFlYWMzYTFiNzBhYzJiM2Y3
Zjg0NjAyMjdlNS4uNWQxY2YwM2UwZDlkOTU5ZjI2MTVmMjJmMTU3ZGJlOWJjMjNlZDdjOSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczMjc1
LDYgKzczMjc1LDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdEJhc2UuY3BwIgorCQkJCT4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3Jp
cHRCYXNlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdEhvc3QuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2MWE3ODVhNWY0YzJhZjBjOGE0YjEzMTk4ODg0ZjQwN2YxN2Q2YTMx
Li5mZDJlNDczYWViOTIwYWY4NWQ3OGU3NjZhNjA2NjM1ZjU4YTg3MGQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDU3LDYg
KzQ0NTcsOCBAQAogCQlBQTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEw
OTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBQTRDM0E3NjBCMkIxNjc5
MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBNEMzQTc0MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1l
bnQuY3BwICovOyB9OwogCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3
NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi87IH07CisJCUFBQjYwNTRFMTU4
NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFCNjA1NEExNTg3NEM1ODAwN0I1MDMxIC8q
IEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi87IH07CisJCUFBQjYwNTRGMTU4NzRDNTgwMDdCNTAz
MSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlw
dEJhc2UuaCAqLzsgfTsKIAkJQUFENzY2RUIxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3Rvcldl
YkdMQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuY3BwICov
OyB9OwogCQlBQUQ3NjZFQzE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RTkx
NTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCAqLzsgfTsKIAkJQUFENzY2
RUQxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1bWVudGF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFQTE1N0U1
MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKQEAg
LTExNDU1LDYgKzExNDU3LDggQEAKIAkJQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxl
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBOTAzMEZFMTU3RTE2QTAwMDI3NjI0
NyAvKiBJbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5qczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5MTI3NTAxNTdFMzVBNTAwNDU0RTU0IC8qIEluamVjdGVk
V2ViR0xTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5q
ZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
QUI2MDU0QTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJ
bmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5q
ZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU4
MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvcldlYkdMQWdlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yV2ViR0xBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JXZWJHTEFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkVBMTU3
RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEluc3RydW1lbnRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJHTEluc3RydW1lbnRhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQzODAsNiArMTQzODQsOCBAQAogCQkJ
CTU5MTNBMjQwMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuaCAqLywKIAkJ
CQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovLAogCQkJ
CUYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovLAorCQkJCUFB
QjYwNTRBMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICovLAorCQkJ
CUFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLywKIAkJ
CQk3QTBFNzZGNjEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLywK
IAkJCQk3QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8s
CiAJCQkJN0EwRTc2RjgxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5pZGwg
Ki8sCkBAIC0yMzI4NSw2ICsyMzI5MSw3IEBACiAJCQkJMzE2RkUxMTgwRTZFMURBNzAwQkY2MDg4
IC8qIEltcGxpY2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQjIzQzJDQzBBNTA4
RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQUFCNjA1NEYxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc2RkExMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjMxNjM5NkMxMzI5NDgxQTAwQTY0OUNC
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTUw
QTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQxNyw2
ICsyNjQyNCw3IEBACiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5p
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAv
KiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzY0NEFGRjEx
MTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QUFCNjA1NEUxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QTBFNzZGOTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzMTYzOTZCMTMyOTQ4MUEwMEE2NDlDQiAvKiBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY1RTYwQTE1
NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDFmY2Q5Y2I4MDI2MzQ5MDk3
YWE2MmMyZDgxOTUwZTIwMmYxMzQxNWEuLjBjZmI4MmI2ZTcwMTExYWIzNmYxOTg2ZGY2MDZkOGJj
MjViZTBmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNw
cApAQCAtNTAsNiArNTAsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBKU09iamVjdCogb2JqZWN0KQogewogfQogCitTY3JpcHRPYmplY3Q6
OlNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0YXRlLT5nbG9iYWxEYXRh
KCksIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3Rh
dGUpCit7Cit9CisKIHN0YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUpCiB7CiAgICAgaWYgKCFzY3JpcHRTdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmluZGV4IGViMDJlOWI3YWQ1OTA5
NWQ0YmY0MWU2ZTI3NWIyNzFiMzc5YTU0Y2MuLjJjMWFlNGQzMzNkNGY1ZTM1M2VhNjQ2NTA4ZjQ5
YmQ0Y2U5Y2E3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5o
CkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRP
YmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NyaXB0
T2JqZWN0KFNjcmlwdFN0YXRlKiwgSlNDOjpKU09iamVjdCopOwotICAgICAgICBTY3JpcHRPYmpl
Y3QoKSB7fQorICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCBjb25zdCBTY3JpcHRW
YWx1ZSYpOworICAgICAgICBTY3JpcHRPYmplY3QoKSB7IH0KICAgICAgICAgSlNDOjpKU09iamVj
dCoganNPYmplY3QoKSBjb25zdCB7IHJldHVybiBhc09iamVjdChqc1ZhbHVlKCkpOyB9CiAgICAg
ICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3Rh
dGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggMTU3
M2E0OTA2MmQxYjQxZGJkNjgxMWU4ZTA3MGJlMmYyZjljNTIyMC4uODlkYWEzOWMzMjRhODJjM2Vm
Zjc4MTNiNTFjN2YwZGM2ZGY5NzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRWYWx1ZS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQog
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
QEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2Ny
aXB0VmFsdWUgewogcHVibGljOgogICAgIFNjcmlwdFZhbHVlKCkgeyB9Ci0gICAgU2NyaXB0VmFs
dWUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkgOiBt
X3ZhbHVlKGdsb2JhbERhdGEsIHZhbHVlKSB7fQotICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCkg
e30KKyAgICBTY3JpcHRWYWx1ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUoZ2xvYmFsRGF0YSwgdmFsdWUpIHsgfQorICAgIHZpcnR1
YWwgflNjcmlwdFZhbHVlKCkgeyB9CiAKICAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KICAgICBib29sIGdldFN0cmluZyhTY3JpcHRTdGF0
ZSosIFN0cmluZyYgcmVzdWx0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRPYmplY3QuY3BwCmluZGV4IDNkMzhhOWVlY2VmOTAwNGY0YTZmNmU1M2VhMDcyYjBmOGUy
MmZiODYuLjAyNjZkZjQ4ZTlkYmU2MDAzNmYyMzAyYWYzYzNmODA4ZjhlNzMyOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIg
QEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2IKIHsKIH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRP
YmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0
VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRWYWx1ZSkKKyAgICAsIG1fc2NyaXB0U3Rh
dGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBTY3JpcHRPYmpl
Y3Q6OnY4T2JqZWN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQodjhWYWx1ZSgpLT5Jc09iamVjdCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKaW5kZXggNDU0MWFi
MDg4MzMzYTliMzRjMjIxODcwMWZhYTc4YjhmMzVjYmViOC4uMWM0N2E2MGMwZjNlN2VlODg5Zjk5
NjBmM2JkYTEwZjFhMWM4MjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRWYWx1ZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAg
ICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKICAg
ICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsgfTsKLSAgICAgICAgdmly
dHVhbCB+U2NyaXB0T2JqZWN0KCkge30KKyAgICAgICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkg
eyB9CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHY4T2JqZWN0KCkgY29uc3Q7CiAg
ICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
U3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmlu
ZGV4IDJmMGU2MTc4NDQyNjc2MDAzMmVkYjdhOGY1MjAwYmNmMDhhNGQ5YzcuLjMwN2MwYTI5ZWVj
MmVkZjI5NDUxZDMzY2RjZTQxYzA3NGQ3ZmYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsMTUgKzM0LDEyIEBACiAKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5oIgogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIK
KyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogdXNpbmcgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkFycmF5OwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU7CkBAIC01MywxOSArNTAsMTggQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKLSAgICA6IG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
aygwKQorICAgIDogSW5qZWN0ZWRTY3JpcHRCYXNlKCkKIHsKIH0KIAogSW5qZWN0ZWRTY3JpcHQ6
OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykKLSAgICA6IG1faW5qZWN0ZWRTY3JpcHRP
YmplY3QoaW5qZWN0ZWRTY3JpcHRPYmplY3QpCi0gICAgLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2soYWNjZXNzQ2hlY2spCisgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoaW5qZWN0ZWRTY3Jp
cHRPYmplY3QsIGFjY2Vzc0NoZWNrKQogewogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJv
b2wgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwg
ImV2YWx1YXRlIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4
cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzUs
NyArNzEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbgogCiB2b2lkIEluamVjdGVkU2NyaXB0
OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVu
dHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93
bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9i
amVjdCwgImNhbGxGdW5jdGlvbk9uIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rpb25PbiIpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChl
eHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChhcmd1bWVudHMpOwpAQCAt
ODUsNyArODEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZQogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVj
dD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewot
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAi
ZXZhbHVhdGVPbkNhbGxGcmFtZSIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGNhbGxGcmFtZUlkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9u
KTsKQEAgLTk3LDcgKzkzLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFYKIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0
KQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRGdW5jdGlvbkRldGFpbHMiKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IHJlc3VsdFZhbHVlOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUp
OwpAQCAtMTExLDcgKzEwNyw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0
YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEFycmF5PFByb3Bl
cnR5RGVzY3JpcHRvcj4gPiogcHJvcGVydGllcykKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdldFByb3BlcnRpZXMiKTsKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFBy
b3BlcnRpZXMiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob3duUHJvcGVydGllcyk7CiAKQEAgLTEyOSw3ICsxMjUs
NyBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQpCiAgICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2lu
ZG93KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJub2RlRm9yT2JqZWN0SWQiKTsKKyAgICBTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIm5vZGVGb3JP
YmplY3RJZCIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAg
IGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CkBAIC0xNDEsNyArMTM3LDcgQEAgTm9kZSogSW5q
ZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogCiB2
b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
CiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJyZWxlYXNlT2JqZWN0Iik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0Iik7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0
OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAgLTE1MSwxMiArMTQ3LDEyIEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkKIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2Fs
bEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhh
c05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3QsICJ3cmFwQ2FsbEZyYW1lcyIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcENhbGxGcmFtZXMiKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwogICAgIFNjcmlwdFZhbHVlIGNhbGxGcmFtZXNWYWx1ZSA9IGNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhh
ZEV4Y2VwdGlvbik7Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJh
bWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0
YXRlKCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1Zh
bHVlLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUoKSk7CiAgICAgaWYgKHJlc3VsdC0+dHlw
ZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlQXJyYXkpCiAgICAgICAgIHJldHVybiBBcnJheTxD
YWxsRnJhbWU+OjpydW50aW1lQ2FzdChyZXN1bHQpOwogICAgIHJldHVybiBBcnJheTxDYWxsRnJh
bWU+OjpjcmVhdGUoKTsKQEAgLTE2Niw3ICsxNjIsNyBAQCBQYXNzUmVmUHRyPEFycmF5PENhbGxG
cmFtZT4gPiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUm
CiBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVk
U2NyaXB0Ojp3cmFwT2JqZWN0KFNjcmlwdFZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIHdyYXBGdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAid3JhcE9iamVj
dCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgIndyYXBPYmplY3QiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
dmFsdWUpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAg
IHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7
CkBAIC0xNzUsNyArMTcxLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdChTY3JpcHQKICAgICBpZiAoaGFk
RXhjZXB0aW9uKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlw
dE9iamVjdC5zY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUoKSktPmFz
T2JqZWN0KCk7CiAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6
OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CiB9CiAKQEAgLTE4NiwxNCArMTgyLDE0IEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6
OndyYXBOb2RlKE5vZGUqIG5vCiAKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBTZXJpYWxpemVkT2JqZWN0KFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSkgY29uc3QKIHsKLSAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS0+ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3IobV9pbmplY3RlZFNjcmlwdE9iamVj
dC5zY3JpcHRTdGF0ZSgpKTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS0+ZGVzZXJpYWxpemVGb3JJbnNwZWN0b3Ioc2NyaXB0U3RhdGUoKSk7CiAg
ICAgcmV0dXJuIHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSA/IDAgOiB3cmFwT2JqZWN0KHNjcmlw
dFZhbHVlLCBncm91cE5hbWUpOwogfQogCiBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6Zmlu
ZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHsKICAgICBBU1NFUlQo
IWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0
ZWRTY3JpcHRPYmplY3QsICJmaW5kT2JqZWN0QnlJZCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQiKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOwpAQCAtMjA1LDcgKzIwMSw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2Ny
aXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogdm9pZCBJ
bmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIWhh
c05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3QsICJpbnNwZWN0Tm9kZSIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5zcGVjdE5vZGUiKTsKICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChub2RlQXNTY3JpcHRWYWx1ZShub2RlKSk7CiAgICAgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwpA
QCAtMjE0LDkwICsyMTAsMTYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUoTm9k
ZSogbm9kZSkKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qs
ICJyZWxlYXNlT2JqZWN0R3JvdXAiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiKTsKICAg
ICByZWxlYXNlRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKHJl
bGVhc2VGdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7
CiB9CiAKLWJvb2wgSW5qZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhtX2luamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwotfQotCi1TY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdDo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVu
Y3Rpb24sIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKLXsKLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21TY3JpcHRTdGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIkluamVj
dGVkU2NyaXB0IiwgMSk7Ci0KLSAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtX2luamVj
dGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7Ci0gICAgYm9vbCBldmFsSXNEaXNhYmxlZCA9
IGZhbHNlOwotICAgIGlmIChzY3JpcHRTdGF0ZSkgewotICAgICAgICBldmFsSXNEaXNhYmxlZCA9
ICFldmFsRW5hYmxlZChzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIC8vIFRlbXBvcmFyaWx5IGVuYWJs
ZSBhbGxvdyBldmFscyBmb3IgaW5zcGVjdG9yLgotICAgICAgICBpZiAoZXZhbElzRGlzYWJsZWQp
Ci0gICAgICAgICAgICBzZXRFdmFsRW5hYmxlZChzY3JpcHRTdGF0ZSwgdHJ1ZSk7Ci0gICAgfQot
Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlv
bik7Ci0KLSAgICBpZiAoZXZhbElzRGlzYWJsZWQpCi0gICAgICAgIHNldEV2YWxFbmFibGVkKHNj
cmlwdFN0YXRlLCBmYWxzZSk7Ci0KLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bGxGdW5jdGlvbihjb29raWUpOwotICAgIHJldHVybiByZXN1bHRWYWx1ZTsKLX0KLQotdm9pZCBJ
bmplY3RlZFNjcmlwdDo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIGlmIChoYXNOb1ZhbHVlKCkgfHwg
IWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKSB7Ci0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3JWYWx1ZTo6bnVsbCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKLQotICAgIEFTU0VS
VCghaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoIWhhZEV4Y2VwdGlvbikgewotICAgICAgICAqcmVz
dWx0ID0gcmVzdWx0VmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0
LnNjcmlwdFN0YXRlKCkpOwotICAgICAgICBpZiAoISpyZXN1bHQpCi0gICAgICAgICAgICAqcmVz
dWx0ID0gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIk9iamVjdCBoYXMg
dG9vIGxvbmcgcmVmZXJlbmNlIGNoYWluKG11c3Qgbm90IGJlIGxvbmdlciB0aGFuICVkKSIsIElu
c3BlY3RvclZhbHVlOjptYXhEZXB0aCkpOwotICAgIH0gZWxzZQotICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoIkV4Y2VwdGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiIp
OwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0OjptYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
cmVzdWx0OwotICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKLSAgICBpZiAoIXJlc3Vs
dCkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1
ZSBpcyBlbXB0eSI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdC0+dHlw
ZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nKSB7Ci0gICAgICAgIHJlc3VsdC0+YXNT
dHJpbmcoZXJyb3JTdHJpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdFBhaXIgPSByZXN1bHQtPmFzT2JqZWN0KCk7Ci0gICAgaWYg
KCFyZXN1bHRQYWlyKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjog
cmVzdWx0IGlzIG5vdCBhbiBPYmplY3QiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iaiA9IHJlc3VsdFBhaXItPmdldE9iamVjdCgi
cmVzdWx0Iik7Ci0gICAgYm9vbCB3YXNUaHJvd25WYWwgPSBmYWxzZTsKLSAgICBpZiAoIXJlc3Vs
dE9iaiB8fCAhcmVzdWx0UGFpci0+Z2V0Qm9vbGVhbigid2FzVGhyb3duIiwgJndhc1Rocm93blZh
bCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMg
bm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgICpvYmplY3RSZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0OjpydW50aW1lQ2FzdChyZXN1bHRPYmopOwotICAgICp3YXNUaHJvd24gPSB3YXNUaHJv
d25WYWw7Ci19Ci0KIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0Ojpub2RlQXNTY3JpcHRWYWx1
ZShOb2RlKiBub2RlKQogewotICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1Nj
cmlwdFZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSwgbm9kZSk7Cisg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUoc2NyaXB0U3Rh
dGUoKSwgbm9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggOGM2NzM2ZDkzODgwNjU5Yzk1N2Q0OGRk
ZjdjYjg4NjYxYWM2NTAyMC4uMjcxYmFlMjEzOGUyODNjODczYjdlYWFkMTAyNjMyZWUzOGVmNGVl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMx
LDYgKzMxLDcgQEAKICNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRfaAogI2RlZmluZSBJbmplY3RlZFNj
cmlwdF9oCiAKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgog
I2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgpAQCAtNDEsMjMgKzQyLDE2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7Ci1jbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTY3JpcHRGdW5j
dGlvbkNhbGw7Ci0KLXR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOworY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotY2xhc3MgSW5qZWN0ZWRT
Y3JpcHQgeworY2xhc3MgSW5qZWN0ZWRTY3JpcHQgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNl
IHsKIHB1YmxpYzoKICAgICBJbmplY3RlZFNjcmlwdCgpOwogICAgIH5JbmplY3RlZFNjcmlwdCgp
IHsgfQogCi0gICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNj
cmlwdE9iamVjdC5oYXNOb1ZhbHVlKCk7IH0KLQogICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJp
bmcqLAogICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwKQEAgLTk3LDIxICs5MSwxMiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGluc3BlY3ROb2RlKE5vZGUqKTsKICAgICB2b2lkIHJlbGVh
c2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmKTsKLSAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7
IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihTY3JpcHRTdGF0ZSopOwotICAgIHR5cGVkZWYgYm9v
bCAoKkluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0
ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKIAotICAg
IGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7Ci0gICAgU2NyaXB0VmFsdWUg
Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhh
ZEV4Y2VwdGlvbikgY29uc3Q7Ci0gICAgdm9pZCBtYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwm
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxs
KEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bik7CiAgICAgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSop
OwotCi0gICAgU2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7Ci0gICAgSW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjayBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2s7CiB9OwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2U4NzhhYjE3NGRhYmI3YWNkMGY0ZmFiYjRjOWJjNzk3ZDVkYWMzNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgorCisjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRGdW5j
dGlvbkNhbGwuaCIKKwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbmplY3RlZFNjcmlwdEJhc2U6Oklu
amVjdGVkU2NyaXB0QmFzZSgpCisgICAgOiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soMCkK
K3sKK30KKworSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UoU2NyaXB0T2Jq
ZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIGFjY2Vz
c0NoZWNrKQorICAgIDogbV9pbmplY3RlZFNjcmlwdE9iamVjdChpbmplY3RlZFNjcmlwdE9iamVj
dCkKKyAgICAsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhhY2Nlc3NDaGVjaykKK3sKK30K
KworYm9vbCBJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhtX2luamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOworfQorCitjb25zdCBTY3JpcHRPYmplY3QmIElu
amVjdGVkU2NyaXB0QmFzZTo6aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0OworfQorCitTY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdEJhc2U6OmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwm
IGZ1bmN0aW9uLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0Cit7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRGcm9tU2NyaXB0U3RhdGUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICJJ
bmplY3RlZFNjcmlwdCIsIDEpOworCisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpOworICAgIGJvb2wgZXZhbElzRGlzYWJs
ZWQgPSBmYWxzZTsKKyAgICBpZiAoc2NyaXB0U3RhdGUpIHsKKyAgICAgICAgZXZhbElzRGlzYWJs
ZWQgPSAhZXZhbEVuYWJsZWQoc2NyaXB0U3RhdGUpOworICAgICAgICAvLyBUZW1wb3JhcmlseSBl
bmFibGUgYWxsb3cgZXZhbHMgZm9yIGluc3BlY3Rvci4KKyAgICAgICAgaWYgKGV2YWxJc0Rpc2Fi
bGVkKQorICAgICAgICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0U3RhdGUsIHRydWUpOworICAg
IH0KKworICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gZnVuY3Rpb24uY2FsbChoYWRFeGNl
cHRpb24pOworCisgICAgaWYgKGV2YWxJc0Rpc2FibGVkKQorICAgICAgICBzZXRFdmFsRW5hYmxl
ZChzY3JpcHRTdGF0ZSwgZmFsc2UpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDYWxsRnVuY3Rpb24oY29va2llKTsKKyAgICByZXR1cm4gcmVzdWx0VmFsdWU7Cit9CisKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0
aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgaWYgKGhhc05vVmFs
dWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpIHsKKyAgICAgICAgKnJlc3VsdCA9
IEluc3BlY3RvclZhbHVlOjpudWxsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBi
b29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0g
Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworCisg
ICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOworICAgIGlmICghaGFkRXhjZXB0aW9uKSB7CisgICAg
ICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3Jp
cHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CisgICAgICAgIGlmICghKnJlc3VsdCkKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZvcm1hdCgiT2Jq
ZWN0IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4obXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4g
JWQpIiwgSW5zcGVjdG9yVmFsdWU6Om1heERlcHRoKSk7CisgICAgfSBlbHNlCisgICAgICAgICpy
ZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBh
IGNhbGwuIik7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3VsdCwgVHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcmVzdWx0OworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6
IHJlc3VsdCB2YWx1ZSBpcyBlbXB0eSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KHJlc3VsdC0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nKSB7CisgICAgICAg
IHJlc3VsdC0+YXNTdHJpbmcoZXJyb3JTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdFBhaXIgPSByZXN1bHQtPmFzT2JqZWN0
KCk7CisgICAgaWYgKCFyZXN1bHRQYWlyKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRl
cm5hbCBlcnJvcjogcmVzdWx0IGlzIG5vdCBhbiBPYmplY3QiOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iaiA9IHJlc3VsdFBhaXIt
PmdldE9iamVjdCgicmVzdWx0Iik7CisgICAgYm9vbCB3YXNUaHJvd25WYWwgPSBmYWxzZTsKKyAg
ICBpZiAoIXJlc3VsdE9iaiB8fCAhcmVzdWx0UGFpci0+Z2V0Qm9vbGVhbigid2FzVGhyb3duIiwg
Jndhc1Rocm93blZhbCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgICpvYmplY3RSZXN1bHQgPSBUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1lQ2FzdChyZXN1bHRPYmopOworICAgICp3YXNUaHJv
d24gPSB3YXNUaHJvd25WYWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhkNTQ1ZWY5MmZiMzc2ZDMxY2UyODI3ZDZiMWEw
NzJhOGYyN2E5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZFNjcmlw
dEJhc2VfaAorI2RlZmluZSBJbmplY3RlZFNjcmlwdEJhc2VfaAorCisjaW5jbHVkZSAiSW5zcGVj
dG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK2NsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsK
KwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
CitjbGFzcyBJbmplY3RlZFNjcmlwdEJhc2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluamVj
dGVkU2NyaXB0QmFzZSgpIHsgfQorCisgICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5oYXNOb1ZhbHVlKCk7IH0KKyAgICBTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNj
cmlwdFN0YXRlKCk7IH0KKworcHJvdGVjdGVkOgorICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2spKFNjcmlwdFN0YXRlKik7CisgICAgSW5qZWN0ZWRTY3JpcHRCYXNl
KCk7CisgICAgSW5qZWN0ZWRTY3JpcHRCYXNlKFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayk7CisKKyAgICBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNvbnN0
OworICAgIGNvbnN0IFNjcmlwdE9iamVjdCYgaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSBjb25zdDsK
KyAgICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rp
b25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdDsKKyAgICB2b2lkIG1ha2VDYWxsKFNj
cmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAg
dm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKworcHJpdmF0ZToKKyAgICBTY3JpcHRP
YmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKKyAgICBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKK307CisKKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggYmU5MmExM2ZjN2IzY2Q4NTYxMzYzOGU2MTg4Nzdj
ODJmYjJjMzlhYy4uMjZiYmEyYWVjOWY5ZDliMGVkZDZhODk1ZTg4MjdjNGVlZjA4ZDc0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRE9NUGF0Y2hTdXBwb3J0LmNwcCIKICNpbmNsdWRlICJJ
ZGVudGlmaWVyc0ZhY3RvcnkuY3BwIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmNwcCIKKyNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuY3BwIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
SG9zdC5jcHAiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JBZ2VudC5jcHAiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147795</attachid>
            <date>2012-06-15 05:51:57 -0700</date>
            <delta_ts>2012-06-19 12:42:11 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>bug-89107-20120615165155.patch</filename>
            <type>text/plain</type>
            <size>39795</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc3ZDQ1MjQ0OTNkZDYz
OGU2M2E1MjFlZDU0NTQ4MWU1Njg3MjE4Yy4uNWVhNzFlY2Q4NDIwZmNmY2UyMDY0YTRhMmExZGJj
YWVjZWUzZGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgSW5qZWN0ZWRTY3JpcHRCYXNlIGNsYXNzIGZyb20gdGhlIEluamVjdGVkU2Ny
aXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEw
NworCisgICAgICAgIEV4dHJhY3QgbWV0aG9kcyBmcm9tIHRoZSBJbmplY3RlZFNjcmlwdCB0aGF0
IGRvIG5vdCBkZXBlbmQgb24KKyAgICAgICAgdGhlIGNvbmNyZXRlIEluamVjdGVkU2NyaXB0U291
cmNlLmpzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9i
amVjdC5oOgorICAgICAgICAoU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6OlNjcmlwdFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjp+U2NyaXB0VmFsdWUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRPYmplY3Q6
OlNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY3JpcHRPYmplY3QuaDoKKyAgICAgICAgKFNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRPYmplY3Q6On5TY3JpcHRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6SW5q
ZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25Pbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0Ojp3cmFwT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
Ojp3cmFwU2VyaWFsaXplZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6ZmluZE9iamVjdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Omlu
c3BlY3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2Jq
ZWN0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1Njcmlw
dFZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNjcmlwdEJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNj
cmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dEJhc2U6Om1ha2VDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6
bWFrZUV2YWxDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjp+SW5qZWN0ZWRTY3JpcHRCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6aGFzTm9WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OnNjcmlwdFN0YXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorCiAyMDEyLTA2LTE0ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTEwMzQwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMjczYzBmZDU2MDE1Yjk1OTYzYmZi
NDgzODlhMDNiMmM3NWJkYmFkLi5kODM0ZTI0Y2U4Y2E3NzIzNTI0NzdjNmQ3NGFiZjNlNjYxMjM4
NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTMwLDYgKzkzMCw3IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAogICAgIGluc3BlY3Rv
ci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCiAgICAgaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDRhNDVjN2YwMzQwMDEyYWIzNjFlMDNiY2JhOTQyNjc0MmVjNTYwNzAu
LmU4MTVlNGE3NjFiZDAzNTk2NGUyZTJkZmZlOWUzNzMzMzE2YjU4YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMjY1Miw2ICsyNjUyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQppbmRleCAxNGY3ZWQxODBhNzEyYmU1MDQ4OGFjODVjNjFjNmNlNDI2
ZDdkMzg0Li41YWRkYWI5YTczNGUwZWZhZmY2NjhjMjI3NmQwNmE4NmJiMzdjNWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKQEAgLTg5MSw2ICs4OTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAg
XAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXAorICAgIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgXApAQCAtMjAzNyw2ICsyMDM4LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9J
ZGVudGlmaWVyc0ZhY3RvcnkuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAor
ICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBcCiAgICAgaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5
Y2I2YzdkNDM2ZDNhZDQ3MmY0YTY2OTk5NDhlMmI0MDIwMzdlNTMzLi5kZWZhNzE2MTBkMjNkYTcw
ZjY4MWM5NjY0ZjYwOTRmNmE5NDNlYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzYxLDYgKzI3
NjEsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRCYXNlLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMTdhZTBkZjUxNjY2NjFl
YWMzYTFiNzBhYzJiM2Y3Zjg0NjAyMjdlNS4uNWQxY2YwM2UwZDlkOTU5ZjI2MTVmMjJmMTU3ZGJl
OWJjMjNlZDdjOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTczMjc1LDYgKzczMjc1LDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdEJhc2UuY3Bw
IgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdEhvc3QuY3BwIgogCQkJ
CT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYzM2NjZkNWE1YzVjNzg4MjMxMjczZjdh
OTQ5ZGU5MDVmNDlmY2EyLi43OWZiOTE0YTZiZDQzYzBjOWViZTc1NWRlNTg2ZmU4YmNmMWUzZjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NDU3LDYgKzQ0NTcsOCBAQAogCQlBQTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMgLyog
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFs
dWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
QTRDM0E3NjBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNEMzQTc0MEIyQjE2NzkwMDIzMzRB
MiAvKiBTdHlsZUVsZW1lbnQuY3BwICovOyB9OwogCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIg
LyogU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi87IH07
CisJCUFBQjYwNTRFMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFCNjA1NEExNTg3
NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi87IH07CisJCUFBQjYwNTRG
MTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgfTsKIAkJQUFENzY2RUIxNTdFNTAyRjAwRTg1NDIz
IC8qIEluc3BlY3RvcldlYkdMQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3Rvcldl
YkdMQWdlbnQuY3BwICovOyB9OwogCQlBQUQ3NjZFQzE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yV2ViR0xBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCAq
LzsgfTsKIAkJQUFENzY2RUQxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJbnN0cnVtZW50YXRp
b24uaCAqLzsgfTsKQEAgLTExNDU5LDYgKzExNDYxLDggQEAKIAkJQUE0QzNBNzUwQjJCMTY3OTAw
MjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBOTAzMEZF
MTU3RTE2QTAwMDI3NjI0NyAvKiBJbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJj
ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5MTI3NTAxNTdFMzVBNTAwNDU0
RTU0IC8qIEluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBQUI2MDU0QTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2Ny
aXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQjYwNTRCMTU4NzRD
NTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvcldlYkdMQWdl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFOTE1N0U1MDJGMDBF
ODU0MjMgLyogSW5zcGVjdG9yV2ViR0xBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JXZWJHTEFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEluc3RydW1lbnRh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJHTElu
c3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQzODgsNiAr
MTQzOTIsOCBAQAogCQkJCTU5MTNBMjQwMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0Zh
Y3RvcnkuaCAqLywKIAkJCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3Jp
cHQuY3BwICovLAogCQkJCUYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlw
dC5oICovLAorCQkJCUFBQjYwNTRBMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJh
c2UuY3BwICovLAorCQkJCUFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlw
dEJhc2UuaCAqLywKIAkJCQk3QTBFNzZGNjEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcCAqLywKIAkJCQk3QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggKi8sCiAJCQkJN0EwRTc2RjgxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5pZGwgKi8sCkBAIC0yMzI5Nyw2ICsyMzMwMyw3IEBACiAJCQkJMzE2RkUxMTgw
RTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlw
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUFCNjA1NEYxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVj
dGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc2RkExMEJGMDhFRDAwQTAy
NzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjMxNjM5NkMx
MzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjQzMSw2ICsyNjQzOCw3IEBACiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4
IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURCMjNDMkNCMEE1
MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQUFCNjA1NEUxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTBFNzZGOTEwQkYwOEVEMDBBMDI3NkUgLyog
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzMTYzOTZCMTMyOTQ4
MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThDRkY1RTYwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDFm
Y2Q5Y2I4MDI2MzQ5MDk3YWE2MmMyZDgxOTUwZTIwMmYxMzQxNWEuLjBjZmI4MmI2ZTcwMTExYWIz
NmYxOTg2ZGY2MDZkOGJjMjViZTBmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0T2JqZWN0LmNwcApAQCAtNTAsNiArNTAsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRP
YmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBKU09iamVjdCogb2JqZWN0KQogewogfQog
CitTY3JpcHRPYmplY3Q6OlNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSkKKyAgICA6IFNjcmlwdFZhbHVlKHNjcmlwdFN0
YXRlLT5nbG9iYWxEYXRhKCksIHNjcmlwdFZhbHVlLmpzVmFsdWUoKSkKKyAgICAsIG1fc2NyaXB0
U3RhdGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHN0YXRpYyBib29sIGhhbmRsZUV4Y2VwdGlvbihT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAgICAgaWYgKCFzY3JpcHRTdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmluZGV4
IGViMDJlOWI3YWQ1OTA5NWQ0YmY0MWU2ZTI3NWIyNzFiMzc5YTU0Y2MuLjJjMWFlNGQzMzNkNGY1
ZTM1M2VhNjQ2NTA4ZjQ5YmQ0Y2U5Y2E3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdE9iamVjdC5oCkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgSlNDOjpKU09iamVjdCopOwotICAg
ICAgICBTY3JpcHRPYmplY3QoKSB7fQorICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUq
LCBjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgICAgICBTY3JpcHRPYmplY3QoKSB7IH0KICAgICAg
ICAgSlNDOjpKU09iamVjdCoganNPYmplY3QoKSBjb25zdCB7IHJldHVybiBhc09iamVjdChqc1Zh
bHVlKCkpOyB9CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0U3RhdGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmgKaW5kZXggMTU3M2E0OTA2MmQxYjQxZGJkNjgxMWU4ZTA3MGJlMmYyZjljNTIyMC4uODlk
YWEzOWMzMjRhODJjM2VmZjc4MTNiNTFjN2YwZGM2ZGY5NzJjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJp
Z2h0IChjKSAyMDA4LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAK
KyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogY2xhc3MgU2NyaXB0VmFsdWUgewogcHVibGljOgogICAgIFNjcmlwdFZhbHVlKCkgeyB9
Ci0gICAgU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkgOiBtX3ZhbHVlKGdsb2JhbERhdGEsIHZhbHVlKSB7fQotICAgIHZpcnR1YWwg
flNjcmlwdFZhbHVlKCkge30KKyAgICBTY3JpcHRWYWx1ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSA6IG1fdmFsdWUoZ2xvYmFsRGF0YSwgdmFsdWUp
IHsgfQorICAgIHZpcnR1YWwgflNjcmlwdFZhbHVlKCkgeyB9CiAKICAgICBKU0M6OkpTVmFsdWUg
anNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KICAgICBib29sIGdldFN0
cmluZyhTY3JpcHRTdGF0ZSosIFN0cmluZyYgcmVzdWx0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDNkMzhhOWVlY2VmOTAwNGY0YTZm
NmU1M2VhMDcyYjBmOGUyMmZiODYuLjAyNjZkZjQ4ZTlkYmU2MDAzNmYyMzAyYWYzYzNmODA4Zjhl
NzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcApA
QCAtNTEsNiArNTEsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2IKIHsKIH0KIAorU2NyaXB0
T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRWYWx1ZSkKKyAg
ICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBTY3JpcHRPYmplY3Q6OnY4T2JqZWN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQodjhWYWx1
ZSgpLT5Jc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0
LmgKaW5kZXggNDU0MWFiMDg4MzMzYTliMzRjMjIxODcwMWZhYTc4YjhmMzVjYmViOC4uMWM0N2E2
MGMwZjNlN2VlODg5Zjk5NjBmM2JkYTEwZjFhMWM4MjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRWYWx1ZSB7CiAgICAg
cHVibGljOgogICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2Ny
aXB0VmFsdWUmKTsKICAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3NjcmlwdFN0YXRlKDApIHsg
fTsKLSAgICAgICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkge30KKyAgICAgICAgdmlydHVhbCB+
U2NyaXB0T2JqZWN0KCkgeyB9CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHY4T2Jq
ZWN0KCkgY29uc3Q7CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCmluZGV4IDJmMGU2MTc4NDQyNjc2MDAzMmVkYjdhOGY1MjAwYmNmMDhhNGQ5
YzcuLjk2NDdlYmZjMWZhZGZmMjY0NzViMGZkYzBhMWZhNmFmMTdlZTU5YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsMTUgKzM0LDEy
IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogCi0jaW5jbHVkZSAiRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIK
LSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5OwogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU7CkBAIC01MywxOSArNTAsMTcgQEAgdXNpbmcgV2ViQ29y
ZTo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKLSAgICA6IG1faW5zcGVjdGVk
U3RhdGVBY2Nlc3NDaGVjaygwKQogewogfQogCiBJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRTY3Jp
cHQoU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrIGFjY2Vzc0NoZWNrKQotICAgIDogbV9pbmplY3RlZFNjcmlwdE9iamVjdChpbmplY3Rl
ZFNjcmlwdE9iamVjdCkKLSAgICAsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhhY2Nlc3ND
aGVjaykKKyAgICA6IEluamVjdGVkU2NyaXB0QmFzZShpbmplY3RlZFNjcmlwdE9iamVjdCwgYWNj
ZXNzQ2hlY2spCiB7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZh
bHVlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwg
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGUiKTsK
KyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImV2YWx1YXRlIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CkBAIC03NSw3ICs3MCw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlv
bk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1
cm5CeVZhbHVlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJl
c3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiY2FsbEZ1
bmN0aW9uT24iKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQob2JqZWN0SWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGFyZ3VtZW50cyk7CkBAIC04NSw3ICs4MCw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYg
Y2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZU9uQ2Fs
bEZyYW1lIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1l
SWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAtOTcsNyAr
OTIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7Ci0gICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRGdW5j
dGlvbkRldGFpbHMiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0
VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0xMTEsNyAr
MTA2LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNjcmlwdG9y
PiA+KiBwcm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2lu
amVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0UHJvcGVydGllcyIpOworICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGllcyIpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChvd25Qcm9wZXJ0aWVzKTsKIApAQCAtMTI5LDcgKzEyNCw3IEBAIE5vZGUqIElu
amVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKICAg
ICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3Rl
ZFNjcmlwdE9iamVjdCwgIm5vZGVGb3JPYmplY3RJZCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZvck9iamVjdElkIik7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNl
cHRpb24gPSBmYWxzZTsKQEAgLTE0MSw3ICsxMzYsNyBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdDo6
bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIHsKLSAgICBTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVhc2VP
YmplY3QiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgInJlbGVhc2VPYmplY3QiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChv
YmplY3RJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sICZyZXN1bHQpOwpAQCAtMTUxLDEyICsxNDYsMTIgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogUGFzc1JlZlB0
cjxBcnJheTxDYWxsRnJhbWU+ID4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwg
IndyYXBDYWxsRnJhbWVzIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAg
ICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFi
bGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0lu
c3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CisgICAg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0
b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVj
dG9yVmFsdWU6OlR5cGVBcnJheSkKICAgICAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OnJ1
bnRpbWVDYXN0KHJlc3VsdCk7CiAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OmNyZWF0ZSgp
OwpAQCAtMTY2LDcgKzE2MSw3IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVj
dGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYKIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBP
YmplY3QoU2NyaXB0VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdAog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3Jh
cEZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwT2JqZWN0Iik7CisgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3Jh
cE9iamVjdCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKQEAgLTE3NSw3ICsx
NzAsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IElu
amVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KFNjcmlwdAogICAgIGlmIChoYWRFeGNlcHRpb24pIHsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJh
d1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlw
dFN0YXRlKCkpLT5hc09iamVjdCgpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jl
c3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKICAg
ICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qo
cmF3UmVzdWx0KTsKIH0KIApAQCAtMTg2LDE0ICsxODEsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUoTm9k
ZSogbm8KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJ
bmplY3RlZFNjcmlwdDo6d3JhcFNlcmlhbGl6ZWRPYmplY3QoU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdAog
ewotICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5k
ZXNlcmlhbGl6ZUZvckluc3BlY3RvcihtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCkpOworICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVl
LT5kZXNlcmlhbGl6ZUZvckluc3BlY3RvcihzY3JpcHRTdGF0ZSgpKTsKICAgICByZXR1cm4gc2Ny
aXB0VmFsdWUuaGFzTm9WYWx1ZSgpID8gMCA6IHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdyb3Vw
TmFtZSk7CiB9CiAKIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChj
b25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgp
KTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVj
dCwgImZpbmRPYmplY3RCeUlkIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CkBAIC0yMDUsNyArMjAwLDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmpl
Y3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB2b2lkIEluamVjdGVkU2NyaXB0
OjppbnNwZWN0Tm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwg
Imluc3BlY3ROb2RlIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0yMTQsOTAgKzIw
OSwxNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZShOb2RlKiBub2RlKQogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXApCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCByZWxlYXNlRnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVhc2VPYmpl
Y3RHcm91cCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3RHcm91cCIpOwogICAgIHJlbGVhc2VGdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24g
PSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVsZWFzZUZ1bmN0aW9u
LCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIH0KIAotYm9vbCBJ
bmplY3RlZFNjcmlwdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSk7Ci19Ci0KLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpjYWxsRnVu
Y3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYg
aGFkRXhjZXB0aW9uKSBjb25zdAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlwdFN0YXRl
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bENhbGxGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAiSW5qZWN0ZWRTY3JpcHQiLCAx
KTsKLQotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKTsKLSAgICBib29sIGV2YWxJc0Rpc2FibGVkID0gZmFsc2U7Ci0gICAg
aWYgKHNjcmlwdFN0YXRlKSB7Ci0gICAgICAgIGV2YWxJc0Rpc2FibGVkID0gIWV2YWxFbmFibGVk
KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgLy8gVGVtcG9yYXJpbHkgZW5hYmxlIGFsbG93IGV2YWxz
IGZvciBpbnNwZWN0b3IuCi0gICAgICAgIGlmIChldmFsSXNEaXNhYmxlZCkKLSAgICAgICAgICAg
IHNldEV2YWxFbmFibGVkKHNjcmlwdFN0YXRlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBTY3JpcHRW
YWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKLQotICAgIGlm
IChldmFsSXNEaXNhYmxlZCkKLSAgICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0U3RhdGUsIGZh
bHNlKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNv
b2tpZSk7Ci0gICAgcmV0dXJuIHJlc3VsdFZhbHVlOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0
OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpCi17Ci0gICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93KCkpIHsKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpudWxs
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZh
bHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotCi0gICAgQVNTRVJUKCFoYWRFeGNlcHRp
b24pOwotICAgIGlmICghaGFkRXhjZXB0aW9uKSB7Ci0gICAgICAgICpyZXN1bHQgPSByZXN1bHRW
YWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7Ci0gICAgICAgIGlmICghKnJlc3VsdCkKLSAgICAgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZvcm1hdCgiT2JqZWN0IGhhcyB0b28gbG9uZyByZWZl
cmVuY2UgY2hhaW4obXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gJWQpIiwgSW5zcGVjdG9yVmFsdWU6
Om1heERlcHRoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJp
bmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7Ci19Ci0KLXZvaWQg
SW5qZWN0ZWRTY3JpcHQ6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNj
cmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCi17Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7Ci0gICAg
bWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAg
ICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5IjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVj
dG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKLSAgICAgICAgcmVzdWx0LT5hc1N0cmluZyhlcnJvclN0
cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKLSAgICBpZiAoIXJlc3VsdFBhaXIp
IHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90
IGFuIE9iamVjdCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KCJyZXN1bHQiKTsKLSAg
ICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNlOwotICAgIGlmICghcmVzdWx0T2JqIHx8ICFyZXN1
bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3duVmFsKSkgewotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9m
IHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Km9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRp
bWVDYXN0KHJlc3VsdE9iaik7Ci0gICAgKndhc1Rocm93biA9IHdhc1Rocm93blZhbDsKLX0KLQog
U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqIG5vZGUp
CiB7Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCBub2RlKTsKKyAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2RlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaAppbmRleCA4YzY3MzZkOTM4ODA2NTljOTU3ZDQ4ZGRmN2NiODg2NjFhYzY1
MDIwLi4yNzFiYWUyMTM4ZTI4M2M4NzNiN2VhYWQxMDI2MzJlZTM4ZWY0ZWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsNiArMzEsNyBAQAog
I2lmbmRlZiBJbmplY3RlZFNjcmlwdF9oCiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gKIAorI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFu
YWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCkBAIC00MSwyMyArNDIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIElu
c3BlY3RvclZhbHVlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsKLQot
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbmplY3RlZFNjcmlwdCB7CitjbGFz
cyBJbmplY3RlZFNjcmlwdCA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgog
ICAgIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfkluamVjdGVkU2NyaXB0KCkgeyB9CiAKLSAgICBi
b29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Lmhh
c05vVmFsdWUoKTsgfQotCiAgICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLApAQCAtOTcsMjEgKzkxLDEyIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3Vw
KGNvbnN0IFN0cmluZyYpOwotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVj
dGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7Ci0gICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVk
U3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKICAgICBJbmplY3RlZFNjcmlwdChTY3Jp
cHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgYm9vbCBjYW5BY2Nl
c3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBj
b25zdDsKLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcq
LCBTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KTsKICAgICBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7Ci0KLSAgICBTY3Jp
cHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKLSAgICBJbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKIH07CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZTg3OGFiMTc0ZGFiYjdhY2QwZjRmYWJiNGM5YmM3OTdkNWRhYzM2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAg
LTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgor
Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0luamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRC
YXNlKCkKKyAgICA6IG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygwKQoreworfQorCitJbmpl
Y3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShTY3JpcHRPYmplY3QgaW5qZWN0ZWRT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCisgICAg
OiBtX2luamVjdGVkU2NyaXB0T2JqZWN0KGluamVjdGVkU2NyaXB0T2JqZWN0KQorICAgICwgbV9p
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQoreworfQorCitib29sIEluamVj
dGVkU2NyaXB0QmFzZTo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSk7Cit9CisKK2NvbnN0IFNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRC
YXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5qZWN0
ZWRTY3JpcHRPYmplY3Q7Cit9CisKK1NjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2Fs
bEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIGJv
b2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21TY3JpcHRT
dGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIkluamVjdGVkU2NyaXB0
IiwgMSk7CisKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtX2luamVjdGVkU2NyaXB0
T2JqZWN0LnNjcmlwdFN0YXRlKCk7CisgICAgYm9vbCBldmFsSXNEaXNhYmxlZCA9IGZhbHNlOwor
ICAgIGlmIChzY3JpcHRTdGF0ZSkgeworICAgICAgICBldmFsSXNEaXNhYmxlZCA9ICFldmFsRW5h
YmxlZChzY3JpcHRTdGF0ZSk7CisgICAgICAgIC8vIFRlbXBvcmFyaWx5IGVuYWJsZSBhbGxvdyBl
dmFscyBmb3IgaW5zcGVjdG9yLgorICAgICAgICBpZiAoZXZhbElzRGlzYWJsZWQpCisgICAgICAg
ICAgICBzZXRFdmFsRW5hYmxlZChzY3JpcHRTdGF0ZSwgdHJ1ZSk7CisgICAgfQorCisgICAgU2Ny
aXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7CisKKyAg
ICBpZiAoZXZhbElzRGlzYWJsZWQpCisgICAgICAgIHNldEV2YWxFbmFibGVkKHNjcmlwdFN0YXRl
LCBmYWxzZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlv
bihjb29raWUpOworICAgIHJldHVybiByZXN1bHRWYWx1ZTsKK30KKwordm9pZCBJbmplY3RlZFNj
cmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5B
Y2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkgeworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFs
dWU6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFkRXhjZXB0
aW9uID0gZmFsc2U7CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25X
aXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisKKyAgICBBU1NFUlQoIWhh
ZEV4Y2VwdGlvbik7CisgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKKyAgICAgICAgKnJlc3VsdCA9
IHJlc3VsdFZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3Jp
cHRTdGF0ZSgpKTsKKyAgICAgICAgaWYgKCEqcmVzdWx0KQorICAgICAgICAgICAgKnJlc3VsdCA9
IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJPYmplY3QgaGFzIHRvbyBs
b25nIHJlZmVyZW5jZSBjaGFpbihtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAlZCkiLCBJbnNwZWN0
b3JWYWx1ZTo6bWF4RGVwdGgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgKnJlc3VsdCA9IEluc3Bl
Y3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKK30K
Kwordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBy
ZXN1bHQ7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOworICAgIGlmICghcmVzdWx0
KSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVl
IGlzIGVtcHR5IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVzdWx0LT50eXBl
KCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAgICAgcmVzdWx0LT5hc1N0
cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKKyAgICBpZiAo
IXJlc3VsdFBhaXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBy
ZXN1bHQgaXMgbm90IGFuIE9iamVjdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KCJy
ZXN1bHQiKTsKKyAgICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNlOworICAgIGlmICghcmVzdWx0
T2JqIHx8ICFyZXN1bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3duVmFs
KSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBu
b3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgKm9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CisgICAgKndhc1Rocm93biA9IHdhc1Rocm93
blZhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOGQ1NDVlZjkyZmIzNzZkMzFjZTI4MjdkNmIxYTA3MmE4ZjI3YTkzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkU2NyaXB0QmFzZV9oCisjZGVm
aW5lIEluamVjdGVkU2NyaXB0QmFzZV9oCisKKyNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRl
ci5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEluc3BlY3RvclZhbHVlOworY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOworCit0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK2NsYXNzIEluamVj
dGVkU2NyaXB0QmFzZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5qZWN0ZWRTY3JpcHRCYXNl
KCkgeyB9CisKKyAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVk
U2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQorICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3ND
aGVjaykoU2NyaXB0U3RhdGUqKTsKKyAgICBJbmplY3RlZFNjcmlwdEJhc2UoKTsKKyAgICBJbmpl
Y3RlZFNjcmlwdEJhc2UoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsK
KworICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7CisgICAgY29uc3Qg
U2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OworICAgIFNjcmlwdFZh
bHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29s
JiBoYWRFeGNlcHRpb24pIGNvbnN0OworICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25D
YWxsJiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIG1ha2VFdmFs
Q2FsbChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pOworCitwcml2YXRlOgorICAgIFNjcmlwdE9iamVjdCBtX2luamVj
dGVkU2NyaXB0T2JqZWN0OworICAgIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrOworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbElu
T25lLmNwcAppbmRleCBiZTkyYTEzZmM3YjNjZDg1NjEzNjM4ZTYxODg3N2M4MmZiMmMzOWFjLi4y
NmJiYTJhZWM5ZjlkOWIwZWRkNmE4OTVlODgyN2M0ZWVmMDhkNzQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuY3BwIgogI2luY2x1ZGUgIklkZW50aWZpZXJzRmFj
dG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuY3BwIgorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0QmFzZS5jcHAiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmNwcCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148175</attachid>
            <date>2012-06-18 14:52:59 -0700</date>
            <delta_ts>2012-06-18 15:31:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89107-20120618145259.patch</filename>
            <type>text/plain</type>
            <size>8280</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAzNGY5ZTVjNGQ2MjM2
N2MwMDhmMzEzODZiOTBlZDc5MTk5NTQ5My4uMjNiMGQ5OWMyNWVjNDYwYWY3NzY5ZTNiMmIzNTky
YTA5ZjE1MDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA2LTE4ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIEluamVjdGVkU2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEwNworCisgICAg
ICAgIEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIGphdmFzY3JpcHQgYmFja2VkIGJ5
IEluamVjdGVkU2NyaXB0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oOgorICAgICAgICAoU2NyaXB0T2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgIChTY3JpcHRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0Ojp+U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OmdldE1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjppbmplY3RNb2R1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorCiAyMDEyLTA2LTE4
ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICB3ZWJraXQg
ZmFpbHMgSUVUQyBib3JkZXItcmFkaXVzLWNsaXAtMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAxZmNkOWNiODAyNjM0OTA5N2FhNjJjMmQ4MTk1
MGUyMDJmMTM0MTVhLi4wY2ZiODJiNmU3MDExMWFiMzZmMTk4NmRmNjA2ZDhiYzI1YmUwZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTUwLDYg
KzUwLDEyIEBAIFNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmpl
Y3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBzY3JpcHRW
YWx1ZS5qc1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQoreworfQor
CiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQog
ewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBlYjAyZTliN2FkNTkwOTVkNGJmNDFlNmUy
NzViMjcxYjM3OWE1NGNjLi4yYzFhZTRkMzMzZDRmNWUzNTNlYTY0NjUwOGY0OWJkNGNlOWNhN2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAtNDQsNyAr
NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVi
bGljIFNjcmlwdFZhbHVlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdE9iamVjdChTY3Jp
cHRTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KCkge30KKyAg
ICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAg
ICAgICAgU2NyaXB0T2JqZWN0KCkgeyB9CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDNkMzhhOWVl
Y2VmOTAwNGY0YTZmNmU1M2VhMDcyYjBmOGUyMmZiODYuLjAyNjZkZjQ4ZTlkYmU2MDAzNmYyMzAy
YWYzYzNmODA4ZjhlNzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3Qo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2IKIHsK
IH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3Jp
cHRWYWx1ZSkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBTY3JpcHRPYmplY3Q6OnY4T2JqZWN0KCkgY29uc3QKIHsKICAgICBB
U1NFUlQodjhWYWx1ZSgpLT5Jc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0T2JqZWN0LmgKaW5kZXggNDU0MWFiMDg4MzMzYTliMzRjMjIxODcwMWZhYTc4YjhmMzVj
YmViOC4uMWM0N2E2MGMwZjNlN2VlODg5Zjk5NjBmM2JkYTEwZjFhMWM4MjM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTQzLDggKzQzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRW
YWx1ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRl
KiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKICAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3Njcmlw
dFN0YXRlKDApIHsgfTsKLSAgICAgICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkge30KKyAgICAg
ICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkgeyB9CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHY4T2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDQxNGMyMmY4OWYzYmM0MjFhYzAxOGVmNDM4
ODgyYjk4MmMzZTFlMmYuLmIyNzhmNThlNDRiNDMwOWFmNzQ2NDJhNGRjMTZmOGJmMzA1MWEzNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjQ2LDYgKzI0NiwzOSBAQCBib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3coKSBjb25zdAogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KIAorU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0OjpnZXRNb2R1bGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEFTU0VS
VCghaGFzTm9WYWx1ZSgpKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmpl
Y3RlZFNjcmlwdE9iamVjdCwgImdldE1vZHVsZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5hbWUpOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBTY3JpcHRW
YWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CisKKyAgICBpZiAoaGFk
RXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8fCAhcmVzdWx0VmFsdWUuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworCisgICAgcmV0dXJuIFNj
cmlwdE9iamVjdChzY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7Cit9CisKK1NjcmlwdE9iamVj
dCBJbmplY3RlZFNjcmlwdDo6aW5qZWN0TW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UpCit7CisgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOworICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiaW5qZWN0TW9k
dWxlIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSk7CisgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoc291cmNlKTsKKworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwor
CisgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkgfHwgIXJl
c3VsdFZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKwor
ICAgIHJldHVybiBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworfQor
CiBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QK
IHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21TY3JpcHRTdGF0ZShtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LnNjcmlwdFN0YXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuaAppbmRleCBmODE0NTE2NzYzY2I3NWUzMGZjZTJiNmZhYTcxNGY5NmI2NTJjMWVlLi45Zjhh
NjAzMTUyMDBhZGQ4N2NjNjZiZTU2N2IwMDRlYzA0NTc2N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTAwLDYgKzEwMCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmKTsKICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0
LnNjcmlwdFN0YXRlKCk7IH0KIAorICAgIFNjcmlwdE9iamVjdCBnZXRNb2R1bGUoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKyAgICBTY3JpcHRPYmplY3QgaW5qZWN0TW9kdWxlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBJbmpl
Y3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKFNjcmlw
dFN0YXRlKik7CiAgICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayko
U2NyaXB0U3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwppbmRleCBhZTRjOTc4Y2YzZjJlNGU3OTE2ZDMxZDgzMDUwYWFmMzZmNDJh
Y2NjLi4wOWRjM2IzZWZlZTUyYmYyZmRmNDU3ODMwM2NmZDA1ZjdlMzI5YmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC00MCw2
ICs0MCw3IEBAIHZhciBJbmplY3RlZFNjcmlwdCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9pZFRv
V3JhcHBlZE9iamVjdCA9IHt9OwogICAgIHRoaXMuX2lkVG9PYmplY3RHcm91cE5hbWUgPSB7fTsK
ICAgICB0aGlzLl9vYmplY3RHcm91cHMgPSB7fTsKKyAgICB0aGlzLl9tb2R1bGVzID0ge307CiB9
CiAKIEluamVjdGVkU2NyaXB0LnByaW1pdGl2ZVR5cGVzID0gewpAQCAtNDExLDYgKzQxMiwxNyBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAg
ICAgfSwKIAorICAgIGdldE1vZHVsZTogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOworICAgIH0sCisKKyAgICBpbmplY3RNb2R1bGU6IGZ1
bmN0aW9uKG5hbWUsIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9tb2R1bGVz
W25hbWVdOworICAgICAgICByZXR1cm4gKHRoaXMuX21vZHVsZXNbbmFtZV0gPSBldmFsKCIoIiAr
IHNvdXJjZSArICIpIikpOworICAgIH0sCisKICAgICBfaXNEZWZpbmVkOiBmdW5jdGlvbihvYmpl
Y3QpCiAgICAgewogICAgICAgICByZXR1cm4gb2JqZWN0IHx8IHRoaXMuX2lzSFRNTEFsbENvbGxl
Y3Rpb24ob2JqZWN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148187</attachid>
            <date>2012-06-18 15:31:40 -0700</date>
            <delta_ts>2012-06-18 16:03:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89107-20120618153140.patch</filename>
            <type>text/plain</type>
            <size>8435</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAzNGY5ZTVjNGQ2MjM2
N2MwMDhmMzEzODZiOTBlZDc5MTk5NTQ5My4uMjNiMGQ5OWMyNWVjNDYwYWY3NzY5ZTNiMmIzNTky
YTA5ZjE1MDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA2LTE4ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIEluamVjdGVkU2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEwNworCisgICAg
ICAgIEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIGphdmFzY3JpcHQgYmFja2VkIGJ5
IEluamVjdGVkU2NyaXB0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oOgorICAgICAgICAoU2NyaXB0T2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgIChTY3JpcHRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0Ojp+U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OmdldE1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjppbmplY3RNb2R1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorCiAyMDEyLTA2LTE4
ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICB3ZWJraXQg
ZmFpbHMgSUVUQyBib3JkZXItcmFkaXVzLWNsaXAtMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAxZmNkOWNiODAyNjM0OTA5N2FhNjJjMmQ4MTk1
MGUyMDJmMTM0MTVhLi4wY2ZiODJiNmU3MDExMWFiMzZmMTk4NmRmNjA2ZDhiYzI1YmUwZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTUwLDYg
KzUwLDEyIEBAIFNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmpl
Y3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBzY3JpcHRW
YWx1ZS5qc1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQoreworfQor
CiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQog
ewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBlYjAyZTliN2FkNTkwOTVkNGJmNDFlNmUy
NzViMjcxYjM3OWE1NGNjLi4yYzFhZTRkMzMzZDRmNWUzNTNlYTY0NjUwOGY0OWJkNGNlOWNhN2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAtNDQsNyAr
NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVi
bGljIFNjcmlwdFZhbHVlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdE9iamVjdChTY3Jp
cHRTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KCkge30KKyAg
ICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAg
ICAgICAgU2NyaXB0T2JqZWN0KCkgeyB9CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDNkMzhhOWVl
Y2VmOTAwNGY0YTZmNmU1M2VhMDcyYjBmOGUyMmZiODYuLjAyNjZkZjQ4ZTlkYmU2MDAzNmYyMzAy
YWYzYzNmODA4ZjhlNzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3Qo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2IKIHsK
IH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3Jp
cHRWYWx1ZSkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBTY3JpcHRPYmplY3Q6OnY4T2JqZWN0KCkgY29uc3QKIHsKICAgICBB
U1NFUlQodjhWYWx1ZSgpLT5Jc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0T2JqZWN0LmgKaW5kZXggNDU0MWFiMDg4MzMzYTliMzRjMjIxODcwMWZhYTc4YjhmMzVj
YmViOC4uMWM0N2E2MGMwZjNlN2VlODg5Zjk5NjBmM2JkYTEwZjFhMWM4MjM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTQzLDggKzQzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRW
YWx1ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRl
KiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKICAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3Njcmlw
dFN0YXRlKDApIHsgfTsKLSAgICAgICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkge30KKyAgICAg
ICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkgeyB9CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHY4T2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDQxNGMyMmY4OWYzYmM0MjFhYzAxOGVmNDM4
ODgyYjk4MmMzZTFlMmYuLjRjNDQ0MWU4NGVlNTBhYmMwN2UxN2IwMDdiYmU2MWVkMTNhNTQwMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjQ2LDYgKzI0NiwzOSBAQCBib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3coKSBjb25zdAogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KIAorU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0OjpnZXRNb2R1bGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEFTU0VS
VCghaGFzTm9WYWx1ZSgpKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmpl
Y3RlZFNjcmlwdE9iamVjdCwgImdldE1vZHVsZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5hbWUpOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBTY3JpcHRW
YWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbiAmJiAhcmVzdWx0VmFsdWUu
aGFzTm9WYWx1ZSgpICYmIHJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpOworCisgICAgaWYgKGhhZEV4
Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkgfHwgIXJlc3VsdFZhbHVlLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKworICAgIHJldHVybiBTY3Jp
cHRPYmplY3Qoc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworfQorCitTY3JpcHRPYmplY3Qg
SW5qZWN0ZWRTY3JpcHQ6OmluamVjdE1vZHVsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgc291cmNlKQoreworICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKKyAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImluamVjdE1vZHVs
ZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUpOworICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHNvdXJjZSk7CisKKyAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwor
ICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uICYmICFy
ZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkgJiYgcmVzdWx0VmFsdWUuaXNPYmplY3QoKSk7CisKKyAg
ICBpZiAoaGFkRXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSB8fCAhcmVzdWx0
VmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworCisgICAg
cmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7Cit9CisKIFNj
cmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2Ny
aXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAogewog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlwdFN0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CmluZGV4IGY4MTQ1MTY3NjNjYjc1ZTMwZmNlMmI2ZmFhNzE0Zjk2YjY1MmMxZWUuLjlmOGE2MDMx
NTIwMGFkZDg3Y2M2NmJlNTY3YjAwNGVjMDQ1NzY3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMDAsNiArMTAwLDkgQEAgcHVibGljOgogICAg
IHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYpOwogICAgIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2Ny
aXB0U3RhdGUoKTsgfQogCisgICAgU2NyaXB0T2JqZWN0IGdldE1vZHVsZShjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIFNjcmlwdE9iamVjdCBpbmplY3RNb2R1bGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIEluamVjdGVk
U2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3Rh
dGUqKTsKICAgICB0eXBlZGVmIGJvb2wgKCpJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShTY3Jp
cHRTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzCmluZGV4IGFlNGM5NzhjZjNmMmU0ZTc5MTZkMzFkODMwNTBhYWYzNmY0MmFjY2Mu
LmM4MjMxMTQ2N2JkYTVhYTdiNTc5NDMwOGNiZGE2ZTgxOGEwYTQxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTQwLDYgKzQw
LDcgQEAgdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2lkVG9XcmFw
cGVkT2JqZWN0ID0ge307CiAgICAgdGhpcy5faWRUb09iamVjdEdyb3VwTmFtZSA9IHt9OwogICAg
IHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OworICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKIH0KIAog
SW5qZWN0ZWRTY3JpcHQucHJpbWl0aXZlVHlwZXMgPSB7CkBAIC00MTEsNiArNDEyLDE5IEBAIElu
amVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9
LAogCisgICAgZ2V0TW9kdWxlOiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX21vZHVsZXNbbmFtZV07CisgICAgfSwKKworICAgIGluamVjdE1vZHVsZTogZnVuY3Rp
b24obmFtZSwgc291cmNlKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX21vZHVsZXNbbmFt
ZV07CisgICAgICAgIHZhciBtb2R1bGUgPSBldmFsKCIoIiArIHNvdXJjZSArICIpIik7CisgICAg
ICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBtb2R1bGU7CisgICAgICAgIHJldHVybiBtb2R1bGU7
CisgICAgfSwKKwogICAgIF9pc0RlZmluZWQ6IGZ1bmN0aW9uKG9iamVjdCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBvYmplY3QgfHwgdGhpcy5faXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148196</attachid>
            <date>2012-06-18 16:03:57 -0700</date>
            <delta_ts>2012-06-19 12:20:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89107-20120618160356.patch</filename>
            <type>text/plain</type>
            <size>8345</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAzNGY5ZTVjNGQ2MjM2
N2MwMDhmMzEzODZiOTBlZDc5MTk5NTQ5My4uMjNiMGQ5OWMyNWVjNDYwYWY3NzY5ZTNiMmIzNTky
YTA5ZjE1MDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA2LTE4ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIEluamVjdGVkU2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEwNworCisgICAg
ICAgIEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIGphdmFzY3JpcHQgYmFja2VkIGJ5
IEluamVjdGVkU2NyaXB0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oOgorICAgICAgICAoU2NyaXB0T2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgIChTY3JpcHRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0Ojp+U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OmdldE1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjppbmplY3RNb2R1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorCiAyMDEyLTA2LTE4
ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICB3ZWJraXQg
ZmFpbHMgSUVUQyBib3JkZXItcmFkaXVzLWNsaXAtMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAxZmNkOWNiODAyNjM0OTA5N2FhNjJjMmQ4MTk1
MGUyMDJmMTM0MTVhLi4wY2ZiODJiNmU3MDExMWFiMzZmMTk4NmRmNjA2ZDhiYzI1YmUwZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTUwLDYg
KzUwLDEyIEBAIFNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmpl
Y3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBzY3JpcHRW
YWx1ZS5qc1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQoreworfQor
CiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQog
ewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBlYjAyZTliN2FkNTkwOTVkNGJmNDFlNmUy
NzViMjcxYjM3OWE1NGNjLi4yYzFhZTRkMzMzZDRmNWUzNTNlYTY0NjUwOGY0OWJkNGNlOWNhN2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAtNDQsNyAr
NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVi
bGljIFNjcmlwdFZhbHVlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdE9iamVjdChTY3Jp
cHRTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KCkge30KKyAg
ICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAg
ICAgICAgU2NyaXB0T2JqZWN0KCkgeyB9CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDNkMzhhOWVl
Y2VmOTAwNGY0YTZmNmU1M2VhMDcyYjBmOGUyMmZiODYuLjAyNjZkZjQ4ZTlkYmU2MDAzNmYyMzAy
YWYzYzNmODA4ZjhlNzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3Qo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2IKIHsK
IH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3Jp
cHRWYWx1ZSkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBTY3JpcHRPYmplY3Q6OnY4T2JqZWN0KCkgY29uc3QKIHsKICAgICBB
U1NFUlQodjhWYWx1ZSgpLT5Jc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0T2JqZWN0LmgKaW5kZXggNDU0MWFiMDg4MzMzYTliMzRjMjIxODcwMWZhYTc4YjhmMzVj
YmViOC4uMWM0N2E2MGMwZjNlN2VlODg5Zjk5NjBmM2JkYTEwZjFhMWM4MjM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTQzLDggKzQzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRW
YWx1ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRl
KiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKICAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3Njcmlw
dFN0YXRlKDApIHsgfTsKLSAgICAgICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkge30KKyAgICAg
ICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkgeyB9CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHY4T2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDQxNGMyMmY4OWYzYmM0MjFhYzAxOGVmNDM4
ODgyYjk4MmMzZTFlMmYuLjRlZGVlNWJkMzIyM2QyYTEyODdjNGM2Njk1YzMyOGFlZjRhODRjODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjQ2LDYgKzI0NiwzOSBAQCBib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3coKSBjb25zdAogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KIAorU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0OjpnZXRNb2R1bGUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEFTU0VS
VCghaGFzTm9WYWx1ZSgpKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmpl
Y3RlZFNjcmlwdE9iamVjdCwgImdldE1vZHVsZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG5hbWUpOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBTY3JpcHRW
YWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKKyAgICBpZiAoaGFkRXhjZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05v
VmFsdWUoKSB8fCAhcmVzdWx0VmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgIH0KKworICAg
IHJldHVybiBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworfQorCitT
Y3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHQ6OmluamVjdE1vZHVsZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlKQoreworICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
KyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwg
ImluamVjdE1vZHVsZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUpOworICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSk7CisKKyAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIGlmIChoYWRFeGNlcHRp
b24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgp
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KCk7CisgICAgfQorCisgICAgcmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSgp
LCByZXN1bHRWYWx1ZSk7Cit9CisKIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpjYWxsRnVu
Y3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYg
aGFkRXhjZXB0aW9uKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlwdFN0YXRl
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGY4MTQ1MTY3NjNjYjc1ZTMwZmNlMmI2ZmFh
NzE0Zjk2YjY1MmMxZWUuLjlmOGE2MDMxNTIwMGFkZDg3Y2M2NmJlNTY3YjAwNGVjMDQ1NzY3Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMDAs
NiArMTAwLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0
cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQogCisgICAgU2NyaXB0T2JqZWN0
IGdldE1vZHVsZShjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFNjcmlwdE9iamVjdCBpbmplY3RN
b2R1bGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CisKIHByaXZh
dGU6CiAgICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqKTsKICAgICB0eXBlZGVmIGJvb2wgKCpJbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrKShTY3JpcHRTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCmluZGV4IGFlNGM5NzhjZjNmMmU0ZTc5
MTZkMzFkODMwNTBhYWYzNmY0MmFjY2MuLmM4MjMxMTQ2N2JkYTVhYTdiNTc5NDMwOGNiZGE2ZTgx
OGEwYTQxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMKQEAgLTQwLDYgKzQwLDcgQEAgdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0ID0ge307CiAgICAgdGhpcy5faWRUb09i
amVjdEdyb3VwTmFtZSA9IHt9OwogICAgIHRoaXMuX29iamVjdEdyb3VwcyA9IHt9OworICAgIHRo
aXMuX21vZHVsZXMgPSB7fTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQucHJpbWl0aXZlVHlwZXMgPSB7
CkBAIC00MTEsNiArNDEyLDE5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICB9LAogCisgICAgZ2V0TW9kdWxlOiBmdW5jdGlvbihuYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21vZHVsZXNbbmFtZV07CisgICAgfSwKKwor
ICAgIGluamVjdE1vZHVsZTogZnVuY3Rpb24obmFtZSwgc291cmNlKQorICAgIHsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX21vZHVsZXNbbmFtZV07CisgICAgICAgIHZhciBtb2R1bGUgPSBldmFsKCIo
IiArIHNvdXJjZSArICIpIik7CisgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBtb2R1bGU7
CisgICAgICAgIHJldHVybiBtb2R1bGU7CisgICAgfSwKKwogICAgIF9pc0RlZmluZWQ6IGZ1bmN0
aW9uKG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBvYmplY3QgfHwgdGhpcy5faXNIVE1M
QWxsQ29sbGVjdGlvbihvYmplY3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148243</attachid>
            <date>2012-06-18 21:42:50 -0700</date>
            <delta_ts>2012-06-19 12:21:03 -0700</delta_ts>
            <desc>=Another API proposal</desc>
            <filename>bug-89107-20120618214249.patch</filename>
            <type>text/plain</type>
            <size>9730</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAzNGY5ZTVjNGQ2MjM2
N2MwMDhmMzEzODZiOTBlZDc5MTk5NTQ5My4uMjNiMGQ5OWMyNWVjNDYwYWY3NzY5ZTNiMmIzNTky
YTA5ZjE1MDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA2LTE4ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIEluamVjdGVkU2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEwNworCisgICAg
ICAgIEFsbG93IG1vZHVsZSBpbmplY3Rpb25zIGludG8gdGhlIGphdmFzY3JpcHQgYmFja2VkIGJ5
IEluamVjdGVkU2NyaXB0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oOgorICAgICAgICAoU2NyaXB0T2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgIChTY3JpcHRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0Ojp+U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OmdldE1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0OjppbmplY3RNb2R1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorCiAyMDEyLTA2LTE4
ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICB3ZWJraXQg
ZmFpbHMgSUVUQyBib3JkZXItcmFkaXVzLWNsaXAtMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAxZmNkOWNiODAyNjM0OTA5N2FhNjJjMmQ4MTk1
MGUyMDJmMTM0MTVhLi4wY2ZiODJiNmU3MDExMWFiMzZmMTk4NmRmNjA2ZDhiYzI1YmUwZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAKQEAgLTUwLDYg
KzUwLDEyIEBAIFNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmpl
Y3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0YSgpLCBzY3JpcHRW
YWx1ZS5qc1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQoreworfQor
CiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQog
ewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBlYjAyZTliN2FkNTkwOTVkNGJmNDFlNmUy
NzViMjcxYjM3OWE1NGNjLi4yYzFhZTRkMzMzZDRmNWUzNTNlYTY0NjUwOGY0OWJkNGNlOWNhN2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaApAQCAtNDQsNyAr
NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0T2JqZWN0IDogcHVi
bGljIFNjcmlwdFZhbHVlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlwdE9iamVjdChTY3Jp
cHRTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0KCkge30KKyAg
ICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAg
ICAgICAgU2NyaXB0T2JqZWN0KCkgeyB9CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGpzT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCmluZGV4IDNkMzhhOWVl
Y2VmOTAwNGY0YTZmNmU1M2VhMDcyYjBmOGUyMmZiODYuLjAyNjZkZjQ4ZTlkYmU2MDAzNmYyMzAy
YWYzYzNmODA4ZjhlNzMyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmNwcApAQCAtNTEsNiArNTEsMTIgQEAgU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3Qo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2IKIHsK
IH0KIAorU2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3Jp
cHRWYWx1ZSkKKyAgICAsIG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCit7Cit9CisKIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBTY3JpcHRPYmplY3Q6OnY4T2JqZWN0KCkgY29uc3QKIHsKICAgICBB
U1NFUlQodjhWYWx1ZSgpLT5Jc09iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0T2JqZWN0LmgKaW5kZXggNDU0MWFiMDg4MzMzYTliMzRjMjIxODcwMWZhYTc4YjhmMzVj
YmViOC4uMWM0N2E2MGMwZjNlN2VlODg5Zjk5NjBmM2JkYTEwZjFhMWM4MjM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKQEAgLTQzLDggKzQzLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdE9iamVjdCA6IHB1YmxpYyBTY3JpcHRW
YWx1ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRl
KiwgY29uc3QgU2NyaXB0VmFsdWUmKTsKICAgICAgICAgU2NyaXB0T2JqZWN0KCkgOiBtX3Njcmlw
dFN0YXRlKDApIHsgfTsKLSAgICAgICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkge30KKyAgICAg
ICAgdmlydHVhbCB+U2NyaXB0T2JqZWN0KCkgeyB9CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IHY4T2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDQxNGMyMmY4OWYzYmM0MjFhYzAxOGVmNDM4
ODgyYjk4MmMzZTFlMmYuLjlkNTAwZTFiODc0MGFkMjcyMDg4MjcwNTk4ZWFmYjY3ZTkxODUyYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjQ2LDYgKzI0Niw1NiBAQCBib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3coKSBjb25zdAogICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9p
bmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKIH0KIAorYm9vbCBJbmplY3RlZFNj
cmlwdDo6aGFzTW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBTY3JpcHRW
YWx1ZSB2YWx1ZSA9IG1vZHVsZShuYW1lKTsKKyAgICByZXR1cm4gIXZhbHVlLmhhc05vVmFsdWUo
KSAmJiB2YWx1ZS5pc09iamVjdCgpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0OjppbmplY3RN
b2R1bGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBB
U1NFUlQoIWhhc05vVmFsdWUoKSk7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3QsICJpbmplY3RNb2R1bGUiKTsKKyAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChuYW1lKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UpOwor
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIEFTU0VSVCghaGFkRXhjZXB0aW9u
KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdDo6bWFrZU1vZHVsZUNhbGwoY29uc3QgU3RyaW5n
JiBuYW1lLCBNb2R1bGVDYWxsJiBjYWxsKQoreworICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsK
KyAgICBTY3JpcHRWYWx1ZSBtb2R1bGVWYWx1ZSA9IG1vZHVsZShuYW1lKTsKKyAgICBpZiAobW9k
dWxlVmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFtb2R1bGVWYWx1ZS5pc09iamVjdCgpKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7Cisg
ICAgICAgIGNhbGwucmVzdWx0Q2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3Qoc2NyaXB0U3RhdGUoKSwgbW9kdWxl
VmFsdWUpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtb2R1bGVPYmplY3QsIGNh
bGwuZnVuY3Rpb25OYW1lKCkpOworICAgIGNhbGwudmlzaXRBcmd1bWVudHMoZnVuY3Rpb24pOwor
CisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQg
PSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Cisg
ICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOworICAgIGNhbGwucmVzdWx0Q2FsbGJhY2socmVzdWx0
KTsKK30KKworU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om1vZHVsZShjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOworICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAibW9kdWxlIik7Cisg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSk7CisKKyAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIEFTU0VSVCghaGFkRXhj
ZXB0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0VmFsdWU7Cit9CisKIFNjcmlwdFZhbHVlIEluamVj
dGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxs
JiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAogewogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbVNjcmlwdFN0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGY4MTQ1MTY3
NjNjYjc1ZTMwZmNlMmI2ZmFhNzE0Zjk2YjY1MmMxZWUuLjE3Njc5MTM1NDZhOWQzMTE1Yzk3NTMy
N2NiZWMxOTJhNTZkYjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOworY2xh
c3MgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjsKIGNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC0xMDAsMTIgKzEwMSwyNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJik7CiAgICAgU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9i
amVjdC5zY3JpcHRTdGF0ZSgpOyB9CiAKKyAgICBjbGFzcyBNb2R1bGVDYWxsIHsKKyAgICBwdWJs
aWM6CisgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgPSAwOworICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0QXJndW1lbnRzKFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXIm
KSA9IDA7CisgICAgICB2aXJ0dWFsIHZvaWQgcmVzdWx0Q2FsbGJhY2soU2NyaXB0VmFsdWUmKSA9
IDA7CisgICAgfTsKKworICAgIGJvb2wgaGFzTW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3Q7CisgICAgdm9pZCBpbmplY3RNb2R1bGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSk7CisgICAgdm9pZCBtYWtlTW9kdWxlQ2FsbChjb25zdCBTdHJpbmcmIG5hbWUs
IE1vZHVsZUNhbGwmKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgSW5qZWN0ZWRTY3JpcHQgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihTY3JpcHRTdGF0ZSopOwogICAg
IHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spKFNjcmlwdFN0YXRlKik7
CiAgICAgSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrKTsKIAogICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7CisgICAg
U2NyaXB0VmFsdWUgbW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgU2NyaXB0
VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJv
b2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7CiAgICAgdm9pZCBtYWtlQ2FsbChTY3JpcHRGdW5jdGlv
bkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogICAgIHZvaWQgbWFrZUV2
YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggYWU0Yzk3OGNmM2YyZTRlNzkxNmQzMWQ4MzA1MGFh
ZjM2ZjQyYWNjYy4uNTRlMTNhMTVkN2FiYTA4N2E2NTI5YWU3YTAzODEyM2Q3ZjgwZTk3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpA
QCAtNDAsNiArNDAsNyBAQCB2YXIgSW5qZWN0ZWRTY3JpcHQgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5faWRUb1dyYXBwZWRPYmplY3QgPSB7fTsKICAgICB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1l
ID0ge307CiAgICAgdGhpcy5fb2JqZWN0R3JvdXBzID0ge307CisgICAgdGhpcy5fbW9kdWxlcyA9
IHt9OwogfQogCiBJbmplY3RlZFNjcmlwdC5wcmltaXRpdmVUeXBlcyA9IHsKQEAgLTQxMSw2ICs0
MTIsMTggQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgIH0sCiAKKyAgICBtb2R1bGU6IGZ1bmN0aW9uKG5hbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fbW9kdWxlc1tuYW1lXTsKKyAgICB9LAorCisgICAgaW5qZWN0TW9kdWxl
OiBmdW5jdGlvbihuYW1lLCBzb3VyY2UpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fbW9k
dWxlc1tuYW1lXTsKKyAgICAgICAgdmFyIG1vZHVsZSA9IGV2YWwoIigiICsgc291cmNlICsgIiki
KTsKKyAgICAgICAgdGhpcy5fbW9kdWxlc1tuYW1lXSA9IG1vZHVsZTsKKyAgICB9LAorCiAgICAg
X2lzRGVmaW5lZDogZnVuY3Rpb24ob2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG9iamVj
dCB8fCB0aGlzLl9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iamVjdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148392</attachid>
            <date>2012-06-19 12:42:15 -0700</date>
            <delta_ts>2012-06-19 14:09:12 -0700</delta_ts>
            <desc>Removed irrelevant files and rebased.</desc>
            <filename>bug-89107-20120619124215.patch</filename>
            <type>text/plain</type>
            <size>34767</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2NjlmNmYwZWJmNTZh
NThmZmJmYzg3ZjFlY2Q3ZTllMGFkN2NkYS4uZDZkMjQzOTUxOTA2MGZmNzJjNDM2Yzg3M2QxMzk1
YWJmNTg1MzY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgSW5qZWN0ZWRTY3JpcHRCYXNlIGNsYXNzIGZyb20gdGhlIEluamVjdGVkU2Ny
aXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEw
NworCisgICAgICAgIEV4dHJhY3QgbWV0aG9kcyBmcm9tIHRoZSBJbmplY3RlZFNjcmlwdCB0aGF0
IGRvIG5vdCBkZXBlbmQgb24KKyAgICAgICAgdGhlIGNvbmNyZXRlIEluamVjdGVkU2NyaXB0U291
cmNlLmpzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBTZXJpYWxpemVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpm
aW5kT2JqZWN0QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVj
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RH
cm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFz
ZTo6bWFrZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
RXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6On5JbmplY3RlZFNjcmlwdEJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpoYXNOb1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisKIDIwMTItMDYtMTkgIEFiaGlzaGVrIEFyeWEg
IDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBSZW5kZXJJbmxpbmU6
OndpbGxCZURlc3Ryb3llZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzk3MWQzMDYyNzRmZWE5
MjAyOGUxYjA1NmI0ZjMxZDNiNGRiYTljOS4uNTQ4MWFhOWY5ZWY1ZDdjZGMwMmQxNzJiMWY3YWNm
MTQyZWU2Y2Y0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkzMCw2ICs5MzAsNyBAQCBTRVQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKICAgICBp
bnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAogICAgIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCAxZjE0MGY5OWIxMzQxNTUwNWRhMWQ0MWI0NzI0MDFhNWNj
OWU1MWU0Li41ZjVkMGIzNWI5ZTZjZDM3MGU3OGE1MjY2Njc4Njk3ODhlZGJlMWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2NTUsNiArMjY1NSw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBcCisJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMzA1MWU0M2Y5YjhlZDc0YTdiZmJmOTVhMjhl
ZDZkODU1YmZmNDI3Zi4uMGZkMTQxN2M3MmU2ZDY5NTc2OWVlYzYxMTE1ZjU5YjI0MWVhMzJkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC04OTEsNiArODkxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgXAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3Rv
cnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKKyAgICBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHAgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIFwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKQEAgLTIwMzgsNiArMjAzOSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oIFwKICAgICBpbnNw
ZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5oIFwKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggXAogICAgIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMGMyZThlM2UxMDk2ZDY3NjkzNjA2OGFjN2YwMWE2YjczZWM2OTA4YS4uY2Q2YzQ3ZWQ0
OWNjMjI2MWMxZmM2ZjU5ZmFmZjZlZmFhN2VmZTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjc2
NSw2ICsyNzY1LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0QmFzZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQwNmRkYWFh
MTQ2MmQ4OWNjNTFmOWYzZWQ2ZDhiZWU0ODljZWFkZWMuLjA0NTkwNTgyMzE5ZmMyOWM0YWUwNzg2
NDgxZDg5N2Y4YWU2YTAwYzcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC03MzMzMSw2ICs3MzMzMSwzMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVh
c2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rp
b258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXEluamVjdGVkU2NyaXB0QmFzZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWJiMzM1ZGQ1MGJjNDkzYTVi
Yzk5ZjUzZDk4NDRhZjI4ZTZhZWViZS4uNWYzY2I5NDRlMWY3NTA3Y2I3MDI3ZDdkMDk0YzQ1Y2Jh
YWI4OTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDQ2Myw2ICs0NDYzLDggQEAKIAkJQUEyMUVDQ0QwQUJGMEZDNjAwMkI4
MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJ
bWFnZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3NDBCMkIxNjc5
MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE0QzNBNzcwQjJCMTY3OTAw
MjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5o
ICovOyB9OworCQlBQUI2MDU0RTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYw
NTRBMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICovOyB9OworCQlB
QUI2MDU0RjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3
QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi87IH07CiAJCUFBRDc2NkVCMTU3RTUwMkYw
MEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNw
ZWN0b3JXZWJHTEFnZW50LmNwcCAqLzsgfTsKIAkJQUFENzY2RUMxNTdFNTAyRjAwRTg1NDIzIC8q
IEluc3BlY3RvcldlYkdMQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFn
ZW50LmggKi87IH07CiAJCUFBRDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJH
TEluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1
bWVudGF0aW9uLmggKi87IH07CkBAIC0xMTQ3Miw2ICsxMTQ3NCw4IEBACiAJCUFBNEMzQTc1MEIy
QjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
QTkwMzBGRTE1N0UxNkEwMDAyNzYyNDcgLyogSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkV2ViR0xTY3Jp
cHRTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBOTEyNzUwMTU3RTM1
QTUwMDQ1NEU1NCAvKiBJbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFCNjA1NEExNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUI2MDU0
QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xB
Z2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JX
ZWJHTEFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTkxNTdF
NTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViR0xBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJbnN0
cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
V2ViR0xJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
NDAxLDYgKzE0NDA1LDggQEAKIAkJCQk1OTEzQTI0MDEzRDQ5RUJBMDBGNUIwNUMgLyogSWRlbnRp
ZmllcnNGYWN0b3J5LmggKi8sCiAJCQkJRjM2NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVj
dGVkU2NyaXB0LmNwcCAqLywKIAkJCQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0
ZWRTY3JpcHQuaCAqLywKKwkJCQlBQUI2MDU0QTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRT
Y3JpcHRCYXNlLmNwcCAqLywKKwkJCQlBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0
ZWRTY3JpcHRCYXNlLmggKi8sCiAJCQkJN0EwRTc2RjYxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVj
dGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NkY4MTBCRjA4RUQwMEEwMjc2RSAvKiBJ
bmplY3RlZFNjcmlwdEhvc3QuaWRsICovLApAQCAtMjMzMTcsNiArMjMzMjMsNyBAQAogCQkJCTMx
NkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREIyM0MyQ0MwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzY0NEIwMDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0
ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBQjYwNTRGMTU4NzRDNTgwMDdCNTAzMSAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NkZBMTBCRjA4
RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUYz
MTYzOTZDMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guaCBpbiBI
ZWFkZXJzICovLApAQCAtMjY0NTQsNiArMjY0NjEsNyBAQAogCQkJCTMxNkZFMTE3MEU2RTFEQTcw
MEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQjIz
QzJDQjBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjM2NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUFBQjYwNTRFMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc2RjkxMEJGMDhFRDAwQTAy
NzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzE2Mzk2
QjEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4Q0ZGNUU2MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApp
bmRleCA0MTRjMjJmODlmM2JjNDIxYWMwMThlZjQzODg4MmI5ODJjM2UxZTJmLi40NTI3MmI4NmY5
MWNkZDBlYzlmMDBkMTcxYWUwNjU4ZDVlMmIzNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0LDE1ICszNCwxMiBAQAogCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHQuaCIKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgi
CisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIHVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lOwpAQCAtNTMsMTkgKzUwLDE3IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVk
U2NyaXB0OjpJbmplY3RlZFNjcmlwdCgpCi0gICAgOiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2soMCkKIHsKIH0KIAogSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVj
dCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3ND
aGVjaykKLSAgICA6IG1faW5qZWN0ZWRTY3JpcHRPYmplY3QoaW5qZWN0ZWRTY3JpcHRPYmplY3Qp
Ci0gICAgLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2spCisgICAgOiBJ
bmplY3RlZFNjcmlwdEJhc2UoaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGFjY2Vzc0NoZWNrKQogewog
fQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwg
Ym9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlIik7CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzUsNyArNzAsNyBAQCB2b2lkIEluamVjdGVkU2Ny
aXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbgogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImNhbGxGdW5jdGlvbk9uIik7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJj
YWxsRnVuY3Rpb25PbiIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChhcmd1bWVudHMpOwpAQCAtODUsNyArODAsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOworICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZh
bHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFt
ZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKQEAgLTExNyw3ICsxMTIsNyBAQCB2b2lk
IEluamVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTY3JpcHRWYWx1ZSYgYwogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRl
dGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQs
IFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRGdW5jdGlvbkRldGFpbHMi
KTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZ1
bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CiAgICAg
bWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0xMzEsNyArMTI2LDcgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBv
d25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNjcmlwdG9yPiA+KiBwcm9wZXJ0
aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0
T2JqZWN0LCAiZ2V0UHJvcGVydGllcyIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGllcyIpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChv
d25Qcm9wZXJ0aWVzKTsKIApAQCAtMTQ5LDcgKzE0NCw3IEBAIE5vZGUqIEluamVjdGVkU2NyaXB0
Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKICAgICBpZiAoaGFzTm9W
YWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVj
dCwgIm5vZGVGb3JPYmplY3RJZCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZvck9iamVjdElkIik7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxz
ZTsKQEAgLTE2MSw3ICsxNTYsNyBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdDo6bm9kZUZvck9iamVj
dElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVh
c2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVhc2VPYmplY3QiKTsKKyAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJl
bGVhc2VPYmplY3QiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAg
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24s
ICZyZXN1bHQpOwpAQCAtMTcxLDEyICsxNjYsMTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVs
ZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogUGFzc1JlZlB0cjxBcnJheTxDYWxs
RnJhbWU+ID4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVl
JiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgIndyYXBDYWxsRnJh
bWVzIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNh
bGxGcmFtZXMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgU2NyaXB0VmFs
dWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9u
LCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVl
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CisgICAgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShzY3Jp
cHRTdGF0ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5
cGVBcnJheSkKICAgICAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OnJ1bnRpbWVDYXN0KHJl
c3VsdCk7CiAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OmNyZWF0ZSgpOwpAQCAtMTg2LDcg
KzE4MSw3IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IEluamVjdGVkU2NyaXB0Ojp3
cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoU2NyaXB0
VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdAogewogICAgIEFTU0VS
VCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwT2JqZWN0Iik7CisgICAgU2NyaXB0RnVuY3Rpb25D
YWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCIpOwog
ICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKQEAgLTE5NSw3ICsxOTAsNyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0
Ojp3cmFwT2JqZWN0KFNjcmlwdAogICAgIGlmIChoYWRFeGNlcHRpb24pIHsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIu
dG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpLT5h
c09iamVjdCgpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIudG9J
bnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3QocmF3UmVzdWx0KTsK
IH0KIApAQCAtMjA2LDE0ICsyMDEsMTQgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUoTm9kZSogbm8KIAogUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlw
dDo6d3JhcFNlcmlhbGl6ZWRPYmplY3QoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25zdAogewotICAgIFNjcmlw
dFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kZXNlcmlhbGl6ZUZv
ckluc3BlY3RvcihtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOworICAgIFNj
cmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kZXNlcmlhbGl6
ZUZvckluc3BlY3RvcihzY3JpcHRTdGF0ZSgpKTsKICAgICByZXR1cm4gc2NyaXB0VmFsdWUuaGFz
Tm9WYWx1ZSgpID8gMCA6IHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdyb3VwTmFtZSk7CiB9CiAK
IFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcm
IG9iamVjdElkKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImZpbmRPYmpl
Y3RCeUlkIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CkBAIC0yMjUsNyAr
MjIwLDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RCeUlkKGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9k
ZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImluc3BlY3ROb2Rl
Iik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJpbnNwZWN0Tm9kZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5vZGVBc1Nj
cmlwdFZhbHVlKG5vZGUpKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAg
ICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0yMzQsOTAgKzIyOSwxNiBAQCB2b2lk
IEluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZShOb2RlKiBub2RlKQogdm9pZCBJbmplY3RlZFNj
cmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAg
ICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNl
RnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVhc2VPYmplY3RHcm91cCIpOwor
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgInJlbGVhc2VPYmplY3RHcm91cCIpOwogICAgIHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAg
ICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVsZWFzZUZ1bmN0aW9uLCBoYWRFeGNlcHRp
b24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIH0KIAotYm9vbCBJbmplY3RlZFNjcmlw
dDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7Ci19Ci0KLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9vbCYgaGFkRXhjZXB0aW9u
KSBjb25zdAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlwdFN0YXRlKG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlv
bihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAiSW5qZWN0ZWRTY3JpcHQiLCAxKTsKLQotICAgIFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3Rh
dGUoKTsKLSAgICBib29sIGV2YWxJc0Rpc2FibGVkID0gZmFsc2U7Ci0gICAgaWYgKHNjcmlwdFN0
YXRlKSB7Ci0gICAgICAgIGV2YWxJc0Rpc2FibGVkID0gIWV2YWxFbmFibGVkKHNjcmlwdFN0YXRl
KTsKLSAgICAgICAgLy8gVGVtcG9yYXJpbHkgZW5hYmxlIGFsbG93IGV2YWxzIGZvciBpbnNwZWN0
b3IuCi0gICAgICAgIGlmIChldmFsSXNEaXNhYmxlZCkKLSAgICAgICAgICAgIHNldEV2YWxFbmFi
bGVkKHNjcmlwdFN0YXRlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBTY3JpcHRWYWx1ZSByZXN1bHRW
YWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKLQotICAgIGlmIChldmFsSXNEaXNh
YmxlZCkKLSAgICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0U3RhdGUsIGZhbHNlKTsKLQotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSk7Ci0gICAg
cmV0dXJuIHJlc3VsdFZhbHVlOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0OjptYWtlQ2FsbChT
Y3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpCi17Ci0gICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93
KCkpIHsKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIFNj
cmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwotCi0gICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwotICAgIGlm
ICghaGFkRXhjZXB0aW9uKSB7Ci0gICAgICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS50b0luc3Bl
Y3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Ci0gICAgICAg
IGlmICghKnJlc3VsdCkKLSAgICAgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNy
ZWF0ZShTdHJpbmc6OmZvcm1hdCgiT2JqZWN0IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4o
bXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gJWQpIiwgSW5zcGVjdG9yVmFsdWU6Om1heERlcHRoKSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSgi
RXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24p
Ci17Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7Ci0gICAgbWFrZUNhbGwoZnVu
Y3Rpb24sICZyZXN1bHQpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5IjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5
cGVTdHJpbmcpIHsKLSAgICAgICAgcmVzdWx0LT5hc1N0cmluZyhlcnJvclN0cmluZyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0UGFp
ciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKLSAgICBpZiAoIXJlc3VsdFBhaXIpIHsKLSAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGFuIE9iamVjdCI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KCJyZXN1bHQiKTsKLSAgICBib29sIHdhc1Ro
cm93blZhbCA9IGZhbHNlOwotICAgIGlmICghcmVzdWx0T2JqIHx8ICFyZXN1bHRQYWlyLT5nZXRC
b29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3duVmFsKSkgewotICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3
YXNUaHJvd24gZmxhZyI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKm9iamVjdFJlc3Vs
dCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3Vs
dE9iaik7Ci0gICAgKndhc1Rocm93biA9IHdhc1Rocm93blZhbDsKLX0KLQogU2NyaXB0VmFsdWUg
SW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUobV9pbmplY3RlZFNjcmlw
dE9iamVjdC5zY3JpcHRTdGF0ZSgpLCBub2RlKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRI
b3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2RlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aAppbmRleCBmODE0NTE2NzYzY2I3NWUzMGZjZTJiNmZhYTcxNGY5NmI2NTJjMWVlLi5hYTljODNl
ODU3NWM3NGI3NmQ5ZmUwM2QwNjlkMTY4NDMwNzM1YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBJbmpl
Y3RlZFNjcmlwdF9oCiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gKIAorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0QmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CkBAIC00MSwyMyArNDIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNw
ZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclZhbHVl
OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsKLQotdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbmplY3RlZFNjcmlwdCB7CitjbGFzcyBJbmplY3RlZFNj
cmlwdCA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAgIEluamVjdGVk
U2NyaXB0KCk7CiAgICAgfkluamVjdGVkU2NyaXB0KCkgeyB9CiAKLSAgICBib29sIGhhc05vVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsg
fQotCiAgICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLApAQCAtOTgsMjEgKzkyLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5z
cGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmlu
ZyYpOwotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9y
KFNjcmlwdFN0YXRlKik7Ci0gICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3ND
aGVjaykoU2NyaXB0U3RhdGUqKTsKICAgICBJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QsIElu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3coKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdDsKLSAgICB2
b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4q
IHJlc3VsdCk7Ci0gICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRGdW5j
dGlvbkNhbGwmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJl
c3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICBTY3Jp
cHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7Ci0KLSAgICBTY3JpcHRPYmplY3QgbV9p
bmplY3RlZFNjcmlwdE9iamVjdDsKLSAgICBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIG1faW5z
cGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTg3OGFiMTc0
ZGFiYjdhY2QwZjRmYWJiNGM5YmM3OTdkNWRhYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTAsMCArMSwxMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorCit1c2luZyBXZWJD
b3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0luamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKCkKKyAgICA6
IG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygwKQoreworfQorCitJbmplY3RlZFNjcmlwdEJh
c2U6OkluamVjdGVkU2NyaXB0QmFzZShTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3Qs
IEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCisgICAgOiBtX2luamVjdGVk
U2NyaXB0T2JqZWN0KGluamVjdGVkU2NyaXB0T2JqZWN0KQorICAgICwgbV9pbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQoreworfQorCitib29sIEluamVjdGVkU2NyaXB0QmFz
ZTo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KSk7Cit9CisKK2NvbnN0IFNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3Rl
ZFNjcmlwdE9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Q7Cit9CisKK1NjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4Y2Vw
dGlvbikgY29uc3QKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21TY3JpcHRTdGF0ZShtX2luamVj
dGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVu
Y3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIkluamVjdGVkU2NyaXB0IiwgMSk7CisKKyAg
ICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlw
dFN0YXRlKCk7CisgICAgYm9vbCBldmFsSXNEaXNhYmxlZCA9IGZhbHNlOworICAgIGlmIChzY3Jp
cHRTdGF0ZSkgeworICAgICAgICBldmFsSXNEaXNhYmxlZCA9ICFldmFsRW5hYmxlZChzY3JpcHRT
dGF0ZSk7CisgICAgICAgIC8vIFRlbXBvcmFyaWx5IGVuYWJsZSBhbGxvdyBldmFscyBmb3IgaW5z
cGVjdG9yLgorICAgICAgICBpZiAoZXZhbElzRGlzYWJsZWQpCisgICAgICAgICAgICBzZXRFdmFs
RW5hYmxlZChzY3JpcHRTdGF0ZSwgdHJ1ZSk7CisgICAgfQorCisgICAgU2NyaXB0VmFsdWUgcmVz
dWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7CisKKyAgICBpZiAoZXZhbElz
RGlzYWJsZWQpCisgICAgICAgIHNldEV2YWxFbmFibGVkKHNjcmlwdFN0YXRlLCBmYWxzZSk7CisK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUpOwor
ICAgIHJldHVybiByZXN1bHRWYWx1ZTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1h
a2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCkKK3sKKyAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3coKSkgeworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJs
ZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisKKyAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7
CisgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKKyAgICAgICAgKnJlc3VsdCA9IHJlc3VsdFZhbHVl
LnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
KyAgICAgICAgaWYgKCEqcmVzdWx0KQorICAgICAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0
cmluZzo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJPYmplY3QgaGFzIHRvbyBsb25nIHJlZmVyZW5j
ZSBjaGFpbihtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAlZCkiLCBJbnNwZWN0b3JWYWx1ZTo6bWF4
RGVwdGgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6
Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKK30KKwordm9pZCBJbmpl
Y3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNj
cmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pCit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CisgICAg
bWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
ICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5IjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVj
dG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAgICAgcmVzdWx0LT5hc1N0cmluZyhlcnJvclN0
cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKKyAgICBpZiAoIXJlc3VsdFBhaXIp
IHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90
IGFuIE9iamVjdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KCJyZXN1bHQiKTsKKyAg
ICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNlOworICAgIGlmICghcmVzdWx0T2JqIHx8ICFyZXN1
bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3duVmFsKSkgeworICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9m
IHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Km9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRp
bWVDYXN0KHJlc3VsdE9iaik7CisgICAgKndhc1Rocm93biA9IHdhc1Rocm93blZhbDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOGQ1NDVlZjkyZmIzNzZkMzFjZTI4MjdkNmIxYTA3MmE4ZjI3YTkzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCkBAIC0w
LDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkU2NyaXB0QmFzZV9oCisjZGVmaW5lIEluamVjdGVk
U2NyaXB0QmFzZV9oCisKKyNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3RvclZh
bHVlOworY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOworCit0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK2NsYXNzIEluamVjdGVkU2NyaXB0QmFz
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5qZWN0ZWRTY3JpcHRCYXNlKCkgeyB9CisKKyAg
ICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0
Lmhhc05vVmFsdWUoKTsgfQorICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQorCitwcm90ZWN0
ZWQ6CisgICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0
U3RhdGUqKTsKKyAgICBJbmplY3RlZFNjcmlwdEJhc2UoKTsKKyAgICBJbmplY3RlZFNjcmlwdEJh
c2UoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKworICAgIGJvb2wg
Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7CisgICAgY29uc3QgU2NyaXB0T2JqZWN0
JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OworICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRp
b24pIGNvbnN0OworICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0
cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pOworCitwcml2YXRlOgorICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0OworICAgIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrOworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAppbmRl
eCBiZTkyYTEzZmM3YjNjZDg1NjEzNjM4ZTYxODg3N2M4MmZiMmMzOWFjLi4yNmJiYTJhZWM5Zjlk
OWIwZWRkNmE4OTVlODgyN2M0ZWVmMDhkNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJE
T01QYXRjaFN1cHBvcnQuY3BwIgogI2luY2x1ZGUgIklkZW50aWZpZXJzRmFjdG9yeS5jcHAiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuY3BwIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFz
ZS5jcHAiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmNwcCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148417</attachid>
            <date>2012-06-19 14:09:17 -0700</date>
            <delta_ts>2012-06-19 15:56:13 -0700</delta_ts>
            <desc>Rebased patch to land.</desc>
            <filename>bug-89107-20120619140917.patch</filename>
            <type>text/plain</type>
            <size>35297</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2NjlmNmYwZWJmNTZh
NThmZmJmYzg3ZjFlY2Q3ZTllMGFkN2NkYS4uZDZkMjQzOTUxOTA2MGZmNzJjNDM2Yzg3M2QxMzk1
YWJmNTg1MzY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgSW5qZWN0ZWRTY3JpcHRCYXNlIGNsYXNzIGZyb20gdGhlIEluamVjdGVkU2Ny
aXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEw
NworCisgICAgICAgIEV4dHJhY3QgbWV0aG9kcyBmcm9tIHRoZSBJbmplY3RlZFNjcmlwdCB0aGF0
IGRvIG5vdCBkZXBlbmQgb24KKyAgICAgICAgdGhlIGNvbmNyZXRlIEluamVjdGVkU2NyaXB0U291
cmNlLmpzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBTZXJpYWxpemVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpm
aW5kT2JqZWN0QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVj
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RH
cm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFz
ZTo6bWFrZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
RXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6On5JbmplY3RlZFNjcmlwdEJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpoYXNOb1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisKIDIwMTItMDYtMTkgIEFiaGlzaGVrIEFyeWEg
IDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBSZW5kZXJJbmxpbmU6
OndpbGxCZURlc3Ryb3llZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzk3MWQzMDYyNzRmZWE5
MjAyOGUxYjA1NmI0ZjMxZDNiNGRiYTljOS4uNTQ4MWFhOWY5ZWY1ZDdjZGMwMmQxNzJiMWY3YWNm
MTQyZWU2Y2Y0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkzMCw2ICs5MzAsNyBAQCBTRVQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKICAgICBp
bnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5jcHAKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAogICAgIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCAxZjE0MGY5OWIxMzQxNTUwNWRhMWQ0MWI0NzI0MDFhNWNj
OWU1MWU0Li41ZjVkMGIzNWI5ZTZjZDM3MGU3OGE1MjY2Njc4Njk3ODhlZGJlMWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI2NTUsNiArMjY1NSw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBcCisJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMzA1MWU0M2Y5YjhlZDc0YTdiZmJmOTVhMjhl
ZDZkODU1YmZmNDI3Zi4uMGZkMTQxN2M3MmU2ZDY5NTc2OWVlYzYxMTE1ZjU5YjI0MWVhMzJkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC04OTEsNiArODkxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgXAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3Rv
cnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKKyAgICBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHAgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIFwKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKQEAgLTIwMzgsNiArMjAzOSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oIFwKICAgICBpbnNw
ZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5oIFwKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggXAogICAgIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdEhvc3QuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMGMyZThlM2UxMDk2ZDY3NjkzNjA2OGFjN2YwMWE2YjczZWM2OTA4YS4uY2Q2YzQ3ZWQ0
OWNjMjI2MWMxZmM2ZjU5ZmFmZjZlZmFhN2VmZTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjc2
NSw2ICsyNzY1LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0QmFzZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQwNmRkYWFh
MTQ2MmQ4OWNjNTFmOWYzZWQ2ZDhiZWU0ODljZWFkZWMuLjA0NTkwNTgyMzE5ZmMyOWM0YWUwNzg2
NDgxZDg5N2Y4YWU2YTAwYzcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC03MzMzMSw2ICs3MzMzMSwzMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVh
c2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rp
b258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXEluamVjdGVkU2NyaXB0QmFzZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWJiMzM1ZGQ1MGJjNDkzYTVi
Yzk5ZjUzZDk4NDRhZjI4ZTZhZWViZS4uNWYzY2I5NDRlMWY3NTA3Y2I3MDI3ZDdkMDk0YzQ1Y2Jh
YWI4OTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDQ2Myw2ICs0NDYzLDggQEAKIAkJQUEyMUVDQ0QwQUJGMEZDNjAwMkI4
MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJ
bWFnZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3NDBCMkIxNjc5
MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE0QzNBNzcwQjJCMTY3OTAw
MjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5o
ICovOyB9OworCQlBQUI2MDU0RTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYw
NTRBMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICovOyB9OworCQlB
QUI2MDU0RjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3
QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi87IH07CiAJCUFBRDc2NkVCMTU3RTUwMkYw
MEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNw
ZWN0b3JXZWJHTEFnZW50LmNwcCAqLzsgfTsKIAkJQUFENzY2RUMxNTdFNTAyRjAwRTg1NDIzIC8q
IEluc3BlY3RvcldlYkdMQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFn
ZW50LmggKi87IH07CiAJCUFBRDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJH
TEluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1
bWVudGF0aW9uLmggKi87IH07CkBAIC0xMTQ3Miw2ICsxMTQ3NCw4IEBACiAJCUFBNEMzQTc1MEIy
QjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
QTkwMzBGRTE1N0UxNkEwMDAyNzYyNDcgLyogSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkV2ViR0xTY3Jp
cHRTb3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBOTEyNzUwMTU3RTM1
QTUwMDQ1NEU1NCAvKiBJbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFCNjA1NEExNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUI2MDU0
QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xB
Z2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JX
ZWJHTEFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTkxNTdF
NTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViR0xBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJbnN0
cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
V2ViR0xJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0
NDAxLDYgKzE0NDA1LDggQEAKIAkJCQk1OTEzQTI0MDEzRDQ5RUJBMDBGNUIwNUMgLyogSWRlbnRp
ZmllcnNGYWN0b3J5LmggKi8sCiAJCQkJRjM2NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVj
dGVkU2NyaXB0LmNwcCAqLywKIAkJCQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0
ZWRTY3JpcHQuaCAqLywKKwkJCQlBQUI2MDU0QTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRT
Y3JpcHRCYXNlLmNwcCAqLywKKwkJCQlBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0
ZWRTY3JpcHRCYXNlLmggKi8sCiAJCQkJN0EwRTc2RjYxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVj
dGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NkY4MTBCRjA4RUQwMEEwMjc2RSAvKiBJ
bmplY3RlZFNjcmlwdEhvc3QuaWRsICovLApAQCAtMjMzMTcsNiArMjMzMjMsNyBAQAogCQkJCTMx
NkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREIyM0MyQ0MwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzY0NEIwMDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0
ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBQjYwNTRGMTU4NzRDNTgwMDdCNTAzMSAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NkZBMTBCRjA4
RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUYz
MTYzOTZDMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guaCBpbiBI
ZWFkZXJzICovLApAQCAtMjY0NTQsNiArMjY0NjEsNyBAQAogCQkJCTMxNkZFMTE3MEU2RTFEQTcw
MEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQjIz
QzJDQjBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjM2NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUFBQjYwNTRFMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwRTc2RjkxMEJGMDhFRDAwQTAy
NzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzE2Mzk2
QjEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4Q0ZGNUU2MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApp
bmRleCA0MTRjMjJmODlmM2JjNDIxYWMwMThlZjQzODg4MmI5ODJjM2UxZTJmLi5jZWVlMzYyNGI1
YjM3Y2RlMDM4YzYxZTk3OTFmZGFhN2EzZGQ2NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0LDE1ICszNCwxMiBAQAogCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHQuaCIKIAotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgi
CisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIHVzaW5nIFdlYkNvcmU6OlR5
cGVCdWlsZGVyOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lOwpAQCAtNTMsMTkgKzUwLDE3IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluamVjdGVk
U2NyaXB0OjpJbmplY3RlZFNjcmlwdCgpCi0gICAgOiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2soMCkKIHsKIH0KIAogSW5qZWN0ZWRTY3JpcHQ6OkluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVj
dCBpbmplY3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3ND
aGVjaykKLSAgICA6IG1faW5qZWN0ZWRTY3JpcHRPYmplY3QoaW5qZWN0ZWRTY3JpcHRPYmplY3Qp
Ci0gICAgLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2spCisgICAgOiBJ
bmplY3RlZFNjcmlwdEJhc2UoaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGFjY2Vzc0NoZWNrKQogewog
fQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwg
Ym9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlIik7CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSIpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChp
bmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzUsNyArNzAsNyBAQCB2b2lkIEluamVjdGVkU2Ny
aXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbgogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImNhbGxGdW5jdGlvbk9uIik7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJj
YWxsRnVuY3Rpb25PbiIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChhcmd1bWVudHMpOwpAQCAtODUsNyArODAsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0
dXJuQnlWYWx1ZSwgUmVmUHRyPFJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVhdGVPbkNhbGxGcmFtZSIpOworICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZh
bHVhdGVPbkNhbGxGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFt
ZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZUlkKTsKICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKQEAgLTk3LDcgKzkyLDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFNjcmlwdFYKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNv
bnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQp
CiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QsICJyZXN0YXJ0RnJhbWUiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlc3RhcnRGcmFtZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxG
cmFtZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOwpAQCAtMTE3
LDcgKzExMiw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlc3RhcnRGcmFtZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjCiAKIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImdl
dEZ1bmN0aW9uRGV0YWlscyIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBy
ZXN1bHRWYWx1ZTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKQEAgLTEz
MSw3ICsxMjYsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJheTxQcm9wZXJ0eURlc2Ny
aXB0b3I+ID4qIHByb3BlcnRpZXMpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRQcm9wZXJ0aWVzIik7CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcm9wZXJ0aWVz
Iik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG93blByb3BlcnRpZXMpOwogCkBAIC0xNDksNyArMTQ0LDcgQEAgTm9k
ZSogSW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iamVjdElk
KQogICAgIGlmIChoYXNOb1ZhbHVlKCkgfHwgIWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2lu
amVjdGVkU2NyaXB0T2JqZWN0LCAibm9kZUZvck9iamVjdElkIik7CisgICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJub2RlRm9yT2JqZWN0SWQi
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBib29sIGhh
ZEV4Y2VwdGlvbiA9IGZhbHNlOwpAQCAtMTYxLDcgKzE1Niw3IEBAIE5vZGUqIEluamVjdGVkU2Ny
aXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAicmVs
ZWFzZU9iamVjdCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdCIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG9iamVjdElkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsKICAgICBt
YWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0xNzEsMTIgKzE2NiwxMiBAQCB2b2lkIElu
amVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiBQYXNz
UmVmUHRyPEFycmF5PENhbGxGcmFtZT4gPiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMo
Y29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVl
KCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAid3JhcENhbGxGcmFtZXMiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIik7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxz
ZTsKICAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVzVmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZh
bEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRp
b24pOwotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gY2FsbEZyYW1lc1ZhbHVl
LnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0lu
c3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJ
bnNwZWN0b3JWYWx1ZTo6VHlwZUFycmF5KQogICAgICAgICByZXR1cm4gQXJyYXk8Q2FsbEZyYW1l
Pjo6cnVudGltZUNhc3QocmVzdWx0KTsKICAgICByZXR1cm4gQXJyYXk8Q2FsbEZyYW1lPjo6Y3Jl
YXRlKCk7CkBAIC0xODYsNyArMTgxLDcgQEAgUGFzc1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+ID4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0IFNjcmlwdFZhbHVlJgogUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6
d3JhcE9iamVjdChTY3JpcHRWYWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCB3cmFwRnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgIndyYXBPYmplY3QiKTsKKyAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJ3cmFwT2JqZWN0Iik7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsK
ICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ3JvdXBOYW1lKTsKICAgICB3cmFwRnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkpOwpAQCAtMTk1
LDcgKzE5MCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoU2NyaXB0CiAgICAgaWYgKGhhZEV4Y2VwdGlv
bikgewogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmF3UmVzdWx0ID0gci50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKSktPmFzT2JqZWN0KCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmF3UmVzdWx0ID0gci50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgp
OwogICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0OjpydW50aW1l
Q2FzdChyYXdSZXN1bHQpOwogfQogCkBAIC0yMDYsMTQgKzIwMSwxNCBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwTm9k
ZShOb2RlKiBubwogCiBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwU2VyaWFsaXplZE9iamVjdChTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUpIGNv
bnN0CiB7Ci0gICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBzZXJpYWxpemVkU2NyaXB0VmFs
dWUtPmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0
U3RhdGUoKSk7CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBzZXJpYWxpemVkU2NyaXB0
VmFsdWUtPmRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKHNjcmlwdFN0YXRlKCkpOwogICAgIHJldHVy
biBzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkgPyAwIDogd3JhcE9iamVjdChzY3JpcHRWYWx1ZSwg
Z3JvdXBOYW1lKTsKIH0KIAogU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmplY3RC
eUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1Zh
bHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0
T2JqZWN0LCAiZmluZE9iamVjdEJ5SWQiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RCeUlkIik7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBm
YWxzZTsKQEAgLTIyNSw3ICsyMjAsNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6Zmlu
ZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVl
KCkpOwotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2Jq
ZWN0LCAiaW5zcGVjdE5vZGUiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluc3BlY3ROb2RlIik7CiAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQobm9kZUFzU2NyaXB0VmFsdWUobm9kZSkpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gcmVzdWx0OwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0KTsKQEAgLTIzNCw5
MCArMjI5LDE2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3ROb2RlKE5vZGUqIG5vZGUp
CiB2b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAicmVsZWFz
ZU9iamVjdEdyb3VwIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlbGVhc2VGdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3VwIik7CiAgICAgcmVsZWFz
ZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOwogICAgIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChyZWxlYXNlRnVu
Y3Rpb24sIGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogfQogCi1i
b29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdAotewot
ICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9pbmplY3RlZFNjcmlwdE9i
amVjdC5zY3JpcHRTdGF0ZSgpKTsKLX0KLQotU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmNh
bGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBi
b29sJiBoYWRFeGNlcHRpb24pIGNvbnN0Ci17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tU2NyaXB0
U3RhdGUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ2FsbEZ1bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICJJbmplY3RlZFNjcmlw
dCIsIDEpOwotCi0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbV9pbmplY3RlZFNjcmlw
dE9iamVjdC5zY3JpcHRTdGF0ZSgpOwotICAgIGJvb2wgZXZhbElzRGlzYWJsZWQgPSBmYWxzZTsK
LSAgICBpZiAoc2NyaXB0U3RhdGUpIHsKLSAgICAgICAgZXZhbElzRGlzYWJsZWQgPSAhZXZhbEVu
YWJsZWQoc2NyaXB0U3RhdGUpOwotICAgICAgICAvLyBUZW1wb3JhcmlseSBlbmFibGUgYWxsb3cg
ZXZhbHMgZm9yIGluc3BlY3Rvci4KLSAgICAgICAgaWYgKGV2YWxJc0Rpc2FibGVkKQotICAgICAg
ICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0U3RhdGUsIHRydWUpOwotICAgIH0KLQotICAgIFNj
cmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOwotCi0g
ICAgaWYgKGV2YWxJc0Rpc2FibGVkKQotICAgICAgICBzZXRFdmFsRW5hYmxlZChzY3JpcHRTdGF0
ZSwgZmFsc2UpOwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rp
b24oY29va2llKTsKLSAgICByZXR1cm4gcmVzdWx0VmFsdWU7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCkKLXsKLSAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nl
c3NJbnNwZWN0ZWRXaW5kb3coKSkgewotICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6
Om51bGwoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgaGFkRXhjZXB0aW9u
ID0gZmFsc2U7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rpb25XaXRo
RXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7Ci0KLSAgICBBU1NFUlQoIWhhZEV4
Y2VwdGlvbik7Ci0gICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKLSAgICAgICAgKnJlc3VsdCA9IHJl
c3VsdFZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRT
dGF0ZSgpKTsKLSAgICAgICAgaWYgKCEqcmVzdWx0KQotICAgICAgICAgICAgKnJlc3VsdCA9IElu
c3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJPYmplY3QgaGFzIHRvbyBsb25n
IHJlZmVyZW5jZSBjaGFpbihtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAlZCkiLCBJbnNwZWN0b3JW
YWx1ZTo6bWF4RGVwdGgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rv
clN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKLX0KLQot
dm9pZCBJbmplY3RlZFNjcmlwdDo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsK
LSAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgdmFsdWUgaXMgZW1w
dHkiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJ
bnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZykgewotICAgICAgICByZXN1bHQtPmFzU3RyaW5nKGVy
cm9yU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHRQYWlyID0gcmVzdWx0LT5hc09iamVjdCgpOwotICAgIGlmICghcmVzdWx0
UGFpcikgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBp
cyBub3QgYW4gT2JqZWN0IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHRPYmogPSByZXN1bHRQYWlyLT5nZXRPYmplY3QoInJlc3VsdCIp
OwotICAgIGJvb2wgd2FzVGhyb3duVmFsID0gZmFsc2U7Ci0gICAgaWYgKCFyZXN1bHRPYmogfHwg
IXJlc3VsdFBhaXItPmdldEJvb2xlYW4oIndhc1Rocm93biIsICZ3YXNUaHJvd25WYWwpKSB7Ci0g
ICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IGlzIG5vdCBhIHBh
aXIgb2YgdmFsdWUgYW5kIHdhc1Rocm93biBmbGFnIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAqb2JqZWN0UmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6
cnVudGltZUNhc3QocmVzdWx0T2JqKTsKLSAgICAqd2FzVGhyb3duID0gd2FzVGhyb3duVmFsOwot
fQotCiBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUoTm9kZSog
bm9kZSkKIHsKLSAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1
ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCksIG5vZGUpOworICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKHNjcmlwdFN0YXRlKCksIG5v
ZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGY4MTQ1MTY3NjNjYjc1ZTMwZmNlMmI2ZmFhNzE0Zjk2
YjY1MmMxZWUuLmFhOWM4M2U4NTc1Yzc0Yjc2ZDlmZTAzZDA2OWQxNjg0MzA3MzVhYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSw2ICszMSw3
IEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0X2gKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRfaAog
CisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKICNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKQEAgLTQxLDIzICs0MiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xh
c3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxs
OwotCi10eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLWNsYXNzIEluamVjdGVkU2NyaXB0IHsK
K2NsYXNzIEluamVjdGVkU2NyaXB0IDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CiBwdWJs
aWM6CiAgICAgSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB+SW5qZWN0ZWRTY3JpcHQoKSB7IH0KIAot
ICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3QuaGFzTm9WYWx1ZSgpOyB9Ci0KICAgICB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nKiwKICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsCkBAIC05OCwyMSArOTIsMTIgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBpbnNwZWN0Tm9kZShOb2RlKik7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0
R3JvdXAoY29uc3QgU3RyaW5nJik7Ci0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqKTsKLSAgICB0eXBlZGVmIGJvb2wgKCpJbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShTY3JpcHRTdGF0ZSopOwogICAgIEluamVjdGVkU2NyaXB0
KFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CiAKLSAgICBib29sIGNh
bkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpIGNvbnN0OwotICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRp
b24pIGNvbnN0OwotICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0
cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pOwogICAgIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqKTsKLQotICAg
IFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OwotICAgIEluc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOwogfTsKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNlODc4YWIxNzRkYWJiN2FjZDBmNGZhYmI0YzliYzc5N2Q1ZGFjMzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKKworI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCisKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW5qZWN0ZWRTY3JpcHRCYXNlOjpJbmplY3RlZFNj
cmlwdEJhc2UoKQorICAgIDogbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKDApCit7Cit9CisK
K0luamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKFNjcmlwdE9iamVjdCBpbmpl
Y3RlZFNjcmlwdE9iamVjdCwgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBhY2Nlc3NDaGVjaykK
KyAgICA6IG1faW5qZWN0ZWRTY3JpcHRPYmplY3QoaW5qZWN0ZWRTY3JpcHRPYmplY3QpCisgICAg
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2spCit7Cit9CisKK2Jvb2wg
SW5qZWN0ZWRTY3JpcHRCYXNlOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdAorewor
ICAgIHJldHVybiBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sobV9pbmplY3RlZFNjcmlwdE9i
amVjdC5zY3JpcHRTdGF0ZSgpKTsKK30KKworY29uc3QgU2NyaXB0T2JqZWN0JiBJbmplY3RlZFNj
cmlwdEJhc2U6OmluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
bmplY3RlZFNjcmlwdE9iamVjdDsKK30KKworU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRCYXNl
OjpjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlv
biwgYm9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNj
cmlwdFN0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbENhbGxGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAiSW5qZWN0ZWRT
Y3JpcHQiLCAxKTsKKworICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRT
Y3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsKKyAgICBib29sIGV2YWxJc0Rpc2FibGVkID0gZmFs
c2U7CisgICAgaWYgKHNjcmlwdFN0YXRlKSB7CisgICAgICAgIGV2YWxJc0Rpc2FibGVkID0gIWV2
YWxFbmFibGVkKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgLy8gVGVtcG9yYXJpbHkgZW5hYmxlIGFs
bG93IGV2YWxzIGZvciBpbnNwZWN0b3IuCisgICAgICAgIGlmIChldmFsSXNEaXNhYmxlZCkKKyAg
ICAgICAgICAgIHNldEV2YWxFbmFibGVkKHNjcmlwdFN0YXRlLCB0cnVlKTsKKyAgICB9CisKKyAg
ICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsK
KworICAgIGlmIChldmFsSXNEaXNhYmxlZCkKKyAgICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0
U3RhdGUsIGZhbHNlKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1
bmN0aW9uKGNvb2tpZSk7CisgICAgcmV0dXJuIHJlc3VsdFZhbHVlOworfQorCit2b2lkIEluamVj
dGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQoreworICAgIGlmIChoYXNOb1ZhbHVlKCkgfHwg
IWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKSB7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3JWYWx1ZTo6bnVsbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5j
dGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFkRXhjZXB0aW9uKTsKKworICAgIEFTU0VS
VCghaGFkRXhjZXB0aW9uKTsKKyAgICBpZiAoIWhhZEV4Y2VwdGlvbikgeworICAgICAgICAqcmVz
dWx0ID0gcmVzdWx0VmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0
LnNjcmlwdFN0YXRlKCkpOworICAgICAgICBpZiAoISpyZXN1bHQpCisgICAgICAgICAgICAqcmVz
dWx0ID0gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIk9iamVjdCBoYXMg
dG9vIGxvbmcgcmVmZXJlbmNlIGNoYWluKG11c3Qgbm90IGJlIGxvbmdlciB0aGFuICVkKSIsIElu
c3BlY3RvclZhbHVlOjptYXhEZXB0aCkpOworICAgIH0gZWxzZQorICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoIkV4Y2VwdGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiIp
OworfQorCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHJlc3VsdDsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CisgICAgaWYgKCFy
ZXN1bHQpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQg
dmFsdWUgaXMgZW1wdHkiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChyZXN1bHQt
PnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZykgeworICAgICAgICByZXN1bHQt
PmFzU3RyaW5nKGVycm9yU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRQYWlyID0gcmVzdWx0LT5hc09iamVjdCgpOworICAg
IGlmICghcmVzdWx0UGFpcikgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJy
b3I6IHJlc3VsdCBpcyBub3QgYW4gT2JqZWN0IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRPYmogPSByZXN1bHRQYWlyLT5nZXRPYmpl
Y3QoInJlc3VsdCIpOworICAgIGJvb2wgd2FzVGhyb3duVmFsID0gZmFsc2U7CisgICAgaWYgKCFy
ZXN1bHRPYmogfHwgIXJlc3VsdFBhaXItPmdldEJvb2xlYW4oIndhc1Rocm93biIsICZ3YXNUaHJv
d25WYWwpKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0
IGlzIG5vdCBhIHBhaXIgb2YgdmFsdWUgYW5kIHdhc1Rocm93biBmbGFnIjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAqb2JqZWN0UmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdDo6cnVudGltZUNhc3QocmVzdWx0T2JqKTsKKyAgICAqd2FzVGhyb3duID0gd2Fz
VGhyb3duVmFsOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM4ZDU0NWVmOTJmYjM3NmQzMWNlMjgyN2Q2YjFhMDcyYThmMjdh
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRCYXNlLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRCYXNlX2gK
KyNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRCYXNlX2gKKworI2luY2x1ZGUgIkluc3BlY3RvclR5cGVC
dWlsZGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgSW5zcGVjdG9yVmFsdWU7CitjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGw7CisKK3R5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRCYXNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbmplY3RlZFNjcmlw
dEJhc2UoKSB7IH0KKworICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpOyB9CisgICAgU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0
ZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIGJvb2wgKCpJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKShTY3JpcHRTdGF0ZSopOworICAgIEluamVjdGVkU2NyaXB0QmFzZSgpOworICAg
IEluamVjdGVkU2NyaXB0QmFzZShTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2spOworCisgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKKyAgICBj
b25zdCBTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7CisgICAgU2Ny
aXB0VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYs
IGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7CisgICAgdm9pZCBtYWtlQ2FsbChTY3JpcHRGdW5j
dGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOworICAgIHZvaWQgbWFr
ZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisKK3ByaXZhdGU6CisgICAgU2NyaXB0T2JqZWN0IG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3Q7CisgICAgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBtX2lu
c3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2s7Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWxsSW5PbmUuY3BwCmluZGV4IGJlOTJhMTNmYzdiM2NkODU2MTM2MzhlNjE4ODc3YzgyZmIyYzM5
YWMuLjI2YmJhMmFlYzlmOWQ5YjBlZGQ2YTg5NWU4ODI3YzRlZWYwOGQ3NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5jcHAiCiAjaW5jbHVkZSAiSWRlbnRpZmll
cnNGYWN0b3J5LmNwcCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5jcHAiCisjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQWdlbnQuY3BwIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148448</attachid>
            <date>2012-06-19 15:56:19 -0700</date>
            <delta_ts>2012-06-19 16:21:23 -0700</delta_ts>
            <desc>Rebased again.</desc>
            <filename>bug-89107-20120619155618.patch</filename>
            <type>text/plain</type>
            <size>35295</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUzNjMxOTViMTNkNWYx
Mjg4ZjE5NWNiYzQ0NjFhYzE1MDJmYTk0Yy4uNjAxOGM1MGJlZTcwNGU3NzJlODQyZDRjYzhkY2Uy
Zjc2NmI0NTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgSW5qZWN0ZWRTY3JpcHRCYXNlIGNsYXNzIGZyb20gdGhlIEluamVjdGVkU2Ny
aXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEw
NworCisgICAgICAgIEV4dHJhY3QgbWV0aG9kcyBmcm9tIHRoZSBJbmplY3RlZFNjcmlwdCB0aGF0
IGRvIG5vdCBkZXBlbmQgb24KKyAgICAgICAgdGhlIGNvbmNyZXRlIEluamVjdGVkU2NyaXB0U291
cmNlLmpzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6Ondy
YXBTZXJpYWxpemVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojpm
aW5kT2JqZWN0QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVj
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RH
cm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFs
dWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFz
ZTo6bWFrZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtl
RXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6On5JbmplY3RlZFNjcmlwdEJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjpoYXNOb1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisKIDIwMTItMDYtMTkgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMjA2MjEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkwZDdiZjJjZjUzOWNkNDYw
OTcyMzYzOTBmOTJkY2E1NmEwOTBhNWUuLjFjYjEwMzE0MDIzZWFjNzdjMTcwM2U0ZWRjNjY5MGE5
MGI4MDc0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzEsNiArOTMxLDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCiAgICAgaW5z
cGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCisgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKICAgICBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggODgzNjhkOWVmZDZlMjZhNWI3MmFlMmE5ZDYxNGIwMmJkM2Uw
MjY1NC4uMzZjZTEwNTBhNDFmZDM2M2FkNmUwOTE4NGI1MDk2MmQ0MWY2M2FkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNjU1LDYgKzI2NTUsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAorCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY5M2YxNzZmNDFlMmMwMmUyZjIyZWQ3YTYwYzAw
YTVjNDAyMDY1NzYuLjZlYWNkNWRlNjY1Y2E2MmY2NzAzY2QxOGFhZjM5ZjVjODVmMzllMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQpAQCAtODkxLDYgKzg5MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCisgICAgaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBcCkBAIC0yMDM4LDYgKzIwMzksNyBAQCBIRUFE
RVJTICs9IFwKICAgICBpbnNwZWN0b3IvRE9NV3JhcHBlclZpc2l0b3IuaCBcCiAgICAgaW5zcGVj
dG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aCBcCisgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oIFwKICAgICBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGRhYTAyNmUwNTk4MzkzZTRlYzA4NmJhMWE5ZTZjYTA2ZmUxMmUzNGUuLmIwYzcyYmMzMWQ5
N2NlMWQwYTA1NjhmNTM4YTczYzBiYjE1ZWMzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI3NjUs
NiArMjc2NSw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjZmNmOTY1NDk1
NmM4MmJmODEwYzJkZTcxZDc2NTAxMWRiYjE5NzMxLi42MTllODI5Zjc5NTYxODk1ZWVjZGRmMjQz
Mzg2NjkxNDRlMjQyZDUzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNzMzMzksNiArNzMzMzksMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0QmFz
ZS5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9u
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxJbmplY3RlZFNjcmlwdEJhc2UuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0SG9zdC5jcHAi
CiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU5OTBlNDVhMWViYjRlYjMyNGJi
NTU0OTIwZDQ5MThjZmIyNDEyYjkuLmJlOGI1ZmQyNGIwYzNlMWNmODNiMGZlN2Y2N2U5NzdlMjJi
MDIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTQ0NjUsNiArNDQ2NSw4IEBACiAJCUFBMjFFQ0NEMEFCRjBGQzYwMDJCODM0
QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0QzNBNzQwQjJCMTY3OTAw
MjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgKi87IH07CiAJCUFBNEMzQTc3MEIyQjE2NzkwMDIz
MzRBMiAvKiBTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBNEMzQTc1MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAq
LzsgfTsKKwkJQUFCNjA1NEUxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0
QTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLzsgfTsKKwkJQUFC
NjA1NEYxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFCNjA1NEIxNTg3NEM1ODAwN0I1
MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovOyB9OwogCQlBQUQ3NjZFQjE1N0U1MDJGMDBF
ODU0MjMgLyogSW5zcGVjdG9yV2ViR0xBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yV2ViR0xBZ2VudC5jcHAgKi87IH07CiAJCUFBRDc2NkVDMTU3RTUwMkYwMEU4NTQyMyAvKiBJ
bnNwZWN0b3JXZWJHTEFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xBZ2Vu
dC5oICovOyB9OwogCQlBQUQ3NjZFRDE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJ
bnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEluc3RydW1l
bnRhdGlvbi5oICovOyB9OwpAQCAtMTE0NzYsNiArMTE0NzgsOCBAQAogCQlBQTRDM0E3NTBCMkIx
Njc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5
MDMwRkUxNTdFMTZBMDAwMjc2MjQ3IC8qIEluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbmplY3RlZFdlYkdMU2NyaXB0
U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTkxMjc1MDE1N0UzNUE1
MDA0NTRFNTQgLyogSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFBQjYwNTRBMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNj
cmlwdEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFCNjA1NEIx
NTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yV2Vi
R0xBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU5MTU3RTUw
MkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYkdMQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1
bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvcldl
YkdMSW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQw
NSw2ICsxNDQwOSw4IEBACiAJCQkJNTkxM0EyNDAxM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZp
ZXJzRmFjdG9yeS5oICovLAogCQkJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3Rl
ZFNjcmlwdC5jcHAgKi8sCiAJCQkJRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVk
U2NyaXB0LmggKi8sCisJCQkJQUFCNjA1NEExNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2Ny
aXB0QmFzZS5jcHAgKi8sCisJCQkJQUFCNjA1NEIxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovLAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLywKQEAgLTIzMzIzLDYgKzIzMzI5LDcgQEAKIAkJCQkzMTZG
RTExODBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCURCMjNDMkNDMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjM2NDRCMDAxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVk
U2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUI2MDU0RjE1ODc0QzU4MDA3QjUwMzEgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzZGQTEwQkYwOEVE
MDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzE2
Mzk2QzEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lQm94LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2NDYxLDYgKzI2NDY4LDcgQEAKIAkJCQkzMTZGRTExNzBFNkUxREE3MDBC
RjYwODggLyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREIyM0My
Q0IwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUYzNjQ0QUZGMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBQUI2MDU0RTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRT
Y3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMEU3NkY5MTBCRjA4RUQwMEEwMjc2
RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjMxNjM5NkIx
MzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOENGRjVFNjBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lQm94LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5k
ZXggNDE0YzIyZjg5ZjNiYzQyMWFjMDE4ZWY0Mzg4ODJiOTgyYzNlMWUyZi4uY2VlZTM2MjRiNWIz
N2NkZTAzOGM2MWU5NzkxZmRhYTdhM2RkNjc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCwxNSArMzQsMTIgQEAKIAogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0LmgiCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiB1c2luZyBXZWJDb3JlOjpUeXBl
QnVpbGRlcjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNh
bGxGcmFtZTsKQEAgLTUzLDE5ICs1MCwxNyBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbmplY3RlZFNj
cmlwdDo6SW5qZWN0ZWRTY3JpcHQoKQotICAgIDogbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
KDApCiB7CiB9CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3Qg
aW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hl
Y2spCi0gICAgOiBtX2luamVjdGVkU2NyaXB0T2JqZWN0KGluamVjdGVkU2NyaXB0T2JqZWN0KQot
ICAgICwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQorICAgIDogSW5q
ZWN0ZWRTY3JpcHRCYXNlKGluamVjdGVkU2NyaXB0T2JqZWN0LCBhY2Nlc3NDaGVjaykKIHsKIH0K
IAogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJv
b2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZSIpOworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVhdGUiKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaW5j
bHVkZUNvbW1hbmRMaW5lQVBJKTsKQEAgLTc1LDcgKzcwLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJjYWxsRnVuY3Rpb25PbiIpOworICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2Fs
bEZ1bmN0aW9uT24iKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTg1LDcgKzgwLDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamUKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVy
bkJ5VmFsdWUsIFJlZlB0cjxSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1YXRlT25DYWxsRnJhbWUiKTsKKyAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1
YXRlT25DYWxsRnJhbWUiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVz
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVJZCk7CiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7CkBAIC05Nyw3ICs5Miw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTY3JpcHRWCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlc3RhcnRGcmFtZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0
LCAicmVzdGFydEZyYW1lIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJyZXN0YXJ0RnJhbWUiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJh
bWVJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKQEAgLTExNyw3
ICsxMTIsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgYwogCiB2b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7Ci0gICAg
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJnZXRG
dW5jdGlvbkRldGFpbHMiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVz
dWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0xMzEs
NyArMTI2LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNjcmlw
dG9yPiA+KiBwcm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbiht
X2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0UHJvcGVydGllcyIpOworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGllcyIp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvd25Qcm9wZXJ0aWVzKTsKIApAQCAtMTQ5LDcgKzE0NCw3IEBAIE5vZGUq
IEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkK
ICAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmpl
Y3RlZFNjcmlwdE9iamVjdCwgIm5vZGVGb3JPYmplY3RJZCIpOworICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZvck9iamVjdElkIik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKQEAgLTE2MSw3ICsxNTYsNyBAQCBOb2RlKiBJbmplY3RlZFNjcmlw
dDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAKIHZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIHsKLSAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVh
c2VPYmplY3QiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChvYmplY3RJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFr
ZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwpAQCAtMTcxLDEyICsxNjYsMTIgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogUGFzc1Jl
ZlB0cjxBcnJheTxDYWxsRnJhbWU+ID4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNv
bnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgp
KTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVj
dCwgIndyYXBDYWxsRnJhbWVzIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
CiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9u
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50
b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Cisg
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNw
ZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5z
cGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKICAgICAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46
OnJ1bnRpbWVDYXN0KHJlc3VsdCk7CiAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OmNyZWF0
ZSgpOwpAQCAtMTg2LDcgKzE4MSw3IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+IElu
amVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYKIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6Ondy
YXBPYmplY3QoU2NyaXB0VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25z
dAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
d3JhcEZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwT2JqZWN0Iik7CisgICAg
U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
d3JhcE9iamVjdCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAg
ICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKQEAgLTE5NSw3
ICsxOTAsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KFNjcmlwdAogICAgIGlmIChoYWRFeGNlcHRpb24p
IHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNj
cmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJh
d1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsK
ICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNh
c3QocmF3UmVzdWx0KTsKIH0KIApAQCAtMjA2LDE0ICsyMDEsMTQgQEAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5vZGUo
Tm9kZSogbm8KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiBJbmplY3RlZFNjcmlwdDo6d3JhcFNlcmlhbGl6ZWRPYmplY3QoU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBjb25z
dAogewotICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVl
LT5kZXNlcmlhbGl6ZUZvckluc3BlY3RvcihtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0
YXRlKCkpOworICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZh
bHVlLT5kZXNlcmlhbGl6ZUZvckluc3BlY3RvcihzY3JpcHRTdGF0ZSgpKTsKICAgICByZXR1cm4g
c2NyaXB0VmFsdWUuaGFzTm9WYWx1ZSgpID8gMCA6IHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUsIGdy
b3VwTmFtZSk7CiB9CiAKIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJ
ZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1
ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9i
amVjdCwgImZpbmRPYmplY3RCeUlkIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7CkBAIC0yMjUsNyArMjIwLDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRP
YmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB2b2lkIEluamVjdGVkU2Ny
aXB0OjppbnNwZWN0Tm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgp
KTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVj
dCwgImluc3BlY3ROb2RlIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0yMzQsOTAg
KzIyOSwxNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZShOb2RlKiBub2RlKQog
dm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXApCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVhc2VP
YmplY3RHcm91cCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3RHcm91cCIpOwogICAgIHJlbGVhc2VG
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYWRFeGNlcHRp
b24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVsZWFzZUZ1bmN0
aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIH0KIAotYm9v
bCBJbmplY3RlZFNjcmlwdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKSk7Ci19Ci0KLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpjYWxs
RnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgYm9v
bCYgaGFkRXhjZXB0aW9uKSBjb25zdAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlwdFN0
YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Ci0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbENhbGxGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAiSW5qZWN0ZWRTY3JpcHQi
LCAxKTsKLQotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3JpcHRP
YmplY3Quc2NyaXB0U3RhdGUoKTsKLSAgICBib29sIGV2YWxJc0Rpc2FibGVkID0gZmFsc2U7Ci0g
ICAgaWYgKHNjcmlwdFN0YXRlKSB7Ci0gICAgICAgIGV2YWxJc0Rpc2FibGVkID0gIWV2YWxFbmFi
bGVkKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgLy8gVGVtcG9yYXJpbHkgZW5hYmxlIGFsbG93IGV2
YWxzIGZvciBpbnNwZWN0b3IuCi0gICAgICAgIGlmIChldmFsSXNEaXNhYmxlZCkKLSAgICAgICAg
ICAgIHNldEV2YWxFbmFibGVkKHNjcmlwdFN0YXRlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBTY3Jp
cHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKLQotICAg
IGlmIChldmFsSXNEaXNhYmxlZCkKLSAgICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0U3RhdGUs
IGZhbHNlKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9u
KGNvb2tpZSk7Ci0gICAgcmV0dXJuIHJlc3VsdFZhbHVlOwotfQotCi12b2lkIEluamVjdGVkU2Ny
aXB0OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNjZXNz
SW5zcGVjdGVkV2luZG93KCkpIHsKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpu
dWxsKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9
IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotCi0gICAgQVNTRVJUKCFoYWRFeGNl
cHRpb24pOwotICAgIGlmICghaGFkRXhjZXB0aW9uKSB7Ci0gICAgICAgICpyZXN1bHQgPSByZXN1
bHRWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3Rh
dGUoKSk7Ci0gICAgICAgIGlmICghKnJlc3VsdCkKLSAgICAgICAgICAgICpyZXN1bHQgPSBJbnNw
ZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZvcm1hdCgiT2JqZWN0IGhhcyB0b28gbG9uZyBy
ZWZlcmVuY2UgY2hhaW4obXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gJWQpIiwgSW5zcGVjdG9yVmFs
dWU6Om1heERlcHRoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JT
dHJpbmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7Ci19Ci0KLXZv
aWQgSW5qZWN0ZWRTY3JpcHQ6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pCi17Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7Ci0g
ICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5
IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5z
cGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKLSAgICAgICAgcmVzdWx0LT5hc1N0cmluZyhlcnJv
clN0cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKLSAgICBpZiAoIXJlc3VsdFBh
aXIpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMg
bm90IGFuIE9iamVjdCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KCJyZXN1bHQiKTsK
LSAgICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNlOwotICAgIGlmICghcmVzdWx0T2JqIHx8ICFy
ZXN1bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3duVmFsKSkgewotICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWly
IG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgKm9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1
bnRpbWVDYXN0KHJlc3VsdE9iaik7Ci0gICAgKndhc1Rocm93biA9IHdhc1Rocm93blZhbDsKLX0K
LQogU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUqIG5v
ZGUpCiB7Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUo
bV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCBub2RlKTsKKyAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBub2Rl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuaAppbmRleCBmODE0NTE2NzYzY2I3NWUzMGZjZTJiNmZhYTcxNGY5NmI2
NTJjMWVlLi5hYTljODNlODU3NWM3NGI3NmQ5ZmUwM2QwNjlkMTY4NDMwNzM1YWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsNiArMzEsNyBA
QAogI2lmbmRlZiBJbmplY3RlZFNjcmlwdF9oCiAjZGVmaW5lIEluamVjdGVkU2NyaXB0X2gKIAor
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCkBAIC00MSwyMyArNDIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNz
IEluc3BlY3RvclZhbHVlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEZ1bmN0aW9uQ2FsbDsK
LQotdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbmplY3RlZFNjcmlwdCB7Citj
bGFzcyBJbmplY3RlZFNjcmlwdCA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGlj
OgogICAgIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfkluamVjdGVkU2NyaXB0KCkgeyB9CiAKLSAg
ICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0
Lmhhc05vVmFsdWUoKTsgfQotCiAgICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosCiAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLApAQCAtOTgsMjEgKzkyLDEyIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdy
b3VwKGNvbnN0IFN0cmluZyYpOwotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6Omlu
amVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7Ci0gICAgdHlwZWRlZiBib29sICgqSW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKICAgICBJbmplY3RlZFNjcmlwdChT
Y3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogCi0gICAgYm9vbCBjYW5B
Y2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9vbCYgaGFkRXhjZXB0aW9u
KSBjb25zdDsKLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJp
bmcqLCBTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKTsKICAgICBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShOb2RlKik7Ci0KLSAgICBT
Y3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKLSAgICBJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKIH07CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZTg3OGFiMTc0ZGFiYjdhY2QwZjRmYWJiNGM5YmM3OTdkNWRhYzM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAK
QEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCisKKyNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgorCit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Owor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luamVjdGVkU2NyaXB0QmFzZTo6SW5qZWN0ZWRTY3Jp
cHRCYXNlKCkKKyAgICA6IG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygwKQoreworfQorCitJ
bmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShTY3JpcHRPYmplY3QgaW5qZWN0
ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hlY2spCisg
ICAgOiBtX2luamVjdGVkU2NyaXB0T2JqZWN0KGluamVjdGVkU2NyaXB0T2JqZWN0KQorICAgICwg
bV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQoreworfQorCitib29sIElu
amVjdGVkU2NyaXB0QmFzZTo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKSk7Cit9CisKK2NvbnN0IFNjcmlwdE9iamVjdCYgSW5qZWN0ZWRTY3Jp
cHRCYXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3Q7Cit9CisKK1NjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0QmFzZTo6
Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24s
IGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21TY3Jp
cHRTdGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIkluamVjdGVkU2Ny
aXB0IiwgMSk7CisKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtX2luamVjdGVkU2Ny
aXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7CisgICAgYm9vbCBldmFsSXNEaXNhYmxlZCA9IGZhbHNl
OworICAgIGlmIChzY3JpcHRTdGF0ZSkgeworICAgICAgICBldmFsSXNEaXNhYmxlZCA9ICFldmFs
RW5hYmxlZChzY3JpcHRTdGF0ZSk7CisgICAgICAgIC8vIFRlbXBvcmFyaWx5IGVuYWJsZSBhbGxv
dyBldmFscyBmb3IgaW5zcGVjdG9yLgorICAgICAgICBpZiAoZXZhbElzRGlzYWJsZWQpCisgICAg
ICAgICAgICBzZXRFdmFsRW5hYmxlZChzY3JpcHRTdGF0ZSwgdHJ1ZSk7CisgICAgfQorCisgICAg
U2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhhZEV4Y2VwdGlvbik7CisK
KyAgICBpZiAoZXZhbElzRGlzYWJsZWQpCisgICAgICAgIHNldEV2YWxFbmFibGVkKHNjcmlwdFN0
YXRlLCBmYWxzZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5j
dGlvbihjb29raWUpOworICAgIHJldHVybiByZXN1bHRWYWx1ZTsKK30KKwordm9pZCBJbmplY3Rl
ZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFj
YW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkgeworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9y
VmFsdWU6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7CisKKyAgICBBU1NFUlQo
IWhhZEV4Y2VwdGlvbik7CisgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsKKyAgICAgICAgKnJlc3Vs
dCA9IHJlc3VsdFZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5z
Y3JpcHRTdGF0ZSgpKTsKKyAgICAgICAgaWYgKCEqcmVzdWx0KQorICAgICAgICAgICAgKnJlc3Vs
dCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJPYmplY3QgaGFzIHRv
byBsb25nIHJlZmVyZW5jZSBjaGFpbihtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAlZCkiLCBJbnNw
ZWN0b3JWYWx1ZTo6bWF4RGVwdGgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgKnJlc3VsdCA9IElu
c3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsK
K30KKwordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiByZXN1bHQ7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOworICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZh
bHVlIGlzIGVtcHR5IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVzdWx0LT50
eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAgICAgcmVzdWx0LT5h
c1N0cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKKyAgICBp
ZiAoIXJlc3VsdFBhaXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiByZXN1bHQgaXMgbm90IGFuIE9iamVjdCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0
KCJyZXN1bHQiKTsKKyAgICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNlOworICAgIGlmICghcmVz
dWx0T2JqIHx8ICFyZXN1bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3du
VmFsKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBp
cyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgKm9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CisgICAgKndhc1Rocm93biA9IHdhc1Ro
cm93blZhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJh
c2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zOGQ1NDVlZjkyZmIzNzZkMzFjZTI4MjdkNmIxYTA3MmE4ZjI3YTkz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkU2NyaXB0QmFzZV9oCisj
ZGVmaW5lIEluamVjdGVkU2NyaXB0QmFzZV9oCisKKyNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVp
bGRlci5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEluc3BlY3RvclZhbHVlOworY2xhc3MgU2NyaXB0RnVuY3Rpb25DYWxsOworCit0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK2NsYXNzIElu
amVjdGVkU2NyaXB0QmFzZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5qZWN0ZWRTY3JpcHRC
YXNlKCkgeyB9CisKKyAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVj
dGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQorICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUo
KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdHlwZWRlZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nl
c3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKKyAgICBJbmplY3RlZFNjcmlwdEJhc2UoKTsKKyAgICBJ
bmplY3RlZFNjcmlwdEJhc2UoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
KTsKKworICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3Q7CisgICAgY29u
c3QgU2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0OworICAgIFNjcmlw
dFZhbHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRGdW5jdGlvbkNhbGwmLCBi
b29sJiBoYWRFeGNlcHRpb24pIGNvbnN0OworICAgIHZvaWQgbWFrZUNhbGwoU2NyaXB0RnVuY3Rp
b25DYWxsJiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKKyAgICB2b2lkIG1ha2VF
dmFsQ2FsbChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pOworCitwcml2YXRlOgorICAgIFNjcmlwdE9iamVjdCBtX2lu
amVjdGVkU2NyaXB0T2JqZWN0OworICAgIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgbV9pbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFs
bEluT25lLmNwcAppbmRleCBiZTkyYTEzZmM3YjNjZDg1NjEzNjM4ZTYxODg3N2M4MmZiMmMzOWFj
Li4yNmJiYTJhZWM5ZjlkOWIwZWRkNmE4OTVlODgyN2M0ZWVmMDhkNzQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuY3BwIgogI2luY2x1ZGUgIklkZW50aWZpZXJz
RmFjdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuY3BwIgorI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0QmFzZS5jcHAiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckFnZW50LmNwcCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>