<?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>115564</bug_id>
          
          <creation_ts>2013-05-03 11:44:12 -0700</creation_ts>
          <short_desc>Web Inspector: Implement WK2 version of WebInspectorFrontendClient::save</short_desc>
          <delta_ts>2013-05-10 22:02:35 -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>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>menard</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>884255</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-03 11:44:12 -0700</bug_when>
    <thetext>There&apos;s a WK1 version of this function, which is/was used to save Timeline data to the filesystem. That implementation uses a modal dialog and requires user interaction to save files, for security reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886028</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 16:07:10 -0700</bug_when>
    <thetext>patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886046</commentid>
    <comment_count>2</comment_count>
      <attachid>200997</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 16:56:44 -0700</bug_when>
    <thetext>Created attachment 200997
initial patch - missing Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886047</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 16:58:06 -0700</bug_when>
    <thetext>Attachment 200997 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/InspectorClientEfl.h&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/InspectorClientQt.h&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit2/UIProcess/WebInspectorProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebInspectorProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebInspectorProxy.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp&apos;, u&apos;Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm&apos;, u&apos;Source/WebKit2/UIProcess/qt/WebInspectorProxyQt.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorFrontendClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.messages.in&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/WebPage/WebInspector.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 21 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>886049</commentid>
    <comment_count>4</comment_count>
      <attachid>200997</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 17:03:45 -0700</bug_when>
    <thetext>Comment on attachment 200997
initial patch - missing Changelog

Attachment 200997 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/353203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886052</commentid>
    <comment_count>5</comment_count>
      <attachid>200997</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 17:06:09 -0700</bug_when>
    <thetext>Comment on attachment 200997
initial patch - missing Changelog

Attachment 200997 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/353207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886057</commentid>
    <comment_count>6</comment_count>
      <attachid>201000</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 17:17:34 -0700</bug_when>
    <thetext>Created attachment 201000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886058</commentid>
    <comment_count>7</comment_count>
      <attachid>201000</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 17:23:22 -0700</bug_when>
    <thetext>Comment on attachment 201000
Patch

Attachment 201000 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/275042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886059</commentid>
    <comment_count>8</comment_count>
      <attachid>201000</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 17:23:38 -0700</bug_when>
    <thetext>Comment on attachment 201000
Patch

Attachment 201000 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/445018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886060</commentid>
    <comment_count>9</comment_count>
      <attachid>201001</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 17:29:54 -0700</bug_when>
    <thetext>Created attachment 201001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886062</commentid>
    <comment_count>10</comment_count>
      <attachid>201001</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 17:35:02 -0700</bug_when>
    <thetext>Comment on attachment 201001
Patch

Attachment 201001 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/275046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886064</commentid>
    <comment_count>11</comment_count>
      <attachid>201001</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 17:37:01 -0700</bug_when>
    <thetext>Comment on attachment 201001
Patch

Attachment 201001 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/425051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886070</commentid>
    <comment_count>12</comment_count>
      <attachid>201005</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 17:45:43 -0700</bug_when>
    <thetext>Created attachment 201005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886072</commentid>
    <comment_count>13</comment_count>
      <attachid>201005</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-07 18:04:53 -0700</bug_when>
    <thetext>Comment on attachment 201005
Patch

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

Needs reviewed by a WebKit2 owner.

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:229
&gt; +    HashMap&lt;String, RetainPtr&lt;NSURL&gt;&gt; m_saveURLs;  

m_savedURLs? m_savedURLToFileURLMap?

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:508
&gt; +    String url = refURL;

Having both url and URL is confusing (and violates style guidelines). Are there more descriptive names you could use?

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:515
&gt; +        m_page-&gt;process()-&gt;send(Messages::WebInspector::DidSave([URL absoluteString]),
&gt; +                                m_page-&gt;pageID());

I wouldn&apos;t wrap this across two lines.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:521
&gt; +        URL = [NSURL URLWithString:url];

We should ASSERT and return early if the NSURL is nil after this.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:543
&gt; +        URL = [NSURL URLWithString:url];

Ditto.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspector.cpp:128
&gt; +    bool result;
&gt; +    WebProcess::shared().connection()-&gt;sendSync(Messages::WebInspectorProxy::CanSave(), result, m_page-&gt;pageID());
&gt; +    return result;

sendSync == bad*. We should avoid it or cache it after the first time, since the UIProcess returns a static true or false.

* Frowned upon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886078</commentid>
    <comment_count>14</comment_count>
      <attachid>201005</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-07 18:13:14 -0700</bug_when>
    <thetext>Comment on attachment 201005
Patch

Attachment 201005 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/318276</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886112</commentid>
    <comment_count>15</comment_count>
      <attachid>201018</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 19:41:11 -0700</bug_when>
    <thetext>Created attachment 201018
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886127</commentid>
    <comment_count>16</comment_count>
      <attachid>201018</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-07 20:28:27 -0700</bug_when>
    <thetext>Comment on attachment 201018
Patch v2

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

I realize some of this is copied from WK1 and wasn&apos;t your original code. Your clean up helps! We should consider making WK1 match the final version of this change.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:508
&gt; +    String suggestedURLCopy = suggestedURL;

I don&apos;t think it makes a difference to &quot;copy&quot; here, String isn&apos;t mutable. Or was it needed for the block?

Should we ASSERT and return early if !suggestedURL.isEmpty()? It would be weird to map empty string to a platform URL.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:512
&gt; +        m_suggestedToActualURLMap.set(suggestedURLCopy, actualURL);

Would be nice to ASSERT(actualURL);

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:521
&gt; +    if (platformURL == nil)
&gt; +        platformURL = [NSURL URLWithString:suggestedURL];
&gt; +    if (platformURL == nil)

WebKit&apos;s style is to use ! instead of == NULL/nil/0.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:524
&gt; +    if (!forceSaveAs) {

I think the logic is wrong here now. This use to be an &quot;else if&quot;, which would have skipped this if platformURL (then URL) was false. Now the first save does not bring up the save dialog and just uses the suggestedURL, which might not even be a local file URL. You could just set forceSaveAs to true if platformURL came from the suggestedURL.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:546
&gt; +    if (platformURL == nil)
&gt; +        platformURL = [NSURL URLWithString:suggestedURL];
&gt; +    if (platformURL == nil)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886128</commentid>
    <comment_count>17</comment_count>
      <attachid>201018</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-07 20:29:44 -0700</bug_when>
    <thetext>Comment on attachment 201018
Patch v2

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

&gt;&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:508
&gt;&gt; +    String suggestedURLCopy = suggestedURL;
&gt; 
&gt; I don&apos;t think it makes a difference to &quot;copy&quot; here, String isn&apos;t mutable. Or was it needed for the block?
&gt; 
&gt; Should we ASSERT and return early if !suggestedURL.isEmpty()? It would be weird to map empty string to a platform URL.

Ooops, I meant &quot;ASSERT and return early if suggestedURL.isEmpty()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886135</commentid>
    <comment_count>18</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-07 20:58:17 -0700</bug_when>
    <thetext>Roger, roger. (In reply to comment #16)
&gt; (From update of attachment 201018 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201018&amp;action=review
&gt; 
&gt; I realize some of this is copied from WK1 and wasn&apos;t your original code. Your clean up helps! We should consider making WK1 match the final version of this change.

Roger, roger. Should that be a separate bug or rolled into this one?

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:508
&gt; &gt; +    String suggestedURLCopy = suggestedURL;
&gt; 
&gt; I don&apos;t think it makes a difference to &quot;copy&quot; here, String isn&apos;t mutable. Or was it needed for the block?

It&apos;s necessary for the block. (I asked the same question and removed it, only to have WebKit crash after the file dialog.) Would a comment be appropriate?

&gt; Should we ASSERT and return early if !suggestedURL.isEmpty()? It would be weird to map empty string to a platform URL.

Noted.
 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:512
&gt; &gt; +        m_suggestedToActualURLMap.set(suggestedURLCopy, actualURL);
&gt; 
&gt; Would be nice to ASSERT(actualURL);
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:521
&gt; &gt; +    if (platformURL == nil)
&gt; &gt; +        platformURL = [NSURL URLWithString:suggestedURL];
&gt; &gt; +    if (platformURL == nil)
&gt; 
&gt; WebKit&apos;s style is to use ! instead of == NULL/nil/0.

Ah, okay- I don&apos;t frequently use ObjC, so wasn&apos;t sure if the C++ idiom would translate.
 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:524
&gt; &gt; +    if (!forceSaveAs) {
&gt; 
&gt; I think the logic is wrong here now. This use to be an &quot;else if&quot;, which would have skipped this if platformURL (then URL) was false. Now the first save does not bring up the save dialog and just uses the suggestedURL, which might not even be a local file URL. You could just set forceSaveAs to true if platformURL came from the suggestedURL.

Yeah, boolean logic is annoying :-P Good catch!
 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:546
&gt; &gt; +    if (platformURL == nil)
&gt; &gt; +        platformURL = [NSURL URLWithString:suggestedURL];
&gt; &gt; +    if (platformURL == nil)
&gt; 
&gt; Ditto.

I&apos;ll address these comments and post a new version tomorrow morning. Thanks for the quick turnaround!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886384</commentid>
    <comment_count>19</comment_count>
      <attachid>201081</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-08 10:02:28 -0700</bug_when>
    <thetext>Created attachment 201081
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886391</commentid>
    <comment_count>20</comment_count>
      <attachid>201081</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-08 10:48:10 -0700</bug_when>
    <thetext>Comment on attachment 201081
Patch v3

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

&gt; Source/WebCore/inspector/InspectorFrontendClientLocal.h:-72
&gt; -    virtual bool canSave() { return false; }
&gt; -    virtual void save(const String&amp;, const String&amp;, bool) { }
&gt; -    virtual void append(const String&amp;, const String&amp;) { }

Correct me if I am wrong, but can&apos;t you keep this and eliminate the need to stub out all the other platforms on WK1?

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:168
&gt; +    void platformCanSave(bool&amp;);

Any reason not to make this bool platformCanSave()?

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:510
&gt; +    // necessary for the block below.

Comments should be have a capital letter starting them.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:525
&gt; +        // the user must confirm new filenames before we can save to them.

Ditto for the first letter of the comment.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:529
&gt; +    }
&gt; +    if (!platformURL)
&gt; +        return;

This should ASSERT(platformURL) before returning early. Also an empty line between the previous and this block would be nice.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:553
&gt; +    // do not append unless the user has already confirmed this filename in save().

Ditto.

These all apply to the WK1 version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886938</commentid>
    <comment_count>21</comment_count>
      <attachid>201249</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-09 10:32:06 -0700</bug_when>
    <thetext>Created attachment 201249
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886941</commentid>
    <comment_count>22</comment_count>
      <attachid>201249</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-09 10:35:53 -0700</bug_when>
    <thetext>Comment on attachment 201249
Patch v4

Looks good! I&apos;ll see about getting a WK2 owner to r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887001</commentid>
    <comment_count>23</comment_count>
      <attachid>201249</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-09 11:53:19 -0700</bug_when>
    <thetext>Comment on attachment 201249
Patch v4

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

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.messages.in:31
&gt; +    CanSave() -&gt; (bool result)

Why is this sync message required?  Lets try to do this without adding any more sync messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887007</commentid>
    <comment_count>24</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-09 11:56:19 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 201249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201249&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebInspectorProxy.messages.in:31
&gt; &gt; +    CanSave() -&gt; (bool result)
&gt; 
&gt; Why is this sync message required?  Lets try to do this without adding any more sync messages.

Just make all of WK2 return true for canSave in the WebProcess and just leave the save and append methods empty (notImplemented()) for the other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887044</commentid>
    <comment_count>25</comment_count>
      <attachid>201268</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-09 13:07:01 -0700</bug_when>
    <thetext>Created attachment 201268
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887046</commentid>
    <comment_count>26</comment_count>
      <attachid>201268</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-09 13:17:12 -0700</bug_when>
    <thetext>Comment on attachment 201268
Patch v5

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887497</commentid>
    <comment_count>27</comment_count>
      <attachid>201268</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-10 12:34:07 -0700</bug_when>
    <thetext>Comment on attachment 201268
Patch v5

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

Some small issues bellow:

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:315
&gt; +    auto saveToURL = ^(NSURL *actualURL) {
&gt; +        ASSERT(actualURL);
&gt; +        
&gt; +        m_suggestedToActualURLMap.set(suggestedURLCopy, actualURL);
&gt; +        [contentCopy writeToURL:actualURL atomically:YES encoding:NSUTF8StringEncoding error:NULL];
&gt; +        core([m_windowController webView])-&gt;mainFrame()-&gt;script()-&gt;executeScript([NSString stringWithFormat:@&quot;InspectorFrontendAPI.savedURL(\&quot;%@\&quot;)&quot;, actualURL.absoluteString]);
&gt;      };

What is the point of this block exactly?

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:350
&gt; +    // do not append unless the user has already confirmed this filename in save().

do -&gt; Do

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:169
&gt; +    void platformSave(const String&amp; filename, const String&amp; content, bool forceSaveAs);
&gt; +    void platformAppend(const String&amp; filename, const String&amp; content);

I find it intrinsically weird to pass any file content as String. I am not aware of any API that works like that.

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:179
&gt; +    void canSave(bool&amp;);

Where is this defined?

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:515
&gt; +    // Necessary for the block below.
&gt; +    String suggestedURLCopy = suggestedURL;
&gt; +    String contentCopy = content;
&gt; +
&gt; +    auto saveToURL = ^(NSURL *actualURL) {
&gt; +        ASSERT(actualURL);
&gt; +        
&gt; +        m_suggestedToActualURLMap.set(suggestedURLCopy, actualURL);
&gt; +        [contentCopy writeToURL:actualURL atomically:YES encoding:NSUTF8StringEncoding error:NULL];
&gt; +        m_page-&gt;process()-&gt;send(Messages::WebInspector::DidSave([actualURL absoluteString]), m_page-&gt;pageID());
&gt; +    };

Please reduce the use span for this, move that code closer to where it is used: after if (!platformURL).

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:550
&gt; +    // do not append unless the user has already confirmed this filename in save().

do -&gt; Do

&gt; Source/WebKit2/WebProcess/WebPage/WebInspector.h:100
&gt; +    // Implemented in platform WebInspector file

Missing period.

That comment is useless really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887510</commentid>
    <comment_count>28</comment_count>
      <attachid>201268</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-05-10 13:04:40 -0700</bug_when>
    <thetext>Comment on attachment 201268
Patch v5

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

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:315
&gt;&gt;      };
&gt; 
&gt; What is the point of this block exactly?

It reduces some code duplication. It is called twice in this function.

&gt;&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:169
&gt;&gt; +    void platformAppend(const String&amp; filename, const String&amp; content);
&gt; 
&gt; I find it intrinsically weird to pass any file content as String. I am not aware of any API that works like that.

We use String because the content comes from JavaScript (via the JSON Inspector protocol), where string is the only type we have to work with for this sort of thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887532</commentid>
    <comment_count>29</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-10 13:25:44 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 201268 [details])
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:169
&gt; &gt; +    void platformSave(const String&amp; filename, const String&amp; content, bool forceSaveAs);
&gt; &gt; +    void platformAppend(const String&amp; filename, const String&amp; content);
&gt; 
&gt; I find it intrinsically weird to pass any file content as String. I am not aware of any API that works like that.

The use case is that the Inspector serializes collected runtime data (ie., Timeline profiles) into a JSON string and it&apos;s written to disk by InspectorFrontendHost. The API is not used for saving any other type of data currently.

I guess it could be encoded earlier and passed around as a blob behind the scenes, at least on WK2. Is there a preferred way to do that? CoreIPC::DataReference? Or going further, should we push blob construction down into the inspector frontend?

&gt; &gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:179
&gt; &gt; +    void canSave(bool&amp;);
&gt; 
&gt; Where is this defined?

Oops- left over from previous design. Will remove.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:515
&gt; &gt; +    // Necessary for the block below.
&gt; &gt; +    String suggestedURLCopy = suggestedURL;
&gt; &gt; +    String contentCopy = content;
&gt; &gt; +
&gt; &gt; +    auto saveToURL = ^(NSURL *actualURL) {
&gt; &gt; +        ASSERT(actualURL);
&gt; &gt; +        
&gt; &gt; +        m_suggestedToActualURLMap.set(suggestedURLCopy, actualURL);
&gt; &gt; +        [contentCopy writeToURL:actualURL atomically:YES encoding:NSUTF8StringEncoding error:NULL];
&gt; &gt; +        m_page-&gt;process()-&gt;send(Messages::WebInspector::DidSave([actualURL absoluteString]), m_page-&gt;pageID());
&gt; &gt; +    };
&gt; 
&gt; Please reduce the use span for this, move that code closer to where it is used: after if (!platformURL).

OK

&gt; &gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:550
&gt; &gt; +    // do not append unless the user has already confirmed this filename in save().
&gt; 
&gt; do -&gt; Do

OK

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebInspector.h:100
&gt; &gt; +    // Implemented in platform WebInspector file
&gt; 
&gt; Missing period.
&gt; 
&gt; That comment is useless really.

I agree. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887670</commentid>
    <comment_count>30</comment_count>
      <attachid>201440</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-05-10 16:38:12 -0700</bug_when>
    <thetext>Created attachment 201440
Patch v5b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887731</commentid>
    <comment_count>31</comment_count>
      <attachid>201440</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-10 19:22:29 -0700</bug_when>
    <thetext>Comment on attachment 201440
Patch v5b

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887732</commentid>
    <comment_count>32</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-10 19:25:53 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt; &gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:169
&gt; &gt; &gt; +    void platformSave(const String&amp; filename, const String&amp; content, bool forceSaveAs);
&gt; &gt; &gt; +    void platformAppend(const String&amp; filename, const String&amp; content);
&gt; &gt; 
&gt; &gt; I find it intrinsically weird to pass any file content as String. I am not aware of any API that works like that.
&gt; 
&gt; The use case is that the Inspector serializes collected runtime data (ie., Timeline profiles) into a JSON string and it&apos;s written to disk by InspectorFrontendHost. The API is not used for saving any other type of data currently.
&gt; 
&gt; I guess it could be encoded earlier and passed around as a blob behind the scenes, at least on WK2. Is there a preferred way to do that? CoreIPC::DataReference? Or going further, should we push blob construction down into the inspector frontend?

A Vector of uchar8_t is commonly used to pass raw bytes.

It is probably okay for now as you say it is only use with JSON.
If you ever need to convert data to string to pass it through the API, please change the API instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887738</commentid>
    <comment_count>33</comment_count>
      <attachid>201440</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-10 22:02:28 -0700</bug_when>
    <thetext>Comment on attachment 201440
Patch v5b

Clearing flags on attachment: 201440

Committed r149923: &lt;http://trac.webkit.org/changeset/149923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887739</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-10 22:02:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200997</attachid>
            <date>2013-05-07 16:56:44 -0700</date>
            <delta_ts>2013-05-07 17:17:29 -0700</delta_ts>
            <desc>initial patch - missing Changelog</desc>
            <filename>bug-115564-20130507165549.patch</filename>
            <type>text/plain</type>
            <size>21412</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAyYTJjM2FkNDBl
MWViYjNhZWUyMjYyNWY5ZTYxYmE0ZDFkZjVlYWE4Li4wZWUxZDU2YmU5ZDI3YjQxYWI1ODQxYjgz
MjhhNjE4NmQyMTk2YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTY3LDkgKzY3LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7
CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZp
cnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hXaW5kb3coKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZWZlYjkyNjJkOWRkZjM0ZDAwN2MzMWU2MzIyYWIxZTk1ZTA1ZDM3My4uNzBiZWQ1NTQ4Zjk1NzU5
ZGE1MzBiOTU0Y2U2M2IyNDA3ZTJkYmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMTYzLDYgKzE2MywxMSBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1
bW15IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogcHVibGljOgogICAg
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXkoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2Uq
KTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9j
a1NpZGUpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBPVkVS
UklERSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5jcHAKaW5kZXggYTk5NTM3NWVhN2U5NTI0NzdhOGY3YTc4MmM1
NDRmMTQwN2M2ZWM3My4uZDhiMDI3MjRkMDUwYjM2NTBkMmMzYjg4YzUzYzMxNmMxZjVhY2E5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuY3BwCkBAIC0xODMsNiArMTgzLDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRFZmw6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpzYXZl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXBwZW5kKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCmluZGV4IGYwMjM5OGIxMGM2ZDQ4OTM5
M2YzOGM5ZjU0MTQ4MzdhMzE5N2Y2MWYuLmIxZWViNDA4MDVkNDNjNjhkNTUyMjE4OGUzOGE5NDVi
NzNiNWYwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC04MSw2ICs4MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZp
cnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRv
dygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCA4MWJjNmFlOTMwOThjZDFmZmM5NWU5NWU2NWNlMTkx
MDIzYTFkMDRmLi4yMWE5Mjk2MzhmM2E3MjM3NDVjOGJlZTJmNjAyNjUxZmRlZWM1NTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEd0ay5jcHAKQEAgLTI0MSw2ICsyNDEsMTYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2xvc2VXaW5kb3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JXaW5kb3codHJ1ZSk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUpCiB7CiAgICAgaWYgKCFtX2luc3BlY3Rvcldl
YlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEd0ay5oCmluZGV4IDdkZjNiYzJmZWYxMDk5Y2VjMGEzMmIyYjAwM2U1NmEzOGU0
NGZmNWQuLjY5MzcxMzRiOWJkMmE3ZmFhMDQzYjA2MDM1MzUwMzkxMmZjNjM1YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5oCkBAIC04OCw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9G
cm9udCgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwogCisgICAgdmlydHVhbCBi
b29sIGNhblNhdmUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KERvY2tTaWRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5jcHAKaW5kZXggNDFlYjVlNWU1NTk2MThmNTY2ODVkNjAyMjQzZjAwNzhiY2FjNTc1OC4u
OTMyMmZkM2JhNDcyYjk5Y2MyNjJhOTBlYzZhN2EzNWM4NGI2ZmMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAg
LTMxNiw2ICszMTYsMTYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpjbG9zZVdp
bmRvdygpCiAgICAgZGVzdHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRRdDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBi
b29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Ojph
dHRhY2hXaW5kb3coRG9ja1NpZGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAppbmRl
eCA1MTc3MWFhODk2OWVmYTVmNDdmZWQyNzhhZjYyMmI5NDAwMTlkMWUxLi5kMmI4MTk3OTNkMDhj
YmVlNjE4YjUxNzg1ZWI2NWZlMzAyOTRiNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCkBAIC05MSw2ICs5MSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvdygpOwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVmNmU4
MjhmNzQ0YjkxMzFmMDI2OWY2NDRiOTEwY2JmOWM0YWRhYjYuLjJkOThjMDJmYjg2OTFhNTA4MjE1
ZmVlODA2NWJjYmY1YjQ5MmQwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMjc5LDYgKzI3OSwxNiBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCiAgICAgZGVz
dHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUpCiB7CiAgICAgaWYgKG1fYXR0YWNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDAzMGY2MDk2Yjk0ZGYy
ZmMzOGEzNGRhOWZlMGM0Zjk3ZDI3N2JkZmMuLjBjMjQ5YWQzYmJmYTlkNzZkYTJiOTg4MzQ3NDY3
NjBmODM5MjJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMDMsNiArMTAzLDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlV2luZG93KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCA3NzM3ZTI0NjFjY2NmODBhNTMwODFkYzQ1
YTQ5Yzg1NTE2OTdkZDEyLi4yNmU3NjU2NDA0MWU5MWQ0YzAyNWUxNTlhNGQ2YjY0NmU2ZjVmYTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAK
QEAgLTQ3NCw2ICs0NzQsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICBwbGF0Zm9ybUluc3BlY3RlZFVS
TENoYW5nZWQodXJsU3RyaW5nKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuU2F2
ZShib29sJiByZXN1bHQpCit7CisgICAgcGxhdGZvcm1DYW5TYXZlKHJlc3VsdCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIHBsYXRmb3JtU2F2ZShm
aWxlbmFtZSwgY29udGVudCwgZm9yY2VTYXZlQXMpOworfQorCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
KQoreworICAgIHBsYXRmb3JtQXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKK30KKwogYm9vbCBX
ZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNoKCkKIHsKICAgICAvLyBLZWVwIHRoaXMgaW4gc3lu
YyB3aXRoIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdy4gVGhl
cmUgYXJlIHR3byBpbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmgKaW5kZXggZGI5OGQ0MWQ0NjA0YmQ0MzJjYzI1OTE4MDk1ZjNmNzEx
MTUyYmIyMy4uMDUwY2Y4YWE0MjE3NDgzNjBjY2IzYmVkYTdjNGIyOWFmOGFkYmI3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTM4LDkgKzM4
LDExIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpD
X0NMQVNTIE5TQnV0dG9uOworT0JKQ19DTEFTUyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7
CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKIE9CSkNfQ0xBU1Mg
V0tXZWJJbnNwZWN0b3JXS1ZpZXc7CkBAIC0xNjMsNiArMTY1LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybURldGFjaCgpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRv
d0hlaWdodCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lk
dGgodW5zaWduZWQpOworICAgIHZvaWQgcGxhdGZvcm1DYW5TYXZlKGJvb2wmKTsKKyAgICB2b2lk
IHBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgZm9yY2VTYXZlQXMpOworICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogCiAgICAgLy8gQ2FsbGVk
IGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCiAgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQ
YWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKQEAgLTE3MSw2ICsxNzcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dGFjaEF2YWlsYWJp
bGl0eUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpOwogCisgICAgdm9pZCBjYW5TYXZlKGJvb2wmKTsKKyAgICB2b2lkIHNhdmUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFz
KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAgICAgdm9pZCBzZW5k
TWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgpA
QCAtMjE2LDYgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TQnV0dG9uPiBtX2Rv
Y2tSaWdodEJ1dHRvbjsKICAgICBSZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFw
dGVyPiBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7CiAgICAgU3RyaW5nIG1fdXJsU3RyaW5n
OworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3NhdmVVUkxzOyAgCiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50R3RrIG1fY2xpZW50Owog
ICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU5YmZjNDc5
NzI5NDk1MGY4ZTQwYzU3YjBlNzM2MTMzMTA0NGRkMWUuLmIxOGZmYjU0NWQ4OTQ5ZjI5M2UxZDFk
OTY5NTUzNTc0NjI0NGZlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDEwIEBAIG1lc3Nh
Z2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBCcmluZ1RvRnJvbnQoKQogICAgIEluc3Bl
Y3RlZFVSTENoYW5nZWQoV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQogCisgICAgQ2FuU2F2ZSgpIC0+
IChib29sIHJlc3VsdCkKKyAgICBTYXZlKFdURjo6U3RyaW5nIGZpbGVuYW1lLCBXVEY6OlN0cmlu
ZyBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQorICAgIEFwcGVuZChXVEY6OlN0cmluZyBmaWxl
bmFtZSwgV1RGOjpTdHJpbmcgY29udGVudCkKKwogICAgIEF0dGFjaEJvdHRvbSgpCiAgICAgQXR0
YWNoUmlnaHQoKQogICAgIERldGFjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IDJlNjgyZDUyN2NkNTQ3NThi
NjBhZTBiMWY5ODY2ZjExZGM1MGNjYTUuLjRmMmEyYzEwZjZkYTEwMjdlNTZjMDgzNDc5OTIwYjM0
ZjJjMjM4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5z
cGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yMTMsNiArMjEzLDIxIEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIFdlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNhdmUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCAxNjMxNDgzNzkyZDE4MzE0NjYx
ZjgxMzg5NzQzY2I5MGMzOWQzNWM0Li5lYTQxMjg0N2ZkY2Y1Zjc1NzcxOGJlNTVkMWY1MWIwMzdi
Yzc2YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcApAQCAtMjM0LDYgKzIzNCwyMSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuU2F2ZSgpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDYyZmRiNTcyNjc0OWJkNTI5OTMyNGM3
MzljNWI0NTQ5ZWUxNmI4M2EuLjQ2Nzk1YmE4YjE4YzMyZWZmMGNhOGRhMGI5Y2VmYjg1NDZmZGRj
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgog
I2ltcG9ydCAiV0tJbnNwZWN0b3JQcml2YXRlTWFjLmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRl
LmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdy
b3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2Vz
LmgiCkBAIC00OTcsNiArNDk4LDU4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
SW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICB1cGRhdGVJ
bnNwZWN0b3JXaW5kb3dUaXRsZSgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IHRydWU7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHJlZlVSTCwg
Y29uc3QgU3RyaW5nJiByZWZDb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFN0cmlu
ZyB1cmwgPSByZWZVUkw7CisgICAgU3RyaW5nIGNvbnRlbnQgPSByZWZDb250ZW50OworICAgIGF1
dG8gc2F2ZVRvVVJMID0gXihOU1VSTCAqVVJMKSB7CisgICAgICAgIG1fc2F2ZVVSTHMuc2V0KHVy
bCwgVVJMKTsKKworICAgICAgICBbY29udGVudCB3cml0ZVRvVVJMOlVSTCBhdG9taWNhbGx5OllF
UyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKKyAgICAgICAgbV9w
YWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2ZShbVVJM
IGFic29sdXRlU3RyaW5nXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFn
ZS0+cGFnZUlEKCkpOworCisgICAgfTsKKworICAgIE5TVVJMICpVUkwgPSBtX3NhdmVVUkxzLmdl
dCh1cmwpLmdldCgpOworICAgIGlmICghVVJMKQorICAgICAgICBVUkwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzp1cmxdOworICAgIGVsc2UgaWYgKCFmb3JjZVNhdmVBcykgeworICAgICAgICBzYXZl
VG9VUkwoVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU2F2ZVBhbmVsICpw
YW5lbCA9IFtOU1NhdmVQYW5lbCBzYXZlUGFuZWxdOworICAgIHBhbmVsLm5hbWVGaWVsZFN0cmlu
Z1ZhbHVlID0gVVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgIHBhbmVsLmRpcmVjdG9yeVVSTCA9
IFtVUkwgVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKKworICAgIFtwYW5lbCBiZWdp
blNoZWV0TW9kYWxGb3JXaW5kb3c6bV9pbnNwZWN0b3JXaW5kb3cuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlNGaWxl
SGFuZGxpbmdQYW5lbENhbmNlbEJ1dHRvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBOU0ZpbGVIYW5kbGluZ1BhbmVsT0tCdXR0b24pOworICAgICAgICBz
YXZlVG9VUkwocGFuZWwuVVJMKTsKKyAgICB9XTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY29udGVu
dCkKK3sKKyAgICBSZXRhaW5QdHI8TlNVUkw+IFVSTCA9IG1fc2F2ZVVSTHMuZ2V0KHVybCk7Cisg
ICAgaWYgKCFVUkwpCisgICAgICAgIFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF07CisK
KyAgICBOU0ZpbGVIYW5kbGUgKmhhbmRsZSA9IFtOU0ZpbGVIYW5kbGUgZmlsZUhhbmRsZUZvcldy
aXRpbmdUb1VSTDpVUkwuZ2V0KCkgZXJyb3I6TlVMTF07CisgICAgW2hhbmRsZSBzZWVrVG9FbmRP
ZkZpbGVdOworICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW2hhbmRsZSBjbG9zZUZpbGVdOworCisgICAg
bV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkQXBwZW5k
KFtVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKIHsKICAgICBBU1NFUlQoIW1f
aXNBdHRhY2hlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2Vi
SW5zcGVjdG9yUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5z
cGVjdG9yUHJveHlRdC5jcHAKaW5kZXggMjY1ZjgyOGM2YzFjMTQyMzFiMmRlNjEwZjU3MWJmYTAy
ODczMzhlZC4uMzQ1MzE4OTk1OWI5MGY3NmNhMWRlZGE0ZGFmYWNmN2YyYjg5MGUyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNw
cApAQCAtMTA3LDYgKzEwNywyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNl
dEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAorYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCA5NjU0MmEwMDM2Y2Q2YTVi
Y2I2YWM0Y2E4MzM3MDFiOTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDljZjEyNDcyOTZmNjJlY2U1MjUw
M2M0ZTk3MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNw
cApAQCAtNjEsNiArNjEsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xv
c2VXaW5kb3coKQogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKK2Jv
b2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQoreworICAgIHJldHVybiBt
X3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNh
dmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5h
bWUsIGNvbnRlbnQpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRh
Y2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dpdGNoIChkb2NrU2lkZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGViMjVhYmVhZTQ0
NDI3NjllOTNmYmJhOWRhMjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2ZGM1NGRmM2UwNDJhZmIzNTk3
ODkxMTEwZmRhOTZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9G
cm9udCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJSSURF
OwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGM3
MzA1OGZlMjMwYTFhMTY0MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAuLjE2ZjAzYzBlMTk0M2VjYWE1
YWJlZGUxZWQ3ZmU4OGQ2ODc4MmMzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0yNywxNiArMjcsMjAgQEAKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3IuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSA8
V1RGL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0xMTcsNiArMTIxLDIzIEBAIHZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVS
TENoYW5nZWQodXJsU3RyaW5nKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKK2Jvb2wgV2ViSW5z
cGVjdG9yOjpjYW5TYXZlKCkKK3sKKyAgICBib29sIHJlc3VsdDsKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6Q2FuU2F2ZSgpLCByZXN1bHQsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmls
ZW5hbWUsIGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0
b3I6OmF0dGFjaEJvdHRvbSgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwpAQCAtMTUzLDYgKzE3NCwxOCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6
Y2xvc2UoKQogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5j
bG9zZSgpOwogfQogCit2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVy
bCkKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAg
ICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNw
ZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCiB2
b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQogewogICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5oCmluZGV4IDAzOGE2MTMxZmJiMzcwYjdiZjNmOTUwYjNiN2UwNmUwMzFmOGJmODAuLmQ0
ODkxYzRhYWJjODM2NGJmNDk2MjFjOTljZWE1MGNjMjNmOWY4MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTU3LDYgKzU3LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIHZv
aWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRBcHBlbmQoY29uc3Qg
U3RyaW5nJiB1cmwpOworCiAgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpOwogICAgIHZvaWQgYXR0
YWNoZWRSaWdodCgpOwogICAgIHZvaWQgZGV0YWNoZWQoKTsKQEAgLTk0LDYgKzk3LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIGNhblNhdmUoKTsKKyAgICB2b2lkIHNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZv
cmNlU2F2ZUFzKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOworCiAgICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKICAgICB2b2lk
IGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9pZCBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmlu
ZGV4IDUwYjc1YWZkYzRkZTliYWIyZWQ1ZWU0ODkyNTVlZWUwZDA3YjViZjQuLjIyZDJmYjAwMjM0
OWRjZTRlMWQzMDY4YTJhMmY1ZGQ1NjA5MjljNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgpAQCAt
MjgsNiArMjgsOCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0KCkKICAgICBEZXRhY2hlZCgp
CisgICAgRGlkU2F2ZShXVEY6OlN0cmluZyB1cmwpCisgICAgRGlkQXBwZW5kKFdURjo6U3RyaW5n
IHVybCkKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCiAgICAgU2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201000</attachid>
            <date>2013-05-07 17:17:34 -0700</date>
            <delta_ts>2013-05-07 17:29:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115564-20130507171640.patch</filename>
            <type>text/plain</type>
            <size>21298</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAyYTJjM2FkNDBl
MWViYjNhZWUyMjYyNWY5ZTYxYmE0ZDFkZjVlYWE4Li4wZWUxZDU2YmU5ZDI3YjQxYWI1ODQxYjgz
MjhhNjE4NmQyMTk2YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTY3LDkgKzY3LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7
CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZp
cnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hXaW5kb3coKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZWZlYjkyNjJkOWRkZjM0ZDAwN2MzMWU2MzIyYWIxZTk1ZTA1ZDM3My4uNzBiZWQ1NTQ4Zjk1NzU5
ZGE1MzBiOTU0Y2U2M2IyNDA3ZTJkYmI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMTYzLDYgKzE2MywxMSBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1
bW15IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogcHVibGljOgogICAg
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXkoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2Uq
KTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9j
a1NpZGUpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBPVkVS
UklERSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5jcHAKaW5kZXggYTk5NTM3NWVhN2U5NTI0NzdhOGY3YTc4MmM1
NDRmMTQwN2M2ZWM3My4uZDhiMDI3MjRkMDUwYjM2NTBkMmMzYjg4YzUzYzMxNmMxZjVhY2E5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuY3BwCkBAIC0xODMsNiArMTgzLDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRFZmw6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpzYXZl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXBwZW5kKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCmluZGV4IGYwMjM5OGIxMGM2ZDQ4OTM5
M2YzOGM5ZjU0MTQ4MzdhMzE5N2Y2MWYuLmIxZWViNDA4MDVkNDNjNjhkNTUyMjE4OGUzOGE5NDVi
NzNiNWYwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC04MSw2ICs4MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZp
cnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRv
dygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCA4MWJjNmFlOTMwOThjZDFmZmM5NWU5NWU2NWNlMTkx
MDIzYTFkMDRmLi4yMWE5Mjk2MzhmM2E3MjM3NDVjOGJlZTJmNjAyNjUxZmRlZWM1NTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEd0ay5jcHAKQEAgLTI0MSw2ICsyNDEsMTYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2xvc2VXaW5kb3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JXaW5kb3codHJ1ZSk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUpCiB7CiAgICAgaWYgKCFtX2luc3BlY3Rvcldl
YlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEd0ay5oCmluZGV4IDdkZjNiYzJmZWYxMDk5Y2VjMGEzMmIyYjAwM2U1NmEzOGU0
NGZmNWQuLjY5MzcxMzRiOWJkMmE3ZmFhMDQzYjA2MDM1MzUwMzkxMmZjNjM1YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5oCkBAIC04OCw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9G
cm9udCgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwogCisgICAgdmlydHVhbCBi
b29sIGNhblNhdmUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KERvY2tTaWRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5jcHAKaW5kZXggNDFlYjVlNWU1NTk2MThmNTY2ODVkNjAyMjQzZjAwNzhiY2FjNTc1OC4u
OTMyMmZkM2JhNDcyYjk5Y2MyNjJhOTBlYzZhN2EzNWM4NGI2ZmMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAg
LTMxNiw2ICszMTYsMTYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpjbG9zZVdp
bmRvdygpCiAgICAgZGVzdHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRRdDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBi
b29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Ojph
dHRhY2hXaW5kb3coRG9ja1NpZGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAppbmRl
eCA1MTc3MWFhODk2OWVmYTVmNDdmZWQyNzhhZjYyMmI5NDAwMTlkMWUxLi5kMmI4MTk3OTNkMDhj
YmVlNjE4YjUxNzg1ZWI2NWZlMzAyOTRiNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCkBAIC05MSw2ICs5MSwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvdygpOwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVmNmU4
MjhmNzQ0YjkxMzFmMDI2OWY2NDRiOTEwY2JmOWM0YWRhYjYuLjJkOThjMDJmYjg2OTFhNTA4MjE1
ZmVlODA2NWJjYmY1YjQ5MmQwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMjc5LDYgKzI3OSwxNiBA
QCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCiAgICAgZGVz
dHJveUluc3BlY3RvclZpZXcodHJ1ZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUpCiB7CiAgICAgaWYgKG1fYXR0YWNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDAzMGY2MDk2Yjk0ZGYy
ZmMzOGEzNGRhOWZlMGM0Zjk3ZDI3N2JkZmMuLjBjMjQ5YWQzYmJmYTlkNzZkYTJiOTg4MzQ3NDY3
NjBmODM5MjJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMDMsNiArMTAzLDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlV2luZG93KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCA3NzM3ZTI0NjFjY2NmODBhNTMwODFkYzQ1
YTQ5Yzg1NTE2OTdkZDEyLi4yNmU3NjU2NDA0MWU5MWQ0YzAyNWUxNTlhNGQ2YjY0NmU2ZjVmYTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAK
QEAgLTQ3NCw2ICs0NzQsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICBwbGF0Zm9ybUluc3BlY3RlZFVS
TENoYW5nZWQodXJsU3RyaW5nKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuU2F2
ZShib29sJiByZXN1bHQpCit7CisgICAgcGxhdGZvcm1DYW5TYXZlKHJlc3VsdCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIHBsYXRmb3JtU2F2ZShm
aWxlbmFtZSwgY29udGVudCwgZm9yY2VTYXZlQXMpOworfQorCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
KQoreworICAgIHBsYXRmb3JtQXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKK30KKwogYm9vbCBX
ZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNoKCkKIHsKICAgICAvLyBLZWVwIHRoaXMgaW4gc3lu
YyB3aXRoIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdy4gVGhl
cmUgYXJlIHR3byBpbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmgKaW5kZXggZGI5OGQ0MWQ0NjA0YmQ0MzJjYzI1OTE4MDk1ZjNmNzEx
MTUyYmIyMy4uMDUwY2Y4YWE0MjE3NDgzNjBjY2IzYmVkYTdjNGIyOWFmOGFkYmI3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTM4LDkgKzM4
LDExIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpD
X0NMQVNTIE5TQnV0dG9uOworT0JKQ19DTEFTUyBOU1VSTDsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7
CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKIE9CSkNfQ0xBU1Mg
V0tXZWJJbnNwZWN0b3JXS1ZpZXc7CkBAIC0xNjMsNiArMTY1LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybURldGFjaCgpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRv
d0hlaWdodCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lk
dGgodW5zaWduZWQpOworICAgIHZvaWQgcGxhdGZvcm1DYW5TYXZlKGJvb2wmKTsKKyAgICB2b2lk
IHBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgZm9yY2VTYXZlQXMpOworICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogCiAgICAgLy8gQ2FsbGVk
IGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCiAgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQ
YWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKQEAgLTE3MSw2ICsxNzcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dGFjaEF2YWlsYWJp
bGl0eUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpOwogCisgICAgdm9pZCBjYW5TYXZlKGJvb2wmKTsKKyAgICB2b2lkIHNhdmUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFz
KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAgICAgdm9pZCBzZW5k
TWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgpA
QCAtMjE2LDYgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TQnV0dG9uPiBtX2Rv
Y2tSaWdodEJ1dHRvbjsKICAgICBSZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFw
dGVyPiBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7CiAgICAgU3RyaW5nIG1fdXJsU3RyaW5n
OworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3NhdmVVUkxzOyAgCiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50R3RrIG1fY2xpZW50Owog
ICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU5YmZjNDc5
NzI5NDk1MGY4ZTQwYzU3YjBlNzM2MTMzMTA0NGRkMWUuLmIxOGZmYjU0NWQ4OTQ5ZjI5M2UxZDFk
OTY5NTUzNTc0NjI0NGZlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDEwIEBAIG1lc3Nh
Z2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBCcmluZ1RvRnJvbnQoKQogICAgIEluc3Bl
Y3RlZFVSTENoYW5nZWQoV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQogCisgICAgQ2FuU2F2ZSgpIC0+
IChib29sIHJlc3VsdCkKKyAgICBTYXZlKFdURjo6U3RyaW5nIGZpbGVuYW1lLCBXVEY6OlN0cmlu
ZyBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQorICAgIEFwcGVuZChXVEY6OlN0cmluZyBmaWxl
bmFtZSwgV1RGOjpTdHJpbmcgY29udGVudCkKKwogICAgIEF0dGFjaEJvdHRvbSgpCiAgICAgQXR0
YWNoUmlnaHQoKQogICAgIERldGFjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IDJlNjgyZDUyN2NkNTQ3NThi
NjBhZTBiMWY5ODY2ZjExZGM1MGNjYTUuLjdkNWFlMTI0MTBmODAwMzU2OGVlMDlhOGRlNDdmNWQx
ZDk2ZWUyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5z
cGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yMTMsNiArMjEzLDIxIEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKGJv
b2wqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBmYWxzZTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hh
bmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDE2MzE0
ODM3OTJkMTgzMTQ2NjFmODEzODk3NDNjYjkwYzM5ZDM1YzQuLjEzNjMwZjJiNWMzZTk1MTY0MmJm
YjNkZmU0MzE5MzBhZTQ4ODc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0yMzQsNiArMjM0LDIxIEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNp
Z25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpjYW5TYXZlKGJvb2wqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBmYWxzZTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBi
b29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpp
bmRleCA2MmZkYjU3MjY3NDliZDUyOTkzMjRjNzM5YzViNDU0OWVlMTZiODNhLi40Njc5NWJhOGIx
OGMzMmVmZjBjYThkYTBiOWNlZmI4NTQ2ZmRkYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yTWVz
c2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNDk3LDYgKzQ5OCw1OCBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiAgICAgdXBkYXRlSW5zcGVjdG9yV2luZG93VGl0bGUoKTsKIH0KIAor
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKGJvb2wmIHJlc3VsdCkKK3sK
KyAgICByZXN1bHQgPSB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNhdmUoY29uc3QgU3RyaW5nJiByZWZVUkwsIGNvbnN0IFN0cmluZyYgcmVmQ29udGVudCwgYm9v
bCBmb3JjZVNhdmVBcykKK3sKKyAgICBTdHJpbmcgdXJsID0gcmVmVVJMOworICAgIFN0cmluZyBj
b250ZW50ID0gcmVmQ29udGVudDsKKyAgICBhdXRvIHNhdmVUb1VSTCA9IF4oTlNVUkwgKlVSTCkg
eworICAgICAgICBtX3NhdmVVUkxzLnNldCh1cmwsIFVSTCk7CisKKyAgICAgICAgW2NvbnRlbnQg
d3JpdGVUb1VSTDpVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmcgZXJyb3I6TlVMTF07CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkRpZFNhdmUoW1VSTCBhYnNvbHV0ZVN0cmluZ10pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpKTsKKworICAgIH07CisKKyAg
ICBOU1VSTCAqVVJMID0gbV9zYXZlVVJMcy5nZXQodXJsKS5nZXQoKTsKKyAgICBpZiAoIVVSTCkK
KyAgICAgICAgVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXTsKKyAgICBlbHNlIGlmICgh
Zm9yY2VTYXZlQXMpIHsKKyAgICAgICAgc2F2ZVRvVVJMKFVSTCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVs
XTsKKyAgICBwYW5lbC5uYW1lRmllbGRTdHJpbmdWYWx1ZSA9IFVSTC5sYXN0UGF0aENvbXBvbmVu
dDsKKyAgICBwYW5lbC5kaXJlY3RvcnlVUkwgPSBbVVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF07CisKKyAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93Om1faW5zcGVj
dG9yV2luZG93LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgewor
ICAgICAgICBpZiAocmVzdWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxDYW5jZWxCdXR0b24pCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gTlNGaWxlSGFuZGxp
bmdQYW5lbE9LQnV0dG9uKTsKKyAgICAgICAgc2F2ZVRvVVJMKHBhbmVsLlVSTCk7CisgICAgfV07
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgUmV0YWluUHRyPE5TVVJMPiBV
UkwgPSBtX3NhdmVVUkxzLmdldCh1cmwpOworICAgIGlmICghVVJMKQorICAgICAgICBVUkwgPSBb
TlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdOworCisgICAgTlNGaWxlSGFuZGxlICpoYW5kbGUgPSBb
TlNGaWxlSGFuZGxlIGZpbGVIYW5kbGVGb3JXcml0aW5nVG9VUkw6VVJMLmdldCgpIGVycm9yOk5V
TExdOworICAgIFtoYW5kbGUgc2Vla1RvRW5kT2ZGaWxlXTsKKyAgICBbaGFuZGxlIHdyaXRlRGF0
YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAg
IFtoYW5kbGUgY2xvc2VGaWxlXTsKKworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURp
ZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCmluZGV4IDI2NWY4
MjhjNmMxYzE0MjMxYjJkZTYxMGY1NzFiZmEwMjg3MzM4ZWQuLjU4ZTBkNDZiZGM5NjRlYTlhNzM2
ZGYzZjVhZTk5MDJhNDNmY2UyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKQEAgLTEwNyw2ICsxMDcsMjEgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNh
blNhdmUoYm9vbCogcmVzdWx0KQoreworICAgIHJlc3VsdCA9IGZhbHNlOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCA5NjU0MmEwMDM2Y2Q2YTViY2I2YWM0Y2E4MzM3MDFi
OTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDljZjEyNDcyOTZmNjJlY2U1MjUwM2M0ZTk3MWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcApAQCAtNjEsNiArNjEs
MjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogICAg
IG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5jYW5TYXZlKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZv
cmNlU2F2ZUFzKQoreworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNv
bnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkK
K3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwor
fQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dpdGNoIChkb2NrU2lkZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGViMjVhYmVhZTQ0NDI3NjllOTNmYmJhOWRh
MjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2ZGM1NGRmM2UwNDJhZmIzNTk3ODkxMTEwZmRhOTZkYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJSSURFOwogCisgICAgdmlydHVh
bCBib29sIGNhblNhdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGM3MzA1OGZlMjMwYTFhMTY0
MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAuLmY5NjI5MGMwOTk3NzRmNGZlZWY4NzllOWIyODVhNjYx
MWI4OWFkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCkBAIC0zMywxMCArMzMsMTQgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0xMTcsNiArMTIxLDIzIEBAIHZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVS
TENoYW5nZWQodXJsU3RyaW5nKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKK2Jvb2wgV2ViSW5z
cGVjdG9yOjpjYW5TYXZlKCkKK3sKKyAgICBib29sIHJlc3VsdDsKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6Q2FuU2F2ZSgpLCByZXN1bHQsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmls
ZW5hbWUsIGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0
b3I6OmF0dGFjaEJvdHRvbSgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwpAQCAtMTUzLDYgKzE3NCwxOCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6
Y2xvc2UoKQogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5j
bG9zZSgpOwogfQogCit2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVy
bCkKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAg
ICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNw
ZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCiB2
b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQogewogICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5oCmluZGV4IDAzOGE2MTMxZmJiMzcwYjdiZjNmOTUwYjNiN2UwNmUwMzFmOGJmODAuLmQ0
ODkxYzRhYWJjODM2NGJmNDk2MjFjOTljZWE1MGNjMjNmOWY4MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTU3LDYgKzU3LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIHZv
aWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRBcHBlbmQoY29uc3Qg
U3RyaW5nJiB1cmwpOworCiAgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpOwogICAgIHZvaWQgYXR0
YWNoZWRSaWdodCgpOwogICAgIHZvaWQgZGV0YWNoZWQoKTsKQEAgLTk0LDYgKzk3LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIGNhblNhdmUoKTsKKyAgICB2b2lkIHNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZv
cmNlU2F2ZUFzKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOworCiAgICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKICAgICB2b2lk
IGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9pZCBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmlu
ZGV4IDUwYjc1YWZkYzRkZTliYWIyZWQ1ZWU0ODkyNTVlZWUwZDA3YjViZjQuLjIyZDJmYjAwMjM0
OWRjZTRlMWQzMDY4YTJhMmY1ZGQ1NjA5MjljNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgpAQCAt
MjgsNiArMjgsOCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0KCkKICAgICBEZXRhY2hlZCgp
CisgICAgRGlkU2F2ZShXVEY6OlN0cmluZyB1cmwpCisgICAgRGlkQXBwZW5kKFdURjo6U3RyaW5n
IHVybCkKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCiAgICAgU2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201001</attachid>
            <date>2013-05-07 17:29:54 -0700</date>
            <delta_ts>2013-05-07 17:45:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115564-20130507172900.patch</filename>
            <type>text/plain</type>
            <size>29006</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZiM2JiMWJkNDllN2M2
MDUxNGM3MTczYzVjMzIzM2MzZTJkYTdiYi4uYzEyMzI2NjUyYTAyNjM1YTk2NDgyNWQzODUxYzM5
OTA0NWZhNDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA1LTA3ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kIGFwcGVuZCgpIG1ldGhv
ZHMgZm9yCisgICAgICAgIFdlYktpdDIuIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgdGhl
c2UgbWV0aG9kcyBpbiBub24tbWFjCisgICAgICAgIFdlYktpdDEgcG9ydHMuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSk6CisKIDIwMTMtMDUt
MDYgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0
IC13ZWJraXQtc3lzdGVtLWZvbnQgb24gT1MgWC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMTljYzcx
OGJkZjAyYWY2NDA0ZWE3NmRjMmMwN2U5MDkyM2QwNDJkLi40YjdiN2NhMDk5MTI4M2RmZGExODdl
OWM4ZGJkZGUxOWE1MWQ2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTMtMDUtMDcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lvbiBvZiBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIEluc3BlY3RvckZyb250ZW5kSG9z
dCdzIHNhdmUoKSBhbmQKKyAgICAgICAgYXBwZW5kKCkgbWV0aG9kcyBpbiBub24tbWFjIFdlYktp
dDEgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbDo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKKwogMjAx
My0wNC0yNiAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21haWwuY29tPgogCiAgICAgICAg
IFtFRkxdIEFkZCB1bml0IHRlc3QgY2FzZXMgZm9yIGV3a19zZXR0aW5ncyBBUElzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggYjhlZThkNzNhNGNhNzcxZGEwOTg4NDM0NDU0YWIxZWY0MjlkYWJmYS4uNDQ1
MmQ4ZTVkZTlkYTQ3MzRjZDUwNTNkMjBmYjNkOGYyZWU0NjQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNo
aW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNp
b24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhv
ZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKwog
MjAxMy0wNS0wNyAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAg
IFtHVEtdIEluaXRpYWxpemUgV2ViS2l0V2ViUGx1Z2luIHBhdGggdG8gcHJldmVudCBkb3VibGUt
ZnJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCBiYzI0N2Q2ZmRjZjcxYTM4NjMzYjdiYzdkYzhhOWQxZDc5
MWQyNGZmLi5lNDExMmIzMDllZGMwYTU3NTI0ZTQ1ZmVkOTQxYWYyZmQ5ZGIyYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQg
V0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVu
dGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkKKyAgICAgICAgYW5kIGFwcGVu
ZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNhblNhdmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRRdCk6CisKIDIwMTMtMDUtMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBjYWxsaW5nIFFXZWJG
cmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzJjMjhmOGUxNTAx
NzIyMjVmM2ZhZjkyNTJlOTM2YjI3MTM2Zjg1Ni4uNGRhZWMzOGY1ZTI3NzcxYzNlZDExMzY1YTYw
YWRlMDFkODQ5YmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1
LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBz
YXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBv
cnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAgICAgKEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUpOgorCiAyMDEz
LTA1LTA2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gQXBwbGVXaW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzNTIwZjM4NzY5M2Y0
M2I4YzQwZmVjZmE0YWMxM2YwMjM5YWNjNTMuLjA0MzdmNTNlMGJhYjIzMTRmNzlmMTNhMzBiY2Jj
NTFiNjRkYTYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMy0wNS0wNyAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IFdLMiB2ZXJzaW9uIG9mIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpzYXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0J3Mgc2F2ZSgpIGFuZCBhcHBlbmQoKSBtZXRo
b2RzIGZvcgorICAgICAgICBXZWJLaXQyLiBBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRo
ZXNlIG1ldGhvZHMgaW4gbm9uLW1hYworICAgICAgICBXZWJLaXQxIHBvcnRzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3I6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjphcHBlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpZFNhdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEzLTA1LTA3
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4g
dXAgS2V5ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5k
ZXggMmEyYzNhZDQwZTFlYmIzYWVlMjI2MjVmOWU2MWJhNGQxZGY1ZWFhOC4uMGVlMWQ1NmJlOWQy
N2I0MWFiNTg0MWI4MzI4YTYxODZkMjE5NmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC02Nyw5ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGVmZWI5MjYyZDlkZGYzNGQwMDdjMzFlNjMyMmFiMWU5NWUwNWQzNzMuLjcw
YmVkNTU0OGY5NTc1OWRhNTMwYjk1NGNlNjNiMjQwN2UyZGJiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTE2Myw2ICsxNjMsMTEgQEAgY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnREdW1teSA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsK
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KEluc3BlY3RvckNvbnRy
b2xsZXIqLCBQYWdlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KERvY2tTaWRlKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V2luZG93KCkgT1ZFUlJJREUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IGE5OTUzNzVlYTdlOTUy
NDc3YThmN2E3ODJjNTQ0ZjE0MDdjNmVjNzMuLmQ4YjAyNzI0ZDA1MGIzNjUwZDJjM2I4OGM1M2Mz
MTZjMWY1YWNhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtMTgzLDYgKzE4MywxNiBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudEVmbDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6
OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmF0dGFjaFdpbmRv
dyhEb2NrU2lkZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCBmMDIz
OThiMTBjNmQ0ODkzOTNmMzhjOWY1NDE0ODM3YTMxOTdmNjFmLi5iMWVlYjQwODA1ZDQzYzY4ZDU1
MjIxODhlMzhhOTQ1YjczYjVmMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaApAQCAtODEsNiArODEsMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hXaW5kb3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggODFiYzZhZTkzMDk4Y2QxZmZj
OTVlOTVlNjVjZTE5MTAyM2ExZDA0Zi4uMjFhOTI5NjM4ZjNhNzIzNzQ1YzhiZWUyZjYwMjY1MWZk
ZWVjNTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0yNDEsNiArMjQxLDE2IEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKICAgICBkZXN0cm95SW5zcGVjdG9yV2lu
ZG93KHRydWUpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIGlmICgh
bV9pbnNwZWN0b3JXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCA3ZGYzYmMyZmVmMTA5OWNlYzBhMzJi
MmIwMDNlNTZhMzhlNDRmZjVkLi42OTM3MTM0YjliZDJhN2ZhYTA0M2IwNjAzNTM1MDM5MTJmYzYz
NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaApAQCAtODgsNiArODgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aFdpbmRvdygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDQxZWI1ZTVlNTU5NjE4ZjU2Njg1ZDYwMjI0M2Yw
MDc4YmNhYzU3NTguLjkzMjJmZDNiYTQ3MmI5OWNjMjYyYTkwZWM2YTdhMzVjODRiNmZjMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwCkBAIC0zMTYsNiArMzE2LDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRRdDo6Y2xvc2VXaW5kb3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOwogfQog
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmgKaW5kZXggNTE3NzFhYTg5NjllZmE1ZjQ3ZmVkMjc4YWY2MjJiOTQwMDE5ZDFlMS4u
ZDJiODE5NzkzZDA4Y2JlZTYxOGI1MTc4NWViNjVmZTMwMjk0YjU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaApAQCAtOTEs
NiArOTEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZl
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhE
b2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCA1ZjZlODI4Zjc0NGI5MTMxZjAyNjlmNjQ0YjkxMGNiZjljNGFkYWI2Li4yZDk4YzAy
ZmI4NjkxYTUwODIxNWZlZTgwNjViY2JmNWI0OTJkMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI3
OSw2ICsyNzksMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5k
b3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOwogfQogCit2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNo
V2luZG93KERvY2tTaWRlKQogewogICAgIGlmIChtX2F0dGFjaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCAw
MzBmNjA5NmI5NGRmMmZjMzhhMzRkYTlmZTBjNGY5N2QyNzdiZGZjLi4wYzI0OWFkM2JiZmE5ZDc2
ZGEyYjk4ODM0NzQ2NzYwZjgzOTIyZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAzLDYgKzEwMywxMCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOworCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhE
b2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNzczN2UyNDYxY2Nj
ZjgwYTUzMDgxZGM0NWE0OWM4NTUxNjk3ZGQxMi4uMjZlNzY1NjQwNDFlOTFkNGMwMjVlMTU5YTRk
NmI2NDZlNmY1ZmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuY3BwCkBAIC00NzQsNiArNDc0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgcGxhdGZv
cm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHBsYXRmb3JtQ2FuU2F2ZShyZXN1
bHQpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBw
bGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3sKKyAgICBwbGF0Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7
Cit9CisKIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgpCiB7CiAgICAgLy8gS2Vl
cCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRh
Y2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRiOThkNDFkNDYwNGJkNDMyY2My
NTkxODA5NWYzZjcxMTE1MmJiMjMuLjA1MGNmOGFhNDIxNzQ4MzYwY2NiM2JlZGE3YzRiMjlhZjhh
ZGJiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5o
CkBAIC0zOCw5ICszOCwxMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIldLR2Vv
bWV0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogT0JKQ19DTEFTUyBOU0J1dHRvbjsKK09CSkNfQ0xBU1MgTlNVUkw7CiBPQkpDX0NM
QVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7
CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwpAQCAtMTYzLDYgKzE2NSwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuU2F2ZShib29s
Jik7CisgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKTsKKyAgICB2b2lkIHBsYXRmb3JtQXBw
ZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CisKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwogICAgIHZvaWQgY3Jl
YXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CkBAIC0xNzEsNiArMTc3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
dHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hh
bmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgY2FuU2F2ZShib29sJik7CisgICAgdm9p
ZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQog
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CiAjZW5kaWYKQEAgLTIxNiw2ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxO
U0J1dHRvbj4gbV9kb2NrUmlnaHRCdXR0b247CiAgICAgUmV0YWluUHRyPFdLV2ViSW5zcGVjdG9y
UHJveHlPYmpDQWRhcHRlcj4gbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyOwogICAgIFN0cmlu
ZyBtX3VybFN0cmluZzsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TVVJMPj4gbV9z
YXZlVVJMczsgIAogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYkluc3BlY3RvckNsaWVudEd0
ayBtX2NsaWVudDsKICAgICBHdGtXaWRnZXQqIG1faW5zcGVjdG9yVmlldzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBlOWJmYzQ3OTcyOTQ5NTBmOGU0MGM1N2IwZTczNjEzMzEwNDRkZDFlLi5iMThmZmI1NDVk
ODk0OWYyOTNlMWQxZDk2OTU1MzU3NDYyNDRmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsy
OCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQnJpbmdUb0Zyb250
KCkKICAgICBJbnNwZWN0ZWRVUkxDaGFuZ2VkKFdURjo6U3RyaW5nIHVybFN0cmluZykKIAorICAg
IENhblNhdmUoKSAtPiAoYm9vbCByZXN1bHQpCisgICAgU2F2ZShXVEY6OlN0cmluZyBmaWxlbmFt
ZSwgV1RGOjpTdHJpbmcgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKKyAgICBBcHBlbmQoV1RG
OjpTdHJpbmcgZmlsZW5hbWUsIFdURjo6U3RyaW5nIGNvbnRlbnQpCisKICAgICBBdHRhY2hCb3R0
b20oKQogICAgIEF0dGFjaFJpZ2h0KCkKICAgICBEZXRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCAyZTY4
MmQ1MjdjZDU0NzU4YjYwYWUwYjFmOTg2NmYxMWRjNTBjY2E1Li4xNjM0MDc5ZjljYjEyYjg2MDgw
NjcyNTM3ZDUxYWJiNWVjZGE5MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMjEzLDYgKzIxMywyMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y2FuU2F2ZShib29sJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gZmFsc2U7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaEF2
YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNw
cAppbmRleCAxNjMxNDgzNzkyZDE4MzE0NjYxZjgxMzg5NzQzY2I5MGMzOWQzNWM0Li40NTNhZmU4
OTcwOWU3MjY5NGRkZmFjZThhZjcyMmI5MmY1NDM2OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMjM0LDYg
KzIzNCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2lu
ZG93V2lkdGgodW5zaWduZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y2FuU2F2ZShib29sJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gZmFs
c2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KaW5kZXggNjJmZGI1NzI2NzQ5YmQ1Mjk5MzI0YzczOWM1YjQ1NDllZTE2Yjgz
YS4uNDY3OTViYThiMThjMzJlZmYwY2E4ZGEwYjljZWZiODU0NmZkZGMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBA
IC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJXZWJDb250ZXh0LmgiCiAjaW1wb3J0ICJXS0luc3Bl
Y3RvclByaXZhdGVNYWMuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldl
Ykluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTQ5Nyw2ICs0
OTgsNTggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIHVwZGF0ZUluc3BlY3RvcldpbmRvd1Rp
dGxlKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZShib29s
JiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgcmVmVVJMLCBjb25zdCBTdHJpbmcmIHJl
ZkNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgU3RyaW5nIHVybCA9IHJlZlVSTDsK
KyAgICBTdHJpbmcgY29udGVudCA9IHJlZkNvbnRlbnQ7CisgICAgYXV0byBzYXZlVG9VUkwgPSBe
KE5TVVJMICpVUkwpIHsKKyAgICAgICAgbV9zYXZlVVJMcy5zZXQodXJsLCBVUkwpOworCisgICAg
ICAgIFtjb250ZW50IHdyaXRlVG9VUkw6VVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFtVUkwgYWJzb2x1dGVTdHJpbmdd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSk7CisK
KyAgICB9OworCisgICAgTlNVUkwgKlVSTCA9IG1fc2F2ZVVSTHMuZ2V0KHVybCkuZ2V0KCk7Cisg
ICAgaWYgKCFVUkwpCisgICAgICAgIFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF07Cisg
ICAgZWxzZSBpZiAoIWZvcmNlU2F2ZUFzKSB7CisgICAgICAgIHNhdmVUb1VSTChVUkwpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNTYXZlUGFuZWwgKnBhbmVsID0gW05TU2F2ZVBh
bmVsIHNhdmVQYW5lbF07CisgICAgcGFuZWwubmFtZUZpZWxkU3RyaW5nVmFsdWUgPSBVUkwubGFz
dFBhdGhDb21wb25lbnQ7CisgICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW1VSTCBVUkxCeURlbGV0
aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldp
bmRvdzptX2luc3BlY3RvcldpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdl
ciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVIYW5kbGluZ1BhbmVsQ2Fu
Y2VsQnV0dG9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQocmVzdWx0ID09
IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbik7CisgICAgICAgIHNhdmVUb1VSTChwYW5lbC5V
UkwpOworICAgIH1dOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVu
ZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQoreworICAgIFJldGFp
blB0cjxOU1VSTD4gVVJMID0gbV9zYXZlVVJMcy5nZXQodXJsKTsKKyAgICBpZiAoIVVSTCkKKyAg
ICAgICAgVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXTsKKworICAgIE5TRmlsZUhhbmRs
ZSAqaGFuZGxlID0gW05TRmlsZUhhbmRsZSBmaWxlSGFuZGxlRm9yV3JpdGluZ1RvVVJMOlVSTC5n
ZXQoKSBlcnJvcjpOVUxMXTsKKyAgICBbaGFuZGxlIHNlZWtUb0VuZE9mRmlsZV07CisgICAgW2hh
bmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKKyAgICBbaGFuZGxlIGNsb3NlRmlsZV07CisKKyAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRBcHBlbmQoW1VSTCBhYnNvbHV0ZVN0
cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
d2luZG93RnJhbWVEaWRDaGFuZ2UoKQogewogICAgIEFTU0VSVCghbV9pc0F0dGFjaGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNw
cAppbmRleCAyNjVmODI4YzZjMWMxNDIzMWIyZGU2MTBmNTcxYmZhMDI4NzMzOGVkLi5kMjRlZjM5
NmJkZmNhYjFhOTljYWJjNzdjOTYyNzcwM2VhZTdhNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCkBAIC0xMDcsNiArMTA3
LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjYW5TYXZlKGJvb2wmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBmYWxzZTsK
K30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZVVSTCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKaW5kZXggOTY1NDJhMDAzNmNkNmE1YmNi
NmFjNGNhODMzNzAxYjk0NjBhYTVkMS4uNTA1YzRkNzcyMDQ5Y2YxMjQ3Mjk2ZjYyZWNlNTI1MDNj
NGU5NzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAK
QEAgLTYxLDYgKzYxLDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3Nl
V2luZG93KCkKICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwogfQogCitib29s
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOworfQorCit2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zYXZl
KGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQpCit7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXBwZW5kKGZpbGVuYW1l
LCBjb250ZW50KTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNo
V2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogewogICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAppbmRleCBlYjI1YWJlYWU0NDQy
NzY5ZTkzZmJiYTlkYTI0MWM4YzYxOGExNWM1Li5mMzc0ZmJlNmRjNTRkZjNlMDQyYWZiMzU5Nzg5
MTExMGZkYTk2ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
CkBAIC00NCw2ICs0NCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJv
bnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKSBPVkVSUklERTsK
IAorICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklE
RTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBjNzMw
NThmZTIzMGExYTE2NDMwMzcyYmQ4NzIxM2IxZjI1OWU1YmEwLi5mOTYyOTBjMDk5Nzc0ZjRmZWVm
ODc5ZTliMjg1YTY2MTFiODlhZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMzMsMTAgKzMzLDE0IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMTE3LDYgKzEyMSwyMyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6aW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
Citib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpCit7CisgICAgYm9vbCByZXN1bHQ7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkNhblNhdmUoKSwgcmVzdWx0LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpCit7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgZm9yY2VTYXZlQXMpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKIHZv
aWQgV2ViSW5zcGVjdG9yOjphdHRhY2hCb3R0b20oKQogewogICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFj
aEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTE1Myw2ICsxNzQsMTggQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OmNsb3NlKCkKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+Y2xvc2UoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3I6OmRpZFNhdmUoY29u
c3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9p
bnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVT
Y3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIiLCB1cmws
ICJcIikiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkaWRBcHBlbmQoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQobWFr
ZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiIsIHVybCwgIlwi
KSIpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkQm90dG9tKCkKIHsKICAgICBp
ZiAobV9mcm9udGVuZENsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAwMzhhNjEzMWZiYjM3MGI3YmYzZjk1MGIzYjdlMDZl
MDMxZjhiZjgwLi5kNDg5MWM0YWFiYzgzNjRiZjQ5NjIxYzk5Y2VhNTBjYzIzZjlmODA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBA
IC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3Nl
KCk7CiAKKyAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgZGlk
QXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKwogICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKTsK
ICAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKTsKICAgICB2b2lkIGRldGFjaGVkKCk7CkBAIC05NCw2
ICs5NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdm9pZCBp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwogCisgICAgYm9vbCBjYW5TYXZlKCk7
CisgICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudCwgYm9vbCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogICAgIHZvaWQgYXR0YWNoQm90dG9t
KCk7CiAgICAgdm9pZCBhdHRhY2hSaWdodCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5t
ZXNzYWdlcy5pbgppbmRleCA1MGI3NWFmZGM0ZGU5YmFiMmVkNWVlNDg5MjU1ZWVlMGQwN2I1YmY0
Li4yMmQyZmIwMDIzNDlkY2U0ZTFkMzA2OGEyYTJmNWRkNTYwOTI5Yzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVz
c2FnZXMuaW4KQEAgLTI4LDYgKzI4LDggQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBBdHRhY2hlZEJvdHRvbSgpCiAgICAgQXR0YWNoZWRSaWdodCgpCiAg
ICAgRGV0YWNoZWQoKQorICAgIERpZFNhdmUoV1RGOjpTdHJpbmcgdXJsKQorICAgIERpZEFwcGVu
ZChXVEY6OlN0cmluZyB1cmwpCiAgICAgU2hvd0NvbnNvbGUoKQogICAgIFNob3dSZXNvdXJjZXMo
KQogICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201005</attachid>
            <date>2013-05-07 17:45:43 -0700</date>
            <delta_ts>2013-05-07 19:41:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115564-20130507174448.patch</filename>
            <type>text/plain</type>
            <size>29078</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZiM2JiMWJkNDllN2M2
MDUxNGM3MTczYzVjMzIzM2MzZTJkYTdiYi4uYzEyMzI2NjUyYTAyNjM1YTk2NDgyNWQzODUxYzM5
OTA0NWZhNDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA1LTA3ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kIGFwcGVuZCgpIG1ldGhv
ZHMgZm9yCisgICAgICAgIFdlYktpdDIuIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgdGhl
c2UgbWV0aG9kcyBpbiBub24tbWFjCisgICAgICAgIFdlYktpdDEgcG9ydHMuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSk6CisKIDIwMTMtMDUt
MDYgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0
IC13ZWJraXQtc3lzdGVtLWZvbnQgb24gT1MgWC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMTljYzcx
OGJkZjAyYWY2NDA0ZWE3NmRjMmMwN2U5MDkyM2QwNDJkLi40YjdiN2NhMDk5MTI4M2RmZGExODdl
OWM4ZGJkZGUxOWE1MWQ2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTMtMDUtMDcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lvbiBvZiBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIEluc3BlY3RvckZyb250ZW5kSG9z
dCdzIHNhdmUoKSBhbmQKKyAgICAgICAgYXBwZW5kKCkgbWV0aG9kcyBpbiBub24tbWFjIFdlYktp
dDEgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbDo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKKwogMjAx
My0wNC0yNiAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21haWwuY29tPgogCiAgICAgICAg
IFtFRkxdIEFkZCB1bml0IHRlc3QgY2FzZXMgZm9yIGV3a19zZXR0aW5ncyBBUElzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggYjhlZThkNzNhNGNhNzcxZGEwOTg4NDM0NDU0YWIxZWY0MjlkYWJmYS4uNDQ1
MmQ4ZTVkZTlkYTQ3MzRjZDUwNTNkMjBmYjNkOGYyZWU0NjQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNo
aW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNp
b24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhv
ZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKwog
MjAxMy0wNS0wNyAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAg
IFtHVEtdIEluaXRpYWxpemUgV2ViS2l0V2ViUGx1Z2luIHBhdGggdG8gcHJldmVudCBkb3VibGUt
ZnJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCBiYzI0N2Q2ZmRjZjcxYTM4NjMzYjdiYzdkYzhhOWQxZDc5
MWQyNGZmLi5lNDExMmIzMDllZGMwYTU3NTI0ZTQ1ZmVkOTQxYWYyZmQ5ZGIyYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQg
V0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVu
dGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkKKyAgICAgICAgYW5kIGFwcGVu
ZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNhblNhdmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRRdCk6CisKIDIwMTMtMDUtMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBjYWxsaW5nIFFXZWJG
cmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzJjMjhmOGUxNTAx
NzIyMjVmM2ZhZjkyNTJlOTM2YjI3MTM2Zjg1Ni4uNGRhZWMzOGY1ZTI3NzcxYzNlZDExMzY1YTYw
YWRlMDFkODQ5YmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1
LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBz
YXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBv
cnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAgICAgKEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUpOgorCiAyMDEz
LTA1LTA2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gQXBwbGVXaW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzNTIwZjM4NzY5M2Y0
M2I4YzQwZmVjZmE0YWMxM2YwMjM5YWNjNTMuLjA0MzdmNTNlMGJhYjIzMTRmNzlmMTNhMzBiY2Jj
NTFiNjRkYTYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMy0wNS0wNyAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IFdLMiB2ZXJzaW9uIG9mIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpzYXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0J3Mgc2F2ZSgpIGFuZCBhcHBlbmQoKSBtZXRo
b2RzIGZvcgorICAgICAgICBXZWJLaXQyLiBBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRo
ZXNlIG1ldGhvZHMgaW4gbm9uLW1hYworICAgICAgICBXZWJLaXQxIHBvcnRzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3I6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjphcHBlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpZFNhdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEzLTA1LTA3
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4g
dXAgS2V5ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5k
ZXggMmEyYzNhZDQwZTFlYmIzYWVlMjI2MjVmOWU2MWJhNGQxZGY1ZWFhOC4uMGVlMWQ1NmJlOWQy
N2I0MWFiNTg0MWI4MzI4YTYxODZkMjE5NmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC02Nyw5ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGVmZWI5MjYyZDlkZGYzNGQwMDdjMzFlNjMyMmFiMWU5NWUwNWQzNzMuLjcw
YmVkNTU0OGY5NTc1OWRhNTMwYjk1NGNlNjNiMjQwN2UyZGJiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTE2Myw2ICsxNjMsMTEgQEAgY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnREdW1teSA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsK
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KEluc3BlY3RvckNvbnRy
b2xsZXIqLCBQYWdlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KERvY2tTaWRlKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V2luZG93KCkgT1ZFUlJJREUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IGE5OTUzNzVlYTdlOTUy
NDc3YThmN2E3ODJjNTQ0ZjE0MDdjNmVjNzMuLmQ4YjAyNzI0ZDA1MGIzNjUwZDJjM2I4OGM1M2Mz
MTZjMWY1YWNhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtMTgzLDYgKzE4MywxNiBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudEVmbDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6
OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmF0dGFjaFdpbmRv
dyhEb2NrU2lkZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCBmMDIz
OThiMTBjNmQ0ODkzOTNmMzhjOWY1NDE0ODM3YTMxOTdmNjFmLi5iMWVlYjQwODA1ZDQzYzY4ZDU1
MjIxODhlMzhhOTQ1YjczYjVmMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaApAQCAtODEsNiArODEsMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hXaW5kb3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggODFiYzZhZTkzMDk4Y2QxZmZj
OTVlOTVlNjVjZTE5MTAyM2ExZDA0Zi4uMjFhOTI5NjM4ZjNhNzIzNzQ1YzhiZWUyZjYwMjY1MWZk
ZWVjNTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0yNDEsNiArMjQxLDE2IEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKICAgICBkZXN0cm95SW5zcGVjdG9yV2lu
ZG93KHRydWUpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIGlmICgh
bV9pbnNwZWN0b3JXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCA3ZGYzYmMyZmVmMTA5OWNlYzBhMzJi
MmIwMDNlNTZhMzhlNDRmZjVkLi42OTM3MTM0YjliZDJhN2ZhYTA0M2IwNjAzNTM1MDM5MTJmYzYz
NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaApAQCAtODgsNiArODgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aFdpbmRvdygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDQxZWI1ZTVlNTU5NjE4ZjU2Njg1ZDYwMjI0M2Yw
MDc4YmNhYzU3NTguLjkzMjJmZDNiYTQ3MmI5OWNjMjYyYTkwZWM2YTdhMzVjODRiNmZjMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwCkBAIC0zMTYsNiArMzE2LDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRRdDo6Y2xvc2VXaW5kb3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOwogfQog
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmgKaW5kZXggNTE3NzFhYTg5NjllZmE1ZjQ3ZmVkMjc4YWY2MjJiOTQwMDE5ZDFlMS4u
ZDJiODE5NzkzZDA4Y2JlZTYxOGI1MTc4NWViNjVmZTMwMjk0YjU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaApAQCAtOTEs
NiArOTEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZl
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhE
b2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCA1ZjZlODI4Zjc0NGI5MTMxZjAyNjlmNjQ0YjkxMGNiZjljNGFkYWI2Li4yZDk4YzAy
ZmI4NjkxYTUwODIxNWZlZTgwNjViY2JmNWI0OTJkMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI3
OSw2ICsyNzksMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5k
b3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOwogfQogCit2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNo
V2luZG93KERvY2tTaWRlKQogewogICAgIGlmIChtX2F0dGFjaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCAw
MzBmNjA5NmI5NGRmMmZjMzhhMzRkYTlmZTBjNGY5N2QyNzdiZGZjLi4wYzI0OWFkM2JiZmE5ZDc2
ZGEyYjk4ODM0NzQ2NzYwZjgzOTIyZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAzLDYgKzEwMywxMCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOworCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhE
b2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNzczN2UyNDYxY2Nj
ZjgwYTUzMDgxZGM0NWE0OWM4NTUxNjk3ZGQxMi4uMjZlNzY1NjQwNDFlOTFkNGMwMjVlMTU5YTRk
NmI2NDZlNmY1ZmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuY3BwCkBAIC00NzQsNiArNDc0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgcGxhdGZv
cm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHBsYXRmb3JtQ2FuU2F2ZShyZXN1
bHQpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBw
bGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3sKKyAgICBwbGF0Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7
Cit9CisKIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgpCiB7CiAgICAgLy8gS2Vl
cCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRh
Y2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRiOThkNDFkNDYwNGJkNDMyY2My
NTkxODA5NWYzZjcxMTE1MmJiMjMuLjA1MGNmOGFhNDIxNzQ4MzYwY2NiM2JlZGE3YzRiMjlhZjhh
ZGJiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5o
CkBAIC0zOCw5ICszOCwxMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIldLR2Vv
bWV0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogT0JKQ19DTEFTUyBOU0J1dHRvbjsKK09CSkNfQ0xBU1MgTlNVUkw7CiBPQkpDX0NM
QVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7
CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwpAQCAtMTYzLDYgKzE2NSwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuU2F2ZShib29s
Jik7CisgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKTsKKyAgICB2b2lkIHBsYXRmb3JtQXBw
ZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CisKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwogICAgIHZvaWQgY3Jl
YXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CkBAIC0xNzEsNiArMTc3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
dHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hh
bmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgY2FuU2F2ZShib29sJik7CisgICAgdm9p
ZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQog
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CiAjZW5kaWYKQEAgLTIxNiw2ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxO
U0J1dHRvbj4gbV9kb2NrUmlnaHRCdXR0b247CiAgICAgUmV0YWluUHRyPFdLV2ViSW5zcGVjdG9y
UHJveHlPYmpDQWRhcHRlcj4gbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyOwogICAgIFN0cmlu
ZyBtX3VybFN0cmluZzsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TVVJMPj4gbV9z
YXZlVVJMczsgIAogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYkluc3BlY3RvckNsaWVudEd0
ayBtX2NsaWVudDsKICAgICBHdGtXaWRnZXQqIG1faW5zcGVjdG9yVmlldzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBlOWJmYzQ3OTcyOTQ5NTBmOGU0MGM1N2IwZTczNjEzMzEwNDRkZDFlLi5iMThmZmI1NDVk
ODk0OWYyOTNlMWQxZDk2OTU1MzU3NDYyNDRmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsy
OCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQnJpbmdUb0Zyb250
KCkKICAgICBJbnNwZWN0ZWRVUkxDaGFuZ2VkKFdURjo6U3RyaW5nIHVybFN0cmluZykKIAorICAg
IENhblNhdmUoKSAtPiAoYm9vbCByZXN1bHQpCisgICAgU2F2ZShXVEY6OlN0cmluZyBmaWxlbmFt
ZSwgV1RGOjpTdHJpbmcgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKKyAgICBBcHBlbmQoV1RG
OjpTdHJpbmcgZmlsZW5hbWUsIFdURjo6U3RyaW5nIGNvbnRlbnQpCisKICAgICBBdHRhY2hCb3R0
b20oKQogICAgIEF0dGFjaFJpZ2h0KCkKICAgICBEZXRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCAyZTY4
MmQ1MjdjZDU0NzU4YjYwYWUwYjFmOTg2NmYxMWRjNTBjY2E1Li5mZWViZTY1Y2Q3ZTdlYzVlYmQ1
OGIwYTJkMGUyZjY1YzdlZTQxMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMjEzLDYgKzIxMywyMSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DYW5TYXZlKGJvb2wmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBmYWxzZTsK
K30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCAxNjMxNDgzNzkyZDE4MzE0NjYxZjgxMzg5
NzQzY2I5MGMzOWQzNWM0Li5lZTlhMjAyZTExZmQzMDFlMTU1N2NiYmI3N2E5NTk0MWEwNzA5Nzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rv
clByb3h5R3RrLmNwcApAQCAtMjM0LDYgKzIzNCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKGJv
b2wmIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSBmYWxzZTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFj
aEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KaW5kZXggNjJmZGI1NzI2NzQ5YmQ1Mjk5MzI0YzczOWM1YjQ1NDllZTE2YjgzYS4uNDY3OTVi
YThiMThjMzJlZmYwY2E4ZGEwYjljZWZiODU0NmZkZGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJXZWJDb250ZXh0LmgiCiAjaW1wb3J0ICJXS0luc3BlY3RvclByaXZh
dGVNYWMuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkluc3BlY3Rv
ck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTQ5Nyw2ICs0OTgsNTggQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIHVwZGF0ZUluc3BlY3RvcldpbmRvd1RpdGxlKCk7CiB9
CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZShib29sJiByZXN1bHQp
Cit7CisgICAgcmVzdWx0ID0gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgcmVmVVJMLCBjb25zdCBTdHJpbmcmIHJlZkNvbnRlbnQs
IGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgU3RyaW5nIHVybCA9IHJlZlVSTDsKKyAgICBTdHJp
bmcgY29udGVudCA9IHJlZkNvbnRlbnQ7CisgICAgYXV0byBzYXZlVG9VUkwgPSBeKE5TVVJMICpV
UkwpIHsKKyAgICAgICAgbV9zYXZlVVJMcy5zZXQodXJsLCBVUkwpOworCisgICAgICAgIFtjb250
ZW50IHdyaXRlVG9VUkw6VVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nIGVycm9yOk5VTExdOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFtVUkwgYWJzb2x1dGVTdHJpbmddKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICB9Owor
CisgICAgTlNVUkwgKlVSTCA9IG1fc2F2ZVVSTHMuZ2V0KHVybCkuZ2V0KCk7CisgICAgaWYgKCFV
UkwpCisgICAgICAgIFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF07CisgICAgZWxzZSBp
ZiAoIWZvcmNlU2F2ZUFzKSB7CisgICAgICAgIHNhdmVUb1VSTChVUkwpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTlNTYXZlUGFuZWwgKnBhbmVsID0gW05TU2F2ZVBhbmVsIHNhdmVQ
YW5lbF07CisgICAgcGFuZWwubmFtZUZpZWxkU3RyaW5nVmFsdWUgPSBVUkwubGFzdFBhdGhDb21w
b25lbnQ7CisgICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW1VSTCBVUkxCeURlbGV0aW5nTGFzdFBh
dGhDb21wb25lbnRdOworCisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzptX2lu
c3BlY3RvcldpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQp
IHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVIYW5kbGluZ1BhbmVsQ2FuY2VsQnV0dG9u
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQocmVzdWx0ID09IE5TRmlsZUhh
bmRsaW5nUGFuZWxPS0J1dHRvbik7CisgICAgICAgIHNhdmVUb1VSTChwYW5lbC5VUkwpOworICAg
IH1dOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQoreworICAgIFJldGFpblB0cjxOU1VS
TD4gVVJMID0gbV9zYXZlVVJMcy5nZXQodXJsKTsKKyAgICBpZiAoIVVSTCkKKyAgICAgICAgVVJM
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXTsKKworICAgIE5TRmlsZUhhbmRsZSAqaGFuZGxl
ID0gW05TRmlsZUhhbmRsZSBmaWxlSGFuZGxlRm9yV3JpdGluZ1RvVVJMOlVSTC5nZXQoKSBlcnJv
cjpOVUxMXTsKKyAgICBbaGFuZGxlIHNlZWtUb0VuZE9mRmlsZV07CisgICAgW2hhbmRsZSB3cml0
ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsK
KyAgICBbaGFuZGxlIGNsb3NlRmlsZV07CisKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRBcHBlbmQoW1VSTCBhYnNvbHV0ZVN0cmluZ10pLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJh
bWVEaWRDaGFuZ2UoKQogewogICAgIEFTU0VSVCghbV9pc0F0dGFjaGVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAppbmRleCAy
NjVmODI4YzZjMWMxNDIzMWIyZGU2MTBmNTcxYmZhMDI4NzMzOGVkLi5kYTBmYzAyMzgxMjMxZDEz
NTQyMWIxYjMyZjhhMzNjYjEyZjlkNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCkBAIC0xMDcsNiArMTA3LDIxIEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNp
Z25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IGZhbHNlOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0
b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKaW5kZXggOTY1
NDJhMDAzNmNkNmE1YmNiNmFjNGNhODMzNzAxYjk0NjBhYTVkMS4uNTA1YzRkNzcyMDQ5Y2YxMjQ3
Mjk2ZjYyZWNlNTI1MDNjNGU5NzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5jcHAKQEAgLTYxLDYgKzYxLDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmNsb3NlV2luZG93KCkKICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9z
ZSgpOwogfQogCitib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKK3sK
KyAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5zYXZlKGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+
YXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogewogICAgIHN3aXRjaCAo
ZG9ja1NpZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAppbmRl
eCBlYjI1YWJlYWU0NDQyNzY5ZTkzZmJiYTlkYTI0MWM4YzYxOGExNWM1Li5mMzc0ZmJlNmRjNTRk
ZjNlMDQyYWZiMzU5Nzg5MTExMGZkYTk2ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oCkBAIC00NCw2ICs0NCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5k
b3coKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1Np
ZGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBPVkVSUklERTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmNwcAppbmRleCBjNzMwNThmZTIzMGExYTE2NDMwMzcyYmQ4NzIxM2IxZjI1OWU1YmEwLi5mOTYy
OTBjMDk5Nzc0ZjRmZWVmODc5ZTliMjg1YTY2MTFiODlhZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMzMsMTAgKzMz
LDE0IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTE3LDYgKzEyMSwyMyBAQCB2b2lkIFdl
Ykluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpCit7CisgICAgYm9v
bCByZXN1bHQ7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNhblNhdmUoKSwgcmVzdWx0LCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6
c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wg
Zm9yY2VTYXZlQXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwg
Zm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6
OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLT5wYWdl
SUQoKSk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hCb3R0b20oKQogewogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKQEAgLTE1Myw2ICsx
NzQsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKICAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0
b3I6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9y
UGFnZSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+c2Ny
aXB0KCktPmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2
ZWRVUkwoXCIiLCB1cmwsICJcIikiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkaWRBcHBl
bmQoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4
ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VS
TChcIiIsIHVybCwgIlwiKSIpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkQm90
dG9tKCkKIHsKICAgICBpZiAobV9mcm9udGVuZENsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCAwMzhhNjEzMWZiYjM3MGI3
YmYzZjk1MGIzYjdlMDZlMDMxZjhiZjgwLi5kNDg5MWM0YWFiYzgzNjRiZjQ5NjIxYzk5Y2VhNTBj
YzIzZjlmODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oCkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsK
ICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwp
OworICAgIHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKwogICAgIHZvaWQgYXR0
YWNoZWRCb3R0b20oKTsKICAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKTsKICAgICB2b2lkIGRldGFj
aGVkKCk7CkBAIC05NCw2ICs5NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYnJpbmdUb0Zyb250
KCk7CiAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwogCisgICAg
Ym9vbCBjYW5TYXZlKCk7CisgICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogICAgIHZv
aWQgYXR0YWNoQm90dG9tKCk7CiAgICAgdm9pZCBhdHRhY2hSaWdodCgpOwogICAgIHZvaWQgZGV0
YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCA1MGI3NWFmZGM0ZGU5YmFiMmVkNWVlNDg5
MjU1ZWVlMGQwN2I1YmY0Li4yMmQyZmIwMDIzNDlkY2U0ZTFkMzA2OGEyYTJmNWRkNTYwOTI5Yzc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDggQEAgbWVzc2FnZXMgLT4gV2Vi
SW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBdHRhY2hlZEJvdHRvbSgpCiAgICAgQXR0
YWNoZWRSaWdodCgpCiAgICAgRGV0YWNoZWQoKQorICAgIERpZFNhdmUoV1RGOjpTdHJpbmcgdXJs
KQorICAgIERpZEFwcGVuZChXVEY6OlN0cmluZyB1cmwpCiAgICAgU2hvd0NvbnNvbGUoKQogICAg
IFNob3dSZXNvdXJjZXMoKQogICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201018</attachid>
            <date>2013-05-07 19:41:11 -0700</date>
            <delta_ts>2013-05-08 10:02:21 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-115564-20130507194017.patch</filename>
            <type>text/plain</type>
            <size>30240</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZiM2JiMWJkNDllN2M2
MDUxNGM3MTczYzVjMzIzM2MzZTJkYTdiYi4uYzEyMzI2NjUyYTAyNjM1YTk2NDgyNWQzODUxYzM5
OTA0NWZhNDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA1LTA3ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kIGFwcGVuZCgpIG1ldGhv
ZHMgZm9yCisgICAgICAgIFdlYktpdDIuIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgdGhl
c2UgbWV0aG9kcyBpbiBub24tbWFjCisgICAgICAgIFdlYktpdDEgcG9ydHMuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSk6CisKIDIwMTMtMDUt
MDYgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0
IC13ZWJraXQtc3lzdGVtLWZvbnQgb24gT1MgWC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMTljYzcx
OGJkZjAyYWY2NDA0ZWE3NmRjMmMwN2U5MDkyM2QwNDJkLi40YjdiN2NhMDk5MTI4M2RmZGExODdl
OWM4ZGJkZGUxOWE1MWQ2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTMtMDUtMDcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lvbiBvZiBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIEluc3BlY3RvckZyb250ZW5kSG9z
dCdzIHNhdmUoKSBhbmQKKyAgICAgICAgYXBwZW5kKCkgbWV0aG9kcyBpbiBub24tbWFjIFdlYktp
dDEgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbDo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKKwogMjAx
My0wNC0yNiAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21haWwuY29tPgogCiAgICAgICAg
IFtFRkxdIEFkZCB1bml0IHRlc3QgY2FzZXMgZm9yIGV3a19zZXR0aW5ncyBBUElzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggYjhlZThkNzNhNGNhNzcxZGEwOTg4NDM0NDU0YWIxZWY0MjlkYWJmYS4uNDQ1
MmQ4ZTVkZTlkYTQ3MzRjZDUwNTNkMjBmYjNkOGYyZWU0NjQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNo
aW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNp
b24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhv
ZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKwog
MjAxMy0wNS0wNyAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAg
IFtHVEtdIEluaXRpYWxpemUgV2ViS2l0V2ViUGx1Z2luIHBhdGggdG8gcHJldmVudCBkb3VibGUt
ZnJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCBiYzI0N2Q2ZmRjZjcxYTM4NjMzYjdiYzdkYzhhOWQxZDc5
MWQyNGZmLi5lNDExMmIzMDllZGMwYTU3NTI0ZTQ1ZmVkOTQxYWYyZmQ5ZGIyYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQg
V0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVu
dGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkKKyAgICAgICAgYW5kIGFwcGVu
ZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNhblNhdmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRRdCk6CisKIDIwMTMtMDUtMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBjYWxsaW5nIFFXZWJG
cmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzJjMjhmOGUxNTAx
NzIyMjVmM2ZhZjkyNTJlOTM2YjI3MTM2Zjg1Ni4uNGRhZWMzOGY1ZTI3NzcxYzNlZDExMzY1YTYw
YWRlMDFkODQ5YmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1
LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBz
YXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBv
cnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAgICAgKEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUpOgorCiAyMDEz
LTA1LTA2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gQXBwbGVXaW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzNTIwZjM4NzY5M2Y0
M2I4YzQwZmVjZmE0YWMxM2YwMjM5YWNjNTMuLjA0MzdmNTNlMGJhYjIzMTRmNzlmMTNhMzBiY2Jj
NTFiNjRkYTYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMy0wNS0wNyAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IFdLMiB2ZXJzaW9uIG9mIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpzYXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0J3Mgc2F2ZSgpIGFuZCBhcHBlbmQoKSBtZXRo
b2RzIGZvcgorICAgICAgICBXZWJLaXQyLiBBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRo
ZXNlIG1ldGhvZHMgaW4gbm9uLW1hYworICAgICAgICBXZWJLaXQxIHBvcnRzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3I6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjphcHBlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpZFNhdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEzLTA1LTA3
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4g
dXAgS2V5ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5k
ZXggMmEyYzNhZDQwZTFlYmIzYWVlMjI2MjVmOWU2MWJhNGQxZGY1ZWFhOC4uMGVlMWQ1NmJlOWQy
N2I0MWFiNTg0MWI4MzI4YTYxODZkMjE5NmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC02Nyw5ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGVmZWI5MjYyZDlkZGYzNGQwMDdjMzFlNjMyMmFiMWU5NWUwNWQzNzMuLjcw
YmVkNTU0OGY5NTc1OWRhNTMwYjk1NGNlNjNiMjQwN2UyZGJiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTE2Myw2ICsxNjMsMTEgQEAgY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnREdW1teSA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsK
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KEluc3BlY3RvckNvbnRy
b2xsZXIqLCBQYWdlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KERvY2tTaWRlKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V2luZG93KCkgT1ZFUlJJREUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IGE5OTUzNzVlYTdlOTUy
NDc3YThmN2E3ODJjNTQ0ZjE0MDdjNmVjNzMuLmQ4YjAyNzI0ZDA1MGIzNjUwZDJjM2I4OGM1M2Mz
MTZjMWY1YWNhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtMTgzLDYgKzE4MywxNiBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudEVmbDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6
OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmF0dGFjaFdpbmRv
dyhEb2NrU2lkZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCBmMDIz
OThiMTBjNmQ0ODkzOTNmMzhjOWY1NDE0ODM3YTMxOTdmNjFmLi5iMWVlYjQwODA1ZDQzYzY4ZDU1
MjIxODhlMzhhOTQ1YjczYjVmMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaApAQCAtODEsNiArODEsMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hXaW5kb3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggODFiYzZhZTkzMDk4Y2QxZmZj
OTVlOTVlNjVjZTE5MTAyM2ExZDA0Zi4uMjFhOTI5NjM4ZjNhNzIzNzQ1YzhiZWUyZjYwMjY1MWZk
ZWVjNTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0yNDEsNiArMjQxLDE2IEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKICAgICBkZXN0cm95SW5zcGVjdG9yV2lu
ZG93KHRydWUpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIGlmICgh
bV9pbnNwZWN0b3JXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCA3ZGYzYmMyZmVmMTA5OWNlYzBhMzJi
MmIwMDNlNTZhMzhlNDRmZjVkLi42OTM3MTM0YjliZDJhN2ZhYTA0M2IwNjAzNTM1MDM5MTJmYzYz
NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaApAQCAtODgsNiArODgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aFdpbmRvdygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDQxZWI1ZTVlNTU5NjE4ZjU2Njg1ZDYwMjI0M2Yw
MDc4YmNhYzU3NTguLjkzMjJmZDNiYTQ3MmI5OWNjMjYyYTkwZWM2YTdhMzVjODRiNmZjMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwCkBAIC0zMTYsNiArMzE2LDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRRdDo6Y2xvc2VXaW5kb3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOwogfQog
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OnNhdmUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmgKaW5kZXggNTE3NzFhYTg5NjllZmE1ZjQ3ZmVkMjc4YWY2MjJiOTQwMDE5ZDFlMS4u
ZDJiODE5NzkzZDA4Y2JlZTYxOGI1MTc4NWViNjVmZTMwMjk0YjU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaApAQCAtOTEs
NiArOTEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZl
KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhE
b2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCA1ZjZlODI4Zjc0NGI5MTMxZjAyNjlmNjQ0YjkxMGNiZjljNGFkYWI2Li5mNzg1OWEw
NmQ1Y2ZhY2NhZTk4YzEyNDEzNWY2YTA0NDdkZTcxNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI3
OSw2ICsyNzksMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5k
b3coKQogICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUpOwogfQogCit2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJv
b2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIGlmIChtX2F0dGFjaGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApp
bmRleCAwMzBmNjA5NmI5NGRmMmZjMzhhMzRkYTlmZTBjNGY5N2QyNzdiZGZjLi4wYzI0OWFkM2Ji
ZmE5ZDc2ZGEyYjk4ODM0NzQ2NzYwZjgzOTIyZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAzLDYgKzEw
MywxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOworCisgICAgdmlydHVhbCBib29sIGNhblNh
dmUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdp
bmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNzczN2Uy
NDYxY2NjZjgwYTUzMDgxZGM0NWE0OWM4NTUxNjk3ZGQxMi4uMjZlNzY1NjQwNDFlOTFkNGMwMjVl
MTU5YTRkNmI2NDZlNmY1ZmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCkBAIC00NzQsNiArNDc0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAg
cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7CiB9CiAKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHBsYXRmb3JtQ2FuU2F2
ZShyZXN1bHQpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sK
KyAgICBwbGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBwbGF0Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29u
dGVudCk7Cit9CisKIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgpCiB7CiAgICAg
Ly8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpj
YW5BdHRhY2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRiOThkNDFkNDYwNGJk
NDMyY2MyNTkxODA5NWYzZjcxMTE1MmJiMjMuLjA2OGY5ZTY4YmVmNjczYjhjNjkwZTBjMTJjNTgw
MWZlN2VkMzQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5oCkBAIC0zOCw5ICszOCwxMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUg
IldLR2VvbWV0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBOU0J1dHRvbjsKK09CSkNfQ0xBU1MgTlNVUkw7CiBP
QkpDX0NMQVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0Fk
YXB0ZXI7CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwpAQCAtMTYzLDYgKzE2NSwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKICAgICB2b2lkIHBsYXRm
b3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1T
ZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKKyAgICB2b2lkIHBsYXRmb3JtQ2FuU2F2
ZShib29sJik7CisgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKTsKKyAgICB2b2lkIHBsYXRm
b3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
CisKIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwogICAgIHZv
aWQgY3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0xNzEsNiArMTc3LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdGVk
VVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgY2FuU2F2ZShib29sJik7Cisg
ICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VS
VkVSKQogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAjZW5kaWYKQEAgLTIxNiw2ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxOU0J1dHRvbj4gbV9kb2NrUmlnaHRCdXR0b247CiAgICAgUmV0YWluUHRyPFdLV2ViSW5z
cGVjdG9yUHJveHlPYmpDQWRhcHRlcj4gbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyOwogICAg
IFN0cmluZyBtX3VybFN0cmluZzsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TVVJM
Pj4gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcDsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBX
ZWJJbnNwZWN0b3JDbGllbnRHdGsgbV9jbGllbnQ7CiAgICAgR3RrV2lkZ2V0KiBtX2luc3BlY3Rv
clZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTliZmM0Nzk3Mjk0OTUwZjhlNDBjNTdiMGU3MzYxMzMx
MDQ0ZGQxZS4uYjE4ZmZiNTQ1ZDg5NDlmMjkzZTFkMWQ5Njk1NTM1NzQ2MjQ0ZmU2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkg
ewogICAgIEJyaW5nVG9Gcm9udCgpCiAgICAgSW5zcGVjdGVkVVJMQ2hhbmdlZChXVEY6OlN0cmlu
ZyB1cmxTdHJpbmcpCiAKKyAgICBDYW5TYXZlKCkgLT4gKGJvb2wgcmVzdWx0KQorICAgIFNhdmUo
V1RGOjpTdHJpbmcgZmlsZW5hbWUsIFdURjo6U3RyaW5nIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZl
QXMpCisgICAgQXBwZW5kKFdURjo6U3RyaW5nIGZpbGVuYW1lLCBXVEY6OlN0cmluZyBjb250ZW50
KQorCiAgICAgQXR0YWNoQm90dG9tKCkKICAgICBBdHRhY2hSaWdodCgpCiAgICAgRGV0YWNoKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHAKaW5kZXggMmU2ODJkNTI3Y2Q1NDc1OGI2MGFlMGIxZjk4NjZmMTFkYzUwY2NhNS4u
ZmVlYmU2NWNkN2U3ZWM1ZWJkNThiMGEyZDBlMmY2NWM3ZWU0MTAzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAg
LTIxMyw2ICsyMTMsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3Zv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZShib29sJiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
U2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggMTYzMTQ4
Mzc5MmQxODMxNDY2MWY4MTM4OTc0M2NiOTBjMzlkMzVjNC4uZWU5YTIwMmUxMWZkMzAxZTE1NTdj
YmJiNzdhOTU5NDFhMDcwOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTIzNCw2ICsyMzQsMjEgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2ln
bmVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ2FuU2F2ZShib29sJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gZmFsc2U7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDYyZmRiNTcyNjc0OWJkNTI5OTMyNGM3MzljNWI0
NTQ5ZWUxNmI4M2EuLjFmMTE1YWExNDkyODI4ODlhZWQ2OGZlZjBlZTQ4Y2JkODVmOWU4MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9y
dCAiV0tJbnNwZWN0b3JQcml2YXRlTWFjLmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCisj
aW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgi
CiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCkBA
IC00OTcsNiArNDk4LDYyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICB1cGRhdGVJbnNwZWN0
b3JXaW5kb3dUaXRsZSgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNh
blNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IHRydWU7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFN0cmluZyBz
dWdnZXN0ZWRVUkxDb3B5ID0gc3VnZ2VzdGVkVVJMOworICAgIFN0cmluZyBjb250ZW50Q29weSA9
IGNvbnRlbnQ7CisKKyAgICBhdXRvIHNhdmVUb1VSTCA9IF4oTlNVUkwgKmFjdHVhbFVSTCkgewor
ICAgICAgICBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLnNldChzdWdnZXN0ZWRVUkxDb3B5LCBh
Y3R1YWxVUkwpOworCisgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBh
dG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsK
KyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIH07CisKKyAgICBOU1VSTCAqcGxhdGZvcm1VUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJM
TWFwLmdldChzdWdnZXN0ZWRVUkwpLmdldCgpOworICAgIGlmIChwbGF0Zm9ybVVSTCA9PSBuaWwp
CisgICAgICAgIHBsYXRmb3JtVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6c3VnZ2VzdGVkVVJM
XTsKKyAgICBpZiAocGxhdGZvcm1VUkwgPT0gbmlsKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIWZvcmNlU2F2ZUFzKSB7CisgICAgICAgIHNhdmVUb1VSTChwbGF0Zm9ybVVSTCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFu
ZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5uYW1lRmllbGRTdHJpbmdWYWx1ZSA9IHBsYXRmb3Jt
VVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgIHBhbmVsLmRpcmVjdG9yeVVSTCA9IFtwbGF0Zm9y
bVVSTCBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisgICAgW3BhbmVsIGJlZ2lu
U2hlZXRNb2RhbEZvcldpbmRvdzptX2luc3BlY3RvcldpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVI
YW5kbGluZ1BhbmVsQ2FuY2VsQnV0dG9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBB
U1NFUlQocmVzdWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbik7CisgICAgICAgIHNh
dmVUb1VSTChwYW5lbC5VUkwpOworICAgIH1dOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5n
JiBjb250ZW50KQoreworICAgIFJldGFpblB0cjxOU1VSTD4gcGxhdGZvcm1VUkwgPSBtX3N1Z2dl
c3RlZFRvQWN0dWFsVVJMTWFwLmdldChzdWdnZXN0ZWRVUkwpOworICAgIGlmIChwbGF0Zm9ybVVS
TCA9PSBuaWwpCisgICAgICAgIHBsYXRmb3JtVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6c3Vn
Z2VzdGVkVVJMXTsKKyAgICBpZiAocGxhdGZvcm1VUkwgPT0gbmlsKQorICAgICAgICByZXR1cm47
CisKKyAgICBOU0ZpbGVIYW5kbGUgKmhhbmRsZSA9IFtOU0ZpbGVIYW5kbGUgZmlsZUhhbmRsZUZv
cldyaXRpbmdUb1VSTDpwbGF0Zm9ybVVSTC5nZXQoKSBlcnJvcjpOVUxMXTsKKyAgICBbaGFuZGxl
IHNlZWtUb0VuZE9mRmlsZV07CisgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBbaGFuZGxlIGNsb3NlRmls
ZV07CisKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpEaWRBcHBlbmQoW3BsYXRmb3JtVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgp
CiB7CiAgICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCmluZGV4IDI2NWY4MjhjNmMxYzE0
MjMxYjJkZTYxMGY1NzFiZmEwMjg3MzM4ZWQuLmRhMGZjMDIzODEyMzFkMTM1NDIxYjFiMzJmOGEz
M2NiMTJmOWQ0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJ
bnNwZWN0b3JQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2Vi
SW5zcGVjdG9yUHJveHlRdC5jcHAKQEAgLTEwNyw2ICsxMDcsMjEgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2Fu
U2F2ZShib29sJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCA5NjU0MmEwMDM2Y2Q2YTVi
Y2I2YWM0Y2E4MzM3MDFiOTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDljZjEyNDcyOTZmNjJlY2U1MjUw
M2M0ZTk3MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNw
cApAQCAtNjEsNiArNjEsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xv
c2VXaW5kb3coKQogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKK2Jv
b2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQoreworICAgIHJldHVybiBt
X3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNh
dmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5h
bWUsIGNvbnRlbnQpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRh
Y2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dpdGNoIChkb2NrU2lkZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGViMjVhYmVhZTQ0
NDI3NjllOTNmYmJhOWRhMjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2ZGM1NGRmM2UwNDJhZmIzNTk3
ODkxMTEwZmRhOTZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9G
cm9udCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJSSURF
OwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGM3
MzA1OGZlMjMwYTFhMTY0MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAuLmY0ZTA4NWY5NjMyODU1NjJi
Njc4NDlhY2E0N2YwNDEzODMwOTQzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zMywxMCArMzMsMTQgQEAKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC01Miw2ICs1Niw4IEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVj
dG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
CiAgICAgLCBtX2luc3BlY3RvclBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKICAg
ICAsIG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkKKyAgICAsIG1fY2FjaGVkQ2Fu
U2F2ZVJlc3BvbnNlKGZhbHNlKQorICAgICwgbV9kaWRDYWNoZUNhblNhdmVSZXNwb25zZShmYWxz
ZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFs
c2UpCiAgICAgLCBtX3VzZXNXZWJLaXRVc2VySW50ZXJmYWNlKGZhbHNlKQpAQCAtMTE3LDYgKzEy
MywyNiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0
cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2
ZSgpCit7CisgICAgaWYgKCFtX2RpZENhY2hlQ2FuU2F2ZVJlc3BvbnNlKSB7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpDYW5TYXZlKCksIG1fY2FjaGVkQ2FuU2F2ZVJlc3BvbnNlLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgbV9kaWRDYWNoZUNhblNhdmVSZXNwb25zZSA9IHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBtX2NhY2hlZENhblNhdmVSZXNwb25zZTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmls
ZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yOjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVu
dCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoQm90
dG9tKCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CkBAIC0xNTMsNiArMTc5LDE4IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiAgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7CiB9CiAK
K3ZvaWQgV2ViSW5zcGVjdG9yOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFT
U0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3Rv
ckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCit2b2lkIFdlYklu
c3BlY3Rvcjo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFTU0VSVChtX2lu
c3BlY3RvclBhZ2UpOworICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5k
QVBJLmFwcGVuZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7Cit9CisKIHZvaWQgV2ViSW5zcGVj
dG9yOjphdHRhY2hlZEJvdHRvbSgpCiB7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXgg
MDM4YTYxMzFmYmIzNzBiN2JmM2Y5NTBiM2I3ZTA2ZTAzMWY4YmY4MC4uZmEyMmQ1NDU3NWU4YzBm
ODlkZmE4NGYxYWVlODkyMGQxZTM2MjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgdm9pZCBkaWRTYXZlKGNv
bnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7
CisKICAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7CiAgICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCk7
CiAgICAgdm9pZCBkZXRhY2hlZCgpOwpAQCAtOTQsNiArOTcsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBT
dHJpbmcmKTsKIAorICAgIGJvb2wgY2FuU2F2ZSgpOworICAgIHZvaWQgc2F2ZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpOwor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudCk7CisKICAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwogICAgIHZvaWQgYXR0YWNoUmlnaHQo
KTsKICAgICB2b2lkIGRldGFjaCgpOwpAQCAtMTIyLDYgKzEyOSw4IEBAIHByaXZhdGU6CiAgICAg
V2ViUGFnZSogbV9pbnNwZWN0b3JQYWdlOwogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogbV9mcm9udGVuZENoYW5uZWw7CisgICAgYm9vbCBtX2NhY2hlZENhblNhdmVSZXNwb25zZTsK
KyAgICBib29sIG1fZGlkQ2FjaGVDYW5TYXZlUmVzcG9uc2U7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKICAgICBtdXRhYmxlIGJv
b2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggNTBi
NzVhZmRjNGRlOWJhYjJlZDVlZTQ4OTI1NWVlZTBkMDdiNWJmNC4uMjJkMmZiMDAyMzQ5ZGNlNGUx
ZDMwNjhhMmEyZjVkZDU2MDkyOWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsy
OCw4IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7CiAgICAgQXR0
YWNoZWRCb3R0b20oKQogICAgIEF0dGFjaGVkUmlnaHQoKQogICAgIERldGFjaGVkKCkKKyAgICBE
aWRTYXZlKFdURjo6U3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQoV1RGOjpTdHJpbmcgdXJsKQog
ICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKICAgICBTaG93TWFpblJlc291
cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201081</attachid>
            <date>2013-05-08 10:02:28 -0700</date>
            <delta_ts>2013-05-09 10:31:59 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-115564-20130508100132.patch</filename>
            <type>text/plain</type>
            <size>35217</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZiM2JiMWJkNDllN2M2
MDUxNGM3MTczYzVjMzIzM2MzZTJkYTdiYi4uYzEyMzI2NjUyYTAyNjM1YTk2NDgyNWQzODUxYzM5
OTA0NWZhNDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA1LTA3ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kIGFwcGVuZCgpIG1ldGhv
ZHMgZm9yCisgICAgICAgIFdlYktpdDIuIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgdGhl
c2UgbWV0aG9kcyBpbiBub24tbWFjCisgICAgICAgIFdlYktpdDEgcG9ydHMuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAoSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSk6CisKIDIwMTMtMDUt
MDYgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0
IC13ZWJraXQtc3lzdGVtLWZvbnQgb24gT1MgWC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjMTljYzcx
OGJkZjAyYWY2NDA0ZWE3NmRjMmMwN2U5MDkyM2QwNDJkLi40YjdiN2NhMDk5MTI4M2RmZGExODdl
OWM4ZGJkZGUxOWE1MWQ2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTMtMDUtMDcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lvbiBvZiBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIEluc3BlY3RvckZyb250ZW5kSG9z
dCdzIHNhdmUoKSBhbmQKKyAgICAgICAgYXBwZW5kKCkgbWV0aG9kcyBpbiBub24tbWFjIFdlYktp
dDEgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbDo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsKToKKwogMjAx
My0wNC0yNiAgSm9zZSBMZWppbiBQSiAgPGpvc2UubGVqaW5AZ21haWwuY29tPgogCiAgICAgICAg
IFtFRkxdIEFkZCB1bml0IHRlc3QgY2FzZXMgZm9yIGV3a19zZXR0aW5ncyBBUElzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggYjhlZThkNzNhNGNhNzcxZGEwOTg4NDM0NDU0YWIxZWY0MjlkYWJmYS4uNDQ1
MmQ4ZTVkZTlkYTQ3MzRjZDUwNTNkMjBmYjNkOGYyZWU0NjQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNo
aW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNp
b24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhv
ZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKwog
MjAxMy0wNS0wNyAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAg
IFtHVEtdIEluaXRpYWxpemUgV2ViS2l0V2ViUGx1Z2luIHBhdGggdG8gcHJldmVudCBkb3VibGUt
ZnJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCBiYzI0N2Q2ZmRjZjcxYTM4NjMzYjdiYzdkYzhhOWQxZDc5
MWQyNGZmLi5lNDExMmIzMDllZGMwYTU3NTI0ZTQ1ZmVkOTQxYWYyZmQ5ZGIyYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQg
V0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTU2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdHViIGltcGxlbWVu
dGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBzYXZlKCkKKyAgICAgICAgYW5kIGFwcGVu
ZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBvcnRzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzYXZlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmFwcGVuZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNhblNhdmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRRdCk6CisKIDIwMTMtMDUtMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBjYWxsaW5nIFFXZWJG
cmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzJjMjhmOGUxNTAx
NzIyMjVmM2ZhZjkyNTJlOTM2YjI3MTM2Zjg1Ni4uNGRhZWMzOGY1ZTI3NzcxYzNlZDExMzY1YTYw
YWRlMDFkODQ5YmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1
LTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBJbnNwZWN0b3JGcm9udGVuZEhvc3QncyBz
YXZlKCkgYW5kCisgICAgICAgIGFwcGVuZCgpIG1ldGhvZHMgaW4gbm9uLW1hYyBXZWJLaXQxIHBv
cnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAgICAgKEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUpOgorCiAyMDEz
LTA1LTA2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gQXBwbGVXaW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQzNTIwZjM4NzY5M2Y0
M2I4YzQwZmVjZmE0YWMxM2YwMjM5YWNjNTMuLjA0MzdmNTNlMGJhYjIzMTRmNzlmMTNhMzBiY2Jj
NTFiNjRkYTYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMy0wNS0wNyAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IFdLMiB2ZXJzaW9uIG9mIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpzYXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTU1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0J3Mgc2F2ZSgpIGFuZCBhcHBlbmQoKSBtZXRo
b2RzIGZvcgorICAgICAgICBXZWJLaXQyLiBBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRo
ZXNlIG1ldGhvZHMgaW4gbm9uLW1hYworICAgICAgICBXZWJLaXQxIHBvcnRzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6YXBwZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3I6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjphcHBlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpZFNhdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEzLTA1LTA3
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4g
dXAgS2V5ZnJhbWVWYWx1ZUxpc3QgYW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5k
ZXggMmEyYzNhZDQwZTFlYmIzYWVlMjI2MjVmOWU2MWJhNGQxZGY1ZWFhOC4uMGVlMWQ1NmJlOWQy
N2I0MWFiNTg0MWI4MzI4YTYxODZkMjE5NmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC02Nyw5ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGVmZWI5MjYyZDlkZGYzNGQwMDdjMzFlNjMyMmFiMWU5NWUwNWQzNzMuLjcw
YmVkNTU0OGY5NTc1OWRhNTMwYjk1NGNlNjNiMjQwN2UyZGJiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTE2Myw2ICsxNjMsMTEgQEAgY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnREdW1teSA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsK
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KEluc3BlY3RvckNvbnRy
b2xsZXIqLCBQYWdlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KERvY2tTaWRlKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V2luZG93KCkgT1ZFUlJJREUgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IGE5OTUzNzVlYTdlOTUy
NDc3YThmN2E3ODJjNTQ0ZjE0MDdjNmVjNzMuLmQ4YjAyNzI0ZDA1MGIzNjUwZDJjM2I4OGM1M2Mz
MTZjMWY1YWNhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtMTgzLDYgKzE4MywxNiBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudEVmbDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6
OmFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OmF0dGFjaFdpbmRv
dyhEb2NrU2lkZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCBmMDIz
OThiMTBjNmQ0ODkzOTNmMzhjOWY1NDE0ODM3YTMxOTdmNjFmLi5iMWVlYjQwODA1ZDQzYzY4ZDU1
MjIxODhlMzhhOTQ1YjczYjVmMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaApAQCAtODEsNiArODEsMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hXaW5kb3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggODFiYzZhZTkzMDk4Y2QxZmZj
OTVlOTVlNjVjZTE5MTAyM2ExZDA0Zi4uMjFhOTI5NjM4ZjNhNzIzNzQ1YzhiZWUyZjYwMjY1MWZk
ZWVjNTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0yNDEsNiArMjQxLDE2IEBAIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKICAgICBkZXN0cm95SW5zcGVjdG9yV2lu
ZG93KHRydWUpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogewogICAgIGlmICgh
bV9pbnNwZWN0b3JXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCA3ZGYzYmMyZmVmMTA5OWNlYzBhMzJi
MmIwMDNlNTZhMzhlNDRmZjVkLi42OTM3MTM0YjliZDJhN2ZhYTA0M2IwNjAzNTM1MDM5MTJmYzYz
NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaApAQCAtODgsNiArODgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aFdpbmRvdygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDRhOTQ0NjEwZTEyNjZiZWMyZjM3ZmJmMmM3OWU1
MTg5MzUwNzE0MGYuLjA0OTgwOTM5NGEyOWZkOTY0NTdlYzFjNmI4ODU1ZWFhM2ZjODY2ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCkBAIC0xMjMsNSArMTIzLDUgQEAgcHJpdmF0ZToKICAgICBXZWJWaWV3KiBtX2lu
c3BlY3RlZFdlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xs
ZXI+IG1fd2luZG93Q29udHJvbGxlcjsKICAgICBTdHJpbmcgbV9pbnNwZWN0ZWRVUkw7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc2F2ZVVSTHM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXA7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCmluZGV4IGMzMGUzZDU2ZmI5ZjZjMGU3YTQ0MDJlNmRhOTkzNDUyNzkyYjg4
ZjguLmM0N2NjZGEwMTBmYjQyOGRmNzhjNzJhN2FiN2Y3YWViNTI3OTAxMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KQEAgLTI5OCwyOCArMjk4LDM5IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3QKICAgICBbW21fd2luZG93Q29udHJvbGxlci5nZXQo
KSB3aW5kb3ddIHNldFRpdGxlOnRpdGxlXTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHJlZlVSTCwgY29uc3QgU3RyaW5nJiByZWZDb250
ZW50LCBib29sIGZvcmNlU2F2ZUFzKQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGZvcmNlU2F2ZURpYWxvZykKIHsKLSAgICBTdHJpbmcgdXJsID0gcmVmVVJMOwotICAgIFN0
cmluZyBjb250ZW50ID0gcmVmQ29udGVudDsKLSAgICBhdXRvIHNhdmVUb1VSTCA9IF4oTlNVUkwg
KlVSTCkgewotICAgICAgICBtX3NhdmVVUkxzLnNldCh1cmwsIFVSTCk7Ci0KLSAgICAgICAgW2Nv
bnRlbnQgd3JpdGVUb1VSTDpVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmcgZXJyb3I6TlVMTF07Ci0gICAgICAgIGNvcmUoW21fd2luZG93Q29udHJvbGxlciB3
ZWJWaWV3XSktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIiki
LCBVUkwuYWJzb2x1dGVTdHJpbmddKTsKKyAgICBBU1NFUlQoIXN1Z2dlc3RlZFVSTC5pc0VtcHR5
KCkpOworICAgIAorICAgIC8vIG5lY2Vzc2FyeSBmb3IgdGhlIGJsb2NrIGJlbG93LgorICAgIFN0
cmluZyBzdWdnZXN0ZWRVUkxDb3B5ID0gc3VnZ2VzdGVkVVJMOworICAgIFN0cmluZyBjb250ZW50
Q29weSA9IGNvbnRlbnQ7CisKKyAgICBhdXRvIHNhdmVUb1VSTCA9IF4oTlNVUkwgKmFjdHVhbFVS
TCkgeworICAgICAgICBBU1NFUlQoYWN0dWFsVVJMKTsKKyAgICAgICAgCisgICAgICAgIG1fc3Vn
Z2VzdGVkVG9BY3R1YWxVUkxNYXAuc2V0KHN1Z2dlc3RlZFVSTENvcHksIGFjdHVhbFVSTCk7Cisg
ICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKKyAgICAgICAgY29yZShb
bV93aW5kb3dDb250cm9sbGVyIHdlYlZpZXddKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVj
dXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuc2F2ZWRVUkwoXCIlQFwiKSIsIGFjdHVhbFVSTC5hYnNvbHV0ZVN0cmluZ10pOwogICAgIH07
CiAKLSAgICBOU1VSTCAqVVJMID0gbV9zYXZlVVJMcy5nZXQodXJsKS5nZXQoKTsKLSAgICBpZiAo
IVVSTCkKLSAgICAgICAgVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXTsKLSAgICBlbHNl
IGlmICghZm9yY2VTYXZlQXMpIHsKLSAgICAgICAgc2F2ZVRvVVJMKFVSTCk7CisgICAgTlNVUkwg
KnBsYXRmb3JtVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5nZXQoc3VnZ2VzdGVkVVJM
KS5nZXQoKTsKKyAgICBpZiAoIXBsYXRmb3JtVVJMKSB7CisgICAgICAgIHBsYXRmb3JtVVJMID0g
W05TVVJMIFVSTFdpdGhTdHJpbmc6c3VnZ2VzdGVkVVJMXTsKKyAgICAgICAgLy8gdGhlIHVzZXIg
bXVzdCBjb25maXJtIG5ldyBmaWxlbmFtZXMgYmVmb3JlIHdlIGNhbiBzYXZlIHRvIHRoZW0uCisg
ICAgICAgIGZvcmNlU2F2ZURpYWxvZyA9IHRydWU7CisgICAgfQorICAgIGlmICghcGxhdGZvcm1V
UkwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CisgICAg
ICAgIHNhdmVUb1VSTChwbGF0Zm9ybVVSTCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVsXTsKLSAgICBwYW5l
bC5uYW1lRmllbGRTdHJpbmdWYWx1ZSA9IFVSTC5sYXN0UGF0aENvbXBvbmVudDsKLSAgICBwYW5l
bC5kaXJlY3RvcnlVUkwgPSBbVVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07Cisg
ICAgcGFuZWwubmFtZUZpZWxkU3RyaW5nVmFsdWUgPSBwbGF0Zm9ybVVSTC5sYXN0UGF0aENvbXBv
bmVudDsKKyAgICBwYW5lbC5kaXJlY3RvcnlVUkwgPSBbcGxhdGZvcm1VUkwgVVJMQnlEZWxldGlu
Z0xhc3RQYXRoQ29tcG9uZW50XTsKIAogICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5k
b3c6W1ttX3dpbmRvd0NvbnRyb2xsZXIgd2ViVmlld10gd2luZG93XSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TSW50ZWdlciByZXN1bHQpIHsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVIYW5k
bGluZ1BhbmVsQ2FuY2VsQnV0dG9uKQpAQCAtMzI5LDE4ICszNDAsMjEgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHJlZlVSTCwgY29uc3QgU3Ry
aW5nJiByZWZDb24KICAgICB9XTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IFVS
TCA9IG1fc2F2ZVVSTHMuZ2V0KHVybCk7Ci0gICAgaWYgKCFVUkwpCi0gICAgICAgIFVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOnVybF07CisgICAgQVNTRVJUKCFzdWdnZXN0ZWRVUkwuaXNFbXB0
eSgpKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8TlNVUkw+IGFjdHVhbFVSTCA9IG1fc3VnZ2VzdGVk
VG9BY3R1YWxVUkxNYXAuZ2V0KHN1Z2dlc3RlZFVSTCk7CisgICAgLy8gZG8gbm90IGFwcGVuZCB1
bmxlc3MgdGhlIHVzZXIgaGFzIGFscmVhZHkgY29uZmlybWVkIHRoaXMgZmlsZW5hbWUgaW4gc2F2
ZSgpLgorICAgIGlmICghYWN0dWFsVVJMKQorICAgICAgICByZXR1cm47CiAKLSAgICBOU0ZpbGVI
YW5kbGUgKmhhbmRsZSA9IFtOU0ZpbGVIYW5kbGUgZmlsZUhhbmRsZUZvcldyaXRpbmdUb1VSTDpV
UkwuZ2V0KCkgZXJyb3I6TlVMTF07CisgICAgTlNGaWxlSGFuZGxlICpoYW5kbGUgPSBbTlNGaWxl
SGFuZGxlIGZpbGVIYW5kbGVGb3JXcml0aW5nVG9VUkw6YWN0dWFsVVJMLmdldCgpIGVycm9yOk5V
TExdOwogICAgIFtoYW5kbGUgc2Vla1RvRW5kT2ZGaWxlXTsKICAgICBbaGFuZGxlIHdyaXRlRGF0
YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAg
IFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIGNvcmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJW
aWV3XSktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwi
KSIsIFtVUkwgYWJzb2x1dGVTdHJpbmddXSk7CisgICAgY29yZShbbV93aW5kb3dDb250cm9sbGVy
IHdlYlZpZXddKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChc
IiVAXCIpIiwgW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFSSzogLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcAppbmRleCA0MWViNWU1ZTU1OTYxOGY1NjY4NWQ2MDIyNDNmMDA3OGJjYWM1NzU4Li45
MzIyZmQzYmE0NzJiOTljYzI2MmE5MGVjNmE3YTM1Yzg0YjZmYzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcApAQCAt
MzE2LDYgKzMxNiwxNiBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNsb3NlV2lu
ZG93KCkKICAgICBkZXN0cm95SW5zcGVjdG9yVmlldyh0cnVlKTsKIH0KIAordm9pZCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudFF0OjpzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJv
b2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudFF0OjphcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmF0
dGFjaFdpbmRvdyhEb2NrU2lkZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCmluZGV4
IDUxNzcxYWE4OTY5ZWZhNWY0N2ZlZDI3OGFmNjIyYjk0MDAxOWQxZTEuLmQyYjgxOTc5M2QwOGNi
ZWU2MThiNTE3ODVlYjY1ZmUzMDI5NGI1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTkxLDYgKzkxLDEwIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdmlydHVhbCB2b2lk
IGNsb3NlV2luZG93KCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpOwogICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNWY2ZTgy
OGY3NDRiOTEzMWYwMjY5ZjY0NGI5MTBjYmY5YzRhZGFiNi4uZjc4NTlhMDZkNWNmYWNjYWU5OGMx
MjQxMzVmNmEwNDQ3ZGU3MTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yNzksNiArMjc5LDE2IEBA
IHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkKICAgICBkZXN0
cm95SW5zcGVjdG9yVmlldyh0cnVlKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6c2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFw
cGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhE
b2NrU2lkZSkKIHsKICAgICBpZiAobV9hdHRhY2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggMDMwZjYwOTZi
OTRkZjJmYzM4YTM0ZGE5ZmUwYzRmOTdkMjc3YmRmYy4uMGMyNDlhZDNiYmZhOWQ3NmRhMmI5ODgz
NDc0Njc2MGY4MzkyMmVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTEwMyw2ICsxMDMsMTAgQEAgcHVibGlj
OgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2VXaW5kb3coKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDc3MzdlMjQ2MWNjY2Y4MGE1MzA4
MWRjNDVhNDljODU1MTY5N2RkMTIuLjI2ZTc2NTY0MDQxZTkxZDRjMDI1ZTE1OWE0ZDZiNjQ2ZTZm
NWZhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtNDc0LDYgKzQ3NCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIHBsYXRmb3JtSW5zcGVj
dGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpj
YW5TYXZlKGJvb2wmIHJlc3VsdCkKK3sKKyAgICBwbGF0Zm9ybUNhblNhdmUocmVzdWx0KTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgcGxhdGZvcm1T
YXZlKGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCit7CisgICAgcGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOworfQorCiBi
b29sIFdlYkluc3BlY3RvclByb3h5OjpjYW5BdHRhY2goKQogewogICAgIC8vIEtlZXAgdGhpcyBp
biBzeW5jIHdpdGggSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93
LiBUaGVyZSBhcmUgdHdvIGltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCBkYjk4ZDQxZDQ2MDRiZDQzMmNjMjU5MTgwOTVm
M2Y3MTExNTJiYjIzLi4wNjhmOWU2OGJlZjY3M2I4YzY5MGUwYzEyYzU4MDFmZTdlZDM0MjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMzgs
OSArMzgsMTEgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJXS0dlb21ldHJ5Lmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IE9CSkNfQ0xBU1MgTlNCdXR0b247CitPQkpDX0NMQVNTIE5TVVJMOwogT0JKQ19DTEFTUyBOU1dp
bmRvdzsKIE9CSkNfQ0xBU1MgV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyOwogT0JKQ19D
TEFTUyBXS1dlYkluc3BlY3RvcldLVmlldzsKQEAgLTE2Myw2ICsxNjUsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBsYXRmb3JtRGV0YWNoKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh1bnNpZ25lZCk7CisgICAgdm9pZCBwbGF0Zm9ybUNhblNhdmUoYm9vbCYpOworICAg
IHZvaWQgcGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworCiAKICAgICAvLyBD
YWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGNyZWF0ZUluc3Bl
Y3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYpOwpAQCAtMTcxLDYgKzE3NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGNhblNhdmUoYm9vbCYpOworICAgIHZvaWQgc2F2ZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VT
YXZlQXMpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCk7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICAgICB2b2lk
IHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogI2Vu
ZGlmCkBAIC0yMTYsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNCdXR0b24+
IG1fZG9ja1JpZ2h0QnV0dG9uOwogICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXI+IG1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKICAgICBTdHJpbmcgbV91cmxT
dHJpbmc7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc3VnZ2VzdGVk
VG9BY3R1YWxVUkxNYXA7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgV2ViSW5zcGVjdG9yQ2xp
ZW50R3RrIG1fY2xpZW50OwogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGU5YmZjNDc5NzI5NDk1MGY4ZTQwYzU3YjBlNzM2MTMzMTA0NGRkMWUuLmIxOGZm
YjU0NWQ4OTQ5ZjI5M2UxZDFkOTY5NTUzNTc0NjI0NGZlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4
LDYgKzI4LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBCcmluZ1Rv
RnJvbnQoKQogICAgIEluc3BlY3RlZFVSTENoYW5nZWQoV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQog
CisgICAgQ2FuU2F2ZSgpIC0+IChib29sIHJlc3VsdCkKKyAgICBTYXZlKFdURjo6U3RyaW5nIGZp
bGVuYW1lLCBXVEY6OlN0cmluZyBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQorICAgIEFwcGVu
ZChXVEY6OlN0cmluZyBmaWxlbmFtZSwgV1RGOjpTdHJpbmcgY29udGVudCkKKwogICAgIEF0dGFj
aEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4
IDJlNjgyZDUyN2NkNTQ3NThiNjBhZTBiMWY5ODY2ZjExZGM1MGNjYTUuLmZlZWJlNjVjZDdlN2Vj
NWViZDU4YjBhMmQwZTJmNjVjN2VlNDEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yMTMsNiArMjEzLDIx
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IGZh
bHNlOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDE2MzE0ODM3OTJkMTgzMTQ2NjFm
ODEzODk3NDNjYjkwYzM5ZDM1YzQuLmVlOWEyMDJlMTFmZDMwMWUxNTU3Y2JiYjc3YTk1OTQxYTA3
MDk3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCkBAIC0yMzQsNiArMjM0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNhblNh
dmUoYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IGZhbHNlOworfQorCit2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQppbmRleCA2MmZkYjU3MjY3NDliZDUyOTkzMjRjNzM5YzViNDU0OWVlMTZiODNhLi5j
Zjc4MmU3ODdmN2E3ZWFkZWViMGEwYmQyYWEyNDUwNzQ3OGRlMDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTMy
LDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9y
UHJpdmF0ZU1hYy5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNDk3LDYgKzQ5OCw3
MCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgdXBkYXRlSW5zcGVjdG9yV2luZG93VGl0bGUo
KTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKGJvb2wmIHJl
c3VsdCkKK3sKKyAgICByZXN1bHQgPSB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCit7CisgICAgQVNTRVJUKCFzdWdnZXN0ZWRV
UkwuaXNFbXB0eSgpKTsKKyAgICAKKyAgICAvLyBuZWNlc3NhcnkgZm9yIHRoZSBibG9jayBiZWxv
dy4KKyAgICBTdHJpbmcgc3VnZ2VzdGVkVVJMQ29weSA9IHN1Z2dlc3RlZFVSTDsKKyAgICBTdHJp
bmcgY29udGVudENvcHkgPSBjb250ZW50OworCisgICAgYXV0byBzYXZlVG9VUkwgPSBeKE5TVVJM
ICphY3R1YWxVUkwpIHsKKyAgICAgICAgQVNTRVJUKGFjdHVhbFVSTCk7CisgICAgICAgIAorICAg
ICAgICBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLnNldChzdWdnZXN0ZWRVUkxDb3B5LCBhY3R1
YWxVUkwpOworICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWlj
YWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CisgICAg
ICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZFNh
dmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICB9
OworCisgICAgTlNVUkwgKnBsYXRmb3JtVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5n
ZXQoc3VnZ2VzdGVkVVJMKS5nZXQoKTsKKyAgICBpZiAoIXBsYXRmb3JtVVJMKSB7CisgICAgICAg
IHBsYXRmb3JtVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6c3VnZ2VzdGVkVVJMXTsKKyAgICAg
ICAgLy8gdGhlIHVzZXIgbXVzdCBjb25maXJtIG5ldyBmaWxlbmFtZXMgYmVmb3JlIHdlIGNhbiBz
YXZlIHRvIHRoZW0uCisgICAgICAgIGZvcmNlU2F2ZURpYWxvZyA9IHRydWU7CisgICAgfQorICAg
IGlmICghcGxhdGZvcm1VUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZm9yY2VTYXZl
RGlhbG9nKSB7CisgICAgICAgIHNhdmVUb1VSTChwbGF0Zm9ybVVSTCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBh
bmVsXTsKKyAgICBwYW5lbC5uYW1lRmllbGRTdHJpbmdWYWx1ZSA9IHBsYXRmb3JtVVJMLmxhc3RQ
YXRoQ29tcG9uZW50OworICAgIHBhbmVsLmRpcmVjdG9yeVVSTCA9IFtwbGF0Zm9ybVVSTCBVUkxC
eURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2Rh
bEZvcldpbmRvdzptX2luc3BlY3RvcldpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
SW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVIYW5kbGluZ1Bh
bmVsQ2FuY2VsQnV0dG9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQocmVz
dWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbik7CisgICAgICAgIHNhdmVUb1VSTChw
YW5lbC5VUkwpOworICAgIH1dOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
KQoreworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAgCisgICAgUmV0
YWluUHRyPE5TVVJMPiBhY3R1YWxVUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLmdldChz
dWdnZXN0ZWRVUkwpOworICAgIC8vIGRvIG5vdCBhcHBlbmQgdW5sZXNzIHRoZSB1c2VyIGhhcyBh
bHJlYWR5IGNvbmZpcm1lZCB0aGlzIGZpbGVuYW1lIGluIHNhdmUoKS4KKyAgICBpZiAoIWFjdHVh
bFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNGaWxlSGFuZGxlICpoYW5kbGUgPSBbTlNG
aWxlSGFuZGxlIGZpbGVIYW5kbGVGb3JXcml0aW5nVG9VUkw6YWN0dWFsVVJMLmdldCgpIGVycm9y
Ok5VTExdOworICAgIFtoYW5kbGUgc2Vla1RvRW5kT2ZGaWxlXTsKKyAgICBbaGFuZGxlIHdyaXRl
RGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwor
ICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKKworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5n
XSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5k
b3dGcmFtZURpZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCmlu
ZGV4IDI2NWY4MjhjNmMxYzE0MjMxYjJkZTYxMGY1NzFiZmEwMjg3MzM4ZWQuLmRhMGZjMDIzODEy
MzFkMTM1NDIxYjFiMzJmOGEzM2NiMTJmOWQ0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKQEAgLTEwNyw2ICsxMDcsMjEg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ2FuU2F2ZShib29sJiByZXN1bHQpCit7CisgICAgcmVzdWx0ID0gZmFs
c2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYklu
c3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRl
eCA5NjU0MmEwMDM2Y2Q2YTViY2I2YWM0Y2E4MzM3MDFiOTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDlj
ZjEyNDcyOTZmNjJlY2U1MjUwM2M0ZTk3MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmNwcApAQCAtNjEsNiArNjEsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRp
ZENsb3NlKCk7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUo
KQoreworICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dp
dGNoIChkb2NrU2lkZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
CmluZGV4IGViMjVhYmVhZTQ0NDI3NjllOTNmYmJhOWRhMjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2
ZGM1NGRmM2UwNDJhZmIzNTk3ODkxMTEwZmRhOTZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZVdpbmRvdygpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBi
b29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhE
b2NrU2lkZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJS
SURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCmluZGV4IGM3MzA1OGZlMjMwYTFhMTY0MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAu
LmY0ZTA4NWY5NjMyODU1NjJiNjc4NDlhY2E0N2YwNDEzODMwOTQzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zMywx
MCArMzMsMTQgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Miw2ICs1Niw4IEBAIFdlYklu
c3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFuCiAgICAgLCBtX2luc3BlY3RvclBhZ2UoMCkKICAgICAsIG1fZnJv
bnRlbmRDbGllbnQoMCkKICAgICAsIG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkK
KyAgICAsIG1fY2FjaGVkQ2FuU2F2ZVJlc3BvbnNlKGZhbHNlKQorICAgICwgbV9kaWRDYWNoZUNh
blNhdmVSZXNwb25zZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2hhc0xvY2Fs
aXplZFN0cmluZ3NVUkwoZmFsc2UpCiAgICAgLCBtX3VzZXNXZWJLaXRVc2VySW50ZXJmYWNlKGZh
bHNlKQpAQCAtMTE3LDYgKzEyMywyNiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0
ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCitib29sIFdl
Ykluc3BlY3Rvcjo6Y2FuU2F2ZSgpCit7CisgICAgaWYgKCFtX2RpZENhY2hlQ2FuU2F2ZVJlc3Bv
bnNlKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDYW5TYXZlKCksIG1fY2FjaGVkQ2FuU2F2
ZVJlc3BvbnNlLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9kaWRDYWNoZUNhblNhdmVS
ZXNwb25zZSA9IHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBtX2NhY2hlZENhblNhdmVS
ZXNwb25zZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yOjphcHBlbmQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVu
ZChmaWxlbmFtZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYklu
c3BlY3Rvcjo6YXR0YWNoQm90dG9tKCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20o
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CkBAIC0xNTMsNiArMTc5LDE4IEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjpjbG9zZSgpCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmNsb3NlKCk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yOjpkaWRTYXZlKGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KG1h
a2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiIiwgdXJsLCAiXCIpIikp
OworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQor
eworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIG1faW5zcGVjdG9yUGFnZS0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmco
Ikluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7Cit9
CisKIHZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hlZEJvdHRvbSgpCiB7CiAgICAgaWYgKG1fZnJv
bnRlbmRDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmgKaW5kZXggMDM4YTYxMzFmYmIzNzBiN2JmM2Y5NTBiM2I3ZTA2ZTAzMWY4YmY4
MC4uZmEyMmQ1NDU3NWU4YzBmODlkZmE4NGYxYWVlODkyMGQxZTM2MjE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtNTcsNiAr
NTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisg
ICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChj
b25zdCBTdHJpbmcmIHVybCk7CisKICAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7CiAgICAgdm9p
ZCBhdHRhY2hlZFJpZ2h0KCk7CiAgICAgdm9pZCBkZXRhY2hlZCgpOwpAQCAtOTQsNiArOTcsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgaW5zcGVjdGVk
VVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKIAorICAgIGJvb2wgY2FuU2F2ZSgpOworICAgIHZv
aWQgc2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgZm9yY2VTYXZlQXMpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudCk7CisKICAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwogICAg
IHZvaWQgYXR0YWNoUmlnaHQoKTsKICAgICB2b2lkIGRldGFjaCgpOwpAQCAtMTIyLDYgKzEyOSw4
IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSogbV9pbnNwZWN0b3JQYWdlOwogICAgIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CisgICAgYm9vbCBtX2NhY2hl
ZENhblNhdmVSZXNwb25zZTsKKyAgICBib29sIG1fZGlkQ2FjaGVDYW5TYXZlUmVzcG9uc2U7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VS
TDsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVz
c2FnZXMuaW4KaW5kZXggNTBiNzVhZmRjNGRlOWJhYjJlZDVlZTQ4OTI1NWVlZTBkMDdiNWJmNC4u
MjJkMmZiMDAyMzQ5ZGNlNGUxZDMwNjhhMmEyZjVkZDU2MDkyOWM3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluCkBAIC0yOCw2ICsyOCw4IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgQXR0YWNoZWRCb3R0b20oKQogICAgIEF0dGFjaGVkUmlnaHQoKQogICAg
IERldGFjaGVkKCkKKyAgICBEaWRTYXZlKFdURjo6U3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQo
V1RGOjpTdHJpbmcgdXJsKQogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkK
ICAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201249</attachid>
            <date>2013-05-09 10:32:06 -0700</date>
            <delta_ts>2013-05-09 13:06:52 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-115564-20130509103110.patch</filename>
            <type>text/plain</type>
            <size>23964</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2VjMzMzZTY2
YWI1OWYzZjRhNWNiMzE1ZTEzNmQ0MDk5MjQ5NzA1ZC4uNjAwOGQ1MjYxMmVmNjYxZmQ4NjlhYzU3
N2EwYmMzOGQxZTMwOTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTA1LTA4ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENsZWFuIHVwIHNhdmUoKSBhbmQgYXBwZW5kKCkgaW1wbGVtZW50YXRpb25zLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmFwcGVuZCk6CisKIDIwMTMtMDUtMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1p
a2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgSGFzaFRyYWl0czxSZWZQdHI8
UD4gPjo6UGVla1R5cGUgc2hvdWxkIGJlIHJhdyBwb2ludGVyIGZvciBiZXR0ZXIgcGVyZm9ybWFu
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBkMzUyMGYzODc2OTNmNDNiOGM0MGZlY2ZhNGFjMTNmMDIzOWFjYzUz
Li44Mzc3MzA4MzNjZGJlZjEyZTI5ZWNiYTk0NTQxY2M5OTVlZDIyNDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMTMtMDUtMDggIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hp
bmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lv
biBvZiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IEluc3BlY3RvckZyb250ZW5k
SG9zdCdzIHNhdmUoKSBhbmQgYXBwZW5kKCkgbWV0aG9kcyBmb3IKKyAgICAgICAgV2ViS2l0Mi4g
QWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciB0aGVzZSBtZXRob2RzIGluIG5vbi1tYWMKKyAg
ICAgICAgV2ViS2l0MSBwb3J0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjYW5TYXZlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpz
YXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJJbnNwZWN0
b3JQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1B
cHBlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BcHBlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNhblNhdmUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5UXQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZl
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1BcHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6Y2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDoKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpXZWJJ
bnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNhblNhdmUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzYXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6OmRpZFNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRp
ZEFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLm1lc3NhZ2VzLmluOgorCiAyMDEzLTA1LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgS2V5ZnJhbWVWYWx1ZUxpc3Qg
YW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0YTk0NDYxMGUxMjY2YmVjMmYzN2Zi
ZjJjNzllNTE4OTM1MDcxNDBmLi4wNDk4MDkzOTRhMjlmZDk2NDU3ZWMxYzZiODg1NWVhYTNmYzg2
NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaApAQCAtMTIzLDUgKzEyMyw1IEBAIHByaXZhdGU6CiAgICAgV2ViVmll
dyogbV9pbnNwZWN0ZWRXZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyPiBtX3dpbmRvd0NvbnRyb2xsZXI7CiAgICAgU3RyaW5nIG1faW5zcGVjdGVkVVJM
OwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3NhdmVVUkxzOworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJM
TWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQppbmRleCBjMzBlM2Q1NmZiOWY2YzBlN2E0NDAyZTZkYTk5MzQ1
Mjc5MmI4OGY4Li44NTNjMGU3ZGM5NGI4NzcyN2IyMWEyNWNmMTIxNGExMDUwNzViNzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tCkBAIC0yOTgsMjggKzI5OCw0MSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0CiAgICAgW1ttX3dpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCkgd2luZG93XSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiByZWZVUkwsIGNvbnN0IFN0cmluZyYg
cmVmQ29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29u
dGVudCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCiB7Ci0gICAgU3RyaW5nIHVybCA9IHJlZlVSTDsK
LSAgICBTdHJpbmcgY29udGVudCA9IHJlZkNvbnRlbnQ7Ci0gICAgYXV0byBzYXZlVG9VUkwgPSBe
KE5TVVJMICpVUkwpIHsKLSAgICAgICAgbV9zYXZlVVJMcy5zZXQodXJsLCBVUkwpOwotCi0gICAg
ICAgIFtjb250ZW50IHdyaXRlVG9VUkw6VVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwotICAgICAgICBjb3JlKFttX3dpbmRvd0NvbnRy
b2xsZXIgd2ViVmlld10pLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChc
IiVAXCIpIiwgVVJMLmFic29sdXRlU3RyaW5nXSk7CisgICAgQVNTRVJUKCFzdWdnZXN0ZWRVUkwu
aXNFbXB0eSgpKTsKKyAgICAKKyAgICAvLyBOZWNlc3NhcnkgZm9yIHRoZSBibG9jayBiZWxvdy4K
KyAgICBTdHJpbmcgc3VnZ2VzdGVkVVJMQ29weSA9IHN1Z2dlc3RlZFVSTDsKKyAgICBTdHJpbmcg
Y29udGVudENvcHkgPSBjb250ZW50OworCisgICAgYXV0byBzYXZlVG9VUkwgPSBeKE5TVVJMICph
Y3R1YWxVUkwpIHsKKyAgICAgICAgQVNTRVJUKGFjdHVhbFVSTCk7CisgICAgICAgIAorICAgICAg
ICBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLnNldChzdWdnZXN0ZWRVUkxDb3B5LCBhY3R1YWxV
UkwpOworICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxs
eTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CisgICAgICAg
IGNvcmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSktPm1haW5GcmFtZSgpLT5zY3JpcHQo
KS0+ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZy
b250ZW5kQVBJLnNhdmVkVVJMKFwiJUBcIikiLCBhY3R1YWxVUkwuYWJzb2x1dGVTdHJpbmddKTsK
ICAgICB9OwogCi0gICAgTlNVUkwgKlVSTCA9IG1fc2F2ZVVSTHMuZ2V0KHVybCkuZ2V0KCk7Ci0g
ICAgaWYgKCFVUkwpCi0gICAgICAgIFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF07Ci0g
ICAgZWxzZSBpZiAoIWZvcmNlU2F2ZUFzKSB7Ci0gICAgICAgIHNhdmVUb1VSTChVUkwpOworICAg
IE5TVVJMICpwbGF0Zm9ybVVSTCA9IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXAuZ2V0KHN1Z2dl
c3RlZFVSTCkuZ2V0KCk7CisgICAgaWYgKCFwbGF0Zm9ybVVSTCkgeworICAgICAgICBwbGF0Zm9y
bVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN1Z2dlc3RlZFVSTF07CisgICAgICAgIC8vIFRo
ZSB1c2VyIG11c3QgY29uZmlybSBuZXcgZmlsZW5hbWVzIGJlZm9yZSB3ZSBjYW4gc2F2ZSB0byB0
aGVtLgorICAgICAgICBmb3JjZVNhdmVEaWFsb2cgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBB
U1NFUlQocGxhdGZvcm1VUkwpOworICAgIGlmICghcGxhdGZvcm1VUkwpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CisgICAgICAgIHNhdmVUb1VSTChwbGF0
Zm9ybVVSTCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBOU1NhdmVQYW5lbCAqcGFu
ZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVsXTsKLSAgICBwYW5lbC5uYW1lRmllbGRTdHJpbmdW
YWx1ZSA9IFVSTC5sYXN0UGF0aENvbXBvbmVudDsKLSAgICBwYW5lbC5kaXJlY3RvcnlVUkwgPSBb
VVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CisgICAgcGFuZWwubmFtZUZpZWxk
U3RyaW5nVmFsdWUgPSBwbGF0Zm9ybVVSTC5sYXN0UGF0aENvbXBvbmVudDsKKyAgICBwYW5lbC5k
aXJlY3RvcnlVUkwgPSBbcGxhdGZvcm1VUkwgVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50
XTsKIAogICAgIFtwYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6W1ttX3dpbmRvd0NvbnRy
b2xsZXIgd2ViVmlld10gd2luZG93XSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1
bHQpIHsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVIYW5kbGluZ1BhbmVsQ2FuY2VsQnV0
dG9uKQpAQCAtMzI5LDE4ICszNDIsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6c2F2ZShjb25zdCBTdHJpbmcmIHJlZlVSTCwgY29uc3QgU3RyaW5nJiByZWZDb24KICAgICB9
XTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKIHsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IFVSTCA9IG1fc2F2ZVVSTHMuZ2V0
KHVybCk7Ci0gICAgaWYgKCFVUkwpCi0gICAgICAgIFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OnVybF07CisgICAgQVNTRVJUKCFzdWdnZXN0ZWRVUkwuaXNFbXB0eSgpKTsKKyAgICAKKyAgICBS
ZXRhaW5QdHI8TlNVUkw+IGFjdHVhbFVSTCA9IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXAuZ2V0
KHN1Z2dlc3RlZFVSTCk7CisgICAgLy8gZG8gbm90IGFwcGVuZCB1bmxlc3MgdGhlIHVzZXIgaGFz
IGFscmVhZHkgY29uZmlybWVkIHRoaXMgZmlsZW5hbWUgaW4gc2F2ZSgpLgorICAgIGlmICghYWN0
dWFsVVJMKQorICAgICAgICByZXR1cm47CiAKLSAgICBOU0ZpbGVIYW5kbGUgKmhhbmRsZSA9IFtO
U0ZpbGVIYW5kbGUgZmlsZUhhbmRsZUZvcldyaXRpbmdUb1VSTDpVUkwuZ2V0KCkgZXJyb3I6TlVM
TF07CisgICAgTlNGaWxlSGFuZGxlICpoYW5kbGUgPSBbTlNGaWxlSGFuZGxlIGZpbGVIYW5kbGVG
b3JXcml0aW5nVG9VUkw6YWN0dWFsVVJMLmdldCgpIGVycm9yOk5VTExdOwogICAgIFtoYW5kbGUg
c2Vla1RvRW5kT2ZGaWxlXTsKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxl
XTsKIAotICAgIGNvcmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSktPm1haW5GcmFtZSgp
LT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIklu
c3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFtVUkwgYWJzb2x1dGVT
dHJpbmddXSk7CisgICAgY29yZShbbV93aW5kb3dDb250cm9sbGVyIHdlYlZpZXddKS0+bWFpbkZy
YW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiVAXCIpIiwgW2FjdHVhbFVS
TCBhYnNvbHV0ZVN0cmluZ11dKTsKIH0KIAogLy8gTUFSSzogLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNzczN2UyNDYxY2NjZjgwYTUz
MDgxZGM0NWE0OWM4NTUxNjk3ZGQxMi4uZDc0NzdmMGU0MDU5OGI5OWU5MjQ1MzljODEwNWQ1NWFl
YTI5MGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC00NzQsNiArNDc0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgcGxhdGZvcm1JbnNw
ZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmNhblNhdmUoYm9vbCYgcmVzdWx0KQoreworICAgIHJlc3VsdCA9IHBsYXRmb3JtQ2FuU2F2ZSgp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBwbGF0
Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCkKK3sKKyAgICBwbGF0Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7Cit9
CisKIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgpCiB7CiAgICAgLy8gS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hX
aW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRiOThkNDFkNDYwNGJkNDMyY2MyNTkx
ODA5NWYzZjcxMTE1MmJiMjMuLjQyNmFmODAxMWRiMWE5YTJhZTA1ZTNkZGI5NzUyMGMxN2IwNjc2
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBA
IC0zOCw5ICszOCwxMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIldLR2VvbWV0
cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogT0JKQ19DTEFTUyBOU0J1dHRvbjsKK09CSkNfQ0xBU1MgTlNVUkw7CiBPQkpDX0NMQVNT
IE5TV2luZG93OwogT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7CiBP
QkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwpAQCAtMTYzLDYgKzE2NSwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKICAgICB2b2lkIHBsYXRmb3JtU2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hl
ZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKKyAgICBib29sIHBsYXRmb3JtQ2FuU2F2ZSgpOworICAg
IHZvaWQgcGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworCiAKICAgICAvLyBD
YWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGNyZWF0ZUluc3Bl
Y3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYpOwpAQCAtMTcxLDYgKzE3NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGNhblNhdmUoYm9vbCYpOworICAgIHZvaWQgc2F2ZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VT
YXZlQXMpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCk7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICAgICB2b2lk
IHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogI2Vu
ZGlmCkBAIC0yMTYsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNCdXR0b24+
IG1fZG9ja1JpZ2h0QnV0dG9uOwogICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXI+IG1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlcjsKICAgICBTdHJpbmcgbV91cmxT
dHJpbmc7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc3VnZ2VzdGVk
VG9BY3R1YWxVUkxNYXA7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgV2ViSW5zcGVjdG9yQ2xp
ZW50R3RrIG1fY2xpZW50OwogICAgIEd0a1dpZGdldCogbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGU5YmZjNDc5NzI5NDk1MGY4ZTQwYzU3YjBlNzM2MTMzMTA0NGRkMWUuLmIxOGZm
YjU0NWQ4OTQ5ZjI5M2UxZDFkOTY5NTUzNTc0NjI0NGZlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4
LDYgKzI4LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBCcmluZ1Rv
RnJvbnQoKQogICAgIEluc3BlY3RlZFVSTENoYW5nZWQoV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQog
CisgICAgQ2FuU2F2ZSgpIC0+IChib29sIHJlc3VsdCkKKyAgICBTYXZlKFdURjo6U3RyaW5nIGZp
bGVuYW1lLCBXVEY6OlN0cmluZyBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQorICAgIEFwcGVu
ZChXVEY6OlN0cmluZyBmaWxlbmFtZSwgV1RGOjpTdHJpbmcgY29udGVudCkKKwogICAgIEF0dGFj
aEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4
IDJlNjgyZDUyN2NkNTQ3NThiNjBhZTBiMWY5ODY2ZjExZGM1MGNjYTUuLmJjY2IwMTY4N2E5NzBk
NWVjNzU5MzRiNzA2M2ExYzJkZTcyOTUwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yMTMsNiArMjEzLDIx
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUNhblNhdmUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAppbmRleCAxNjMxNDgzNzkyZDE4MzE0NjYxZjgxMzg5NzQzY2I5MGMz
OWQzNWM0Li42MTA4OWQzYWQwYzU2MGNmZDZmNjVmMTIyZWM2Yjc4NjA5NzcyYjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3Rr
LmNwcApAQCAtMjM0LDYgKzIzNCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAorYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKCkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJv
b2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDYyZmRiNTcyNjc0OWJk
NTI5OTMyNGM3MzljNWI0NTQ5ZWUxNmI4M2EuLjcwZDI4ODJlZjQ3NDMxYTc1Yjc5ZDZmNDE4MDky
OTIwNjRiYmU3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViQ29u
dGV4dC5oIgogI2ltcG9ydCAiV0tJbnNwZWN0b3JQcml2YXRlTWFjLmgiCiAjaW1wb3J0ICJXS1Zp
ZXdQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgogI2ltcG9ydCAi
V2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlBy
ZWZlcmVuY2VzLmgiCkBAIC00OTcsNiArNDk4LDcyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtSW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAg
ICB1cGRhdGVJbnNwZWN0b3JXaW5kb3dUaXRsZSgpOwogfQogCitib29sIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNhblNhdmUoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCit7CisgICAgQVNT
RVJUKCFzdWdnZXN0ZWRVUkwuaXNFbXB0eSgpKTsKKyAgICAKKyAgICAvLyBOZWNlc3NhcnkgZm9y
IHRoZSBibG9jayBiZWxvdy4KKyAgICBTdHJpbmcgc3VnZ2VzdGVkVVJMQ29weSA9IHN1Z2dlc3Rl
ZFVSTDsKKyAgICBTdHJpbmcgY29udGVudENvcHkgPSBjb250ZW50OworCisgICAgYXV0byBzYXZl
VG9VUkwgPSBeKE5TVVJMICphY3R1YWxVUkwpIHsKKyAgICAgICAgQVNTRVJUKGFjdHVhbFVSTCk7
CisgICAgICAgIAorICAgICAgICBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLnNldChzdWdnZXN0
ZWRVUkxDb3B5LCBhY3R1YWxVUkwpOworICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDph
Y3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJy
b3I6TlVMTF07CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICB9OworCisgICAgTlNVUkwgKnBsYXRmb3JtVVJMID0gbV9zdWdnZXN0ZWRU
b0FjdHVhbFVSTE1hcC5nZXQoc3VnZ2VzdGVkVVJMKS5nZXQoKTsKKyAgICBpZiAoIXBsYXRmb3Jt
VVJMKSB7CisgICAgICAgIHBsYXRmb3JtVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6c3VnZ2Vz
dGVkVVJMXTsKKyAgICAgICAgLy8gVGhlIHVzZXIgbXVzdCBjb25maXJtIG5ldyBmaWxlbmFtZXMg
YmVmb3JlIHdlIGNhbiBzYXZlIHRvIHRoZW0uCisgICAgICAgIGZvcmNlU2F2ZURpYWxvZyA9IHRy
dWU7CisgICAgfQorICAgIAorICAgIEFTU0VSVChwbGF0Zm9ybVVSTCk7CisgICAgaWYgKCFwbGF0
Zm9ybVVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsK
KyAgICAgICAgc2F2ZVRvVVJMKHBsYXRmb3JtVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQYW5lbCBzYXZlUGFuZWxdOworICAg
IHBhbmVsLm5hbWVGaWVsZFN0cmluZ1ZhbHVlID0gcGxhdGZvcm1VUkwubGFzdFBhdGhDb21wb25l
bnQ7CisgICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW3BsYXRmb3JtVVJMIFVSTEJ5RGVsZXRpbmdM
YXN0UGF0aENvbXBvbmVudF07CisKKyAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93
Om1faW5zcGVjdG9yV2luZG93LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJl
c3VsdCkgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxDYW5jZWxC
dXR0b24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gTlNG
aWxlSGFuZGxpbmdQYW5lbE9LQnV0dG9uKTsKKyAgICAgICAgc2F2ZVRvVVJMKHBhbmVsLlVSTCk7
CisgICAgfV07Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7CisgICAg
QVNTRVJUKCFzdWdnZXN0ZWRVUkwuaXNFbXB0eSgpKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8TlNV
Ukw+IGFjdHVhbFVSTCA9IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXAuZ2V0KHN1Z2dlc3RlZFVS
TCk7CisgICAgLy8gZG8gbm90IGFwcGVuZCB1bmxlc3MgdGhlIHVzZXIgaGFzIGFscmVhZHkgY29u
ZmlybWVkIHRoaXMgZmlsZW5hbWUgaW4gc2F2ZSgpLgorICAgIGlmICghYWN0dWFsVVJMKQorICAg
ICAgICByZXR1cm47CisKKyAgICBOU0ZpbGVIYW5kbGUgKmhhbmRsZSA9IFtOU0ZpbGVIYW5kbGUg
ZmlsZUhhbmRsZUZvcldyaXRpbmdUb1VSTDphY3R1YWxVUkwuZ2V0KCkgZXJyb3I6TlVMTF07Cisg
ICAgW2hhbmRsZSBzZWVrVG9FbmRPZkZpbGVdOworICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250
ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW2hhbmRs
ZSBjbG9zZUZpbGVdOworCisgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlk
Q2hhbmdlKCkKIHsKICAgICBBU1NFUlQoIW1faXNBdHRhY2hlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKaW5kZXggMjY1Zjgy
OGM2YzFjMTQyMzFiMmRlNjEwZjU3MWJmYTAyODczMzhlZC4uMjI5OTAwYWEzZjAzYzI5MWVlMjNk
ZDA3OGNiZDI5ODJiYWY1MzdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1dlYkluc3BlY3RvclByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcApAQCAtMTA3LDYgKzEwNywyMSBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1DYW5TYXZlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29s
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQ
YWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCA5NjU0MmEwMDM2Y2Q2YTViY2I2YWM0
Y2E4MzM3MDFiOTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDljZjEyNDcyOTZmNjJlY2U1MjUwM2M0ZTk3
MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcApAQCAt
NjEsNiArNjEsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5k
b3coKQogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKK2Jvb2wgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQoreworICAgIHJldHVybiBtX3BhZ2Ut
Pmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmls
ZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNv
bnRlbnQpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5k
b3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dpdGNoIChkb2NrU2lkZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGViMjVhYmVhZTQ0NDI3Njll
OTNmYmJhOWRhMjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2ZGM1NGRmM2UwNDJhZmIzNTk3ODkxMTEw
ZmRhOTZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKQEAg
LTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJSSURFOwogCisg
ICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwor
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGM3MzA1OGZl
MjMwYTFhMTY0MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAuLmY0ZTA4NWY5NjMyODU1NjJiNjc4NDlh
Y2E0N2YwNDEzODMwOTQzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zMywxMCArMzMsMTQgQEAKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC01Miw2ICs1Niw4IEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdl
YlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFuCiAgICAg
LCBtX2luc3BlY3RvclBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKICAgICAsIG1f
ZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkKKyAgICAsIG1fY2FjaGVkQ2FuU2F2ZVJl
c3BvbnNlKGZhbHNlKQorICAgICwgbV9kaWRDYWNoZUNhblNhdmVSZXNwb25zZShmYWxzZSkKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCiAg
ICAgLCBtX3VzZXNXZWJLaXRVc2VySW50ZXJmYWNlKGZhbHNlKQpAQCAtMTE3LDYgKzEyMywyNiBA
QCB2b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpCit7
CisgICAgaWYgKCFtX2RpZENhY2hlQ2FuU2F2ZVJlc3BvbnNlKSB7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpDYW5TYXZlKCksIG1fY2FjaGVkQ2FuU2F2ZVJlc3BvbnNlLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9kaWRDYWNoZUNhblNhdmVSZXNwb25zZSA9IHRydWU7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBtX2NhY2hlZENhblNhdmVSZXNwb25zZTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUs
IGNvbnRlbnQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yOjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1f
cGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoQm90dG9tKCkK
IHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7CkBA
IC0xNTMsNiArMTc5LDE4IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiAgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7CiB9CiAKK3ZvaWQg
V2ViSW5zcGVjdG9yOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFTU0VSVCht
X2luc3BlY3RvclBhZ2UpOworICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250
ZW5kQVBJLnNhdmVkVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
cjo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFTU0VSVChtX2luc3BlY3Rv
clBhZ2UpOworICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnNj
cmlwdCgpLT5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmFw
cGVuZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yOjph
dHRhY2hlZEJvdHRvbSgpCiB7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXggMDM4YTYx
MzFmYmIzNzBiN2JmM2Y5NTBiM2I3ZTA2ZTAzMWY4YmY4MC4uZmEyMmQ1NDU3NWU4YzBmODlkZmE4
NGYxYWVlODkyMGQxZTM2MjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzaG93KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0
cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisKICAg
ICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7CiAgICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCk7CiAgICAg
dm9pZCBkZXRhY2hlZCgpOwpAQCAtOTQsNiArOTcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJy
aW5nVG9Gcm9udCgpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
KTsKIAorICAgIGJvb2wgY2FuU2F2ZSgpOworICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpOworICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
CisKICAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwogICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKICAg
ICB2b2lkIGRldGFjaCgpOwpAQCAtMTIyLDYgKzEyOSw4IEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZSogbV9pbnNwZWN0b3JQYWdlOwogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zy
b250ZW5kQ2xpZW50OwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9m
cm9udGVuZENoYW5uZWw7CisgICAgYm9vbCBtX2NhY2hlZENhblNhdmVSZXNwb25zZTsKKyAgICBi
b29sIG1fZGlkQ2FjaGVDYW5TYXZlUmVzcG9uc2U7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG11
dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKICAgICBtdXRhYmxlIGJvb2wgbV9o
YXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggNTBiNzVhZmRj
NGRlOWJhYjJlZDVlZTQ4OTI1NWVlZTBkMDdiNWJmNC4uMjJkMmZiMDAyMzQ5ZGNlNGUxZDMwNjhh
MmEyZjVkZDU2MDkyOWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsyOCw4IEBA
IG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7CiAgICAgQXR0YWNoZWRC
b3R0b20oKQogICAgIEF0dGFjaGVkUmlnaHQoKQogICAgIERldGFjaGVkKCkKKyAgICBEaWRTYXZl
KFdURjo6U3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQoV1RGOjpTdHJpbmcgdXJsKQogICAgIFNo
b3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKICAgICBTaG93TWFpblJlc291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201268</attachid>
            <date>2013-05-09 13:07:01 -0700</date>
            <delta_ts>2013-05-10 16:38:06 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-115564-20130509130604.patch</filename>
            <type>text/plain</type>
            <size>24796</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2VjMzMzZTY2
YWI1OWYzZjRhNWNiMzE1ZTEzNmQ0MDk5MjQ5NzA1ZC4uZjFhOGFlZTk4MzE4NGMwODkwYjIwYTQx
YWVlN2JkM2FhMTRmMTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTA1LTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENsZWFuIHVwIHNhdmUoKSBhbmQgYXBwZW5kKCkgaW1wbGVtZW50YXRpb25zLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmFwcGVuZCk6CisKIDIwMTMtMDUtMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1p
a2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgSGFzaFRyYWl0czxSZWZQdHI8
UD4gPjo6UGVla1R5cGUgc2hvdWxkIGJlIHJhdyBwb2ludGVyIGZvciBiZXR0ZXIgcGVyZm9ybWFu
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBkMzUyMGYzODc2OTNmNDNiOGM0MGZlY2ZhNGFjMTNmMDIzOWFjYzUz
Li5hZjUzZjVhZjFmMmE5MGU4NTljNzNkYjFhZDc3Mzc4M2M4ZmExMGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTMtMDUtMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hp
bmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lv
biBvZiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IEluc3BlY3RvckZyb250ZW5k
SG9zdCdzIHNhdmUoKSBhbmQgYXBwZW5kKCkgbWV0aG9kcyBmb3IKKyAgICAgICAgTWFjIFdlYktp
dDIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2F2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjphcHBlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DYW5TYXZlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ2FuU2F2ZSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNh
blNhdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2F2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaWRT
YXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaWRBcHBlbmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbjoKKwogMjAxMy0wNS0wNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIENsZWFuIHVwIEtleWZyYW1lVmFsdWVMaXN0IGFuZCByZWxhdGVkIGNsYXNz
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKaW5kZXggNGE5NDQ2MTBlMTI2NmJlYzJmMzdmYmYyYzc5ZTUxODkzNTA3MTQw
Zi4uMDQ5ODA5Mzk0YTI5ZmQ5NjQ1N2VjMWM2Yjg4NTVlYWEzZmM4NjZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgK
QEAgLTEyMyw1ICsxMjMsNSBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2Vi
VmlldzsKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gbV93aW5k
b3dDb250cm9sbGVyOwogICAgIFN0cmluZyBtX2luc3BlY3RlZFVSTDsKLSAgICBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPE5TVVJMPj4gbV9zYXZlVVJMczsKKyAgICBIYXNoTWFwPFN0cmluZywg
UmV0YWluUHRyPE5TVVJMPj4gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KaW5kZXggYzMwZTNkNTZmYjlmNmMwZTdhNDQwMmU2ZGE5OTM0NTI3OTJiODhmOC4uODUzYzBl
N2RjOTRiODc3MjdiMjFhMjVjZjEyMTRhMTA1MDc1Yjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMjk4
LDI4ICsyOTgsNDEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2lu
ZG93VGl0bGUoKSBjb25zdAogICAgIFtbbV93aW5kb3dDb250cm9sbGVyLmdldCgpIHdpbmRvd10g
c2V0VGl0bGU6dGl0bGVdOwogfQogCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpz
YXZlKGNvbnN0IFN0cmluZyYgcmVmVVJMLCBjb25zdCBTdHJpbmcmIHJlZkNvbnRlbnQsIGJvb2wg
Zm9yY2VTYXZlQXMpCit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VT
YXZlRGlhbG9nKQogewotICAgIFN0cmluZyB1cmwgPSByZWZVUkw7Ci0gICAgU3RyaW5nIGNvbnRl
bnQgPSByZWZDb250ZW50OwotICAgIGF1dG8gc2F2ZVRvVVJMID0gXihOU1VSTCAqVVJMKSB7Ci0g
ICAgICAgIG1fc2F2ZVVSTHMuc2V0KHVybCwgVVJMKTsKLQotICAgICAgICBbY29udGVudCB3cml0
ZVRvVVJMOlVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBl
cnJvcjpOVUxMXTsKLSAgICAgICAgY29yZShbbV93aW5kb3dDb250cm9sbGVyIHdlYlZpZXddKS0+
bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIlQFwiKSIsIFVSTC5hYnNv
bHV0ZVN0cmluZ10pOworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAg
CisgICAgLy8gTmVjZXNzYXJ5IGZvciB0aGUgYmxvY2sgYmVsb3cuCisgICAgU3RyaW5nIHN1Z2dl
c3RlZFVSTENvcHkgPSBzdWdnZXN0ZWRVUkw7CisgICAgU3RyaW5nIGNvbnRlbnRDb3B5ID0gY29u
dGVudDsKKworICAgIGF1dG8gc2F2ZVRvVVJMID0gXihOU1VSTCAqYWN0dWFsVVJMKSB7CisgICAg
ICAgIEFTU0VSVChhY3R1YWxVUkwpOworICAgICAgICAKKyAgICAgICAgbV9zdWdnZXN0ZWRUb0Fj
dHVhbFVSTE1hcC5zZXQoc3VnZ2VzdGVkVVJMQ29weSwgYWN0dWFsVVJMKTsKKyAgICAgICAgW2Nv
bnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOworICAgICAgICBjb3JlKFttX3dpbmRvd0Nv
bnRyb2xsZXIgd2ViVmlld10pLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQo
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVS
TChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRlU3RyaW5nXSk7CiAgICAgfTsKIAotICAgIE5T
VVJMICpVUkwgPSBtX3NhdmVVUkxzLmdldCh1cmwpLmdldCgpOwotICAgIGlmICghVVJMKQotICAg
ICAgICBVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdOwotICAgIGVsc2UgaWYgKCFmb3Jj
ZVNhdmVBcykgewotICAgICAgICBzYXZlVG9VUkwoVVJMKTsKKyAgICBOU1VSTCAqcGxhdGZvcm1V
UkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLmdldChzdWdnZXN0ZWRVUkwpLmdldCgpOwor
ICAgIGlmICghcGxhdGZvcm1VUkwpIHsKKyAgICAgICAgcGxhdGZvcm1VUkwgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpzdWdnZXN0ZWRVUkxdOworICAgICAgICAvLyBUaGUgdXNlciBtdXN0IGNvbmZp
cm0gbmV3IGZpbGVuYW1lcyBiZWZvcmUgd2UgY2FuIHNhdmUgdG8gdGhlbS4KKyAgICAgICAgZm9y
Y2VTYXZlRGlhbG9nID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKHBsYXRmb3JtVVJM
KTsKKyAgICBpZiAoIXBsYXRmb3JtVVJMKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWZv
cmNlU2F2ZURpYWxvZykgeworICAgICAgICBzYXZlVG9VUkwocGxhdGZvcm1VUkwpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgTlNTYXZlUGFuZWwgKnBhbmVsID0gW05TU2F2ZVBhbmVs
IHNhdmVQYW5lbF07Ci0gICAgcGFuZWwubmFtZUZpZWxkU3RyaW5nVmFsdWUgPSBVUkwubGFzdFBh
dGhDb21wb25lbnQ7Ci0gICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW1VSTCBVUkxCeURlbGV0aW5n
TGFzdFBhdGhDb21wb25lbnRdOworICAgIHBhbmVsLm5hbWVGaWVsZFN0cmluZ1ZhbHVlID0gcGxh
dGZvcm1VUkwubGFzdFBhdGhDb21wb25lbnQ7CisgICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW3Bs
YXRmb3JtVVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CiAKICAgICBbcGFuZWwg
YmVnaW5TaGVldE1vZGFsRm9yV2luZG93OltbbV93aW5kb3dDb250cm9sbGVyIHdlYlZpZXddIHdp
bmRvd10gY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlm
IChyZXN1bHQgPT0gTlNGaWxlSGFuZGxpbmdQYW5lbENhbmNlbEJ1dHRvbikKQEAgLTMyOSwxOCAr
MzQyLDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3Ry
aW5nJiByZWZVUkwsIGNvbnN0IFN0cmluZyYgcmVmQ29uCiAgICAgfV07CiB9CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50KQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0g
ICAgUmV0YWluUHRyPE5TVVJMPiBVUkwgPSBtX3NhdmVVUkxzLmdldCh1cmwpOwotICAgIGlmICgh
VVJMKQotICAgICAgICBVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdOworICAgIEFTU0VS
VCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAgCisgICAgUmV0YWluUHRyPE5TVVJMPiBh
Y3R1YWxVUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLmdldChzdWdnZXN0ZWRVUkwpOwor
ICAgIC8vIGRvIG5vdCBhcHBlbmQgdW5sZXNzIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGNvbmZpcm1l
ZCB0aGlzIGZpbGVuYW1lIGluIHNhdmUoKS4KKyAgICBpZiAoIWFjdHVhbFVSTCkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgTlNGaWxlSGFuZGxlICpoYW5kbGUgPSBbTlNGaWxlSGFuZGxlIGZpbGVI
YW5kbGVGb3JXcml0aW5nVG9VUkw6VVJMLmdldCgpIGVycm9yOk5VTExdOworICAgIE5TRmlsZUhh
bmRsZSAqaGFuZGxlID0gW05TRmlsZUhhbmRsZSBmaWxlSGFuZGxlRm9yV3JpdGluZ1RvVVJMOmFj
dHVhbFVSTC5nZXQoKSBlcnJvcjpOVUxMXTsKICAgICBbaGFuZGxlIHNlZWtUb0VuZE9mRmlsZV07
CiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBjb3JlKFtt
X3dpbmRvd0NvbnRyb2xsZXIgd2ViVmlld10pLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1
dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQ
SS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbVVJMIGFic29sdXRlU3RyaW5nXV0pOworICAgIGNv
cmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+
ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkluc3BlY3RvckZyb250
ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmdd
XSk7CiB9CiAKIC8vIE1BUks6IC0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuY3BwCmluZGV4IDc3MzdlMjQ2MWNjY2Y4MGE1MzA4MWRjNDVhNDljODU1MTY5
N2RkMTIuLjk4ODAyZmZmMzlkNDJjZGEzZjNiOTA4NTg2YTk5ZDQ2NDczM2Q3MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtNDc0LDYg
KzQ3NCwxNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIHBsYXRmb3JtSW5zcGVjdGVkVVJMQ2hhbmdlZCh1
cmxTdHJpbmcpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sK
KyAgICBwbGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBwbGF0Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29u
dGVudCk7Cit9CisKIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgpCiB7CiAgICAg
Ly8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpj
YW5BdHRhY2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRiOThkNDFkNDYwNGJk
NDMyY2MyNTkxODA5NWYzZjcxMTE1MmJiMjMuLjliZmYyMjg1NWNhNTA3NWIwNWZmOTg3YjA0ZmM2
M2Q0Y2NmMzViZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5oCkBAIC0zOCw5ICszOCwxMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUg
IldLR2VvbWV0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBOU0J1dHRvbjsKK09CSkNfQ0xBU1MgTlNVUkw7CiBP
QkpDX0NMQVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0Fk
YXB0ZXI7CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwpAQCAtMTYzLDYgKzE2NSw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybURldGFjaCgpOwogICAgIHZvaWQgcGxhdGZv
cm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNl
dEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOworICAgIHZvaWQgcGxhdGZvcm1TYXZlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNh
dmVBcyk7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpOworCiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9y
UHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGlu
c3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtMTcxLDYgKzE3
NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29s
KTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2
b2lkIGNhblNhdmUoYm9vbCYpOworICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpOworICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CisKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVG
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogI2VuZGlmCkBAIC0yMTYsNiArMjI1LDcg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNCdXR0b24+IG1fZG9ja1JpZ2h0QnV0dG9uOwog
ICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI+IG1faW5zcGVjdG9y
UHJveHlPYmpDQWRhcHRlcjsKICAgICBTdHJpbmcgbV91cmxTdHJpbmc7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXA7CiAjZWxp
ZiBQTEFURk9STShHVEspCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50R3RrIG1fY2xpZW50OwogICAg
IEd0a1dpZGdldCogbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU5YmZjNDc5NzI5
NDk1MGY4ZTQwYzU3YjBlNzM2MTMzMTA0NGRkMWUuLjIzNDM5YTQ5YjhkYTA0Y2RjMTJiMDIzODI4
MDUyNDgyNmFjNzAyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDkgQEAgbWVzc2FnZXMg
LT4gV2ViSW5zcGVjdG9yUHJveHkgewogICAgIEJyaW5nVG9Gcm9udCgpCiAgICAgSW5zcGVjdGVk
VVJMQ2hhbmdlZChXVEY6OlN0cmluZyB1cmxTdHJpbmcpCiAKKyAgICBTYXZlKFdURjo6U3RyaW5n
IGZpbGVuYW1lLCBXVEY6OlN0cmluZyBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQorICAgIEFw
cGVuZChXVEY6OlN0cmluZyBmaWxlbmFtZSwgV1RGOjpTdHJpbmcgY29udGVudCkKKwogICAgIEF0
dGFjaEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmlu
ZGV4IDJlNjgyZDUyN2NkNTQ3NThiNjBhZTBiMWY5ODY2ZjExZGM1MGNjYTUuLmQ3ZGViNWRmYTUx
MmM3Mzk0YzIwYmVkNWZjNTRhOGUxODhmNGFjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yMTMsNiArMjEz
LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwCmluZGV4IDE2MzE0ODM3OTJkMTgzMTQ2NjFmODEzODk3NDNjYjkwYzM5ZDM1YzQuLmRk
Njc3NDhmYzcwOTk2NmI3Mjg0ZWQ5NzRhOWNmYTk1M2VjZWI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0y
MzQsNiArMjM0LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNo
ZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3Bl
Y3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQppbmRleCA2MmZkYjU3MjY3NDliZDUyOTkzMjRjNzM5YzViNDU0OWVlMTZi
ODNhLi45YmYyYjU4NjcxOWZhNjU0ZjUxZTJkYjExY2IyZWY5YmZjMmFmYjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0K
QEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldLSW5z
cGVjdG9yUHJpdmF0ZU1hYy5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAi
V2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNDk3LDYg
KzQ5OCw2NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgdXBkYXRlSW5zcGVjdG9yV2luZG93
VGl0bGUoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VT
YXZlRGlhbG9nKQoreworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAg
CisgICAgLy8gTmVjZXNzYXJ5IGZvciB0aGUgYmxvY2sgYmVsb3cuCisgICAgU3RyaW5nIHN1Z2dl
c3RlZFVSTENvcHkgPSBzdWdnZXN0ZWRVUkw7CisgICAgU3RyaW5nIGNvbnRlbnRDb3B5ID0gY29u
dGVudDsKKworICAgIGF1dG8gc2F2ZVRvVVJMID0gXihOU1VSTCAqYWN0dWFsVVJMKSB7CisgICAg
ICAgIEFTU0VSVChhY3R1YWxVUkwpOworICAgICAgICAKKyAgICAgICAgbV9zdWdnZXN0ZWRUb0Fj
dHVhbFVSTE1hcC5zZXQoc3VnZ2VzdGVkVVJMQ29weSwgYWN0dWFsVVJMKTsKKyAgICAgICAgW2Nv
bnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgfTsKKworICAgIE5TVVJMICpwbGF0
Zm9ybVVSTCA9IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXAuZ2V0KHN1Z2dlc3RlZFVSTCkuZ2V0
KCk7CisgICAgaWYgKCFwbGF0Zm9ybVVSTCkgeworICAgICAgICBwbGF0Zm9ybVVSTCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOnN1Z2dlc3RlZFVSTF07CisgICAgICAgIC8vIFRoZSB1c2VyIG11c3Qg
Y29uZmlybSBuZXcgZmlsZW5hbWVzIGJlZm9yZSB3ZSBjYW4gc2F2ZSB0byB0aGVtLgorICAgICAg
ICBmb3JjZVNhdmVEaWFsb2cgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQocGxhdGZv
cm1VUkwpOworICAgIGlmICghcGxhdGZvcm1VUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghZm9yY2VTYXZlRGlhbG9nKSB7CisgICAgICAgIHNhdmVUb1VSTChwbGF0Zm9ybVVSTCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZl
UGFuZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5uYW1lRmllbGRTdHJpbmdWYWx1ZSA9IHBsYXRm
b3JtVVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgIHBhbmVsLmRpcmVjdG9yeVVSTCA9IFtwbGF0
Zm9ybVVSTCBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisgICAgW3BhbmVsIGJl
Z2luU2hlZXRNb2RhbEZvcldpbmRvdzptX2luc3BlY3RvcldpbmRvdy5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0Zp
bGVIYW5kbGluZ1BhbmVsQ2FuY2VsQnV0dG9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBBU1NFUlQocmVzdWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbik7CisgICAgICAg
IHNhdmVUb1VSTChwYW5lbC5VUkwpOworICAgIH1dOworfQorCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KQoreworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7Cisg
ICAgCisgICAgUmV0YWluUHRyPE5TVVJMPiBhY3R1YWxVUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFs
VVJMTWFwLmdldChzdWdnZXN0ZWRVUkwpOworICAgIC8vIGRvIG5vdCBhcHBlbmQgdW5sZXNzIHRo
ZSB1c2VyIGhhcyBhbHJlYWR5IGNvbmZpcm1lZCB0aGlzIGZpbGVuYW1lIGluIHNhdmUoKS4KKyAg
ICBpZiAoIWFjdHVhbFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNGaWxlSGFuZGxlICpo
YW5kbGUgPSBbTlNGaWxlSGFuZGxlIGZpbGVIYW5kbGVGb3JXcml0aW5nVG9VUkw6YWN0dWFsVVJM
LmdldCgpIGVycm9yOk5VTExdOworICAgIFtoYW5kbGUgc2Vla1RvRW5kT2ZGaWxlXTsKKyAgICBb
aGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ11dOworICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKKworICAgIG1fcGFnZS0+cHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzQXR0YWNo
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3Rv
clByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclBy
b3h5UXQuY3BwCmluZGV4IDI2NWY4MjhjNmMxYzE0MjMxYjJkZTYxMGY1NzFiZmEwMjg3MzM4ZWQu
LmNhZjQyMjA1NThhNzNiNjkzYWZkM2Y3NDQwNDM4M2E2YTY5NDMwZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKQEAgLTEw
Nyw2ICsxMDcsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hl
ZFdpbmRvd1dpZHRoKHVuc2lnbmVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCA5NjU0MmEwMDM2Y2Q2
YTViY2I2YWM0Y2E4MzM3MDFiOTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDljZjEyNDcyOTZmNjJlY2U1
MjUwM2M0ZTk3MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmNwcApAQCAtNjEsNiArNjEsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
Y2xvc2VXaW5kb3coKQogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAK
K2Jvb2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQoreworICAgIHJldHVy
biBtX3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmls
ZW5hbWUsIGNvbnRlbnQpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojph
dHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dpdGNoIChkb2NrU2lkZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGViMjVhYmVh
ZTQ0NDI3NjllOTNmYmJhOWRhMjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2ZGM1NGRmM2UwNDJhZmIz
NTk3ODkxMTEwZmRhOTZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5n
VG9Gcm9udCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJS
SURFOwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4
IGM3MzA1OGZlMjMwYTFhMTY0MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAuLjU2MTFmYjk3MzkwNWFi
Y2NhNDIzZjJkNzdjNzk1N2NkOTBlMTk5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zMywxMCArMzMsMTQgQEAKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1
ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMTcsNiArMTIxLDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9y
OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyksIG1fcGFnZS0+cGFnZUlEKCkp
OworfQorCit2b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5h
bWUsIGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3I6
OmF0dGFjaEJvdHRvbSgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwpAQCAtMTUzLDYgKzE2NywxOCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xv
c2UoKQogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9z
ZSgpOwogfQogCit2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkK
K3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5n
KCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBB
U1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNwZWN0
b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCiB2b2lk
IFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQogewogICAgIGlmIChtX2Zyb250ZW5kQ2xp
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oCmluZGV4IDAzOGE2MTMxZmJiMzcwYjdiZjNmOTUwYjNiN2UwNmUwMzFmOGJmODAuLmI4MDEx
NzVkYzc0ZjNlNDY2YWY3YjUyZThlZjQ3Y2QzNjE3NTM0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTU3LDYgKzU3LDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIHZvaWQg
ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRBcHBlbmQoY29uc3QgU3Ry
aW5nJiB1cmwpOworCiAgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpOwogICAgIHZvaWQgYXR0YWNo
ZWRSaWdodCgpOwogICAgIHZvaWQgZGV0YWNoZWQoKTsKQEAgLTk0LDYgKzk3LDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5n
ZWQoY29uc3QgU3RyaW5nJik7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBwbGF0Zm9ybSBXZWJJ
bnNwZWN0b3IgZmlsZQorICAgIGJvb2wgY2FuU2F2ZSgpIGNvbnN0OworCisgICAgdm9pZCBzYXZl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3Jj
ZVNhdmVBcyk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50KTsKKwogICAgIHZvaWQgYXR0YWNoQm90dG9tKCk7CiAgICAgdm9pZCBh
dHRhY2hSaWdodCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRl
eCA1MGI3NWFmZGM0ZGU5YmFiMmVkNWVlNDg5MjU1ZWVlMGQwN2I1YmY0Li4yMmQyZmIwMDIzNDlk
Y2U0ZTFkMzA2OGEyYTJmNWRkNTYwOTI5Yzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KQEAgLTI4
LDYgKzI4LDggQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBBdHRhY2hlZEJvdHRvbSgpCiAgICAgQXR0YWNoZWRSaWdodCgpCiAgICAgRGV0YWNoZWQoKQor
ICAgIERpZFNhdmUoV1RGOjpTdHJpbmcgdXJsKQorICAgIERpZEFwcGVuZChXVEY6OlN0cmluZyB1
cmwpCiAgICAgU2hvd0NvbnNvbGUoKQogICAgIFNob3dSZXNvdXJjZXMoKQogICAgIFNob3dNYWlu
UmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwCmluZGV4
IDBlMDY0ZjFhZmNjMzA2Y2Q4OTY3MzEyNWNlZDBiOTc2NGUzMDJjNWMuLjJhYWNjMjk1NGZmOGQ3
OTllY2NjNzZlM2YzZjc0NTNlMGNmZTU1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKQEAgLTMzLDYg
KzMzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitib29sIFdlYkluc3BlY3Rvcjo6Y2Fu
U2F2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcgV2ViSW5zcGVj
dG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gImZpbGU6Ly8i
ICsgV2ViQ29yZTo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAiL2xvY2FsaXplZFN0cmluZ3Mu
anMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJJbnNwZWN0b3JHdGsuY3BwCmluZGV4IGViNzlmNTkwMWY1YjFjZTY3YmYyYTE3ZWNjZDM0
NWM3NWMxMGZiMzEuLjEyYTQ2Mzk3NWVjM2ExNGJlMWQxNjg3NmY3ZTYyYjg0Zjc4NWIwMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVj
dG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
Ykluc3BlY3Rvckd0ay5jcHAKQEAgLTM2LDYgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29u
c3QKIHsKICAgICBHT3duUHRyPGdjaGFyPiBmaWxlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0KaW5kZXgg
OTZlMjQxODZmN2EzNTgyZmU3ZjJjMjQ4MjI1NWQ1OTRkOWIyMzkxMy4uYjc4ZjFhYmY5ZWZkYzg2
NjQ2MWIzMjY1ZjljYWM1OWUyZGNhNjA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0KQEAgLTU3LDYgKzU3
LDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRJbnNwZWN0b3JVc2VzV2ViS2l0VXNlckludGVy
ZmFjZShib29sIGZsYWcpCiAgICAgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMID0gZmFsc2U7CiB9
CiAKK2Jvb2wgV2ViSW5zcGVjdG9yOjpjYW5TYXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJJbnNwZWN0b3JRdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9yUXQuY3BwCmlu
ZGV4IDFhM2I1OThhMzI1ZjlmNmQ1OTYxYTcwNTM5ZmRkOGExYmFhNjZiNDcuLjFkN2Q1MzljYzg4
NjNkZGY2YzA3YTg1ODJhZWU0YTc4YjU1MWIwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJJbnNwZWN0b3JRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcApAQCAtMzMsNiAr
MzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jvb2wgV2ViSW5zcGVjdG9yOjpjYW5T
YXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0
b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201440</attachid>
            <date>2013-05-10 16:38:12 -0700</date>
            <delta_ts>2013-05-10 22:02:28 -0700</delta_ts>
            <desc>Patch v5b</desc>
            <filename>bug-115564-20130510163714.patch</filename>
            <type>text/plain</type>
            <size>24855</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2VjMzMzZTY2
YWI1OWYzZjRhNWNiMzE1ZTEzNmQ0MDk5MjQ5NzA1ZC4uZjFhOGFlZTk4MzE4NGMwODkwYjIwYTQx
YWVlN2JkM2FhMTRmMTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEz
LTA1LTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgV0syIHZlcnNpb24gb2YgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENsZWFuIHVwIHNhdmUoKSBhbmQgYXBwZW5kKCkgaW1wbGVtZW50YXRpb25zLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmFwcGVuZCk6CisKIDIwMTMtMDUtMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1p
a2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgSGFzaFRyYWl0czxSZWZQdHI8
UD4gPjo6UGVla1R5cGUgc2hvdWxkIGJlIHJhdyBwb2ludGVyIGZvciBiZXR0ZXIgcGVyZm9ybWFu
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBkMzUyMGYzODc2OTNmNDNiOGM0MGZlY2ZhNGFjMTNmMDIzOWFjYzUz
Li5jNGFlNjYwMzk3YTk0N2JhYTQ0MTVmNWVmNzc0MWI1NDkyODA5OGYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTMtMDUtMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hp
bmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBXSzIgdmVyc2lv
biBvZiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IEluc3BlY3RvckZyb250ZW5k
SG9zdCdzIHNhdmUoKSBhbmQgYXBwZW5kKCkgbWV0aG9kcyBmb3IKKyAgICAgICAgTWFjIFdlYktp
dDIuIEFkZCBjYW5TYXZlKCkgZm9yIGFsbCBwb3J0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpzYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjphcHBlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5o
OgorICAgICAgICAoV2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1TYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZCk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2FuU2F2ZSk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6c2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjphcHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzYXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpkaWRTYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaWRB
cHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dl
Ykluc3BlY3RvckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y2FuU2F2
ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjYW5T
YXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJJbnNwZWN0b3JNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y2Fu
U2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9x
dC9XZWJJbnNwZWN0b3JRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y2Fu
U2F2ZSk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEzLTA1LTA3ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgS2V5ZnJhbWVWYWx1ZUxp
c3QgYW5kIHJlbGF0ZWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0YTk0NDYxMGUxMjY2YmVjMmYz
N2ZiZjJjNzllNTE4OTM1MDcxNDBmLi4wNDk4MDkzOTRhMjlmZDk2NDU3ZWMxYzZiODg1NWVhYTNm
Yzg2NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTIzLDUgKzEyMyw1IEBAIHByaXZhdGU6CiAgICAgV2Vi
VmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5k
b3dDb250cm9sbGVyPiBtX3dpbmRvd0NvbnRyb2xsZXI7CiAgICAgU3RyaW5nIG1faW5zcGVjdGVk
VVJMOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3NhdmVVUkxzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNVUkw+PiBtX3N1Z2dlc3RlZFRvQWN0dWFs
VVJMTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBjMzBlM2Q1NmZiOWY2YzBlN2E0NDAyZTZkYTk5
MzQ1Mjc5MmI4OGY4Li5kNzNlMmM4MDZmYjk2MDgzNzNhNWIwMTE0MGI1YjQwZTU0ZWIwYjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCkBAIC0yOTgsMjggKzI5OCw0MSBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0CiAgICAgW1ttX3dpbmRvd0NvbnRy
b2xsZXIuZ2V0KCkgd2luZG93XSBzZXRUaXRsZTp0aXRsZV07CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiByZWZVUkwsIGNvbnN0IFN0cmlu
ZyYgcmVmQ29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCiB7Ci0gICAgU3RyaW5nIHVybCA9IHJlZlVS
TDsKLSAgICBTdHJpbmcgY29udGVudCA9IHJlZkNvbnRlbnQ7Ci0gICAgYXV0byBzYXZlVG9VUkwg
PSBeKE5TVVJMICpVUkwpIHsKLSAgICAgICAgbV9zYXZlVVJMcy5zZXQodXJsLCBVUkwpOworICAg
IEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAgCisgICAgTlNVUkwgKnBsYXRm
b3JtVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5nZXQoc3VnZ2VzdGVkVVJMKS5nZXQo
KTsKKyAgICBpZiAoIXBsYXRmb3JtVVJMKSB7CisgICAgICAgIHBsYXRmb3JtVVJMID0gW05TVVJM
IFVSTFdpdGhTdHJpbmc6c3VnZ2VzdGVkVVJMXTsKKyAgICAgICAgLy8gVGhlIHVzZXIgbXVzdCBj
b25maXJtIG5ldyBmaWxlbmFtZXMgYmVmb3JlIHdlIGNhbiBzYXZlIHRvIHRoZW0uCisgICAgICAg
IGZvcmNlU2F2ZURpYWxvZyA9IHRydWU7CisgICAgfQorICAgIAorICAgIEFTU0VSVChwbGF0Zm9y
bVVSTCk7CisgICAgaWYgKCFwbGF0Zm9ybVVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
TmVjZXNzYXJ5IGZvciB0aGUgYmxvY2sgYmVsb3cuCisgICAgU3RyaW5nIHN1Z2dlc3RlZFVSTENv
cHkgPSBzdWdnZXN0ZWRVUkw7CisgICAgU3RyaW5nIGNvbnRlbnRDb3B5ID0gY29udGVudDsKIAot
ICAgICAgICBbY29udGVudCB3cml0ZVRvVVJMOlVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKLSAgICAgICAgY29yZShbbV93aW5kb3dD
b250cm9sbGVyIHdlYlZpZXddKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0
KFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRV
UkwoXCIlQFwiKSIsIFVSTC5hYnNvbHV0ZVN0cmluZ10pOworICAgIGF1dG8gc2F2ZVRvVVJMID0g
XihOU1VSTCAqYWN0dWFsVVJMKSB7CisgICAgICAgIEFTU0VSVChhY3R1YWxVUkwpOworICAgICAg
ICAKKyAgICAgICAgbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5zZXQoc3VnZ2VzdGVkVVJMQ29w
eSwgYWN0dWFsVVJMKTsKKyAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJM
IGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExd
OworICAgICAgICBjb3JlKFttX3dpbmRvd0NvbnRyb2xsZXIgd2ViVmlld10pLT5tYWluRnJhbWUo
KS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJ
bnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiVAXCIpIiwgYWN0dWFsVVJMLmFic29sdXRl
U3RyaW5nXSk7CiAgICAgfTsKIAotICAgIE5TVVJMICpVUkwgPSBtX3NhdmVVUkxzLmdldCh1cmwp
LmdldCgpOwotICAgIGlmICghVVJMKQotICAgICAgICBVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
Zzp1cmxdOwotICAgIGVsc2UgaWYgKCFmb3JjZVNhdmVBcykgewotICAgICAgICBzYXZlVG9VUkwo
VVJMKTsKKyAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgeworICAgICAgICBzYXZlVG9VUkwocGxh
dGZvcm1VUkwpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCisgICAgCiAgICAgTlNTYXZlUGFu
ZWwgKnBhbmVsID0gW05TU2F2ZVBhbmVsIHNhdmVQYW5lbF07Ci0gICAgcGFuZWwubmFtZUZpZWxk
U3RyaW5nVmFsdWUgPSBVUkwubGFzdFBhdGhDb21wb25lbnQ7Ci0gICAgcGFuZWwuZGlyZWN0b3J5
VVJMID0gW1VSTCBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworICAgIHBhbmVsLm5h
bWVGaWVsZFN0cmluZ1ZhbHVlID0gcGxhdGZvcm1VUkwubGFzdFBhdGhDb21wb25lbnQ7CisgICAg
cGFuZWwuZGlyZWN0b3J5VVJMID0gW3BsYXRmb3JtVVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF07CiAKICAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OltbbV93aW5k
b3dDb250cm9sbGVyIHdlYlZpZXddIHdpbmRvd10gY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVn
ZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlNGaWxlSGFuZGxpbmdQYW5lbENh
bmNlbEJ1dHRvbikKQEAgLTMyOSwxOCArMzQyLDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiByZWZVUkwsIGNvbnN0IFN0cmluZyYgcmVmQ29u
CiAgICAgfV07CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQordm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBVUkwgPSBtX3NhdmVV
UkxzLmdldCh1cmwpOwotICAgIGlmICghVVJMKQotICAgICAgICBVUkwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzp1cmxdOworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAg
CisgICAgUmV0YWluUHRyPE5TVVJMPiBhY3R1YWxVUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJM
TWFwLmdldChzdWdnZXN0ZWRVUkwpOworICAgIC8vIGRvIG5vdCBhcHBlbmQgdW5sZXNzIHRoZSB1
c2VyIGhhcyBhbHJlYWR5IGNvbmZpcm1lZCB0aGlzIGZpbGVuYW1lIGluIHNhdmUoKS4KKyAgICBp
ZiAoIWFjdHVhbFVSTCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgTlNGaWxlSGFuZGxlICpoYW5k
bGUgPSBbTlNGaWxlSGFuZGxlIGZpbGVIYW5kbGVGb3JXcml0aW5nVG9VUkw6VVJMLmdldCgpIGVy
cm9yOk5VTExdOworICAgIE5TRmlsZUhhbmRsZSAqaGFuZGxlID0gW05TRmlsZUhhbmRsZSBmaWxl
SGFuZGxlRm9yV3JpdGluZ1RvVVJMOmFjdHVhbFVSTC5nZXQoKSBlcnJvcjpOVUxMXTsKICAgICBb
aGFuZGxlIHNlZWtUb0VuZE9mRmlsZV07CiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNs
b3NlRmlsZV07CiAKLSAgICBjb3JlKFttX3dpbmRvd0NvbnRyb2xsZXIgd2ViVmlld10pLT5tYWlu
RnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiJUBcIikiLCBbVVJMIGFi
c29sdXRlU3RyaW5nXV0pOworICAgIGNvcmUoW21fd2luZG93Q29udHJvbGxlciB3ZWJWaWV3XSkt
Pm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIlQFwiKSIsIFth
Y3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddXSk7CiB9CiAKIC8vIE1BUks6IC0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDc3MzdlMjQ2MWNj
Y2Y4MGE1MzA4MWRjNDVhNDljODU1MTY5N2RkMTIuLjk4ODAyZmZmMzlkNDJjZGEzZjNiOTA4NTg2
YTk5ZDQ2NDczM2Q3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5LmNwcApAQCAtNDc0LDYgKzQ3NCwxNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIHBsYXRm
b3JtSW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpOwogfQogCit2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBwbGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRl
bnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBwbGF0
Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7Cit9CisKIGJvb2wgV2ViSW5zcGVjdG9yUHJv
eHk6OmNhbkF0dGFjaCgpCiB7CiAgICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1w
bGVtZW50YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5oCmluZGV4IGRiOThkNDFkNDYwNGJkNDMyY2MyNTkxODA5NWYzZjcxMTE1MmJiMjMuLjljZDg5
OTdlZmViMWRmOWY1ODVjN2UwOTlkZjliNzAyMDZhN2U1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0zOCw5ICszOCwxMSBAQAogCiAjaWYg
UExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBOU0J1dHRv
bjsKK09CSkNfQ0xBU1MgTlNVUkw7CiBPQkpDX0NMQVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBX
S1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9y
V0tWaWV3OwpAQCAtMTYzLDYgKzE2NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybURl
dGFjaCgpOwogICAgIHZvaWQgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25l
ZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwor
ICAgIHZvaWQgcGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcyk7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworCiAKICAgICAv
LyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGNyZWF0ZUlu
c3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOwpAQCAtMTcxLDYgKzE3Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hB
dmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZlQXMpOworICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CisKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogI2VuZGlmCkBAIC0yMTYsNiArMjI0LDcgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNCdXR0b24+IG1fZG9ja1JpZ2h0QnV0dG9uOwogICAg
IFJldGFpblB0cjxXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI+IG1faW5zcGVjdG9yUHJv
eHlPYmpDQWRhcHRlcjsKICAgICBTdHJpbmcgbV91cmxTdHJpbmc7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFJldGFpblB0cjxOU1VSTD4+IG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXA7CiAjZWxpZiBQ
TEFURk9STShHVEspCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50R3RrIG1fY2xpZW50OwogICAgIEd0
a1dpZGdldCogbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU5YmZjNDc5NzI5NDk1
MGY4ZTQwYzU3YjBlNzM2MTMzMTA0NGRkMWUuLjIzNDM5YTQ5YjhkYTA0Y2RjMTJiMDIzODI4MDUy
NDgyNmFjNzAyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDYgKzI4LDkgQEAgbWVzc2FnZXMgLT4g
V2ViSW5zcGVjdG9yUHJveHkgewogICAgIEJyaW5nVG9Gcm9udCgpCiAgICAgSW5zcGVjdGVkVVJM
Q2hhbmdlZChXVEY6OlN0cmluZyB1cmxTdHJpbmcpCiAKKyAgICBTYXZlKFdURjo6U3RyaW5nIGZp
bGVuYW1lLCBXVEY6OlN0cmluZyBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQorICAgIEFwcGVu
ZChXVEY6OlN0cmluZyBmaWxlbmFtZSwgV1RGOjpTdHJpbmcgY29udGVudCkKKwogICAgIEF0dGFj
aEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4
IDJlNjgyZDUyN2NkNTQ3NThiNjBhZTBiMWY5ODY2ZjExZGM1MGNjYTUuLmQ3ZGViNWRmYTUxMmM3
Mzk0YzIwYmVkNWZjNTRhOGUxODhmNGFjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yMTMsNiArMjEzLDE2
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNo
QXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCmluZGV4IDE2MzE0ODM3OTJkMTgzMTQ2NjFmODEzODk3NDNjYjkwYzM5ZDM1YzQuLmRkNjc3
NDhmYzcwOTk2NmI3Mjg0ZWQ5NzRhOWNmYTk1M2VjZWI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0yMzQs
NiArMjM0LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCh1bnNpZ25lZCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3Rv
clByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQ
cm94eU1hYy5tbQppbmRleCA2MmZkYjU3MjY3NDliZDUyOTkzMjRjNzM5YzViNDU0OWVlMTZiODNh
Li5iMWFhNTE3ZWE5M2QyNWRlYWYxYWIxZjE0NTljMjc1ZGNlZTQxYzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAg
LTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldLSW5zcGVj
dG9yUHJpdmF0ZU1hYy5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgorI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNDk3LDYgKzQ5
OCw2NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5n
ZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgdXBkYXRlSW5zcGVjdG9yV2luZG93VGl0
bGUoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgZm9yY2VTYXZl
RGlhbG9nKQoreworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAgCisg
ICAgTlNVUkwgKnBsYXRmb3JtVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5nZXQoc3Vn
Z2VzdGVkVVJMKS5nZXQoKTsKKyAgICBpZiAoIXBsYXRmb3JtVVJMKSB7CisgICAgICAgIHBsYXRm
b3JtVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6c3VnZ2VzdGVkVVJMXTsKKyAgICAgICAgLy8g
VGhlIHVzZXIgbXVzdCBjb25maXJtIG5ldyBmaWxlbmFtZXMgYmVmb3JlIHdlIGNhbiBzYXZlIHRv
IHRoZW0uCisgICAgICAgIGZvcmNlU2F2ZURpYWxvZyA9IHRydWU7CisgICAgfQorICAgIAorICAg
IEFTU0VSVChwbGF0Zm9ybVVSTCk7CisgICAgaWYgKCFwbGF0Zm9ybVVSTCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gTmVjZXNzYXJ5IGZvciB0aGUgYmxvY2sgYmVsb3cuCisgICAgU3RyaW5n
IHN1Z2dlc3RlZFVSTENvcHkgPSBzdWdnZXN0ZWRVUkw7CisgICAgU3RyaW5nIGNvbnRlbnRDb3B5
ID0gY29udGVudDsKKworICAgIGF1dG8gc2F2ZVRvVVJMID0gXihOU1VSTCAqYWN0dWFsVVJMKSB7
CisgICAgICAgIEFTU0VSVChhY3R1YWxVUkwpOworICAgICAgICAKKyAgICAgICAgbV9zdWdnZXN0
ZWRUb0FjdHVhbFVSTE1hcC5zZXQoc3VnZ2VzdGVkVVJMQ29weSwgYWN0dWFsVVJMKTsKKyAgICAg
ICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOworICAgICAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFthY3R1YWxVUkwg
YWJzb2x1dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgfTsKKworICAgIGlmICgh
Zm9yY2VTYXZlRGlhbG9nKSB7CisgICAgICAgIHNhdmVUb1VSTChwbGF0Zm9ybVVSTCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFu
ZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5uYW1lRmllbGRTdHJpbmdWYWx1ZSA9IHBsYXRmb3Jt
VVJMLmxhc3RQYXRoQ29tcG9uZW50OworICAgIHBhbmVsLmRpcmVjdG9yeVVSTCA9IFtwbGF0Zm9y
bVVSTCBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworCisgICAgW3BhbmVsIGJlZ2lu
U2hlZXRNb2RhbEZvcldpbmRvdzptX2luc3BlY3RvcldpbmRvdy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU0ZpbGVI
YW5kbGluZ1BhbmVsQ2FuY2VsQnV0dG9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBB
U1NFUlQocmVzdWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbik7CisgICAgICAgIHNh
dmVUb1VSTChwYW5lbC5VUkwpOworICAgIH1dOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5n
JiBjb250ZW50KQoreworICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1wdHkoKSk7CisgICAg
CisgICAgUmV0YWluUHRyPE5TVVJMPiBhY3R1YWxVUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJM
TWFwLmdldChzdWdnZXN0ZWRVUkwpOworICAgIC8vIERvIG5vdCBhcHBlbmQgdW5sZXNzIHRoZSB1
c2VyIGhhcyBhbHJlYWR5IGNvbmZpcm1lZCB0aGlzIGZpbGVuYW1lIGluIHNhdmUoKS4KKyAgICBp
ZiAoIWFjdHVhbFVSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNGaWxlSGFuZGxlICpoYW5k
bGUgPSBbTlNGaWxlSGFuZGxlIGZpbGVIYW5kbGVGb3JXcml0aW5nVG9VUkw6YWN0dWFsVVJMLmdl
dCgpIGVycm9yOk5VTExdOworICAgIFtoYW5kbGUgc2Vla1RvRW5kT2ZGaWxlXTsKKyAgICBbaGFu
ZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ11dOworICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKKworICAgIG1fcGFnZS0+cHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29s
dXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclBy
b3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkluc3BlY3RvclByb3h5
UXQuY3BwCmluZGV4IDI2NWY4MjhjNmMxYzE0MjMxYjJkZTYxMGY1NzFiZmEwMjg3MzM4ZWQuLmNh
ZjQyMjA1NThhNzNiNjkzYWZkM2Y3NDQwNDM4M2E2YTY5NDMwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViSW5zcGVjdG9yUHJveHlRdC5jcHAKQEAgLTEwNyw2
ICsxMDcsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdp
bmRvd1dpZHRoKHVuc2lnbmVkKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JQYWdlVVJMKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCA5NjU0MmEwMDM2Y2Q2YTVi
Y2I2YWM0Y2E4MzM3MDFiOTQ2MGFhNWQxLi41MDVjNGQ3NzIwNDljZjEyNDcyOTZmNjJlY2U1MjUw
M2M0ZTk3MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNw
cApAQCAtNjEsNiArNjEsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xv
c2VXaW5kb3coKQogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKK2Jv
b2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQoreworICAgIHJldHVybiBt
X3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNh
dmUoZmlsZW5hbWUsIGNvbnRlbnQsIGZvcmNlU2F2ZUFzKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5h
bWUsIGNvbnRlbnQpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRh
Y2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCiB7CiAgICAgc3dpdGNoIChkb2NrU2lkZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGViMjVhYmVhZTQ0
NDI3NjllOTNmYmJhOWRhMjQxYzhjNjE4YTE1YzUuLmYzNzRmYmU2ZGM1NGRmM2UwNDJhZmIzNTk3
ODkxMTEwZmRhOTZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKQEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9G
cm9udCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJSSURF
OwogCisgICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGM3
MzA1OGZlMjMwYTFhMTY0MzAzNzJiZDg3MjEzYjFmMjU5ZTViYTAuLjU2MTFmYjk3MzkwNWFiY2Nh
NDIzZjJkNzdjNzk1N2NkOTBlMTk5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zMywxMCArMzMsMTQgQEAKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0xMTcsNiArMTIxLDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9
CiAKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
YXZlKGZpbGVuYW1lLCBjb250ZW50LCBmb3JjZVNhdmVBcyksIG1fcGFnZS0+cGFnZUlEKCkpOwor
fQorCit2b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUs
IGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3I6OmF0
dGFjaEJvdHRvbSgpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1fcGFnZS0+
cGFnZUlEKCkpOwpAQCAtMTUzLDYgKzE2NywxOCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2Uo
KQogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgp
OwogfQogCit2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKK3sK
KyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJ
bnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBBU1NF
UlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNwZWN0b3JG
cm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCiB2b2lkIFdl
Ykluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQogewogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5o
CmluZGV4IDAzOGE2MTMxZmJiMzcwYjdiZjNmOTUwYjNiN2UwNmUwMzFmOGJmODAuLmE1ZjdmNGE2
MWJmOTk4ZTA0YTUwMGQ4MmYzYzM5Mjg0MGRiZTI1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIHZvaWQgZGlk
U2F2ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRBcHBlbmQoY29uc3QgU3RyaW5n
JiB1cmwpOworCiAgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpOwogICAgIHZvaWQgYXR0YWNoZWRS
aWdodCgpOwogICAgIHZvaWQgZGV0YWNoZWQoKTsKQEAgLTk0LDYgKzk3LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQo
Y29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIGNhblNhdmUoKSBjb25zdDsKKyAgICB2b2lkIHNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZv
cmNlU2F2ZUFzKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOworCiAgICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKICAgICB2b2lk
IGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9pZCBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmlu
ZGV4IDUwYjc1YWZkYzRkZTliYWIyZWQ1ZWU0ODkyNTVlZWUwZDA3YjViZjQuLjIyZDJmYjAwMjM0
OWRjZTRlMWQzMDY4YTJhMmY1ZGQ1NjA5MjljNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgpAQCAt
MjgsNiArMjgsOCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0KCkKICAgICBEZXRhY2hlZCgp
CisgICAgRGlkU2F2ZShXVEY6OlN0cmluZyB1cmwpCisgICAgRGlkQXBwZW5kKFdURjo6U3RyaW5n
IHVybCkKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCiAgICAgU2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKaW5k
ZXggMGUwNjRmMWFmY2MzMDZjZDg5NjczMTI1Y2VkMGI5NzY0ZTMwMmM1Yy4uMmFhY2MyOTU0ZmY4
ZDc5OWVjY2M3NmUzZjNmNzQ1M2UwY2ZlNTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcApAQCAtMzMs
NiArMzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jvb2wgV2ViSW5zcGVjdG9yOjpj
YW5TYXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBXZWJJbnNw
ZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewogICAgIHJldHVybiAiZmlsZTov
LyIgKyBXZWJDb3JlOjppbnNwZWN0b3JSZXNvdXJjZVBhdGgoKSArICIvbG9jYWxpemVkU3RyaW5n
cy5qcyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYkluc3BlY3Rvckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYkluc3BlY3Rvckd0ay5jcHAKaW5kZXggZWI3OWY1OTAxZjViMWNlNjdiZjJhMTdlY2Nk
MzQ1Yzc1YzEwZmIzMS4uMTJhNDYzOTc1ZWMzYTE0YmUxZDE2ODc2ZjdlNjJiODRmNzg1YjAwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yR3RrLmNwcApAQCAtMzYsNiArMzYsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2Jvb2wgV2ViSW5zcGVjdG9yOjpjYW5TYXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBj
b25zdAogewogICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQppbmRl
eCA5NmUyNDE4NmY3YTM1ODJmZTdmMmMyNDgyMjU1ZDU5NGQ5YjIzOTEzLi5iNzhmMWFiZjllZmRj
ODY2NDYxYjMyNjVmOWNhYzU5ZTJkY2E2MDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQpAQCAtNTcsNiAr
NTcsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnNldEluc3BlY3RvclVzZXNXZWJLaXRVc2VySW50
ZXJmYWNlKGJvb2wgZmxhZykKICAgICBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwgPSBmYWxzZTsK
IH0KIAorYm9vbCBXZWJJbnNwZWN0b3I6OmNhblNhdmUoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCiBTdHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29u
c3QKIHsKICAgICBpZiAoIW1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJJbnNwZWN0b3JRdC5jcHAK
aW5kZXggMWEzYjU5OGEzMjVmOWY2ZDU5NjFhNzA1MzlmZGQ4YTFiYWE2NmI0Ny4uMWQ3ZDUzOWNj
ODg2M2RkZjZjMDdhODU4MmFlZTRhNzhiNTUxYjA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9yUXQuY3BwCkBAIC0zMyw2
ICszMywxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorYm9vbCBXZWJJbnNwZWN0b3I6OmNh
blNhdmUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogU3RyaW5nIFdlYkluc3Bl
Y3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>