<?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>186820</bug_id>
          
          <creation_ts>2018-06-19 14:35:26 -0700</creation_ts>
          <short_desc>Reduce size of WebCore::URL</short_desc>
          <delta_ts>2018-08-22 19:00:12 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>187577</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>koivisto</cc>
    
    <cc>realdawei</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1434568</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-06-19 14:35:26 -0700</bug_when>
    <thetext>Reduce size of WebCore::URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434569</commentid>
    <comment_count>1</comment_count>
      <attachid>343099</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-06-19 14:39:06 -0700</bug_when>
    <thetext>Created attachment 343099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434570</commentid>
    <comment_count>2</comment_count>
      <attachid>343100</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-06-19 14:39:38 -0700</bug_when>
    <thetext>Created attachment 343100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437713</commentid>
    <comment_count>3</comment_count>
      <attachid>343100</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-06-29 00:05:22 -0700</bug_when>
    <thetext>Comment on attachment 343100
Patch

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

I&apos;m not a reviewer. This is an informal review.

&gt; Source/WebCore/platform/URL.cpp:167
&gt; +    if (!m_portLength)

Nit: You changed the logic. &quot;m_portLength &lt;= 1&quot; is the equivalent with the orignal because m_portLength includes &apos;:&apos;.

&gt; Source/WebCore/platform/URLParser.cpp:2610
&gt; +        RELEASE_ASSERT(portLength &lt;= URL::maxPortLength);

You added RELEASE_ASSERT here. What will happen with a URL like &apos;http://example.com:0000080/&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437737</commentid>
    <comment_count>4</comment_count>
      <attachid>343100</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-29 03:16:02 -0700</bug_when>
    <thetext>Comment on attachment 343100
Patch

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

&gt; Source/WebCore/platform/URL.h:225
&gt;      bool m_isValid : 1;
&gt;      bool m_protocolIsInHTTPFamily : 1;
&gt;      bool m_cannotBeABaseURL : 1;

I think MSVC does not pack small-sized members if they have different types. (maybe). I think this is why EWS is red.
If it is correct, you can avoid this behavior by changing them to `unsigned`.
At that time, we should take care of the types of these fields. For example, URL::encode and URL::decode should take extra care.

&gt; Source/WebCore/platform/URL.h:245
&gt;  void URL::encode(Encoder&amp; encoder) const

URL::encode does not encode m_cannotBeABaseURL. Is it correct?

&gt; Source/WebCore/platform/URL.h:286
&gt;      if (!decoder.decode(protocolIsInHTTPFamily))

URL::decode does not handle m_cannotBeABaseURL, is it correct?

&gt; Source/WebCore/platform/URLParser.cpp:2701
&gt; -            m_url.m_portEnd = currentPosition(iterator);
&gt; +            unsigned portLength = currentPosition(iterator) - m_url.m_hostEnd;
&gt; +            RELEASE_ASSERT(portLength &lt;= URL::maxPortLength);
&gt; +            m_url.m_portLength = portLength;

I think `m_url.m_portLength = 0` since `iterator.atEnd()` immediately after setting `m_url.m_hostEnd = currentPosition(iterator);`, correct?

&gt; Source/WebCore/platform/URLParser.cpp:2724
&gt; -                m_url.m_portEnd = currentPosition(iterator);
&gt; +                unsigned portLength = currentPosition(iterator) - m_url.m_hostEnd;
&gt; +                RELEASE_ASSERT(portLength &lt;= URL::maxPortLength);
&gt; +                m_url.m_portLength = portLength;

Ditto.

&gt; Source/WebCore/platform/URLParser.cpp:2789
&gt; -            m_url.m_portEnd = currentPosition(iterator);
&gt; +            unsigned portLength = currentPosition(iterator) - m_url.m_hostEnd;
&gt; +            RELEASE_ASSERT(portLength &lt;= URL::maxPortLength);
&gt; +            m_url.m_portLength = portLength;

Ditto.

&gt; Source/WebCore/platform/URLParser.cpp:2803
&gt; -    m_url.m_portEnd = currentPosition(iterator);
&gt; +    unsigned portLength = currentPosition(iterator) - m_url.m_hostEnd;
&gt; +    RELEASE_ASSERT(portLength &lt;= URL::maxPortLength);
&gt; +    m_url.m_portLength = portLength;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441192</commentid>
    <comment_count>5</comment_count>
      <attachid>343100</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 11:08:36 -0700</bug_when>
    <thetext>Comment on attachment 343100
Patch

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

&gt;&gt; Source/WebCore/platform/URL.cpp:167
&gt;&gt; +    if (!m_portLength)
&gt; 
&gt; Nit: You changed the logic. &quot;m_portLength &lt;= 1&quot; is the equivalent with the orignal because m_portLength includes &apos;:&apos;.

This is true, but a URL with a : but no numeric port after is invalid now.

&gt;&gt; Source/WebCore/platform/URLParser.cpp:2610
&gt;&gt; +        RELEASE_ASSERT(portLength &lt;= URL::maxPortLength);
&gt; 
&gt; You added RELEASE_ASSERT here. What will happen with a URL like &apos;http://example.com:0000080/&apos;?

The port should be normalized to 80.  I&apos;ll add a test just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441205</commentid>
    <comment_count>6</comment_count>
      <attachid>344775</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-11 11:48:56 -0700</bug_when>
    <thetext>Created attachment 344775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441250</commentid>
    <comment_count>7</comment_count>
      <attachid>344775</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-11 13:48:57 -0700</bug_when>
    <thetext>Comment on attachment 344775
Patch

Clearing flags on attachment: 344775

Committed r233742: &lt;https://trac.webkit.org/changeset/233742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441251</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-11 13:48:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441252</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-11 13:49:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/42087508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441346</commentid>
    <comment_count>10</comment_count>
      <attachid>344775</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-07-11 19:37:58 -0700</bug_when>
    <thetext>Comment on attachment 344775
Patch

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

Seems to me the even more important optimization is to make sure we don’t keep URLs around all the time; how often do we need a pre-parsed string with offsets stored just so we don’t have to scan for special characters again. I kind of wish there was something between String and URL.

&gt; Source/WebCore/platform/URL.h:227
&gt; +    // This is out of order to allign the bits better. The port is after the host.

Typo in the word &quot;align&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441370</commentid>
    <comment_count>11</comment_count>
      <attachid>344775</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-11 20:33:37 -0700</bug_when>
    <thetext>Comment on attachment 344775
Patch

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

&gt; Source/WebCore/platform/URL.h:254
&gt; -    encoder &lt;&lt; m_schemeEnd;
&gt; +    encoder &lt;&lt; static_cast&lt;bool&gt;(m_cannotBeABaseURL);
&gt; +    encoder &lt;&lt; static_cast&lt;unsigned&gt;(m_schemeEnd);
&gt;      encoder &lt;&lt; m_userStart;

This is not a binary compatible change (*) and as a result I am hitting the ASSERT_NOT_REACHED() in URL::decode() when I access http://forums.swift.org. The Service Worker registration code that runs in the Storage Process executes and tries to import registration records from disk.

(*) We seem to have inadvertently tied the representation of a URL to what we write when persisting a Service Worker imported script to disk among other things. This logic was added in bug #182444.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441373</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-11 20:35:28 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 187577</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441382</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-11 20:42:21 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #12)
&gt; Re-opened since this is blocked by bug 187577

See backtrace and frame variables in bug #187577.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441383</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-11 20:46:11 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #13)
&gt; (In reply to WebKit Commit Bot from comment #12)
&gt; &gt; Re-opened since this is blocked by bug 187577
&gt; 
&gt; See backtrace and frame variables in bug #187577.

Looks like we&apos;ll see to fix service worker persistence first :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441592</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-12 11:27:14 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; Looks like we&apos;ll see to fix service worker persistence first :/
Couldn&apos;t we just increment the version number of the binary format somewhere like we do with the disk cache?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441632</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-12 12:37:39 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; (In reply to Chris Dumez from comment #14)
&gt; &gt; Looks like we&apos;ll see to fix service worker persistence first :/
&gt; Couldn&apos;t we just increment the version number of the binary format somewhere
&gt; like we do with the disk cache?

I believe the disk cache uses persistent coders that are distinct from IPC coders specifically to avoid this. I think we need a persistent coder for URL and use that one, instead of using the IPC one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441644</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 13:05:32 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; (In reply to Chris Dumez from comment #14)
&gt; &gt; Looks like we&apos;ll see to fix service worker persistence first :/
&gt; Couldn&apos;t we just increment the version number of the binary format somewhere
&gt; like we do with the disk cache?

We should do that and serialize URLs as strings in the persistent script map at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441653</commentid>
    <comment_count>18</comment_count>
      <attachid>344877</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-12 13:25:32 -0700</bug_when>
    <thetext>Created attachment 344877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441654</commentid>
    <comment_count>19</comment_count>
      <attachid>344878</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-12 13:38:07 -0700</bug_when>
    <thetext>Created attachment 344878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441665</commentid>
    <comment_count>20</comment_count>
      <attachid>344878</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-12 14:14:50 -0700</bug_when>
    <thetext>Comment on attachment 344878
Patch

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

&gt; Source/WebCore/platform/URL.cpp:461
&gt; +    URLParser parser(m_string.left(m_hostEnd) + m_string.substring(m_hostEnd + m_portLength));

That is not great to create three strings here.
Could we try to use StringViews instead of left and substring?

&gt; Source/WebCore/platform/URL.cpp:473
&gt; +    URLParser parser(makeString(m_string.left(portStart), (colonNeeded ? &quot;:&quot; : &quot;&quot;), String::number(i), m_string.substring(m_hostEnd + m_portLength)));

Ditto here.

&gt; Source/WebCore/platform/URL.cpp:513
&gt; +    builder.append(m_string.substring(m_hostEnd + m_portLength));

I believe StringBuilder is taking StringView as input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441673</commentid>
    <comment_count>21</comment_count>
      <attachid>344883</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-12 14:38:56 -0700</bug_when>
    <thetext>Created attachment 344883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441743</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-12 17:28:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/r233789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441866</commentid>
    <comment_count>23</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-07-13 08:29:59 -0700</bug_when>
    <thetext>An API test failure was introduced in r233789 &lt;https://trac.webkit.org/changeset/233789/webkit&gt;

Test Output:

Test suite failed

Failed

    TestWebKitAPI.WebKit.CustomDataStorePathsVersusCompletionHandlers
        
        /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:264
        Value of: 1
        Expected: (int)dataRecords.count
        Which is: 0
        
        
        /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:273
        Value of: 1
        Expected: (int)dataRecords.count
        Which is: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441868</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-13 08:34:57 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #23)
&gt; An API test failure was introduced in r233789
&gt; &lt;https://trac.webkit.org/changeset/233789/webkit&gt;
&gt; 
&gt; Test Output:
&gt; 
&gt; Test suite failed
&gt; 
&gt; Failed
&gt; 
&gt;     TestWebKitAPI.WebKit.CustomDataStorePathsVersusCompletionHandlers
&gt;         
&gt;        
&gt; /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/
&gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:264
&gt;         Value of: 1
&gt;         Expected: (int)dataRecords.count
&gt;         Which is: 0
&gt;         
&gt;         
&gt;        
&gt; /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/
&gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:273
&gt;         Value of: 1
&gt;         Expected: (int)dataRecords.count
&gt;         Which is: 0

We need to update the pre-baked service worker registration database that the API tests are using, since the format has changed in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441870</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-13 08:36:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #24)
&gt; (In reply to Truitt Savell from comment #23)
&gt; &gt; An API test failure was introduced in r233789
&gt; &gt; &lt;https://trac.webkit.org/changeset/233789/webkit&gt;
&gt; &gt; 
&gt; &gt; Test Output:
&gt; &gt; 
&gt; &gt; Test suite failed
&gt; &gt; 
&gt; &gt; Failed
&gt; &gt; 
&gt; &gt;     TestWebKitAPI.WebKit.CustomDataStorePathsVersusCompletionHandlers
&gt; &gt;         
&gt; &gt;        
&gt; &gt; /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:264
&gt; &gt;         Value of: 1
&gt; &gt;         Expected: (int)dataRecords.count
&gt; &gt;         Which is: 0
&gt; &gt;         
&gt; &gt;         
&gt; &gt;        
&gt; &gt; /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:273
&gt; &gt;         Value of: 1
&gt; &gt;         Expected: (int)dataRecords.count
&gt; &gt;         Which is: 0
&gt; 
&gt; We need to update the pre-baked service worker registration database that
&gt; the API tests are using, since the format has changed in this patch.

Tools//TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-2.sqlite3
Tools//TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-2.sqlite3-shm
Tools//TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-2.sqlite3-wal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441871</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-13 08:42:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; (In reply to Chris Dumez from comment #24)
&gt; &gt; (In reply to Truitt Savell from comment #23)
&gt; &gt; &gt; An API test failure was introduced in r233789
&gt; &gt; &gt; &lt;https://trac.webkit.org/changeset/233789/webkit&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; Test Output:
&gt; &gt; &gt; 
&gt; &gt; &gt; Test suite failed
&gt; &gt; &gt; 
&gt; &gt; &gt; Failed
&gt; &gt; &gt; 
&gt; &gt; &gt;     TestWebKitAPI.WebKit.CustomDataStorePathsVersusCompletionHandlers
&gt; &gt; &gt;         
&gt; &gt; &gt;        
&gt; &gt; &gt; /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; &gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:264
&gt; &gt; &gt;         Value of: 1
&gt; &gt; &gt;         Expected: (int)dataRecords.count
&gt; &gt; &gt;         Which is: 0
&gt; &gt; &gt;         
&gt; &gt; &gt;         
&gt; &gt; &gt;        
&gt; &gt; &gt; /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; &gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:273
&gt; &gt; &gt;         Value of: 1
&gt; &gt; &gt;         Expected: (int)dataRecords.count
&gt; &gt; &gt;         Which is: 0
&gt; &gt; 
&gt; &gt; We need to update the pre-baked service worker registration database that
&gt; &gt; the API tests are using, since the format has changed in this patch.
&gt; 
&gt; Tools//TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-2.
&gt; sqlite3
&gt; Tools//TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-2.
&gt; sqlite3-shm
&gt; Tools//TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-2.
&gt; sqlite3-wal

I am looking into this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441876</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-13 09:14:01 -0700</bug_when>
    <thetext>Committed r233798: &lt;https://trac.webkit.org/changeset/233798&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452092</commentid>
    <comment_count>28</comment_count>
      <attachid>344883</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-21 08:23:37 -0700</bug_when>
    <thetext>Comment on attachment 344883
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:111
&gt;      // Incrementing this number will delete all existing cache content for everyone. Do you really need to do it?
&gt; -    static const unsigned version = 12;
&gt; +    static const unsigned version = 13;

Did you, really?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452937</commentid>
    <comment_count>29</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-08-22 19:00:12 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #28)
&gt; Did you, really?

Did you see Bug 187577 mentioned in above comments?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343099</attachid>
            <date>2018-06-19 14:39:06 -0700</date>
            <delta_ts>2018-06-19 14:39:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186820-20180619143905.patch</filename>
            <type>text/plain</type>
            <size>29466</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjk4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTA2LTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNp
emUgb2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSB3ZXJlIHVzaW5nIDMyIGJpdHMgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHBv
cnQsIHdoaWNoIGlzIGFsd2F5cyBiZXR3ZWVuIDAgYW5kIDUgaW5jbHVzaXZlCisgICAgICAgIGJl
Y2F1c2UgcG9ydCBudW1iZXJzIGFyZSBtaXNzaW5nIG9yIGJldHdlZW4gMCBhbmQgNjU1MzUuICBM
ZXQncyBqdXN0IHVzZSAzIGJpdHMgaGVyZS4KKyAgICAgICAgV2Ugd2VyZSB1c2luZyAzMiBiaXRz
IGZvciB0aGUgbGVuZ3RoIG9mIHRoZSBzY2hlbWUsIHdoaWNoIGlzIHVzdWFsbHkgMy01IGNoYXJh
Y3RlcnMgYW5kIGNhbiBiZQorICAgICAgICBsb25nZXIgZm9yIHNvbWUgY3VzdG9tIHNjaGVtZXMs
IGJ1dCBJJ3ZlIG5ldmVyIHNlZW4gb25lIG1vcmUgdGhhbiAyMCBjaGFyYWN0ZXJzLiAgSWYgd2Ug
YXNzdW1lCisgICAgICAgIHNjaGVtZXMgYXJlIGFsd2F5cyBsZXNzIHRoYW4gNjRNQiwgd2UgY2Fu
IHNhdmUgOCBieXRlcyBwZXIgVVJMIQorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwg
anVzdCBsZXNzIG1lbW9yeSB1c2UhCisKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6
bGFzdFBhdGhDb21wb25lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwb3J0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpyZW1vdmVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6c2V0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgIChXZWJDb3Jl
OjpVUkw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkw6Omhhc1BhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpwYXRoU3RhcnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TFBhcnNlcjo6cG9wUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQ
YXJzZXI6OmFsbFZhbHVlc0VxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KToKKwogMjAxOC0wNi0xOSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTmVlZCB0byBwcm9wZXJseSBoYW5kbGUgcmVtb3Zh
bCBvZiB3b3JrZXIgaW4gU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHRp
bWVyIGxhbWJkYQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCShyZXZpc2lvbiAyMzI4OTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw3IEBAIHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKICAgICBtX3VzZXJFbmQgPSAwOwog
ICAgIG1fcGFzc3dvcmRFbmQgPSAwOwogICAgIG1faG9zdEVuZCA9IDA7Ci0gICAgbV9wb3J0RW5k
ID0gMDsKKyAgICBtX3BvcnRMZW5ndGggPSAwOwogICAgIG1fcGF0aEVuZCA9IDA7CiAgICAgbV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSAwOwogICAgIG1fcXVlcnlFbmQgPSAwOwpAQCAtMTQ0LDcgKzE0
NCw3IEBAIFN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICAgICAgLS1l
bmQ7CiAKICAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7
Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCisgICAg
aWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faG9zdEVuZCArIG1fcG9ydExlbmd0
aCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICArK3N0YXJ0OwogCkBAIC0xNjQsMTUg
KzE2NCwxNSBAQCBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvcnRFbmQgfHwgbV9o
b3N0RW5kID49IG1fcG9ydEVuZCAtIDEpCisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgdW5zaWdu
ZWQgbnVtYmVyOwogICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0g
Y2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5k
ICsgMSwgbV9wb3J0RW5kIC0gbV9ob3N0RW5kIC0gMSwgJm9rKTsKKyAgICAgICAgbnVtYmVyID0g
Y2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5k
ICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKICAgICBlbHNlCi0gICAgICAgIG51bWJlciA9
IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RF
bmQgKyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQgLSAxLCAmb2spOworICAgICAgICBudW1iZXIg
PSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0
RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKICAgICBpZiAoIW9rIHx8IG51bWJlciA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbnVtYmVyOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFN0cmlu
ZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5k
UG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1YnN0cmluZygw
LCBtX3BvcnRFbmQpOworICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwg
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKIAogICAgIGlmIChtX3Bhc3N3b3JkRW5kIC0gbV91
c2VyU3RhcnQgPiAwKSB7CiAgICAgICAgIGNvbnN0IGludCBhbGxvd0ZvclRyYWlsaW5nQXRTaWdu
ID0gMTsKQEAgLTM3MCw3ICszNzAsOCBAQCBTdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CiAKIFN0
cmluZyBVUkw6OnBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kLCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQpOworICAgIHVuc2lnbmVkIHBvcnRFbmQg
PSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
Zyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsKIH0KIAogYm9vbCBVUkw6OnNldFByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgcykKQEAgLTQ1NSw5ICs0NTYsOSBAQCB2b2lkIFVSTDo6c2V0SG9z
dChjb25zdCBTdHJpbmcmIHMpCiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKLSAgICBpZiAo
bV9ob3N0RW5kID09IG1fcG9ydEVuZCkKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKICAgICAgICAg
cmV0dXJuOwotICAgIFVSTFBhcnNlciBwYXJzZXIobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIFVSTFBhcnNlciBwYXJzZXIobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1f
cG9ydExlbmd0aCkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwogfQogCkBAIC00NjYs
MTAgKzQ2NywxMCBAQCB2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNvbG9uTmVlZGVkID0g
bV9wb3J0RW5kID09IG1faG9zdEVuZDsKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExl
bmd0aDsKICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQg
OiBtX2hvc3RFbmQgKyAxKTsKIAotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhtX3N0
cmluZy5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpu
dW1iZXIoaSksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKSk7CisgICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVk
ID8gIjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCkpKTsKICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKIH0K
IApAQCAtNTA5LDcgKzUxMCw3IEBAIHZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJp
bmcmIGgKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHBvcnQpOwogICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJz
dHJpbmcobV9wb3J0RW5kKSk7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5n
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwogCiAgICAgVVJMUGFyc2VyIHBhcnNlcihidWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwpAQCAtNjU4LDcg
KzY1OSw3IEBAIHZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKICAgICBhdXRvIHF1
ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKICAgICAgICAg
cmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKICAgICB9OwotICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
cG9ydEVuZCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Cisg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwg
cXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fcGF0aEVuZCkpKTsKICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMLmgJKHJldmlzaW9uIDIzMjg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksMjEgKzIxOSwyOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0
OwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOworCiAgICAgYm9vbCBtX2lzVmFsaWQgOiAxOwogICAg
IGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKICAgICBib29sIG1fY2Fubm90QmVB
QmFzZVVSTCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZDsKKyAgICAvLyBUaGlzIGlz
IG91dCBvZiBvcmRlciB0byBhbGxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRl
ciB0aGUgaG9zdC4KKyAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsK
KyAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OwogICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0
OwogICAgIHVuc2lnbmVkIG1fdXNlckVuZDsKICAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOwog
ICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKLSAgICB1bnNpZ25lZCBtX3BvcnRFbmQ7CiAgICAgdW5z
aWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgdW5zaWduZWQgbV9wYXRoRW5kOwogICAg
IHVuc2lnbmVkIG1fcXVlcnlFbmQ7CiB9OwogCitzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09
IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkg
c21hbGwiKTsKKwogdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+CiB2b2lkIFVSTDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBAIC0yNDIsMTIgKzI0OSwxMiBAQCB2b2lkIFVSTDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAg
ICAgIHJldHVybjsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSk7Ci0gICAgZW5jb2RlciA8PCBtX3NjaGVtZUVuZDsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCk7CiAgICAgZW5jb2RlciA8PCBt
X3VzZXJTdGFydDsKICAgICBlbmNvZGVyIDw8IG1fdXNlckVuZDsKICAgICBlbmNvZGVyIDw8IG1f
cGFzc3dvcmRFbmQ7CiAgICAgZW5jb2RlciA8PCBtX2hvc3RFbmQ7Ci0gICAgZW5jb2RlciA8PCBt
X3BvcnRFbmQ7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3J0TGVu
Z3RoKTsKICAgICBlbmNvZGVyIDw8IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgIGVuY29kZXIg
PDwgbV9wYXRoRW5kOwogICAgIGVuY29kZXIgPDwgbV9xdWVyeUVuZDsKQEAgLTI3OSw4ICsyODYs
MTQgQEAgc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocHJvdG9jb2xJc0luSFRUUEZhbWlseSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IHByb3RvY29s
SXNJbkhUVFBGYW1pbHk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9zY2hlbWVFbmQp
KQorICAgIHVuc2lnbmVkIHNjaGVtZUVuZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjaGVt
ZUVuZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHNjaGVtZUVuZCA+
PSBtYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIHVybC5tX3NjaGVtZUVuZCA9IHNj
aGVtZUVuZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3VzZXJTdGFydCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV91
c2VyRW5kKSkKQEAgLTI4OSw4ICszMDIsMTQgQEAgc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVj
b2RlKERlY29kZXImIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodXJsLm1faG9zdEVuZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9wb3J0RW5kKSkKKyAgICB1bnNpZ25lZCBw
b3J0TGVuZ3RoOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9ydExlbmd0aCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHBvcnRMZW5ndGggPiBtYXhQb3J0TGVuZ3Ro
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0KKyAgICB1cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9wYXRoRW5k
KSkKQEAgLTQwMCw3ICs0MTksNyBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAog
CiBpbmxpbmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhF
bmQgIT0gbV9wb3J0RW5kOworICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoOwogfQogCiBpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKQEAg
LTQ0MCw3ICs0NTksNyBAQCBpbmxpbmUgdW5zaWduZWQgVVJMOjpob3N0RW5kKCkgY29uc3QKIAog
aW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
b3J0RW5kOworICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CiB9CiAKIGlubGlu
ZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzI4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2
b2lkIFVSTFBhcnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyCiBib29sIFVSTFBhcnNlcjo6
Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQogewogICAgIGlmIChi
YXNlLnByb3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1f
cG9ydEVuZCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIGlmIChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgICAg
ICBjb25zdCBMQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0gICAg
ICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9wb3J0RW5k
ICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9y
dExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAg
ICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBVQ2hhciogYmVn
aW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgQ29kZVBvaW50
SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1fcG9ydEVuZCArIDEsIGJlZ2luICsgYmFz
ZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hh
cj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdp
biArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKGlzV2luZG93c0Ry
aXZlTGV0dGVyKGMpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVy
KGMpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODQ2LDcgKzg0Niw3IEBAIHNp
emVfdCBVUkxQYXJzZXI6OnVybExlbmd0aFVudGlsUGFydChjb24KICAgICBjYXNlIFVSTFBhcnQ6
OlBhdGhBZnRlckxhc3RTbGFzaDoKICAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKICAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9w
b3J0RW5kOworICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7
CiAgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgogICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVu
ZDsKICAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgpAQCAtODk4LDcgKzg5OCw3IEBAIHZv
aWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCAKICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIG1fdXJsLm1f
cG9ydEVuZCA9IGJhc2UubV9wb3J0RW5kOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBi
YXNlLm1fcG9ydExlbmd0aDsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBVUkxQYXJ0
OjpIb3N0RW5kOgogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKQEAg
LTEwNDMsNyArMTA0Myw3IEBAIGJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVk
IG4KIAogICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVm
ZmVyLnNpemUoKSk7CiAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9w
KCZtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBd
ICsgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0
U2xhc2ggPT0gbV91cmwubV9wb3J0RW5kICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihjb21w
b25lbnRUb1BvcCkpCisgICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hv
c3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNv
bXBvbmVudFRvUG9wKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMTA1MSwxMSArMTA1MSwxMSBAQCBib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1
bnNpZ25lZCBuCiB2b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCiB7CiAgICAgQVNTRVJUKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PiBtX3VybC5tX3BvcnRFbmQgKyAxKSB7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewogICAgICAg
ICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
IC0gMTsKICAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSA9
PSAnLycpCiAgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgd2hp
bGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1fcG9ydEVuZCAmJiBtX2FzY2lpQnVm
ZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0gJy8nKQorICAgICAgICB3aGlsZSAobmV3UGF0
aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYm
IG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCiAgICAgICAgICAg
ICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNo
Kys7CiAgICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCkBA
IC0xMjcxLDcgKzEyNzEsMTIgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3Rl
clR5cAogICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1l
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQg
PiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7CiAgICAgICAgICAgICAgICAg
U3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVu
ZCk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwogICAgICAgICAg
ICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKQEAgLTEzMjEsNyArMTMyNiw3IEBA
IHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owog
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RC
ZUFCYXNlVVJMID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OkNhbm5vdEJlQUJhc2VVUkxQYXRoOwpAQCAtMTM5NSw3ICsxNDAwLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CiAg
ICAgICAgICAgICB9CkBAIC0xNDUxLDcgKzE0NTYsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIGlzVVRGOEVuY29k
aW5nKTsKICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcG9ydEVuZCArIDE7
CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9z
dEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpQYXRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTIwLDcg
KzE1MjUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyRW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91
cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyRW5kOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKQEAgLTE1OTAsNyArMTU5NSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpw
YXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTYxMiw3ICsxNjE3LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0
IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTYzMCw3
ICsxNjM1LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykp
CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CkBA
IC0xNjUwLDcgKzE2NTUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwCiAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CiAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgYXV0
aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZp
bGVIb3N0OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTY2MSw3ICsxNjY2LDcgQEAgdm9p
ZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAg
ICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewogICAgICAgICAgICAgICAgIGFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKQEAgLTE3MjAsNyArMTcyNSw3
IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OwpAQCAtMTg3NSw3ICsxODgwLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTg4Nyw3ICsxODkyLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJl
bGF0aXZlU2xhc2giKTsKICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6
UG9ydEVuZCwgYywgaXNVVEY4RW5jb2RpbmcpOwogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BvcnRF
bmQgKyAxOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9z
dEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIGJyZWFrOwpAQCAtMTg5Nyw3ICsx
OTAyLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9w
YXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CkBAIC0xOTE0LDcgKzE5MTksNyBAQCB2b2lkIFVSTFBhcnNl
cjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIH0gZWxzZSBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CiAgICAgICAgICAgICBmYWls
dXJlKCk7CkBAIC0xOTIzLDkgKzE5MjgsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3Qg
Q2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
cG9ydEVuZCArIDE7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZDsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRM
ZW5ndGg7CiAgICAgICAgIH0KICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhF
bmQ7CkBAIC0xOTM5LDkgKzE5NDQsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwCiAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewogICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwogICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExl
bmd0aCArIDE7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wb3J0RW5kOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwogICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEVuZDsKICAgICAgICAgYnJlYWs7CkBAIC0xOTU3LDcgKzE5NjIsNyBAQCB2b2lk
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CkBAIC0xOTcwLDcgKzE5NzUsNyBAQCB2b2lk
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93
c0RyaXZlTGV0dGVyKGJhc2UpKSB7CiAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CiAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0ICsgNDsKQEAgLTE5OTksNyArMjAwNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShj
b25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMjAxNSwxMCAr
MjAyMCwxMCBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBj
dXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKICAgICAgICAgICAg
IG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwu
bV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKICAgICAgICAgfQogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wb3J0RW5kICsgMTsK
KyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGggKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBicmVhazsKQEAgLTI2MDEsNyArMjYwNiw5IEBA
IGJvb2wgVVJMUGFyc2VyOjpwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmEKICAgICBhZHZhbmNlKGl0
ZXJhdG9yLCBjb2xvbkl0ZXJhdG9yKTsKICAgICB1aW50MzJfdCBwb3J0ID0gMDsKICAgICBpZiAo
VU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICB1bnNpZ25lZCBwb3J0TGVu
Z3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7
CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMjYzOCw3ICsyNjQ1LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJ
dGVyYQogICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNf
Y2FzdDx1aW50MTZfdD4ocG9ydCkpOwogICAgIH0KIAotICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NF
UlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NjQsNyArMjY3
Myw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpcHY2RW5kKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZF
bmQpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwpAQCAtMjY4Nyw3ICsyNjk2LDkgQEAgYm9vbCBV
UkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaQogICAgICAgICB9CiAgICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBjdXJyZW50
UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBA
IC0yNzA4LDcgKzI3MTksOSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2Rl
UG9pCiAgICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CiAgICAgICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0
RW5kOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjpt
YXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0
TGVuZ3RoOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBAIC0yNzI3LDcgKzI3NDAsOSBA
QCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgIGlmICghaG9z
dEl0ZXJhdG9yLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVy
YXRvcik7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRv
cik7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0
b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3Ro
IDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBv
cnRMZW5ndGg7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTI3NjksNyAr
Mjc4NCw5IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAg
ICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwogICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAgICBpZiAoaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0
ZXJhdG9yKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOworICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwpAQCAtMjc4MSw3ICsy
Nzk4LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaQogICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgaWYgKCFpdGVy
YXRvci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKLSAgICBt
X3VybC5tX3BvcnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIHVuc2lnbmVk
IHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5k
OworICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsK
KyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yODcwLDI3ICsyODg5LDI5IEBAIGJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwKIHsKICAgICAvLyBGSVhNRTogbV9jYW5ub3RCZUFCYXNlVVJMIGlzIG5vdCBj
b21wYXJlZCBiZWNhdXNlIHRoZSBvbGQgVVJMOjpwYXJzZSBkaWQgbm90IHVzZSBpdCwKICAgICAv
LyBidXQgb25jZSB3ZSBnZXQgcmlkIG9mIFVSTDo6cGFyc2UgaXRzIHZhbHVlIHNob3VsZCBiZSB0
ZXN0ZWQuCi0gICAgVVJMX1BBUlNFUl9MT0coIiVkICVkICVkICVkICVkICVkICVkICVkICVkICVk
ICVkICVzXG4lZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlcyIsCisgICAgVVJMX1BB
UlNFUl9MT0coIiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzXG4lZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlcyIsCiAgICAgICAgIGEubV9pc1ZhbGlkLAor
ICAgICAgICBhLm1fY2Fubm90QmVBQmFzZVVSTCwKICAgICAgICAgYS5tX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHksCiAgICAgICAgIGEubV9zY2hlbWVFbmQsCiAgICAgICAgIGEubV91c2VyU3RhcnQs
CiAgICAgICAgIGEubV91c2VyRW5kLAogICAgICAgICBhLm1fcGFzc3dvcmRFbmQsCiAgICAgICAg
IGEubV9ob3N0RW5kLAotICAgICAgICBhLm1fcG9ydEVuZCwKKyAgICAgICAgYS5tX2hvc3RFbmQg
KyBhLm1fcG9ydExlbmd0aCwKICAgICAgICAgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCwKICAgICAg
ICAgYS5tX3BhdGhFbmQsCiAgICAgICAgIGEubV9xdWVyeUVuZCwKICAgICAgICAgYS5tX3N0cmlu
Zy51dGY4KCkuZGF0YSgpLAogICAgICAgICBiLm1faXNWYWxpZCwKKyAgICAgICAgYi5tX2Nhbm5v
dEJlQUJhc2VVUkwsCiAgICAgICAgIGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAogICAgICAg
ICBiLm1fc2NoZW1lRW5kLAogICAgICAgICBiLm1fdXNlclN0YXJ0LAogICAgICAgICBiLm1fdXNl
ckVuZCwKICAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAogICAgICAgICBiLm1faG9zdEVuZCwKLSAg
ICAgICAgYi5tX3BvcnRFbmQsCisgICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgs
CiAgICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCiAgICAgICAgIGIubV9wYXRoRW5kLAog
ICAgICAgICBiLm1fcXVlcnlFbmQsCkBAIC0yODk4LDEzICsyOTE5LDE0IEBAIGJvb2wgVVJMUGFy
c2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwKIAogICAgIHJldHVybiBhLm1fc3RyaW5nID09
IGIubV9zdHJpbmcKICAgICAgICAgJiYgYS5tX2lzVmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAg
ICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0gYi5tX2Nhbm5vdEJlQUJhc2VVUkwKICAgICAg
ICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHkKICAgICAgICAgJiYgYS5tX3NjaGVtZUVuZCA9PSBiLm1fc2NoZW1lRW5kCiAgICAgICAg
ICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJTdGFydAogICAgICAgICAmJiBhLm1fdXNlckVu
ZCA9PSBiLm1fdXNlckVuZAogICAgICAgICAmJiBhLm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3
b3JkRW5kCiAgICAgICAgICYmIGEubV9ob3N0RW5kID09IGIubV9ob3N0RW5kCi0gICAgICAgICYm
IGEubV9wb3J0RW5kID09IGIubV9wb3J0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09
IGIubV9wb3J0TGVuZ3RoCiAgICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5t
X3BhdGhBZnRlckxhc3RTbGFzaAogICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVu
ZAogICAgICAgICAmJiBhLm1fcXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOwpAQCAtMjkxNiw4ICsy
OTM4LDcgQEAgYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudAogICAgICAg
ICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAogICAgICAgICAmJiB1cmwubV91
c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCiAgICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5k
IDw9IHVybC5tX2hvc3RFbmQKLSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCA8PSB1cmwubV9wb3J0
RW5kCi0gICAgICAgICYmIHVybC5tX3BvcnRFbmQgPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
CisgICAgICAgICYmIHVybC5tX2hvc3RFbmQgKyB1cmwubV9wb3J0TGVuZ3RoIDw9IHVybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaAogICAgICAgICAmJiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0g
dXJsLm1fcGF0aEVuZAogICAgICAgICAmJiB1cmwubV9wYXRoRW5kIDw9IHVybC5tX3F1ZXJ5RW5k
CiAgICAgICAgICYmIHVybC5tX3F1ZXJ5RW5kIDw9IHVybC5tX3N0cmluZy5sZW5ndGgoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343100</attachid>
            <date>2018-06-19 14:39:38 -0700</date>
            <delta_ts>2018-07-11 11:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186820-20180619143937.patch</filename>
            <type>text/plain</type>
            <size>29528</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjk4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTA2LTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNp
emUgb2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSB3ZXJlIHVzaW5nIDMyIGJpdHMgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHBv
cnQsIHdoaWNoIGlzIGFsd2F5cyBiZXR3ZWVuIDAgYW5kIDUgaW5jbHVzaXZlCisgICAgICAgIGJl
Y2F1c2UgcG9ydCBudW1iZXJzIGFyZSBtaXNzaW5nIG9yIGJldHdlZW4gMCBhbmQgNjU1MzUuICBM
ZXQncyBqdXN0IHVzZSAzIGJpdHMgaGVyZS4KKyAgICAgICAgV2Ugd2VyZSB1c2luZyAzMiBiaXRz
IGZvciB0aGUgbGVuZ3RoIG9mIHRoZSBzY2hlbWUsIHdoaWNoIGlzIHVzdWFsbHkgMy01IGNoYXJh
Y3RlcnMgYW5kIGNhbiBiZQorICAgICAgICBsb25nZXIgZm9yIHNvbWUgY3VzdG9tIHNjaGVtZXMs
IGJ1dCBJJ3ZlIG5ldmVyIHNlZW4gb25lIG1vcmUgdGhhbiAyMCBjaGFyYWN0ZXJzLiAgSWYgd2Ug
YXNzdW1lCisgICAgICAgIHNjaGVtZXMgYXJlIGFsd2F5cyBsZXNzIHRoYW4gNjRNQiwgd2UgY2Fu
IHNhdmUgOCBieXRlcyBwZXIgVVJMIQorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwg
anVzdCBsZXNzIG1lbW9yeSB1c2UhCisKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6
bGFzdFBhdGhDb21wb25lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwb3J0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpyZW1vdmVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6c2V0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgIChXZWJDb3Jl
OjpVUkw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkw6Omhhc1BhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpwYXRoU3RhcnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TFBhcnNlcjo6cG9wUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQ
YXJzZXI6OmFsbFZhbHVlc0VxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KToKKwogMjAxOC0wNi0xOSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTmVlZCB0byBwcm9wZXJseSBoYW5kbGUgcmVtb3Zh
bCBvZiB3b3JrZXIgaW4gU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHRp
bWVyIGxhbWJkYQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCShyZXZpc2lvbiAyMzI4OTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw3IEBAIHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKICAgICBtX3VzZXJFbmQgPSAwOwog
ICAgIG1fcGFzc3dvcmRFbmQgPSAwOwogICAgIG1faG9zdEVuZCA9IDA7Ci0gICAgbV9wb3J0RW5k
ID0gMDsKKyAgICBtX3BvcnRMZW5ndGggPSAwOwogICAgIG1fcGF0aEVuZCA9IDA7CiAgICAgbV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSAwOwogICAgIG1fcXVlcnlFbmQgPSAwOwpAQCAtMTQ0LDcgKzE0
NCw3IEBAIFN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICAgICAgLS1l
bmQ7CiAKICAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7
Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCisgICAg
aWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faG9zdEVuZCArIG1fcG9ydExlbmd0
aCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICArK3N0YXJ0OwogCkBAIC0xNjQsMTUg
KzE2NCwxNSBAQCBTdHJpbmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvcnRFbmQgfHwgbV9o
b3N0RW5kID49IG1fcG9ydEVuZCAtIDEpCisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgdW5zaWdu
ZWQgbnVtYmVyOwogICAgIGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0g
Y2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5k
ICsgMSwgbV9wb3J0RW5kIC0gbV9ob3N0RW5kIC0gMSwgJm9rKTsKKyAgICAgICAgbnVtYmVyID0g
Y2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5k
ICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKICAgICBlbHNlCi0gICAgICAgIG51bWJlciA9
IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RF
bmQgKyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQgLSAxLCAmb2spOworICAgICAgICBudW1iZXIg
PSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0
RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKICAgICBpZiAoIW9rIHx8IG51bWJlciA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbnVtYmVyOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFN0cmlu
ZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5k
UG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1YnN0cmluZygw
LCBtX3BvcnRFbmQpOworICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwg
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKIAogICAgIGlmIChtX3Bhc3N3b3JkRW5kIC0gbV91
c2VyU3RhcnQgPiAwKSB7CiAgICAgICAgIGNvbnN0IGludCBhbGxvd0ZvclRyYWlsaW5nQXRTaWdu
ID0gMTsKQEAgLTM3MCw3ICszNzAsOCBAQCBTdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CiAKIFN0
cmluZyBVUkw6OnBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kLCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQpOworICAgIHVuc2lnbmVkIHBvcnRFbmQg
PSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
Zyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsKIH0KIAogYm9vbCBVUkw6OnNldFByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgcykKQEAgLTQ1NSw5ICs0NTYsOSBAQCB2b2lkIFVSTDo6c2V0SG9z
dChjb25zdCBTdHJpbmcmIHMpCiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKLSAgICBpZiAo
bV9ob3N0RW5kID09IG1fcG9ydEVuZCkKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKICAgICAgICAg
cmV0dXJuOwotICAgIFVSTFBhcnNlciBwYXJzZXIobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIFVSTFBhcnNlciBwYXJzZXIobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1f
cG9ydExlbmd0aCkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwogfQogCkBAIC00NjYs
MTAgKzQ2NywxMCBAQCB2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNvbG9uTmVlZGVkID0g
bV9wb3J0RW5kID09IG1faG9zdEVuZDsKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExl
bmd0aDsKICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQg
OiBtX2hvc3RFbmQgKyAxKTsKIAotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhtX3N0
cmluZy5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpu
dW1iZXIoaSksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKSk7CisgICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVk
ID8gIjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCkpKTsKICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKIH0K
IApAQCAtNTA5LDcgKzUxMCw3IEBAIHZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJp
bmcmIGgKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHBvcnQpOwogICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJz
dHJpbmcobV9wb3J0RW5kKSk7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5n
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwogCiAgICAgVVJMUGFyc2VyIHBhcnNlcihidWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwpAQCAtNjU4LDcg
KzY1OSw3IEBAIHZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKICAgICBhdXRvIHF1
ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKICAgICAgICAg
cmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKICAgICB9OwotICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
cG9ydEVuZCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Cisg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwg
cXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fcGF0aEVuZCkpKTsKICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMLmgJKHJldmlzaW9uIDIzMjg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksMjEgKzIxOSwyOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0
OwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOworCiAgICAgYm9vbCBtX2lzVmFsaWQgOiAxOwogICAg
IGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKICAgICBib29sIG1fY2Fubm90QmVB
QmFzZVVSTCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZDsKKyAgICAvLyBUaGlzIGlz
IG91dCBvZiBvcmRlciB0byBhbGxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRl
ciB0aGUgaG9zdC4KKyAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsK
KyAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OwogICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0
OwogICAgIHVuc2lnbmVkIG1fdXNlckVuZDsKICAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOwog
ICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKLSAgICB1bnNpZ25lZCBtX3BvcnRFbmQ7CiAgICAgdW5z
aWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgdW5zaWduZWQgbV9wYXRoRW5kOwogICAg
IHVuc2lnbmVkIG1fcXVlcnlFbmQ7CiB9OwogCitzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09
IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkg
c21hbGwiKTsKKwogdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+CiB2b2lkIFVSTDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBAIC0yNDIsMTIgKzI0OSwxMiBAQCB2b2lkIFVSTDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAg
ICAgIHJldHVybjsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KG1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSk7Ci0gICAgZW5jb2RlciA8PCBtX3NjaGVtZUVuZDsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCk7CiAgICAgZW5jb2RlciA8PCBt
X3VzZXJTdGFydDsKICAgICBlbmNvZGVyIDw8IG1fdXNlckVuZDsKICAgICBlbmNvZGVyIDw8IG1f
cGFzc3dvcmRFbmQ7CiAgICAgZW5jb2RlciA8PCBtX2hvc3RFbmQ7Ci0gICAgZW5jb2RlciA8PCBt
X3BvcnRFbmQ7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3J0TGVu
Z3RoKTsKICAgICBlbmNvZGVyIDw8IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgIGVuY29kZXIg
PDwgbV9wYXRoRW5kOwogICAgIGVuY29kZXIgPDwgbV9xdWVyeUVuZDsKQEAgLTI3OSw4ICsyODYs
MTQgQEAgc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocHJvdG9jb2xJc0luSFRUUEZhbWlseSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IHByb3RvY29s
SXNJbkhUVFBGYW1pbHk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9zY2hlbWVFbmQp
KQorICAgIHVuc2lnbmVkIHNjaGVtZUVuZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjaGVt
ZUVuZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHNjaGVtZUVuZCA+
PSBtYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIHVybC5tX3NjaGVtZUVuZCA9IHNj
aGVtZUVuZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3VzZXJTdGFydCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV91
c2VyRW5kKSkKQEAgLTI4OSw4ICszMDIsMTQgQEAgc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVj
b2RlKERlY29kZXImIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodXJsLm1faG9zdEVuZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9wb3J0RW5kKSkKKyAgICB1bnNpZ25lZCBw
b3J0TGVuZ3RoOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9ydExlbmd0aCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHBvcnRMZW5ndGggPiBtYXhQb3J0TGVuZ3Ro
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0KKyAgICB1cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9wYXRoRW5k
KSkKQEAgLTQwMCw3ICs0MTksNyBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAog
CiBpbmxpbmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhF
bmQgIT0gbV9wb3J0RW5kOworICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoOwogfQogCiBpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKQEAg
LTQ0MCw3ICs0NTksNyBAQCBpbmxpbmUgdW5zaWduZWQgVVJMOjpob3N0RW5kKCkgY29uc3QKIAog
aW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
b3J0RW5kOworICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CiB9CiAKIGlubGlu
ZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzI4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2
b2lkIFVSTFBhcnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyCiBib29sIFVSTFBhcnNlcjo6
Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQogewogICAgIGlmIChi
YXNlLnByb3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1f
cG9ydEVuZCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIGlmIChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgICAg
ICBjb25zdCBMQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0gICAg
ICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9wb3J0RW5k
ICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9y
dExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAg
ICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBVQ2hhciogYmVn
aW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgQ29kZVBvaW50
SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1fcG9ydEVuZCArIDEsIGJlZ2luICsgYmFz
ZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hh
cj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdp
biArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKGlzV2luZG93c0Ry
aXZlTGV0dGVyKGMpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVy
KGMpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODQ2LDcgKzg0Niw3IEBAIHNp
emVfdCBVUkxQYXJzZXI6OnVybExlbmd0aFVudGlsUGFydChjb24KICAgICBjYXNlIFVSTFBhcnQ6
OlBhdGhBZnRlckxhc3RTbGFzaDoKICAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKICAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9w
b3J0RW5kOworICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7
CiAgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgogICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVu
ZDsKICAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgpAQCAtODk4LDcgKzg5OCw3IEBAIHZv
aWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCAKICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIG1fdXJsLm1f
cG9ydEVuZCA9IGJhc2UubV9wb3J0RW5kOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBi
YXNlLm1fcG9ydExlbmd0aDsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBVUkxQYXJ0
OjpIb3N0RW5kOgogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKQEAg
LTEwNDMsNyArMTA0Myw3IEBAIGJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVk
IG4KIAogICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVm
ZmVyLnNpemUoKSk7CiAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9w
KCZtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBd
ICsgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0
U2xhc2ggPT0gbV91cmwubV9wb3J0RW5kICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihjb21w
b25lbnRUb1BvcCkpCisgICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hv
c3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNv
bXBvbmVudFRvUG9wKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMTA1MSwxMSArMTA1MSwxMSBAQCBib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1
bnNpZ25lZCBuCiB2b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCiB7CiAgICAgQVNTRVJUKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PiBtX3VybC5tX3BvcnRFbmQgKyAxKSB7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewogICAgICAg
ICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
IC0gMTsKICAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSA9
PSAnLycpCiAgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgd2hp
bGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1fcG9ydEVuZCAmJiBtX2FzY2lpQnVm
ZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0gJy8nKQorICAgICAgICB3aGlsZSAobmV3UGF0
aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYm
IG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCiAgICAgICAgICAg
ICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNo
Kys7CiAgICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCkBA
IC0xMjcxLDcgKzEyNzEsMTIgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3Rl
clR5cAogICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1l
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQg
PiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7CiAgICAgICAgICAgICAgICAg
U3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVu
ZCk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwogICAgICAgICAg
ICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKQEAgLTEzMjEsNyArMTMyNiw3IEBA
IHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owog
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RC
ZUFCYXNlVVJMID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OkNhbm5vdEJlQUJhc2VVUkxQYXRoOwpAQCAtMTM5NSw3ICsxNDAwLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CiAg
ICAgICAgICAgICB9CkBAIC0xNDUxLDcgKzE0NTYsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIGlzVVRGOEVuY29k
aW5nKTsKICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcG9ydEVuZCArIDE7
CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9z
dEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpQYXRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTIwLDcg
KzE1MjUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyRW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyRW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91
cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyRW5kOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKQEAgLTE1OTAsNyArMTU5NSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpw
YXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTYxMiw3ICsxNjE3LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0
IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTYzMCw3
ICsxNjM1LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykp
CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CkBA
IC0xNjUwLDcgKzE2NTUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwCiAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CiAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgYXV0
aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZp
bGVIb3N0OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTY2MSw3ICsxNjY2LDcgQEAgdm9p
ZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAg
ICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewogICAgICAgICAgICAgICAgIGFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKQEAgLTE3MjAsNyArMTcyNSw3
IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OwpAQCAtMTg3NSw3ICsxODgwLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTg4Nyw3ICsxODkyLDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJl
bGF0aXZlU2xhc2giKTsKICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6
UG9ydEVuZCwgYywgaXNVVEY4RW5jb2RpbmcpOwogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BvcnRF
bmQgKyAxOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9z
dEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIGJyZWFrOwpAQCAtMTg5Nyw3ICsx
OTAyLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9w
YXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CkBAIC0xOTE0LDcgKzE5MTksNyBAQCB2b2lkIFVSTFBhcnNl
cjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIH0gZWxzZSBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CiAgICAgICAgICAgICBmYWls
dXJlKCk7CkBAIC0xOTIzLDkgKzE5MjgsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3Qg
Q2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
cG9ydEVuZCArIDE7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZDsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRM
ZW5ndGg7CiAgICAgICAgIH0KICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhF
bmQ7CkBAIC0xOTM5LDkgKzE5NDQsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwCiAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewogICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwogICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExl
bmd0aCArIDE7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wb3J0RW5kOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwogICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEVuZDsKICAgICAgICAgYnJlYWs7CkBAIC0xOTU3LDcgKzE5NjIsNyBAQCB2b2lk
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CkBAIC0xOTcwLDcgKzE5NzUsNyBAQCB2b2lk
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93
c0RyaXZlTGV0dGVyKGJhc2UpKSB7CiAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CiAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0ICsgNDsKQEAgLTE5OTksNyArMjAwNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShj
b25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMjAxNSwxMCAr
MjAyMCwxMCBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBj
dXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKICAgICAgICAgICAg
IG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwu
bV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKICAgICAgICAgfQogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wb3J0RW5kICsgMTsK
KyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGggKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBicmVhazsKQEAgLTI2MDEsNyArMjYwNiw5IEBA
IGJvb2wgVVJMUGFyc2VyOjpwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmEKICAgICBhZHZhbmNlKGl0
ZXJhdG9yLCBjb2xvbkl0ZXJhdG9yKTsKICAgICB1aW50MzJfdCBwb3J0ID0gMDsKICAgICBpZiAo
VU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICB1bnNpZ25lZCBwb3J0TGVu
Z3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7
CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMjYzOCw3ICsyNjQ1LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJ
dGVyYQogICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNf
Y2FzdDx1aW50MTZfdD4ocG9ydCkpOwogICAgIH0KIAotICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NF
UlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NjQsNyArMjY3
Myw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpcHY2RW5kKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZF
bmQpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwpAQCAtMjY4Nyw3ICsyNjk2LDkgQEAgYm9vbCBV
UkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaQogICAgICAgICB9CiAgICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBjdXJyZW50
UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBA
IC0yNzA4LDcgKzI3MTksOSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2Rl
UG9pCiAgICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CiAgICAgICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0
RW5kOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjpt
YXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0
TGVuZ3RoOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBAIC0yNzI3LDcgKzI3NDAsOSBA
QCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgIGlmICghaG9z
dEl0ZXJhdG9yLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVy
YXRvcik7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRv
cik7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0
b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3Ro
IDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBv
cnRMZW5ndGg7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTI3NjksNyAr
Mjc4NCw5IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAg
ICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwogICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAgICBpZiAoaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0
ZXJhdG9yKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOworICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwpAQCAtMjc4MSw3ICsy
Nzk4LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaQogICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgaWYgKCFpdGVy
YXRvci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKLSAgICBt
X3VybC5tX3BvcnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIHVuc2lnbmVk
IHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5k
OworICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsK
KyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yODY4LDI5ICsyODg3LDI5IEBAIGNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVy
bmF0aW9uYWxEb20KIAogYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYg
YSwgY29uc3QgVVJMJiBiKQogewotICAgIC8vIEZJWE1FOiBtX2Nhbm5vdEJlQUJhc2VVUkwgaXMg
bm90IGNvbXBhcmVkIGJlY2F1c2UgdGhlIG9sZCBVUkw6OnBhcnNlIGRpZCBub3QgdXNlIGl0LAot
ICAgIC8vIGJ1dCBvbmNlIHdlIGdldCByaWQgb2YgVVJMOjpwYXJzZSBpdHMgdmFsdWUgc2hvdWxk
IGJlIHRlc3RlZC4KLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKKyAgICBV
UkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVk
ICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKICAgICAgICAgYS5tX2lzVmFs
aWQsCisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAogICAgICAgICBhLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSwKICAgICAgICAgYS5tX3NjaGVtZUVuZCwKICAgICAgICAgYS5tX3VzZXJT
dGFydCwKICAgICAgICAgYS5tX3VzZXJFbmQsCiAgICAgICAgIGEubV9wYXNzd29yZEVuZCwKICAg
ICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEubV9wb3J0RW5kLAorICAgICAgICBhLm1faG9z
dEVuZCArIGEubV9wb3J0TGVuZ3RoLAogICAgICAgICBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoLAog
ICAgICAgICBhLm1fcGF0aEVuZCwKICAgICAgICAgYS5tX3F1ZXJ5RW5kLAogICAgICAgICBhLm1f
c3RyaW5nLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIGIubV9pc1ZhbGlkLAorICAgICAgICBiLm1f
Y2Fubm90QmVBQmFzZVVSTCwKICAgICAgICAgYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHksCiAg
ICAgICAgIGIubV9zY2hlbWVFbmQsCiAgICAgICAgIGIubV91c2VyU3RhcnQsCiAgICAgICAgIGIu
bV91c2VyRW5kLAogICAgICAgICBiLm1fcGFzc3dvcmRFbmQsCiAgICAgICAgIGIubV9ob3N0RW5k
LAotICAgICAgICBiLm1fcG9ydEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExl
bmd0aCwKICAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKICAgICAgICAgYi5tX3BhdGhF
bmQsCiAgICAgICAgIGIubV9xdWVyeUVuZCwKQEAgLTI4OTgsMTMgKzI5MTcsMTQgQEAgYm9vbCBV
UkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTAogCiAgICAgcmV0dXJuIGEubV9zdHJp
bmcgPT0gYi5tX3N0cmluZwogICAgICAgICAmJiBhLm1faXNWYWxpZCA9PSBiLm1faXNWYWxpZAor
ICAgICAgICAmJiBhLm1fY2Fubm90QmVBQmFzZVVSTCA9PSBiLm1fY2Fubm90QmVBQmFzZVVSTAog
ICAgICAgICAmJiBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9PSBiLm1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseQogICAgICAgICAmJiBhLm1fc2NoZW1lRW5kID09IGIubV9zY2hlbWVFbmQKICAg
ICAgICAgJiYgYS5tX3VzZXJTdGFydCA9PSBiLm1fdXNlclN0YXJ0CiAgICAgICAgICYmIGEubV91
c2VyRW5kID09IGIubV91c2VyRW5kCiAgICAgICAgICYmIGEubV9wYXNzd29yZEVuZCA9PSBiLm1f
cGFzc3dvcmRFbmQKICAgICAgICAgJiYgYS5tX2hvc3RFbmQgPT0gYi5tX2hvc3RFbmQKLSAgICAg
ICAgJiYgYS5tX3BvcnRFbmQgPT0gYi5tX3BvcnRFbmQKKyAgICAgICAgJiYgYS5tX3BvcnRMZW5n
dGggPT0gYi5tX3BvcnRMZW5ndGgKICAgICAgICAgJiYgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
PSBiLm1fcGF0aEFmdGVyTGFzdFNsYXNoCiAgICAgICAgICYmIGEubV9wYXRoRW5kID09IGIubV9w
YXRoRW5kCiAgICAgICAgICYmIGEubV9xdWVyeUVuZCA9PSBiLm1fcXVlcnlFbmQ7CkBAIC0yOTE2
LDggKzI5MzYsNyBAQCBib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50CiAg
ICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1cmwubV91c2VyRW5kCiAgICAgICAgICYmIHVy
bC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRFbmQKICAgICAgICAgJiYgdXJsLm1fcGFzc3dv
cmRFbmQgPD0gdXJsLm1faG9zdEVuZAotICAgICAgICAmJiB1cmwubV9ob3N0RW5kIDw9IHVybC5t
X3BvcnRFbmQKLSAgICAgICAgJiYgdXJsLm1fcG9ydEVuZCA8PSB1cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2gKKyAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoCiAgICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA8PSB1cmwubV9wYXRoRW5kCiAgICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVl
cnlFbmQKICAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344775</attachid>
            <date>2018-07-11 11:48:56 -0700</date>
            <delta_ts>2018-07-12 13:25:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186820-20180711114856.patch</filename>
            <type>text/plain</type>
            <size>30664</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzczMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTA3LTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNp
emUgb2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgor
CisgICAgICAgIFdlIHdlcmUgdXNpbmcgMzIgYml0cyBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgcG9y
dCwgd2hpY2ggaXMgYWx3YXlzIGJldHdlZW4gMCBhbmQgNSBpbmNsdXNpdmUKKyAgICAgICAgYmVj
YXVzZSBwb3J0IG51bWJlcnMgYXJlIG1pc3Npbmcgb3IgYmV0d2VlbiAwIGFuZCA2NTUzNS4gIExl
dCdzIGp1c3QgdXNlIDMgYml0cyBoZXJlLgorICAgICAgICBXZSB3ZXJlIHVzaW5nIDMyIGJpdHMg
Zm9yIHRoZSBsZW5ndGggb2YgdGhlIHNjaGVtZSwgd2hpY2ggaXMgdXN1YWxseSAzLTUgY2hhcmFj
dGVycyBhbmQgY2FuIGJlCisgICAgICAgIGxvbmdlciBmb3Igc29tZSBjdXN0b20gc2NoZW1lcywg
YnV0IEkndmUgbmV2ZXIgc2VlbiBvbmUgbW9yZSB0aGFuIDIwIGNoYXJhY3RlcnMuICBJZiB3ZSBh
c3N1bWUKKyAgICAgICAgc2NoZW1lcyBhcmUgYWx3YXlzIGxlc3MgdGhhbiA2NE1CLCB3ZSBjYW4g
c2F2ZSA4IGJ5dGVzIHBlciBVUkwhCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBq
dXN0IGxlc3MgbWVtb3J5IHVzZSEKKworICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVUkw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjps
YXN0UGF0aENvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBvcnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnJlbW92ZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQb3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJM
OjpzZXRQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTDo6aGFzUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnBhdGhTdGFydCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbCk6CisgICAgICAgIChX
ZWJDb3JlOjpVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6VVJM
UGFyc2VyOjpwb3BQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVBvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6YWxsVmFsdWVzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppbnRl
cm5hbFZhbHVlc0NvbnNpc3RlbnQpOgorCiAyMDE4LTA3LTExICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBNYWtlIFdQVCB0ZXN0
IGF0IGludGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3QvcHJvY2Vzc2luZy1hLWtleWZyYW1lcy1hcmd1
bWVudC0wMDEuaHRtbCBwYXNzIHJlbGlhYmx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJ
KHJldmlzaW9uIDIzMzczMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBVUkw6OmludmFsaWRhdGUoKQogICAg
IG1fdXNlckVuZCA9IDA7CiAgICAgbV9wYXNzd29yZEVuZCA9IDA7CiAgICAgbV9ob3N0RW5kID0g
MDsKLSAgICBtX3BvcnRFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CiAgICAgbV9wYXRo
RW5kID0gMDsKICAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CiAgICAgbV9xdWVyeUVuZCA9
IDA7CkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBj
b25zdAogICAgICAgICAtLWVuZDsKIAogICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5nLnJldmVy
c2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9wb3J0RW5kKSkKKyAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ob3N0
RW5kICsgbV9wb3J0TGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICsrc3Rh
cnQ7CiAKQEAgLTE2NCwxNSArMTY0LDE1IEBAIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QK
IAogc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fcG9ydEVuZCB8fCBtX2hvc3RFbmQgPj0gbV9wb3J0RW5kIC0gMSkKKyAgICBpZiAoIW1fcG9y
dExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgb2sgPSBm
YWxzZTsKICAgICB1bnNpZ25lZCBudW1iZXI7CiAgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQot
ICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQgLSAxLCAmb2spOwor
ICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwogICAgIGVsc2UK
LSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0
ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydEVuZCAtIG1faG9zdEVuZCAtIDEsICZvayk7
CisgICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFj
dGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwogICAgIGlm
ICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBudW1iZXI7CkBAIC0xODcs
NyArMTg3LDcgQEAgU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAogCiBTdHJpbmcgVVJM
Ojpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9z
dHJpbmcuc3Vic3RyaW5nKDAsIG1fcG9ydEVuZCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IG1fc3Ry
aW5nLnN1YnN0cmluZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOwogCiAgICAgaWYgKG1f
cGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCA+IDApIHsKICAgICAgICAgY29uc3QgaW50IGFsbG93
Rm9yVHJhaWxpbmdBdFNpZ24gPSAxOwpAQCAtMzcwLDcgKzM3MCw4IEBAIFN0cmluZyBVUkw6OnF1
ZXJ5KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQsIG1fcGF0aEVuZCAtIG1fcG9ydEVuZCk7CisgICAg
dW5zaWduZWQgcG9ydEVuZCA9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICByZXR1cm4g
bV9zdHJpbmcuc3Vic3RyaW5nKHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRFbmQpOwogfQogCiBi
b29sIFVSTDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQpAQCAtNDU1LDkgKzQ1Niw5IEBA
IHZvaWQgVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKIAogdm9pZCBVUkw6OnJlbW92ZVBv
cnQoKQogewotICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5kKQorICAgIGlmICghbV9wb3J0
TGVuZ3RoKQogICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtX3N0cmluZy5s
ZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CisgICAgVVJM
UGFyc2VyIHBhcnNlcihtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJp
bmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CiB9CiAKQEAgLTQ2NiwxMCArNDY3LDEwIEBAIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVk
IHNob3J0IGkpCiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0gbV9ob3N0RW5kOworICAgIGJvb2wgY29sb25O
ZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOwogICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xvbk5l
ZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOwogCi0gICAgVVJMUGFyc2VyIHBhcnNl
cihtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoi
IDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkp
KTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChwb3J0U3Rh
cnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIFN0cmluZzo6bnVtYmVyKGkpLCBtX3N0cmlu
Zy5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwogICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOwogfQogCkBAIC01MDksNyArNTEwLDcgQEAgdm9pZCBVUkw6OnNldEhvc3RB
bmRQb3J0KGNvbnN0IFN0cmluZyYgaAogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjoi
KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocG9ydCk7CiAgICAgfQotICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKKyAgICBidWlsZGVyLmFwcGVuZCht
X3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CiAKICAgICBVUkxQ
YXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CkBAIC02NTgsNyArNjU5LDcgQEAgdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5n
JiBzKQogICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNoYXJh
Y3RlcikgewogICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIgPT0g
JyMnOwogICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXco
bV9zdHJpbmcpLmxlZnQobV9wb3J0RW5kKSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwg
cXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fcGF0aEVuZCkpKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5jb2Rl
Q2hhcmFjdGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAkocmV2aXNpb24gMjMzNzMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSwyMSAr
MjE5LDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUx
Mj4mIGJ1ZmZlcikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgYm9vbCBtX2lz
VmFsaWQgOiAxOwotICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKLSAgICBi
b29sIG1fY2Fubm90QmVBQmFzZVVSTCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZDsK
KyAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseSA6IDE7CisgICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKKwor
ICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsbGlnbiB0aGUgYml0cyBiZXR0ZXIuIFRo
ZSBwb3J0IGlzIGFmdGVyIHRoZSBob3N0LgorICAgIHVuc2lnbmVkIG1fcG9ydExlbmd0aCA6IDM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhQb3J0TGVuZ3RoID0gKDEgPDwgMykg
LSAxOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTY2hlbWVMZW5ndGggPSAo
MSA8PCAyNikgLSAxOworICAgIHVuc2lnbmVkIG1fc2NoZW1lRW5kIDogMjY7CiAgICAgdW5zaWdu
ZWQgbV91c2VyU3RhcnQ7CiAgICAgdW5zaWduZWQgbV91c2VyRW5kOwogICAgIHVuc2lnbmVkIG1f
cGFzc3dvcmRFbmQ7CiAgICAgdW5zaWduZWQgbV9ob3N0RW5kOwotICAgIHVuc2lnbmVkIG1fcG9y
dEVuZDsKICAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICB1bnNpZ25lZCBt
X3BhdGhFbmQ7CiAgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKIH07CiAKK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVS
TCBzaG91bGQgc3RheSBzbWFsbCIpOworCiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
VVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKQEAgLTI0MiwxMiArMjQ5LDEz
IEBAIHZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAoIW1f
aXNWYWxpZCkKICAgICAgICAgcmV0dXJuOwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9v
bD4obV9wcm90b2NvbElzSW5IVFRQRmFtaWx5KTsKLSAgICBlbmNvZGVyIDw8IG1fc2NoZW1lRW5k
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9jYW5ub3RCZUFCYXNlVVJMKTsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCk7CiAgICAg
ZW5jb2RlciA8PCBtX3VzZXJTdGFydDsKICAgICBlbmNvZGVyIDw8IG1fdXNlckVuZDsKICAgICBl
bmNvZGVyIDw8IG1fcGFzc3dvcmRFbmQ7CiAgICAgZW5jb2RlciA8PCBtX2hvc3RFbmQ7Ci0gICAg
ZW5jb2RlciA8PCBtX3BvcnRFbmQ7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9wb3J0TGVuZ3RoKTsKICAgICBlbmNvZGVyIDw8IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwog
ICAgIGVuY29kZXIgPDwgbV9wYXRoRW5kOwogICAgIGVuY29kZXIgPDwgbV9xdWVyeUVuZDsKQEAg
LTI3OSw4ICsyODcsMTggQEAgc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXIm
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvdG9jb2xJc0luSFRUUEZhbWlseSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSA9IHByb3RvY29sSXNJbkhUVFBGYW1pbHk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwu
bV9zY2hlbWVFbmQpKQorICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNhbm5vdEJlQUJhc2VVUkwpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHVybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSBjYW5ub3RCZUFCYXNlVVJMOworICAgIHVu
c2lnbmVkIHNjaGVtZUVuZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjaGVtZUVuZCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHNjaGVtZUVuZCA+PSBtYXhTY2hl
bWVMZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIHVybC5tX3NjaGVtZUVuZCA9IHNjaGVtZUVuZDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3VzZXJTdGFydCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV91c2VyRW5kKSkK
QEAgLTI4OSw4ICszMDcsMTQgQEAgc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29k
ZXImIAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodXJsLm1faG9zdEVuZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh1cmwubV9wb3J0RW5kKSkKKyAgICB1bnNpZ25lZCBwb3J0TGVuZ3Ro
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9ydExlbmd0aCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKHBvcnRMZW5ndGggPiBtYXhQb3J0TGVuZ3RoKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIH0KKyAgICB1cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9wYXRoRW5kKSkKQEAgLTQw
MCw3ICs0MjQsNyBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAogCiBpbmxpbmUg
Ym9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9w
b3J0RW5kOworICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
OwogfQogCiBpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKQEAgLTQ0MCw3ICs0
NjQsNyBAQCBpbmxpbmUgdW5zaWduZWQgVVJMOjpob3N0RW5kKCkgY29uc3QKIAogaW5saW5lIHVu
c2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wb3J0RW5kOwor
ICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CiB9CiAKIGlubGluZSB1bnNpZ25l
ZCBVUkw6OnBhdGhFbmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMzM3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2b2lkIFVSTFBh
cnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyCiBib29sIFVSTFBhcnNlcjo6Y29weUJhc2VX
aW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQogewogICAgIGlmIChiYXNlLnByb3Rv
Y29sSXMoImZpbGUiKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1fcG9ydEVuZCA8
IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1f
aG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CiAg
ICAgICAgIGlmIChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICBjb25zdCBM
Q2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBD
b2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9wb3J0RW5kICsgMSwgYmVn
aW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIENvZGVQb2ludEl0ZXJh
dG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCAr
IDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoaXNX
aW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJp
dmVMZXR0ZXIoYyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBiYXNl
Lm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8
VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1fcG9ydEVuZCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdp
biArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2Uu
bV9zdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVy
KGMpKSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODQ2LDcgKzg0Niw3IEBAIHNpemVfdCBVUkxQ
YXJzZXI6OnVybExlbmd0aFVudGlsUGFydChjb24KICAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRl
ckxhc3RTbGFzaDoKICAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAg
ICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9wb3J0RW5kOwor
ICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CiAgICAgY2Fz
ZSBVUkxQYXJ0OjpIb3N0RW5kOgogICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKICAgICBj
YXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgVVJMUGFy
c2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCAKICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9
IGJhc2UubV9wb3J0RW5kOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9y
dExlbmd0aDsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5k
OgogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKQEAgLTEwNDMsNyAr
MTA0Myw3IEBAIGJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG4KIAogICAg
IEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVyLnNpemUo
KSk7CiAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9wKCZtX2FzY2lp
QnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBdICsgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPT0g
bV91cmwubV9wb3J0RW5kICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1Bv
cCkpCisgICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRv
UG9wKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA1
MSwxMSArMTA1MSwxMSBAQCBib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNpZ25lZCBu
CiB2b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCiB7CiAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5t
X3BvcnRFbmQgKyAxKSB7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID4gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewogICAgICAgICBhdXRvIG5l
d1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIC0gMTsKICAg
ICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSA9PSAnLycpCiAg
ICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgd2hpbGUgKG5ld1Bh
dGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1fcG9ydEVuZCAmJiBtX2FzY2lpQnVmZmVyW25ld1Bh
dGhBZnRlckxhc3RTbGFzaF0gIT0gJy8nKQorICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFz
dFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlC
dWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCiAgICAgICAgICAgICBuZXdQYXRo
QWZ0ZXJMYXN0U2xhc2gtLTsKICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7CiAgICAg
ICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCkBAIC0xMjcxLDcg
KzEyNzEsMTIgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3Vy
cmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1h
eFNjaGVtZUxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7CiAgICAgICAgICAgICAgICAgU3RyaW5nVmll
dyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwogICAgICAgICAgICAgICAgIHN3
aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKQEAgLTEzMjEsNyArMTMyNiw3IEBAIHZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJM
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJl
QUJhc2VVUkxQYXRoOwpAQCAtMTM5NSw3ICsxNDAwLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CiAgICAgICAgICAg
ICB9CkBAIC0xNDUxLDcgKzE0NTYsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIGlzVVRGOEVuY29kaW5nKTsKICAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcG9ydEVuZCArIDE7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTIwLDcgKzE1MjUsNyBA
QCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyRW5k
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2Vy
RW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyRW5kOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhvcml0eU9ySG9z
dEJlZ2luKTsKQEAgLTE1OTAsNyArMTU5NSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25z
dCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTYxMiw3ICsxNjE3LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3Rl
clR5cAogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9x
dWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTYzMCw3ICsxNjM1LDcg
QEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CkBAIC0xNjUwLDcg
KzE2NTUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JI
b3N0QmVnaW4gPSBjOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVIb3N0Owog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTY2MSw3ICsxNjY2LDcgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgIGlm
IChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihjKTsKICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKQEAgLTE3MjAsNyArMTcyNSw3IEBAIHZvaWQg
VVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlC
dWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aFN0YXJ0OwpAQCAtMTg3NSw3ICsxODgwLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAg
bV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoOwpAQCAtMTg4Nyw3ICsxODkyLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xh
c2giKTsKICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwg
YywgaXNVVEY4RW5jb2RpbmcpOwogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BvcnRFbmQgKyAxOwor
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1f
dXJsLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIGJyZWFrOwpAQCAtMTg5Nyw3ICsxOTAyLDcgQEAg
dm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CkBAIC0xOTE0LDcgKzE5MTksNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFu
ZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CiAgICAgICAgICAgICBmYWlsdXJlKCk7CkBA
IC0xOTIzLDkgKzE5MjgsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwCiAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZCAr
IDE7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsg
bV91cmwubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZDsKKyAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7CiAg
ICAgICAgIH0KICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3Bh
dGhFbmQ7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CkBAIC0x
OTM5LDkgKzE5NDQsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlw
CiAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewogICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGMpOwogICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9w
b3J0RW5kOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsg
bV91cmwubV9wb3J0TGVuZ3RoOwogICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fcGF0aEVuZDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0
aEVuZDsKICAgICAgICAgYnJlYWs7CkBAIC0xOTU3LDcgKzE5NjIsNyBAQCB2b2lkIFVSTFBhcnNl
cjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CkBAIC0xOTcwLDcgKzE5NzUsNyBAQCB2b2lkIFVSTFBhcnNl
cjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0
dGVyKGJhc2UpKSB7CiAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CiAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
NDsKQEAgLTE5OTksNyArMjAwNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFy
YWN0ZXJUeXAKICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owog
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
ICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMjAxNSwxMCArMjAyMCwxMCBA
QCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIGlmIChp
c0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9z
aXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKICAgICAgICAgICAgIG1fYXNjaWlC
dWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5k
ID0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
ICAgICAgICAgfQogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3Bv
cnRMZW5ndGggKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOwogICAgICAgICBicmVhazsKQEAgLTI2MDEsNyArMjYwNiw5IEBAIGJvb2wgVVJM
UGFyc2VyOjpwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmEKICAgICBhZHZhbmNlKGl0ZXJhdG9yLCBj
b2xvbkl0ZXJhdG9yKTsKICAgICB1aW50MzJfdCBwb3J0ID0gMDsKICAgICBpZiAoVU5MSUtFTFko
aXRlcmF0b3IuYXRFbmQoKSkpIHsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gY3VycmVudFBv
c2l0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3Vy
cmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAg
IG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjb2xvbkl0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjYzOCw3
ICsyNjQ1LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYQogICAg
ICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50
MTZfdD4ocG9ydCkpOwogICAgIH0KIAotICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7CisgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExl
bmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBv
cnRMZW5ndGg7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NjQsNyArMjY3Myw3IEBAIGJv
b2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpcHY2RW5kKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVu
dFBvc2l0aW9uKGlwdjZFbmQpOwpAQCAtMjY4Nyw3ICsyNjk2LDcgQEAgYm9vbCBVUkxQYXJzZXI6
OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaQogICAgICAgICB9CiAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgIGlmIChpdGVyYXRvci5h
dEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBjdXJyZW50UG9zaXRpb24o
aXRlcmF0b3IpOworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRl
cmF0b3IpOwpAQCAtMjcwOCw3ICsyNzE3LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFu
ZFBvcnQoQ29kZVBvaQogICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkp
OwogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9y
KTsKICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
CkBAIC0yNzI3LDcgKzI3MzYsOSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChD
b2RlUG9pCiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRv
cik7CiAgICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1
cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAKQEAgLTI3NjksNyArMjc4MCw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RB
bmRQb3J0KENvZGVQb2kKICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwog
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAg
ICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKQEAgLTI3ODEsNyArMjc5Miw3IEBAIGJvb2wgVVJM
UGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKICAg
ICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wb3J0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yODY4LDI5ICsyODc5LDI5IEBAIGNvbnN0IFVJRE5B
JiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb20KIAogYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVl
c0VxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewotICAgIC8vIEZJWE1FOiBtX2Nh
bm5vdEJlQUJhc2VVUkwgaXMgbm90IGNvbXBhcmVkIGJlY2F1c2UgdGhlIG9sZCBVUkw6OnBhcnNl
IGRpZCBub3QgdXNlIGl0LAotICAgIC8vIGJ1dCBvbmNlIHdlIGdldCByaWQgb2YgVVJMOjpwYXJz
ZSBpdHMgdmFsdWUgc2hvdWxkIGJlIHRlc3RlZC4KLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVk
ICVkICVkICVzIiwKKyAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwK
ICAgICAgICAgYS5tX2lzVmFsaWQsCisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAogICAg
ICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKICAgICAgICAgYS5tX3NjaGVtZUVuZCwK
ICAgICAgICAgYS5tX3VzZXJTdGFydCwKICAgICAgICAgYS5tX3VzZXJFbmQsCiAgICAgICAgIGEu
bV9wYXNzd29yZEVuZCwKICAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEubV9wb3J0RW5k
LAorICAgICAgICBhLm1faG9zdEVuZCArIGEubV9wb3J0TGVuZ3RoLAogICAgICAgICBhLm1fcGF0
aEFmdGVyTGFzdFNsYXNoLAogICAgICAgICBhLm1fcGF0aEVuZCwKICAgICAgICAgYS5tX3F1ZXJ5
RW5kLAogICAgICAgICBhLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIGIubV9pc1Zh
bGlkLAorICAgICAgICBiLm1fY2Fubm90QmVBQmFzZVVSTCwKICAgICAgICAgYi5tX3Byb3RvY29s
SXNJbkhUVFBGYW1pbHksCiAgICAgICAgIGIubV9zY2hlbWVFbmQsCiAgICAgICAgIGIubV91c2Vy
U3RhcnQsCiAgICAgICAgIGIubV91c2VyRW5kLAogICAgICAgICBiLm1fcGFzc3dvcmRFbmQsCiAg
ICAgICAgIGIubV9ob3N0RW5kLAotICAgICAgICBiLm1fcG9ydEVuZCwKKyAgICAgICAgYi5tX2hv
c3RFbmQgKyBiLm1fcG9ydExlbmd0aCwKICAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwK
ICAgICAgICAgYi5tX3BhdGhFbmQsCiAgICAgICAgIGIubV9xdWVyeUVuZCwKQEAgLTI4OTgsMTMg
KzI5MDksMTQgQEAgYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTAogCiAg
ICAgcmV0dXJuIGEubV9zdHJpbmcgPT0gYi5tX3N0cmluZwogICAgICAgICAmJiBhLm1faXNWYWxp
ZCA9PSBiLm1faXNWYWxpZAorICAgICAgICAmJiBhLm1fY2Fubm90QmVBQmFzZVVSTCA9PSBiLm1f
Y2Fubm90QmVBQmFzZVVSTAogICAgICAgICAmJiBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9
PSBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseQogICAgICAgICAmJiBhLm1fc2NoZW1lRW5kID09
IGIubV9zY2hlbWVFbmQKICAgICAgICAgJiYgYS5tX3VzZXJTdGFydCA9PSBiLm1fdXNlclN0YXJ0
CiAgICAgICAgICYmIGEubV91c2VyRW5kID09IGIubV91c2VyRW5kCiAgICAgICAgICYmIGEubV9w
YXNzd29yZEVuZCA9PSBiLm1fcGFzc3dvcmRFbmQKICAgICAgICAgJiYgYS5tX2hvc3RFbmQgPT0g
Yi5tX2hvc3RFbmQKLSAgICAgICAgJiYgYS5tX3BvcnRFbmQgPT0gYi5tX3BvcnRFbmQKKyAgICAg
ICAgJiYgYS5tX3BvcnRMZW5ndGggPT0gYi5tX3BvcnRMZW5ndGgKICAgICAgICAgJiYgYS5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9PSBiLm1fcGF0aEFmdGVyTGFzdFNsYXNoCiAgICAgICAgICYmIGEu
bV9wYXRoRW5kID09IGIubV9wYXRoRW5kCiAgICAgICAgICYmIGEubV9xdWVyeUVuZCA9PSBiLm1f
cXVlcnlFbmQ7CkBAIC0yOTE2LDggKzI5MjgsNyBAQCBib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50CiAgICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1cmwubV91c2Vy
RW5kCiAgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRFbmQKICAgICAg
ICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAotICAgICAgICAmJiB1cmwu
bV9ob3N0RW5kIDw9IHVybC5tX3BvcnRFbmQKLSAgICAgICAgJiYgdXJsLm1fcG9ydEVuZCA8PSB1
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5t
X3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCiAgICAgICAgICYmIHVybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCiAgICAgICAgICYmIHVybC5tX3Bh
dGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKICAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJs
Lm1fc3RyaW5nLmxlbmd0aCgpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjMzNzM0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDctMTEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2Ugc2l6ZSBvZiBX
ZWJDb3JlOjpVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NjgyMAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKICAyMDE4LTA3LTExICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KICAKICAgICAgICAgW2V3cy1idWlsZF0gRVdTIHNob3VsZCB1
bmFwcGx5IHRoZSBwYXRjaCBhbmQgYnVpbGQgVG9UIHdoZW4gcGF0Y2ggZmFpbHMgdG8gYnVpbGQK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyMzM3MzMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3OSw2ICsxMTc5LDkgQEAgVEVT
VF9GKFVSTFBhcnNlclRlc3QsIERlZmF1bHRQb3J0KQogICAgIGNoZWNrVVJMRGlmZmVyZW5jZXMo
ImZpbGU6Ly86MC9wYXRoIiwKICAgICAgICAgeyIiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIi
LCAiZmlsZTovLzowL3BhdGgifSwKICAgICAgICAgeyJmaWxlIiwgIiIsICIiLCAiIiwgMCwgIi9w
YXRoIiwgIiIsICIiLCAiZmlsZTovLzowL3BhdGgifSk7CisgICAgCisgICAgY2hlY2tVUkwoImh0
dHA6Ly9leGFtcGxlLmNvbTowMDAwMDAwMDAwMDAwMDc3IiwgeyJodHRwIiwgIiIsICIiLCAiZXhh
bXBsZS5jb20iLCA3NywgIi8iLCAiIiwgIiIsICJodHRwOi8vZXhhbXBsZS5jb206NzcvIn0pOwor
ICAgIGNoZWNrVVJMKCJodHRwOi8vZXhhbXBsZS5jb206MDAwMDAwMDAwMDAwMDA4MCIsIHsiaHR0
cCIsICIiLCAiIiwgImV4YW1wbGUuY29tIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vZXhhbXBs
ZS5jb20vIn0pOwogfQogCiBURVNUX0YoVVJMUGFyc2VyVGVzdCwgUGFyc2VyRmFpbHVyZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344877</attachid>
            <date>2018-07-12 13:25:32 -0700</date>
            <delta_ts>2018-07-12 13:38:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186820-20180712132531.patch</filename>
            <type>text/plain</type>
            <size>32662</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA3LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNp
emUgb2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgor
CisgICAgICAgIFdlIHdlcmUgdXNpbmcgMzIgYml0cyBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgcG9y
dCwgd2hpY2ggaXMgYWx3YXlzIGJldHdlZW4gMCBhbmQgNSBpbmNsdXNpdmUKKyAgICAgICAgYmVj
YXVzZSBwb3J0IG51bWJlcnMgYXJlIG1pc3Npbmcgb3IgYmV0d2VlbiAwIGFuZCA2NTUzNS4gIExl
dCdzIGp1c3QgdXNlIDMgYml0cyBoZXJlLgorICAgICAgICBXZSB3ZXJlIHVzaW5nIDMyIGJpdHMg
Zm9yIHRoZSBsZW5ndGggb2YgdGhlIHNjaGVtZSwgd2hpY2ggaXMgdXN1YWxseSAzLTUgY2hhcmFj
dGVycyBhbmQgY2FuIGJlCisgICAgICAgIGxvbmdlciBmb3Igc29tZSBjdXN0b20gc2NoZW1lcywg
YnV0IEkndmUgbmV2ZXIgc2VlbiBvbmUgbW9yZSB0aGFuIDIwIGNoYXJhY3RlcnMuICBJZiB3ZSBh
c3N1bWUKKyAgICAgICAgc2NoZW1lcyBhcmUgYWx3YXlzIGxlc3MgdGhhbiA2NE1CLCB3ZSBjYW4g
c2F2ZSA4IGJ5dGVzIHBlciBVUkwhCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBq
dXN0IGxlc3MgbWVtb3J5IHVzZSEKKworICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVUkw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjps
YXN0UGF0aENvbXBvbmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBvcnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnJlbW92ZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQb3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJM
OjpzZXRQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTDo6aGFzUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnBhdGhTdGFydCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbCk6CisgICAgICAgIChX
ZWJDb3JlOjpVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6VVJM
UGFyc2VyOjpwb3BQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVBvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6YWxsVmFsdWVzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppbnRl
cm5hbFZhbHVlc0NvbnNpc3RlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICBJbmNyZW1lbnQgdGhlIHNlcnZpY2Ug
d29ya2VyIHJlZ2lzdHJhdGlvbiBzY2hlbWEgdmVyc2lvbiBiZWNhdXNlIG9mIHRoZSBVUkwgZW5j
b2RpbmcgY2hhbmdlLgorCiAyMDE4LTA3LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgY29tcGlsZSBndWFyZCBmb3IgZW5hYmxpbmcgTlNSdW5M
b29wIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAJKHJldmlzaW9uIDIzMzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBVUkw6OmludmFsaWRhdGUoKQog
ICAgIG1fdXNlckVuZCA9IDA7CiAgICAgbV9wYXNzd29yZEVuZCA9IDA7CiAgICAgbV9ob3N0RW5k
ID0gMDsKLSAgICBtX3BvcnRFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CiAgICAgbV9w
YXRoRW5kID0gMDsKICAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CiAgICAgbV9xdWVyeUVu
ZCA9IDA7CkBAIC0xNDQsNyArMTQ0LDcgQEAgU3RyaW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQo
KSBjb25zdAogICAgICAgICAtLWVuZDsKIAogICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5nLnJl
dmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9wb3J0RW5kKSkKKyAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICsr
c3RhcnQ7CiAKQEAgLTE2NCwxNSArMTY0LDE1IEBAIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29u
c3QKIAogc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fcG9ydEVuZCB8fCBtX2hvc3RFbmQgPj0gbV9wb3J0RW5kIC0gMSkKKyAgICBpZiAoIW1f
cG9ydExlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgb2sg
PSBmYWxzZTsKICAgICB1bnNpZ25lZCBudW1iZXI7CiAgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJh
Y3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQgLSAxLCAmb2sp
OworICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJh
Y3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwogICAgIGVs
c2UKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFy
YWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydEVuZCAtIG1faG9zdEVuZCAtIDEsICZv
ayk7CisgICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hh
cmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwogICAg
IGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBudW1iZXI7CkBAIC0x
ODcsNyArMTg3LDcgQEAgU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAogCiBTdHJpbmcg
VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0g
bV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1fcG9ydEVuZCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IG1f
c3RyaW5nLnN1YnN0cmluZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOwogCiAgICAgaWYg
KG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCA+IDApIHsKICAgICAgICAgY29uc3QgaW50IGFs
bG93Rm9yVHJhaWxpbmdBdFNpZ24gPSAxOwpAQCAtMzcwLDcgKzM3MCw4IEBAIFN0cmluZyBVUkw6
OnF1ZXJ5KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQsIG1fcGF0aEVuZCAtIG1fcG9ydEVuZCk7Cisg
ICAgdW5zaWduZWQgcG9ydEVuZCA9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICByZXR1
cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRFbmQpOwogfQog
CiBib29sIFVSTDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQpAQCAtNDU1LDkgKzQ1Niw5
IEBAIHZvaWQgVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKIAogdm9pZCBVUkw6OnJlbW92
ZVBvcnQoKQogewotICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5kKQorICAgIGlmICghbV9w
b3J0TGVuZ3RoKQogICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtX3N0cmlu
Zy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CisgICAg
VVJMUGFyc2VyIHBhcnNlcihtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJz
dHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CiB9CiAKQEAgLTQ2NiwxMCArNDY3LDEwIEBAIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2ln
bmVkIHNob3J0IGkpCiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0gbV9ob3N0RW5kOworICAgIGJvb2wgY29s
b25OZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOwogICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xv
bk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOwogCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8g
IjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVu
ZCkpKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChwb3J0
U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIFN0cmluZzo6bnVtYmVyKGkpLCBtX3N0
cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwogICAgICp0aGlzID0g
cGFyc2VyLnJlc3VsdCgpOwogfQogCkBAIC01MDksNyArNTEwLDcgQEAgdm9pZCBVUkw6OnNldEhv
c3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaAogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjoiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocG9ydCk7CiAgICAgfQotICAgIGJ1aWxkZXIu
YXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CiAKICAgICBV
UkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7CkBAIC02NTgsNyArNjU5LDcgQEAgdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3Ry
aW5nJiBzKQogICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNo
YXJhY3RlcikgewogICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIg
PT0gJyMnOwogICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV9wb3J0RW5kKSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0
aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKG1fcGF0aEVuZCkpKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5j
b2RlQ2hhcmFjdGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOwogICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAkocmV2aXNpb24gMjMzNzcyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSwz
OCArMjE5LDMyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIs
IDUxMj4mIGJ1ZmZlcikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgYm9vbCBt
X2lzVmFsaWQgOiAxOwotICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKLSAg
ICBib29sIG1fY2Fubm90QmVBQmFzZVVSTCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX3NjaGVtZUVu
ZDsKKyAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSA6IDE7CisgICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsK
KworICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsbGlnbiB0aGUgYml0cyBiZXR0ZXIu
IFRoZSBwb3J0IGlzIGFmdGVyIHRoZSBob3N0LgorICAgIHVuc2lnbmVkIG1fcG9ydExlbmd0aCA6
IDM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhQb3J0TGVuZ3RoID0gKDEgPDwg
MykgLSAxOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTY2hlbWVMZW5ndGgg
PSAoMSA8PCAyNikgLSAxOworICAgIHVuc2lnbmVkIG1fc2NoZW1lRW5kIDogMjY7CiAgICAgdW5z
aWduZWQgbV91c2VyU3RhcnQ7CiAgICAgdW5zaWduZWQgbV91c2VyRW5kOwogICAgIHVuc2lnbmVk
IG1fcGFzc3dvcmRFbmQ7CiAgICAgdW5zaWduZWQgbV9ob3N0RW5kOwotICAgIHVuc2lnbmVkIG1f
cG9ydEVuZDsKICAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICB1bnNpZ25l
ZCBtX3BhdGhFbmQ7CiAgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKIH07CiAKK3N0YXRpY19hc3Nl
cnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwg
IlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOworCiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8
IG1fc3RyaW5nOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9pc1ZhbGlkKTsK
LSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8Ym9vbD4obV9wcm90b2NvbElzSW5IVFRQRmFtaWx5KTsKLSAgICBlbmNvZGVyIDw8
IG1fc2NoZW1lRW5kOwotICAgIGVuY29kZXIgPDwgbV91c2VyU3RhcnQ7Ci0gICAgZW5jb2RlciA8
PCBtX3VzZXJFbmQ7Ci0gICAgZW5jb2RlciA8PCBtX3Bhc3N3b3JkRW5kOwotICAgIGVuY29kZXIg
PDwgbV9ob3N0RW5kOwotICAgIGVuY29kZXIgPDwgbV9wb3J0RW5kOwotICAgIGVuY29kZXIgPDwg
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgZW5jb2RlciA8PCBtX3BhdGhFbmQ7Ci0gICAgZW5j
b2RlciA8PCBtX3F1ZXJ5RW5kOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KQEAgLTI2
NiwzOCArMjYwLDEwIEBAIGJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiAK
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgVVJMIHVybDsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybC5tX3N0cmluZykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYm9v
bCBpc1ZhbGlkOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNWYWxpZCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdXJsLm1faXNWYWxpZCA9IGlzVmFsaWQ7Ci0gICAgaWYg
KCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gV1RGTW92ZSh1cmwpOwotICAgIGJvb2wgcHJvdG9j
b2xJc0luSFRUUEZhbWlseTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHVybC5tX3Byb3Rv
Y29sSXNJbkhUVFBGYW1pbHkgPSBwcm90b2NvbElzSW5IVFRQRmFtaWx5OwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodXJsLm1fc2NoZW1lRW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3VzZXJTdGFydCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV91c2VyRW5k
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHVybC5tX3Bhc3N3b3JkRW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX2hvc3RFbmQpKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsLm1fcG9ydEVuZCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodXJsLm1fcGF0aEVuZCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9xdWVyeUVuZCkpCisgICAgU3RyaW5n
IHN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFdURk1vdmUodXJsKTsKKyAgICByZXR1cm4gVVJM
KFVSTCgpLCBzdHJpbmcpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7CkBAIC00MDAsNyArMzY2LDcgQEAgaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkgY29u
c3QKIAogaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
YXRoRW5kICE9IG1fcG9ydEVuZDsKKyAgICByZXR1cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aDsKIH0KIAogaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0
CkBAIC00NDAsNyArNDA2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFVSTDo6aG9zdEVuZCgpIGNvbnN0
CiAKIGlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcG9ydEVuZDsKKyAgICByZXR1cm4gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwogfQogCiBp
bmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjMzNzcyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDE3ICs1MDIsMTcg
QEAgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcgogYm9vbCBVUkxQYXJz
ZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKIHsKICAgICBp
ZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFz
ZS5tX3BvcnRFbmQgPCBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcu
bGVuZ3RoKCkpOwogICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewogICAgICAg
ICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwot
ICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1fcG9y
dEVuZCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBD
b2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5t
X3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CiAgICAgICAgICAgICAgICAgYXBw
ZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgVUNoYXIq
IGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIENvZGVQ
b2ludEl0ZXJhdG9yPFVDaGFyPiBjKGJlZ2luICsgYmFzZS5tX3BvcnRFbmQgKyAxLCBiZWdpbiAr
IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8
VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwg
YmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChpc1dpbmRv
d3NEcml2ZUxldHRlcihjKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxl
dHRlcihjKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg0Niw3ICs4NDYsNyBA
QCBzaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uCiAgICAgY2FzZSBVUkxQ
YXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CiAgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CiAgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICByZXR1cm4gdXJs
Lm1fcG9ydEVuZDsKKyAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQgKyB1cmwubV9wb3J0TGVu
Z3RoOwogICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKICAgICAgICAgcmV0dXJuIHVybC5tX2hv
c3RFbmQ7CiAgICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKQEAgLTg5OCw3ICs4OTgsNyBA
QCB2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwoY29uc3QgCiAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICBtX3Vy
bC5tX3BvcnRFbmQgPSBiYXNlLm1fcG9ydEVuZDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gYmFzZS5tX3BvcnRMZW5ndGg7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgVVJM
UGFydDo6SG9zdEVuZDoKICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7
CkBAIC0xMDQzLDcgKzEwNDMsNyBAQCBib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNp
Z25lZCBuCiAKICAgICBBU1NFUlQobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gbV9hc2Np
aUJ1ZmZlci5zaXplKCkpOwogICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjb21wb25lbnRU
b1BvcCgmbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdLCAmbV9hc2NpaUJ1ZmZl
clswXSArIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKLSAgICBpZiAobmV3UGF0aEFmdGVy
TGFzdFNsYXNoID09IG1fdXJsLm1fcG9ydEVuZCArIDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIo
Y29tcG9uZW50VG9Qb3ApKQorICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRl
cihjb21wb25lbnRUb1BvcCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTEwNTEsMTEgKzEwNTEsMTEgQEAgYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBvcFBh
dGgodW5zaWduZWQgbgogdm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQogewogICAgIEFTU0VSVCht
X2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID4gbV91cmwubV9wb3J0RW5kICsgMSkgeworICAgIGlmIChtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEpIHsKICAg
ICAgICAgYXV0byBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCAtIDE7CiAgICAgICAgIGlmIChtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFz
aF0gPT0gJy8nKQogICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07Ci0gICAgICAg
IHdoaWxlIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX3BvcnRFbmQgJiYgbV9hc2Np
aUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcvJykKKyAgICAgICAgd2hpbGUgKG5l
d1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0
aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0gJy8nKQogICAgICAg
ICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CiAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RT
bGFzaCsrOwogICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gp
KQpAQCAtMTI3MSw3ICsxMjcxLDEyIEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFy
YWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fc2No
ZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNj
aGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2NoZW1l
RW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOwogICAgICAgICAgICAg
ICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwubV9zY2hl
bWVFbmQpOwogICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CkBAIC0xMzIxLDcgKzEzMjYs
NyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fY2Fu
bm90QmVBQmFzZVVSTCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDsKQEAgLTEzOTUsNyArMTQwMCw3IEBAIHZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwogICAgICAgICAgICAgfQpAQCAtMTQ1MSw3ICsxNDU2LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBh
cnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBpc1VURjhF
bmNvZGluZyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BvcnRFbmQg
KyAxOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UGF0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUy
MCw3ICsxNTI1LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAog
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9u
KGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlckVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9
IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlckVuZDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihh
dXRob3JpdHlPckhvc3RCZWdpbik7CkBAIC0xNTkwLDcgKzE1OTUsNyBAQCB2b2lkIFVSTFBhcnNl
cjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTE2MTIsNyArMTYxNyw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShj
b25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKQEAgLTE2
MzAsNyArMTYzNSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAK
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVy
KGMpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMp
OwpAQCAtMTY1MCw3ICsxNjU1LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJh
Y3RlclR5cAogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAg
IGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpGaWxlSG9zdDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE2NjEsNyArMTY2Niw3IEBA
IHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9w
YXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAg
ICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKICAgICAgICAgICAgICAg
ICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CiAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CkBAIC0xNzIwLDcgKzE3
MjUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKQEAgLTE4NzUsNyArMTg4MCw3IEBAIHZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKQEAgLTE4ODcsNyArMTg5Miw3IEBAIHZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJSZWxhdGl2ZVNsYXNoIik7CiAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBh
cnQ6OlBvcnRFbmQsIGMsIGlzVVRGOEVuY29kaW5nKTsKICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9w
b3J0RW5kICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBicmVhazsKQEAgLTE4OTcs
NyArMTkwMiw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAg
ICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwpAQCAtMTkxNCw3ICsxOTE5LDcgQEAgdm9pZCBVUkxQ
YXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICB9IGVsc2UgaWYg
KCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewogICAgICAgICAgICAg
ZmFpbHVyZSgpOwpAQCAtMTkyMyw5ICsxOTI4LDkgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNv
bnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CiAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwogICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BvcnRFbmQgKyAxOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BvcnRFbmQ7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9w
b3J0TGVuZ3RoOwogICAgICAgICB9CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV9wYXRoRW5kOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9w
YXRoRW5kOwpAQCAtMTkzOSw5ICsxOTQ0LDkgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0
IENoYXJhY3RlclR5cAogICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjKTsKICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZCArIDE7Cisg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3Bv
cnRMZW5ndGggKyAxOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fcG9ydEVuZDsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIGJyZWFrOwpAQCAtMTk1Nyw3ICsxOTYyLDcgQEAg
dm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTk3MCw3ICsxOTc1LDcgQEAg
dm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIGlmIChjb3B5QmFzZVdp
bmRvd3NEcml2ZUxldHRlcihiYXNlKSkgewogICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignLycpOwogICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDQ7CkBAIC0xOTk5LDcgKzIwMDQsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFy
c2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Cisg
ICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgICAg
IG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKQEAgLTIwMTUs
MTAgKzIwMjAsMTAgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAog
ICAgICAgICBpZiAoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVu
ZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSB7CiAgICAgICAg
ICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKICAgICAgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1f
dXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcG9ydEVuZCAr
IDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5k
ICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgYnJlYWs7CkBAIC0yNjAxLDcgKzI2MDYs
OSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhCiAgICAgYWR2YW5j
ZShpdGVyYXRvciwgY29sb25JdGVyYXRvcik7CiAgICAgdWludDMyX3QgcG9ydCA9IDA7CiAgICAg
aWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9y
dExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihjb2xvbkl0ZXJhdG9yKSAtIG1fdXJsLm1faG9zdEVu
ZDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5n
dGgpOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgICAgICBz
eW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTI2MzgsNyArMjY0NSw5IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZVBvcnQoQ29kZVBv
aW50SXRlcmEKICAgICAgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50MTZfdD4oc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKICAgICB9CiAKLSAgICBtX3VybC5tX3BvcnRFbmQg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgIFJFTEVBU0Vf
QVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjY0LDcg
KzI2NzMsNyBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2NkVuZCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihp
cHY2RW5kKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX2hvc3RF
bmQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKQEAgLTI2ODcsNyArMjY5Niw3IEBAIGJv
b2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAgfQogICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
cGFyc2VQb3J0KGl0ZXJhdG9yKTsKQEAgLTI3MDgsNyArMjcxNyw3IEBAIGJvb2wgVVJMUGFyc2Vy
OjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRk
cmVzcy52YWx1ZSgpKTsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwYXJzZVBv
cnQoaXRlcmF0b3IpOwpAQCAtMjcyNyw3ICsyNzM2LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNl
SG9zdEFuZFBvcnQoQ29kZVBvaQogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXRlcmF0b3IpOwogICAgICAgICBpZiAoIWhvc3RJdGVyYXRvci5hdEVuZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChob3N0SXRlcmF0b3IpOwotICAgICAgICBtX3VybC5t
X3BvcnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICB1bnNpZ25lZCBw
b3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKSAtIG1fdXJsLm1faG9zdEVuZDsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgp
OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0yNzY5LDcgKzI3ODAsNyBAQCBib29sIFVSTFBhcnNl
cjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVz
cy52YWx1ZSgpKTsKICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0
ZXJhdG9yKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAgIG1f
dXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBAIC0yNzgxLDcgKzI3OTIs
NyBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKICAgICBpZiAoIWl0ZXJhdG9y
LmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgIG1fdXJs
Lm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjg2OCwyOSArMjg3OSwyOSBA
QCBjb25zdCBVSUROQSYgVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tCiAKIGJvb2wgVVJMUGFy
c2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKLSAgICAv
LyBGSVhNRTogbV9jYW5ub3RCZUFCYXNlVVJMIGlzIG5vdCBjb21wYXJlZCBiZWNhdXNlIHRoZSBv
bGQgVVJMOjpwYXJzZSBkaWQgbm90IHVzZSBpdCwKLSAgICAvLyBidXQgb25jZSB3ZSBnZXQgcmlk
IG9mIFVSTDo6cGFyc2UgaXRzIHZhbHVlIHNob3VsZCBiZSB0ZXN0ZWQuCi0gICAgVVJMX1BBUlNF
Ul9MT0coIiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzXG4lZCAlZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlcyIsCisgICAgVVJMX1BBUlNFUl9MT0coIiVkICVkICVkICVk
ICVkICVkICVkICVkICVkICVkICVkICVkICVzXG4lZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAl
ZCAlZCAlZCAlcyIsCiAgICAgICAgIGEubV9pc1ZhbGlkLAorICAgICAgICBhLm1fY2Fubm90QmVB
QmFzZVVSTCwKICAgICAgICAgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHksCiAgICAgICAgIGEu
bV9zY2hlbWVFbmQsCiAgICAgICAgIGEubV91c2VyU3RhcnQsCiAgICAgICAgIGEubV91c2VyRW5k
LAogICAgICAgICBhLm1fcGFzc3dvcmRFbmQsCiAgICAgICAgIGEubV9ob3N0RW5kLAotICAgICAg
ICBhLm1fcG9ydEVuZCwKKyAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKICAg
ICAgICAgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCwKICAgICAgICAgYS5tX3BhdGhFbmQsCiAgICAg
ICAgIGEubV9xdWVyeUVuZCwKICAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAogICAg
ICAgICBiLm1faXNWYWxpZCwKKyAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCiAgICAgICAg
IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAogICAgICAgICBiLm1fc2NoZW1lRW5kLAogICAg
ICAgICBiLm1fdXNlclN0YXJ0LAogICAgICAgICBiLm1fdXNlckVuZCwKICAgICAgICAgYi5tX3Bh
c3N3b3JkRW5kLAogICAgICAgICBiLm1faG9zdEVuZCwKLSAgICAgICAgYi5tX3BvcnRFbmQsCisg
ICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCiAgICAgICAgIGIubV9wYXRoQWZ0
ZXJMYXN0U2xhc2gsCiAgICAgICAgIGIubV9wYXRoRW5kLAogICAgICAgICBiLm1fcXVlcnlFbmQs
CkBAIC0yODk4LDEzICsyOTA5LDE0IEBAIGJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChj
b25zdCBVUkwKIAogICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKICAgICAgICAg
JiYgYS5tX2lzVmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJh
c2VVUkwgPT0gYi5tX2Nhbm5vdEJlQUJhc2VVUkwKICAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJ
bkhUVFBGYW1pbHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKICAgICAgICAgJiYgYS5t
X3NjaGVtZUVuZCA9PSBiLm1fc2NoZW1lRW5kCiAgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0g
Yi5tX3VzZXJTdGFydAogICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAogICAg
ICAgICAmJiBhLm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCiAgICAgICAgICYmIGEu
bV9ob3N0RW5kID09IGIubV9ob3N0RW5kCi0gICAgICAgICYmIGEubV9wb3J0RW5kID09IGIubV9w
b3J0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCiAgICAg
ICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFzaAog
ICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAogICAgICAgICAmJiBhLm1fcXVl
cnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOwpAQCAtMjkxNiw4ICsyOTI4LDcgQEAgYm9vbCBVUkxQYXJz
ZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudAogICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQg
PD0gdXJsLm1fdXNlckVuZAogICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3
b3JkRW5kCiAgICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKLSAg
ICAgICAgJiYgdXJsLm1faG9zdEVuZCA8PSB1cmwubV9wb3J0RW5kCi0gICAgICAgICYmIHVybC5t
X3BvcnRFbmQgPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCisgICAgICAgICYmIHVybC5tX2hv
c3RFbmQgKyB1cmwubV9wb3J0TGVuZ3RoIDw9IHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaAogICAg
ICAgICAmJiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gdXJsLm1fcGF0aEVuZAogICAgICAg
ICAmJiB1cmwubV9wYXRoRW5kIDw9IHVybC5tX3F1ZXJ5RW5kCiAgICAgICAgICYmIHVybC5tX3F1
ZXJ5RW5kIDw9IHVybC5tX3N0cmluZy5sZW5ndGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCShyZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1aW50
NjRfdCBzY2hlbWFWZXJzaW9uID0gMjsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJz
aW9uID0gMzsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjMzNzgwKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxOC0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlZHVjZSBzaXplIG9mIFdlYkNvcmU6OlVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2ODIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgSW5jcmVtZW50IGNhY2hlIHZlcnNpb24gYmVjYXVz
ZSBvZiBVUkwgZW5jb2RpbmcgY2hhbmdlLgorCiAyMDE4LTA3LTEyICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjMyMzU2KTogQWZ0ZXIg
em9vbWluZyBhIHBhZ2UgaW4gYW5kIG91dCwgaXQncyBwb3NzaWJsZSB0byB0ZW1wb3JhcmlseSBo
YXZlIG1pc3NpbmcgdGlsZXMgKGdvb2dsZS5jb20sIGFwcGxlLmNvbSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5oCShyZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgYXBwcm94aW1hdGVTaXplKCkgY29uc3Q7CiAKICAg
ICAvLyBJbmNyZW1lbnRpbmcgdGhpcyBudW1iZXIgd2lsbCBkZWxldGUgYWxsIGV4aXN0aW5nIGNh
Y2hlIGNvbnRlbnQgZm9yIGV2ZXJ5b25lLiBEbyB5b3UgcmVhbGx5IG5lZWQgdG8gZG8gaXQ/Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxMjsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgdmVyc2lvbiA9IDEzOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLy8gQWxsb3cg
dGhlIGxhc3Qgc3RhYmxlIHZlcnNpb24gb2YgdGhlIGNhY2hlIHRvIGNvLWV4aXN0IHdpdGggdGhl
IGxhdGVzdCBkZXZlbG9wbWVudCBvbmUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxhc3RT
dGFibGVWZXJzaW9uID0gMTI7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3NzIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNy0xMiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBzaXplIG9mIFdl
YkNvcmU6OlVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg2ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAxOC0wNy0xMSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gUGFzcyB0aGUgYmFja2Vu
ZCBsaWJyYXJ5IG5hbWUgYXMgY29tbWFuZCBsaW5lIHBhcmFtZXRlciB0byB0aGUgd2ViIHByb2Nl
c3MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMzM3NzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3OSw2ICsxMTc5LDkgQEAg
VEVTVF9GKFVSTFBhcnNlclRlc3QsIERlZmF1bHRQb3J0KQogICAgIGNoZWNrVVJMRGlmZmVyZW5j
ZXMoImZpbGU6Ly86MC9wYXRoIiwKICAgICAgICAgeyIiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIs
ICIiLCAiZmlsZTovLzowL3BhdGgifSwKICAgICAgICAgeyJmaWxlIiwgIiIsICIiLCAiIiwgMCwg
Ii9wYXRoIiwgIiIsICIiLCAiZmlsZTovLzowL3BhdGgifSk7CisgICAgCisgICAgY2hlY2tVUkwo
Imh0dHA6Ly9leGFtcGxlLmNvbTowMDAwMDAwMDAwMDAwMDc3IiwgeyJodHRwIiwgIiIsICIiLCAi
ZXhhbXBsZS5jb20iLCA3NywgIi8iLCAiIiwgIiIsICJodHRwOi8vZXhhbXBsZS5jb206NzcvIn0p
OworICAgIGNoZWNrVVJMKCJodHRwOi8vZXhhbXBsZS5jb206MDAwMDAwMDAwMDAwMDA4MCIsIHsi
aHR0cCIsICIiLCAiIiwgImV4YW1wbGUuY29tIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vZXhh
bXBsZS5jb20vIn0pOwogfQogCiBURVNUX0YoVVJMUGFyc2VyVGVzdCwgUGFyc2VyRmFpbHVyZXMp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344878</attachid>
            <date>2018-07-12 13:38:07 -0700</date>
            <delta_ts>2018-07-12 14:38:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186820-20180712133807.patch</filename>
            <type>text/plain</type>
            <size>32779</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA3LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNp
emUgb2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgor
CisgICAgICAgIFdlIHdlcmUgdXNpbmcgMzIgYml0cyBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgcG9y
dCwgd2hpY2ggaXMgYWx3YXlzIGJldHdlZW4gMCBhbmQgNSBpbmNsdXNpdmUKKyAgICAgICAgYmVj
YXVzZSBwb3J0IG51bWJlcnMgYXJlIG1pc3Npbmcgb3IgYmV0d2VlbiAwIGFuZCA2NTUzNS4gIExl
dCdzIGp1c3QgdXNlIDMgYml0cyBoZXJlLgorICAgICAgICBXZSB3ZXJlIHVzaW5nIDMyIGJpdHMg
Zm9yIHRoZSBsZW5ndGggb2YgdGhlIHNjaGVtZSwgd2hpY2ggaXMgdXN1YWxseSAzLTUgY2hhcmFj
dGVycyBhbmQgY2FuIGJlCisgICAgICAgIGxvbmdlciBmb3Igc29tZSBjdXN0b20gc2NoZW1lcywg
YnV0IEkndmUgbmV2ZXIgc2VlbiBvbmUgbW9yZSB0aGFuIDIwIGNoYXJhY3RlcnMuICBJZiB3ZSBh
c3N1bWUKKyAgICAgICAgc2NoZW1lcyBhcmUgYWx3YXlzIGxlc3MgdGhhbiA2NE1CLCB3ZSBjYW4g
c2F2ZSA4IGJ5dGVzIHBlciBVUkwhCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBq
dXN0IGxlc3MgbWVtb3J5IHVzZSEKKyAgICAgICAgCisgICAgICAgIFRvIHJlc3RvcmUgdGhlIElQ
QyBlbmNvZGluZyB0byBob3cgaXQgd2FzIGJlZm9yZSByMjIxMTY1LCBJIGp1c3QgZW5jb2RlIHRo
ZSBzdHJpbmcgYW5kIHJlcGFyc2UgaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6bGFzdFBhdGhDb21wb25lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwb3J0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMOjpyZW1vdmVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6c2V0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpVUkw6Omhhc1BhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMOjpwYXRoU3RhcnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTFBhcnNlcjo6cG9wUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VQb3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpV
UkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6
aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgSW5jcmVtZW50IHRoZSBzZXJ2
aWNlIHdvcmtlciByZWdpc3RyYXRpb24gc2NoZW1hIHZlcnNpb24gYmVjYXVzZSBvZiB0aGUgVVJM
IGVuY29kaW5nIGNoYW5nZS4KKwogMjAxOC0wNy0xMiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbXBpbGUgZ3VhcmQgZm9yIGVuYWJsaW5nIE5T
UnVuTG9vcCBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuY3BwCShyZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgVVJMOjppbnZhbGlkYXRl
KCkKICAgICBtX3VzZXJFbmQgPSAwOwogICAgIG1fcGFzc3dvcmRFbmQgPSAwOwogICAgIG1faG9z
dEVuZCA9IDA7Ci0gICAgbV9wb3J0RW5kID0gMDsKKyAgICBtX3BvcnRMZW5ndGggPSAwOwogICAg
IG1fcGF0aEVuZCA9IDA7CiAgICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSAwOwogICAgIG1fcXVl
cnlFbmQgPSAwOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9u
ZW50KCkgY29uc3QKICAgICAgICAgLS1lbmQ7CiAKICAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmlu
Zy5yZXZlcnNlRmluZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fcG9ydEVuZCkpCisgICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICArK3N0YXJ0OwogCkBAIC0xNjQsMTUgKzE2NCwxNSBAQCBTdHJpbmdWaWV3IFVSTDo6aG9zdCgp
IGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3BvcnRFbmQgfHwgbV9ob3N0RW5kID49IG1fcG9ydEVuZCAtIDEpCisgICAgaWYg
KCFtX3BvcnRMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29s
IG9rID0gZmFsc2U7CiAgICAgdW5zaWduZWQgbnVtYmVyOwogICAgIGlmIChtX3N0cmluZy5pczhC
aXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5j
aGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0RW5kIC0gbV9ob3N0RW5kIC0gMSwg
Jm9rKTsKKyAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5j
aGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKICAg
ICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcu
Y2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQgLSAx
LCAmb2spOworICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5n
LmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsK
ICAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbnVtYmVyOwpA
QCAtMTg3LDcgKzE4Nyw3IEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIAogU3Ry
aW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3Vs
dCA9IG1fc3RyaW5nLnN1YnN0cmluZygwLCBtX3BvcnRFbmQpOworICAgIFN0cmluZyByZXN1bHQg
PSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKIAogICAg
IGlmIChtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQgPiAwKSB7CiAgICAgICAgIGNvbnN0IGlu
dCBhbGxvd0ZvclRyYWlsaW5nQXRTaWduID0gMTsKQEAgLTM3MCw3ICszNzAsOCBAQCBTdHJpbmcg
VVJMOjpxdWVyeSgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnBhdGgoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kLCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQp
OworICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CisgICAg
cmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsK
IH0KIAogYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKQEAgLTQ1NSw5ICs0
NTYsOSBAQCB2b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCiAKIHZvaWQgVVJMOjpy
ZW1vdmVQb3J0KCkKIHsKLSAgICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKKyAgICBpZiAo
IW1fcG9ydExlbmd0aCkKICAgICAgICAgcmV0dXJuOwotICAgIFVSTFBhcnNlciBwYXJzZXIobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwor
ICAgIFVSTFBhcnNlciBwYXJzZXIobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcu
c3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwogICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOwogfQogCkBAIC00NjYsMTAgKzQ2NywxMCBAQCB2b2lkIFVSTDo6c2V0UG9ydCh1
bnNpZ25lZCBzaG9ydCBpKQogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVuZDsKKyAgICBib29s
IGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsKICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAo
Y29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKIAotICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRl
ZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3Bv
cnRFbmQpKSk7CisgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQo
cG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwg
bV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKICAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKIH0KIApAQCAtNTA5LDcgKzUxMCw3IEBAIHZvaWQgVVJMOjpz
ZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGgKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI6Iik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwogICAgIH0KLSAgICBidWls
ZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CisgICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOwogCiAg
ICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOwpAQCAtNjU4LDcgKzY1OSw3IEBAIHZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0
IFN0cmluZyYgcykKICAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hh
ciBjaGFyYWN0ZXIpIHsKICAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFj
dGVyID09ICcjJzsKICAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcG9ydEVuZCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJz
KHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSwgcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKICAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHJldmlzaW9uIDIzMzc3
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTksMzggKzIxOSwzMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3Rvcjxj
aGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIGJv
b2wgbV9pc1ZhbGlkIDogMTsKLSAgICBib29sIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7
Ci0gICAgYm9vbCBtX2Nhbm5vdEJlQUJhc2VVUkwgOiAxOwogCi0gICAgdW5zaWduZWQgbV9zY2hl
bWVFbmQ7CisgICAgdW5zaWduZWQgbV9pc1ZhbGlkIDogMTsKKyAgICB1bnNpZ25lZCBtX3Byb3Rv
Y29sSXNJbkhUVFBGYW1pbHkgOiAxOworICAgIHVuc2lnbmVkIG1fY2Fubm90QmVBQmFzZVVSTCA6
IDE7CisKKyAgICAvLyBUaGlzIGlzIG91dCBvZiBvcmRlciB0byBhbGlnbiB0aGUgYml0cyBiZXR0
ZXIuIFRoZSBwb3J0IGlzIGFmdGVyIHRoZSBob3N0LgorICAgIHVuc2lnbmVkIG1fcG9ydExlbmd0
aCA6IDM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhQb3J0TGVuZ3RoID0gKDEg
PDwgMykgLSAxOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTY2hlbWVMZW5n
dGggPSAoMSA8PCAyNikgLSAxOworICAgIHVuc2lnbmVkIG1fc2NoZW1lRW5kIDogMjY7CiAgICAg
dW5zaWduZWQgbV91c2VyU3RhcnQ7CiAgICAgdW5zaWduZWQgbV91c2VyRW5kOwogICAgIHVuc2ln
bmVkIG1fcGFzc3dvcmRFbmQ7CiAgICAgdW5zaWduZWQgbV9ob3N0RW5kOwotICAgIHVuc2lnbmVk
IG1fcG9ydEVuZDsKICAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICB1bnNp
Z25lZCBtX3BhdGhFbmQ7CiAgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKIH07CiAKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVk
KSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOworCiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IG1fc3RyaW5nOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4obV9pc1ZhbGlk
KTsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8Ym9vbD4obV9wcm90b2NvbElzSW5IVFRQRmFtaWx5KTsKLSAgICBlbmNvZGVy
IDw8IG1fc2NoZW1lRW5kOwotICAgIGVuY29kZXIgPDwgbV91c2VyU3RhcnQ7Ci0gICAgZW5jb2Rl
ciA8PCBtX3VzZXJFbmQ7Ci0gICAgZW5jb2RlciA8PCBtX3Bhc3N3b3JkRW5kOwotICAgIGVuY29k
ZXIgPDwgbV9ob3N0RW5kOwotICAgIGVuY29kZXIgPDwgbV9wb3J0RW5kOwotICAgIGVuY29kZXIg
PDwgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgZW5jb2RlciA8PCBtX3BhdGhFbmQ7Ci0gICAg
ZW5jb2RlciA8PCBtX3F1ZXJ5RW5kOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KQEAg
LTI2NiwzOCArMjYwLDEwIEBAIGJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJM
JiAKIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgVVJMIHVybDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHVybC5tX3N0cmluZykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
Ym9vbCBpc1ZhbGlkOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNWYWxpZCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdXJsLm1faXNWYWxpZCA9IGlzVmFsaWQ7Ci0gICAg
aWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gV1RGTW92ZSh1cmwpOwotICAgIGJvb2wgcHJv
dG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHVybC5tX3By
b3RvY29sSXNJbkhUVFBGYW1pbHkgPSBwcm90b2NvbElzSW5IVFRQRmFtaWx5OwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodXJsLm1fc2NoZW1lRW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3VzZXJTdGFydCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV91c2Vy
RW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybC5tX3Bhc3N3b3JkRW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX2hvc3RFbmQpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsLm1fcG9ydEVuZCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2gpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodXJsLm1fcGF0aEVuZCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9xdWVyeUVuZCkpCisgICAgU3Ry
aW5nIHN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFdURk1vdmUodXJsKTsKKyAgICByZXR1cm4g
VVJMKFVSTCgpLCBzdHJpbmcpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29u
c3QgVVJMJik7CkBAIC00MDAsNyArMzY2LDcgQEAgaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkg
Y29uc3QKIAogaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wYXRoRW5kICE9IG1fcG9ydEVuZDsKKyAgICByZXR1cm4gbV9wYXRoRW5kICE9IG1faG9zdEVu
ZCArIG1fcG9ydExlbmd0aDsKIH0KIAogaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNv
bnN0CkBAIC00NDAsNyArNDA2LDcgQEAgaW5saW5lIHVuc2lnbmVkIFVSTDo6aG9zdEVuZCgpIGNv
bnN0CiAKIGlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFydCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcG9ydEVuZDsKKyAgICByZXR1cm4gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwogfQog
CiBpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjMzNzcyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDE3ICs1MDIs
MTcgQEAgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcgogYm9vbCBVUkxQ
YXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKIHsKICAg
ICBpZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmFzZS5tX3BvcnRFbmQgPCBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewogICAg
ICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgp
OwotICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1f
cG9ydEVuZCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAg
ICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFz
ZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwogICAg
ICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CiAgICAgICAgICAgICAgICAg
YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgVUNo
YXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIENv
ZGVQb2ludEl0ZXJhdG9yPFVDaGFyPiBjKGJlZ2luICsgYmFzZS5tX3BvcnRFbmQgKyAxLCBiZWdp
biArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0
b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsg
MSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChpc1dp
bmRvd3NEcml2ZUxldHRlcihjKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2
ZUxldHRlcihjKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg0Niw3ICs4NDYs
NyBAQCBzaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uCiAgICAgY2FzZSBV
UkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CiAgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CiAgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICByZXR1cm4g
dXJsLm1fcG9ydEVuZDsKKyAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQgKyB1cmwubV9wb3J0
TGVuZ3RoOwogICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKICAgICAgICAgcmV0dXJuIHVybC5t
X2hvc3RFbmQ7CiAgICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKQEAgLTg5OCw3ICs4OTgs
NyBAQCB2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwoY29uc3QgCiAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAg
ICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICBt
X3VybC5tX3BvcnRFbmQgPSBiYXNlLm1fcG9ydEVuZDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2Ug
VVJMUGFydDo6SG9zdEVuZDoKICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RF
bmQ7CkBAIC0xMDQzLDcgKzEwNDMsNyBAQCBib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1
bnNpZ25lZCBuCiAKICAgICBBU1NFUlQobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gbV9h
c2NpaUJ1ZmZlci5zaXplKCkpOwogICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjb21wb25l
bnRUb1BvcCgmbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdLCAmbV9hc2NpaUJ1
ZmZlclswXSArIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKLSAgICBpZiAobmV3UGF0aEFm
dGVyTGFzdFNsYXNoID09IG1fdXJsLm1fcG9ydEVuZCArIDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0
ZXIoY29tcG9uZW50VG9Qb3ApKQorICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxl
dHRlcihjb21wb25lbnRUb1BvcCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTEwNTEsMTEgKzEwNTEsMTEgQEAgYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBv
cFBhdGgodW5zaWduZWQgbgogdm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQogewogICAgIEFTU0VS
VChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID4gbV91cmwubV9wb3J0RW5kICsgMSkgeworICAgIGlmIChtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEpIHsK
ICAgICAgICAgYXV0byBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCAtIDE7CiAgICAgICAgIGlmIChtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RT
bGFzaF0gPT0gJy8nKQogICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07Ci0gICAg
ICAgIHdoaWxlIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX3BvcnRFbmQgJiYgbV9h
c2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcvJykKKyAgICAgICAgd2hpbGUg
KG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExl
bmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0gJy8nKQogICAg
ICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CiAgICAgICAgIG5ld1BhdGhBZnRlckxh
c3RTbGFzaCsrOwogICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2gpKQpAQCAtMTI3MSw3ICsxMjcxLDEyIEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBD
aGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwogICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1f
c2NoZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHNjaGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2No
ZW1lRW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFp
bHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOwogICAgICAgICAg
ICAgICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwubV9z
Y2hlbWVFbmQpOwogICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CkBAIC0xMzIxLDcgKzEz
MjYsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
Y2Fubm90QmVBQmFzZVVSTCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDsKQEAgLTEzOTUsNyArMTQwMCw3IEBAIHZvaWQg
VVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
b3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQ
YXRoOwogICAgICAgICAgICAgfQpAQCAtMTQ1MSw3ICsxNDU2LDcgQEAgdm9pZCBVUkxQYXJzZXI6
OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBpc1VU
RjhFbmNvZGluZyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BvcnRF
bmQgKyAxOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFz
ZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6UGF0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTUyMCw3ICsxNTI1LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5
cAogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlckVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVu
ZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlckVuZDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlv
bihhdXRob3JpdHlPckhvc3RCZWdpbik7CkBAIC0xNTkwLDcgKzE1OTUsNyBAQCB2b2lkIFVSTFBh
cnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTE2MTIsNyArMTYxNyw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJz
ZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKQEAg
LTE2MzAsNyArMTYzNSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJU
eXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91
c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwog
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1f
dXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0
dGVyKGMpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVy
KGMpOwpAQCAtMTY1MCw3ICsxNjU1LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENo
YXJhY3RlclR5cAogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAg
ICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpGaWxlSG9zdDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE2NjEsNyArMTY2Niw3
IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CiAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKICAgICAgICAgICAg
ICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CiAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CkBAIC0xNzIwLDcg
KzE3MjUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVu
ZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKQEAgLTE4NzUsNyArMTg4MCw3IEBAIHZvaWQg
VVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKQEAgLTE4ODcsNyArMTg5Miw3IEBAIHZvaWQg
VVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgTE9HX0ZJTkFMX1NU
QVRFKCJSZWxhdGl2ZVNsYXNoIik7CiAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlBvcnRFbmQsIGMsIGlzVVRGOEVuY29kaW5nKTsKICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLycpOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2Uu
bV9wb3J0RW5kICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwogICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBicmVhazsKQEAgLTE4
OTcsNyArMTkwMiw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAK
ICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1f
dXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9x
dWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwpAQCAtMTkxNCw3ICsxOTE5LDcgQEAgdm9pZCBV
UkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3Jk
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICB9IGVsc2Ug
aWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewogICAgICAgICAg
ICAgZmFpbHVyZSgpOwpAQCAtMTkyMyw5ICsxOTI4LDkgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CiAg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwogICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BvcnRFbmQgKyAxOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1f
dXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BvcnRFbmQ7Cisg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoOwogICAgICAgICB9CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV9wYXRoRW5kOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoRW5kOwpAQCAtMTkzOSw5ICsxOTQ0LDkgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNv
bnN0IENoYXJhY3RlclR5cAogICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZCArIDE7
CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5t
X3BvcnRMZW5ndGggKyAxOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fcG9ydEVuZDsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1f
dXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIGJyZWFrOwpAQCAtMTk1Nyw3ICsxOTYyLDcg
QEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgbV91cmwubV9x
dWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTk3MCw3ICsxOTc1LDcg
QEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIGlmIChjb3B5QmFz
ZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkgewogICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOwogICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJTdGFydCArIDQ7CkBAIC0xOTk5LDcgKzIwMDQsNyBAQCB2b2lkIFVSTFBhcnNlcjo6
cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CiAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKQEAgLTIw
MTUsMTAgKzIwMjAsMTAgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5
cAogICAgICAgICBpZiAoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29y
ZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSB7CiAgICAg
ICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKICAgICAg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAg
IG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsKKyAgICAgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcG9ydEVu
ZCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgYnJlYWs7CkBAIC0yNjAxLDcgKzI2
MDYsOSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhCiAgICAgYWR2
YW5jZShpdGVyYXRvciwgY29sb25JdGVyYXRvcik7CiAgICAgdWludDMyX3QgcG9ydCA9IDA7CiAg
ICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7Ci0gICAgICAgIG1fdXJsLm1fcG9y
dEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQg
cG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihjb2xvbkl0ZXJhdG9yKSAtIG1fdXJsLm1faG9z
dEVuZDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRM
ZW5ndGgpOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgICAg
ICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTI2MzgsNyArMjY0NSw5IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZVBvcnQoQ29k
ZVBvaW50SXRlcmEKICAgICAgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50MTZfdD4o
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKICAgICB9CiAKLSAgICBtX3VybC5tX3BvcnRF
bmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIHVuc2lnbmVkIHBvcnRMZW5ndGgg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgIFJFTEVB
U0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjY0
LDcgKzI2NzMsNyBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2NkVuZCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX2hv
c3RFbmQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKQEAgLTI2ODcsNyArMjY5Niw3IEBA
IGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAgfQogICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IDA7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKQEAgLTI3MDgsNyArMjcxNyw3IEBAIGJvb2wgVVJMUGFy
c2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjQo
YWRkcmVzcy52YWx1ZSgpKTsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQ
b3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewot
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRv
cik7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBwYXJz
ZVBvcnQoaXRlcmF0b3IpOwpAQCAtMjcyNyw3ICsyNzM2LDkgQEAgYm9vbCBVUkxQYXJzZXI6OnBh
cnNlSG9zdEFuZFBvcnQoQ29kZVBvaQogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50
UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAgICBpZiAoIWhvc3RJdGVyYXRvci5hdEVuZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChob3N0SXRlcmF0b3IpOwotICAgICAgICBtX3Vy
bC5tX3BvcnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICB1bnNpZ25l
ZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKSAtIG1fdXJsLm1faG9zdEVu
ZDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5n
dGgpOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0yNzY5LDcgKzI3ODAsNyBAQCBib29sIFVSTFBh
cnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRk
cmVzcy52YWx1ZSgpKTsKICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9u
KGl0ZXJhdG9yKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAg
IG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBAIC0yNzgxLDcgKzI3
OTIsNyBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAgICAgbV91
cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKICAgICBpZiAoIWl0ZXJh
dG9yLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgIG1f
dXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgbV91cmwubV9w
b3J0TGVuZ3RoID0gMDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjg2OCwyOSArMjg3OSwy
OSBAQCBjb25zdCBVSUROQSYgVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tCiAKIGJvb2wgVVJM
UGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKLSAg
ICAvLyBGSVhNRTogbV9jYW5ub3RCZUFCYXNlVVJMIGlzIG5vdCBjb21wYXJlZCBiZWNhdXNlIHRo
ZSBvbGQgVVJMOjpwYXJzZSBkaWQgbm90IHVzZSBpdCwKLSAgICAvLyBidXQgb25jZSB3ZSBnZXQg
cmlkIG9mIFVSTDo6cGFyc2UgaXRzIHZhbHVlIHNob3VsZCBiZSB0ZXN0ZWQuCi0gICAgVVJMX1BB
UlNFUl9MT0coIiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzXG4lZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlcyIsCisgICAgVVJMX1BBUlNFUl9MT0coIiVkICVkICVk
ICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzXG4lZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlcyIsCiAgICAgICAgIGEubV9pc1ZhbGlkLAorICAgICAgICBhLm1fY2Fubm90
QmVBQmFzZVVSTCwKICAgICAgICAgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHksCiAgICAgICAg
IGEubV9zY2hlbWVFbmQsCiAgICAgICAgIGEubV91c2VyU3RhcnQsCiAgICAgICAgIGEubV91c2Vy
RW5kLAogICAgICAgICBhLm1fcGFzc3dvcmRFbmQsCiAgICAgICAgIGEubV9ob3N0RW5kLAotICAg
ICAgICBhLm1fcG9ydEVuZCwKKyAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwK
ICAgICAgICAgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCwKICAgICAgICAgYS5tX3BhdGhFbmQsCiAg
ICAgICAgIGEubV9xdWVyeUVuZCwKICAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAog
ICAgICAgICBiLm1faXNWYWxpZCwKKyAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCiAgICAg
ICAgIGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAogICAgICAgICBiLm1fc2NoZW1lRW5kLAog
ICAgICAgICBiLm1fdXNlclN0YXJ0LAogICAgICAgICBiLm1fdXNlckVuZCwKICAgICAgICAgYi5t
X3Bhc3N3b3JkRW5kLAogICAgICAgICBiLm1faG9zdEVuZCwKLSAgICAgICAgYi5tX3BvcnRFbmQs
CisgICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCiAgICAgICAgIGIubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gsCiAgICAgICAgIGIubV9wYXRoRW5kLAogICAgICAgICBiLm1fcXVlcnlF
bmQsCkBAIC0yODk4LDEzICsyOTA5LDE0IEBAIGJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwKIAogICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKICAgICAg
ICAgJiYgYS5tX2lzVmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJl
QUJhc2VVUkwgPT0gYi5tX2Nhbm5vdEJlQUJhc2VVUkwKICAgICAgICAgJiYgYS5tX3Byb3RvY29s
SXNJbkhUVFBGYW1pbHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKICAgICAgICAgJiYg
YS5tX3NjaGVtZUVuZCA9PSBiLm1fc2NoZW1lRW5kCiAgICAgICAgICYmIGEubV91c2VyU3RhcnQg
PT0gYi5tX3VzZXJTdGFydAogICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAog
ICAgICAgICAmJiBhLm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCiAgICAgICAgICYm
IGEubV9ob3N0RW5kID09IGIubV9ob3N0RW5kCi0gICAgICAgICYmIGEubV9wb3J0RW5kID09IGIu
bV9wb3J0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCiAg
ICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFz
aAogICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAogICAgICAgICAmJiBhLm1f
cXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOwpAQCAtMjkxNiw4ICsyOTI4LDcgQEAgYm9vbCBVUkxQ
YXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudAogICAgICAgICAmJiB1cmwubV91c2VyU3Rh
cnQgPD0gdXJsLm1fdXNlckVuZAogICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bh
c3N3b3JkRW5kCiAgICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQK
LSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCA8PSB1cmwubV9wb3J0RW5kCi0gICAgICAgICYmIHVy
bC5tX3BvcnRFbmQgPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCisgICAgICAgICYmIHVybC5t
X2hvc3RFbmQgKyB1cmwubV9wb3J0TGVuZ3RoIDw9IHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaAog
ICAgICAgICAmJiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gdXJsLm1fcGF0aEVuZAogICAg
ICAgICAmJiB1cmwubV9wYXRoRW5kIDw9IHVybC5tX3F1ZXJ5RW5kCiAgICAgICAgICYmIHVybC5t
X3F1ZXJ5RW5kIDw9IHVybC5tX3N0cmluZy5sZW5ndGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1
aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gMjsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFW
ZXJzaW9uID0gMzsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29u
c3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjMzNzgwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxOC0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlZHVjZSBzaXplIG9mIFdlYkNvcmU6OlVSTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2ODIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgSW5jcmVtZW50IGNhY2hlIHZlcnNpb24gYmVj
YXVzZSBvZiBVUkwgZW5jb2RpbmcgY2hhbmdlLgorCiAyMDE4LTA3LTEyICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjMyMzU2KTogQWZ0
ZXIgem9vbWluZyBhIHBhZ2UgaW4gYW5kIG91dCwgaXQncyBwb3NzaWJsZSB0byB0ZW1wb3Jhcmls
eSBoYXZlIG1pc3NpbmcgdGlsZXMgKGdvb2dsZS5jb20sIGFwcGxlLmNvbSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oCShyZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgYXBwcm94aW1hdGVTaXplKCkgY29uc3Q7CiAK
ICAgICAvLyBJbmNyZW1lbnRpbmcgdGhpcyBudW1iZXIgd2lsbCBkZWxldGUgYWxsIGV4aXN0aW5n
IGNhY2hlIGNvbnRlbnQgZm9yIGV2ZXJ5b25lLiBEbyB5b3UgcmVhbGx5IG5lZWQgdG8gZG8gaXQ/
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxMjsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgdmVyc2lvbiA9IDEzOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLy8gQWxs
b3cgdGhlIGxhc3Qgc3RhYmxlIHZlcnNpb24gb2YgdGhlIGNhY2hlIHRvIGNvLWV4aXN0IHdpdGgg
dGhlIGxhdGVzdCBkZXZlbG9wbWVudCBvbmUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxh
c3RTdGFibGVWZXJzaW9uID0gMTI7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3NzIpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNy0xMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBzaXplIG9m
IFdlYkNvcmU6OlVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg2ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAxOC0wNy0xMSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gUGFzcyB0aGUgYmFj
a2VuZCBsaWJyYXJ5IG5hbWUgYXMgY29tbWFuZCBsaW5lIHBhcmFtZXRlciB0byB0aGUgd2ViIHBy
b2Nlc3MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQ
YXJzZXIuY3BwCShyZXZpc2lvbiAyMzM3NzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3OSw2ICsxMTc5LDkg
QEAgVEVTVF9GKFVSTFBhcnNlclRlc3QsIERlZmF1bHRQb3J0KQogICAgIGNoZWNrVVJMRGlmZmVy
ZW5jZXMoImZpbGU6Ly86MC9wYXRoIiwKICAgICAgICAgeyIiLCAiIiwgIiIsICIiLCAwLCAiIiwg
IiIsICIiLCAiZmlsZTovLzowL3BhdGgifSwKICAgICAgICAgeyJmaWxlIiwgIiIsICIiLCAiIiwg
MCwgIi9wYXRoIiwgIiIsICIiLCAiZmlsZTovLzowL3BhdGgifSk7CisgICAgCisgICAgY2hlY2tV
UkwoImh0dHA6Ly9leGFtcGxlLmNvbTowMDAwMDAwMDAwMDAwMDc3IiwgeyJodHRwIiwgIiIsICIi
LCAiZXhhbXBsZS5jb20iLCA3NywgIi8iLCAiIiwgIiIsICJodHRwOi8vZXhhbXBsZS5jb206Nzcv
In0pOworICAgIGNoZWNrVVJMKCJodHRwOi8vZXhhbXBsZS5jb206MDAwMDAwMDAwMDAwMDA4MCIs
IHsiaHR0cCIsICIiLCAiIiwgImV4YW1wbGUuY29tIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8v
ZXhhbXBsZS5jb20vIn0pOwogfQogCiBURVNUX0YoVVJMUGFyc2VyVGVzdCwgUGFyc2VyRmFpbHVy
ZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344883</attachid>
            <date>2018-07-12 14:38:56 -0700</date>
            <delta_ts>2018-07-12 17:25:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186820-20180712143855.patch</filename>
            <type>text/plain</type>
            <size>32904</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTA3LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNp
emUgb2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFu
ZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdlIHdlcmUgdXNpbmcgMzIgYml0cyBmb3IgdGhl
IGxlbmd0aCBvZiB0aGUgcG9ydCwgd2hpY2ggaXMgYWx3YXlzIGJldHdlZW4gMCBhbmQgNSBpbmNs
dXNpdmUKKyAgICAgICAgYmVjYXVzZSBwb3J0IG51bWJlcnMgYXJlIG1pc3Npbmcgb3IgYmV0d2Vl
biAwIGFuZCA2NTUzNS4gIExldCdzIGp1c3QgdXNlIDMgYml0cyBoZXJlLgorICAgICAgICBXZSB3
ZXJlIHVzaW5nIDMyIGJpdHMgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHNjaGVtZSwgd2hpY2ggaXMg
dXN1YWxseSAzLTUgY2hhcmFjdGVycyBhbmQgY2FuIGJlCisgICAgICAgIGxvbmdlciBmb3Igc29t
ZSBjdXN0b20gc2NoZW1lcywgYnV0IEkndmUgbmV2ZXIgc2VlbiBvbmUgbW9yZSB0aGFuIDIwIGNo
YXJhY3RlcnMuICBJZiB3ZSBhc3N1bWUKKyAgICAgICAgc2NoZW1lcyBhcmUgYWx3YXlzIGxlc3Mg
dGhhbiA2NE1CLCB3ZSBjYW4gc2F2ZSA4IGJ5dGVzIHBlciBVUkwhCisKKyAgICAgICAgTm8gY2hh
bmdlIGluIGJlaGF2aW9yLCBqdXN0IGxlc3MgbWVtb3J5IHVzZSEKKyAgICAgICAgCisgICAgICAg
IFRvIHJlc3RvcmUgdGhlIElQQyBlbmNvZGluZyB0byBob3cgaXQgd2FzIGJlZm9yZSByMjIxMTY1
LCBJIGp1c3QgZW5jb2RlIHRoZSBzdHJpbmcgYW5kIHJlcGFyc2UgaXQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTDo6bGFzdFBhdGhDb21wb25lbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cHJvdG9j
b2xIb3N0QW5kUG9ydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhdGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpyZW1vdmVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vVVJM
Lmg6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6Omhhc1BhdGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwYXRoU3RhcnQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvcHlC
YXNlV2luZG93c0RyaXZlTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6dXJs
TGVuZ3RoVW50aWxQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weVVSTFBh
cnRzVW50aWwpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cG9wUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VQ
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
SW5jcmVtZW50IHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gc2NoZW1hIHZlcnNpb24g
YmVjYXVzZSBvZiB0aGUgVVJMIGVuY29kaW5nIGNoYW5nZS4KKwogMjAxOC0wNy0xMiAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbXBpbGUgZ3Vh
cmQgZm9yIGVuYWJsaW5nIE5TUnVuTG9vcCBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCShyZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgVVJMOjppbnZhbGlkYXRlKCkKICAgICBtX3VzZXJFbmQgPSAwOwogICAgIG1fcGFzc3dvcmRF
bmQgPSAwOwogICAgIG1faG9zdEVuZCA9IDA7Ci0gICAgbV9wb3J0RW5kID0gMDsKKyAgICBtX3Bv
cnRMZW5ndGggPSAwOwogICAgIG1fcGF0aEVuZCA9IDA7CiAgICAgbV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSAwOwogICAgIG1fcXVlcnlFbmQgPSAwOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFN0cmluZyBV
Ukw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICAgICAgLS1lbmQ7CiAKICAgICBzaXpl
X3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0
IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCisgICAgaWYgKHN0YXJ0IDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKICAgICArK3N0YXJ0OwogCkBAIC0xNjQsMTUgKzE2NCwxNSBAQCBTdHJp
bmdWaWV3IFVSTDo6aG9zdCgpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6
cG9ydCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvcnRFbmQgfHwgbV9ob3N0RW5kID49IG1fcG9y
dEVuZCAtIDEpCisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgdW5zaWduZWQgbnVtYmVyOwogICAg
IGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUlu
dFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0RW5k
IC0gbV9ob3N0RW5kIC0gMSwgJm9rKTsKKyAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUlu
dFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVu
Z3RoIC0gMSwgJm9rKTsKICAgICBlbHNlCi0gICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJ
bnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRF
bmQgLSBtX2hvc3RFbmQgLSAxLCAmb2spOworICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9V
SW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0
TGVuZ3RoIC0gMSwgJm9rKTsKICAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gbnVtYmVyOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFN0cmluZyBVUkw6Omhvc3RBbmRQ
b3J0KCkgY29uc3QKIAogU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7
Ci0gICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1YnN0cmluZygwLCBtX3BvcnRFbmQpOwor
ICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoKTsKIAogICAgIGlmIChtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQgPiAwKSB7
CiAgICAgICAgIGNvbnN0IGludCBhbGxvd0ZvclRyYWlsaW5nQXRTaWduID0gMTsKQEAgLTM3MCw3
ICszNzAsOCBAQCBTdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0CiAKIFN0cmluZyBVUkw6OnBhdGgo
KSBjb25zdAogewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kLCBtX3Bh
dGhFbmQgLSBtX3BvcnRFbmQpOworICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBt
X3BvcnRMZW5ndGg7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhwb3J0RW5kLCBtX3Bh
dGhFbmQgLSBwb3J0RW5kKTsKIH0KIAogYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgcykKQEAgLTQ1NSw5ICs0NTYsOSBAQCB2b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcm
IHMpCiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKLSAgICBpZiAobV9ob3N0RW5kID09IG1f
cG9ydEVuZCkKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKICAgICAgICAgcmV0dXJuOwotICAgIFVS
TFBhcnNlciBwYXJzZXIobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcG9ydEVuZCkpOworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CiB9CiAKQEAgLTQ2NiwxMCArNDY3LDEwIEBAIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2ln
bmVkIHNob3J0IGkpCiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0gbV9ob3N0RW5kOworICAgIGJvb2wgY29s
b25OZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOwogICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xv
bk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOwogCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8g
IjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVu
ZCkpKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChwb3J0U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIFN0cmluZzo6bnVt
YmVyKGkpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0
TGVuZ3RoKSkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwogfQogCkBAIC01MDksNyAr
NTEwLDcgQEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaAogICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjoiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQocG9y
dCk7CiAgICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRF
bmQpKTsKKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CiAKICAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxk
ZXIudG9TdHJpbmcoKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CkBAIC02NTgsNyAr
NjU5LDcgQEAgdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBzKQogICAgIGF1dG8gcXVl
c3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNoYXJhY3RlcikgewogICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIgPT0gJyMnOwogICAgIH07Ci0gICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9w
b3J0RW5kKSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1i
ZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKKyAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhwYXRoLCBx
dWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV9wYXRoRW5kKSkpOwogICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaAkocmV2aXNpb24gMjMzNzcyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSwzOCArMjE5LDMyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3Q7
CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgYm9vbCBtX2lzVmFsaWQgOiAxOwotICAgIGJv
b2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKLSAgICBib29sIG1fY2Fubm90QmVBQmFz
ZVVSTCA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZDsKKyAgICB1bnNpZ25lZCBtX2lz
VmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Cisg
ICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKKworICAgIC8vIFRoaXMgaXMgb3V0
IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhl
IGhvc3QuCisgICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7CisgICAg
dW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKICAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKICAg
ICB1bnNpZ25lZCBtX3VzZXJFbmQ7CiAgICAgdW5zaWduZWQgbV9wYXNzd29yZEVuZDsKICAgICB1
bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wb3J0RW5kOwogICAgIHVuc2lnbmVk
IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgIHVuc2lnbmVkIG1fcGF0aEVuZDsKICAgICB1bnNp
Z25lZCBtX3F1ZXJ5RW5kOwogfTsKIAorc3RhdGljX2Fzc2VydChzaXplb2YoVVJMKSA9PSBzaXpl
b2YoU3RyaW5nKSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNob3VsZCBzdGF5IHNtYWxs
Iik7CisKIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPgogdm9pZCBVUkw6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Ci0gICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDxib29sPihtX2lzVmFsaWQpOwotICAgIGlmICghbV9pc1ZhbGlkKQot
ICAgICAgICByZXR1cm47Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihtX3Byb3Rv
Y29sSXNJbkhUVFBGYW1pbHkpOwotICAgIGVuY29kZXIgPDwgbV9zY2hlbWVFbmQ7Ci0gICAgZW5j
b2RlciA8PCBtX3VzZXJTdGFydDsKLSAgICBlbmNvZGVyIDw8IG1fdXNlckVuZDsKLSAgICBlbmNv
ZGVyIDw8IG1fcGFzc3dvcmRFbmQ7Ci0gICAgZW5jb2RlciA8PCBtX2hvc3RFbmQ7Ci0gICAgZW5j
b2RlciA8PCBtX3BvcnRFbmQ7Ci0gICAgZW5jb2RlciA8PCBtX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICBlbmNvZGVyIDw8IG1fcGF0aEVuZDsKLSAgICBlbmNvZGVyIDw8IG1fcXVlcnlFbmQ7CiB9
CiAKIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgpAQCAtMjY2LDM4ICsyNjAsMTAgQEAgYm9vbCBV
Ukw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVUkwmIAogdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+CiBzdGQ6Om9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBVUkwgdXJsOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsLm1fc3RyaW5nKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBib29sIGlzVmFsaWQ7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICB1cmwubV9pc1ZhbGlkID0gaXNWYWxpZDsKLSAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJl
dHVybiBXVEZNb3ZlKHVybCk7Ci0gICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5OwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocHJvdG9jb2xJc0luSFRUUEZhbWlseSkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IHBy
b3RvY29sSXNJbkhUVFBGYW1pbHk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9zY2hl
bWVFbmQpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodXJsLm1fdXNlclN0YXJ0KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3VzZXJFbmQpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsLm1fcGFzc3dvcmRFbmQpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJs
Lm1faG9zdEVuZCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh1cmwubV9wb3J0RW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwubV9w
YXRoRW5kKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHVybC5tX3F1ZXJ5RW5kKSkKKyAgICBTdHJpbmcgc3RyaW5nOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4gV1RGTW92ZSh1cmwpOworICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7CiB9CiAK
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKQEAgLTQwMCw3ICszNjYs
NyBAQCBpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBVUkw6
Omhhc1BhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9wb3J0RW5kOwor
ICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwogfQogCiBp
bmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKQEAgLTQ0MCw3ICs0MDYsNyBAQCBp
bmxpbmUgdW5zaWduZWQgVVJMOjpob3N0RW5kKCkgY29uc3QKIAogaW5saW5lIHVuc2lnbmVkIFVS
TDo6cGF0aFN0YXJ0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wb3J0RW5kOworICAgIHJldHVy
biBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CiB9CiAKIGlubGluZSB1bnNpZ25lZCBVUkw6OnBh
dGhFbmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyMzM3NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDIsMTcgKzUwMiwxNyBAQCB2b2lkIFVSTFBhcnNlcjo6YXBw
ZW5kV2luZG93c0RyaXZlTGV0dGVyCiBib29sIFVSTFBhcnNlcjo6Y29weUJhc2VXaW5kb3dzRHJp
dmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQogewogICAgIGlmIChiYXNlLnByb3RvY29sSXMoImZp
bGUiKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1fcG9ydEVuZCA8IGJhc2UubV9z
dHJpbmcubGVuZ3RoKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1faG9zdEVuZCAr
IGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIGlm
IChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICBjb25zdCBMQ2hhciogYmVn
aW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJ
dGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9wb3J0RW5kICsgMSwgYmVnaW4gKyBiYXNl
Lm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFy
PiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDEsIGJlZ2lu
ICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJp
dmVMZXR0ZXIoYykpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
Yyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5n
LmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMo
YmVnaW4gKyBiYXNlLm1fcG9ydEVuZCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgo
KSk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CiAg
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtODQ2LDcgKzg0Niw3IEBAIHNpemVfdCBVUkxQYXJzZXI6OnVy
bExlbmd0aFVudGlsUGFydChjb24KICAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFz
aDoKICAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKICAgICBjYXNlIFVS
TFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9wb3J0RW5kOworICAgICAgICBy
ZXR1cm4gdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CiAgICAgY2FzZSBVUkxQYXJ0
OjpIb3N0RW5kOgogICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKICAgICBjYXNlIFVSTFBh
cnQ6OlBhc3N3b3JkRW5kOgpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpjb3B5
VVJMUGFydHNVbnRpbChjb25zdCAKICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBj
YXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGJhc2UubV9w
b3J0RW5kOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsK
ICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgogICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKQEAgLTEwNDMsNyArMTA0Myw3IEBA
IGJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG4KIAogICAgIEFTU0VSVCht
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7CiAgICAg
Q29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9wKCZtX2FzY2lpQnVmZmVyW25l
d1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBdICsgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2gpOwotICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gbV91cmwubV9w
b3J0RW5kICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAg
aWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3Bv
cnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA1MSwxMSArMTA1
MSwxMSBAQCBib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNpZ25lZCBuCiB2b2lkIFVS
TFBhcnNlcjo6cG9wUGF0aCgpCiB7CiAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9u
KTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX3BvcnRFbmQg
KyAxKSB7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewogICAgICAgICBhdXRvIG5ld1BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIC0gMTsKICAgICAgICAgaWYg
KG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSA9PSAnLycpCiAgICAgICAgICAg
ICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgd2hpbGUgKG5ld1BhdGhBZnRlckxh
c3RTbGFzaCA+IG1fdXJsLm1fcG9ydEVuZCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxh
c3RTbGFzaF0gIT0gJy8nKQorICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4g
bV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3
UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCiAgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0
U2xhc2gtLTsKICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7CiAgICAgICAgIGlmIChz
aG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCkBAIC0xMjcxLDcgKzEyNzEsMTIg
QEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0g
JzonKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1heFNjaGVtZUxl
bmd0aCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV91cmwubV9z
Y2hlbWVFbmQgPSBzY2hlbWVFbmQ7CiAgICAgICAgICAgICAgICAgU3RyaW5nVmlldyB1cmxTY2hl
bWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7CiAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwogICAgICAgICAgICAgICAgIHN3aXRjaCAoc2No
ZW1lKHVybFNjaGVtZSkpIHsKQEAgLTEzMjEsNyArMTMyNiw3IEBAIHZvaWQgVVJMUGFyc2VyOjpw
YXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0Owog
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQ
YXRoOwpAQCAtMTM5NSw3ICsxNDAwLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENo
YXJhY3RlclR5cAogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwog
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CiAgICAgICAgICAgICB9CkBAIC0x
NDUxLDcgKzE0NTYsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlw
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIGlzVVRGOEVuY29kaW5nKTsKICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcG9ydEVuZCArIDE7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0
TGVuZ3RoICsgMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTIwLDcgKzE1MjUsNyBAQCB2b2lkIFVS
TFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwogICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyRW5kOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyRW5k
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
QEAgLTE1OTAsNyArMTU5NSw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0
ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAw
OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJs
Lm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTYxMiw3
ICsxNjE3LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwogICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaDsKICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMTYzMCw3ICsxNjM1LDcgQEAgdm9pZCBV
UkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CkBAIC0xNjUwLDcgKzE2NTUsNyBA
QCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4g
PSBjOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVIb3N0OwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTY2MSw3ICsxNjY2LDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CiAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgIGlmIChpc1dpbmRv
d3NEcml2ZUxldHRlcihjKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxl
dHRlcihjKTsKICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgMTsKQEAgLTE3MjAsNyArMTcyNSw3IEBAIHZvaWQgVVJMUGFyc2Vy
OjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hy
aW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0
YXJ0OwpAQCAtMTg3NSw3ICsxODgwLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENo
YXJhY3RlclR5cAogICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
ICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9w
b3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOwpAQCAtMTg4Nyw3ICsxODkyLDcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENo
YXJhY3RlclR5cAogICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKICAg
ICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgaXNVVEY4
RW5jb2RpbmcpOwogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BvcnRFbmQgKyAxOworICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9y
dExlbmd0aCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CiAgICAgICAgIGJyZWFrOwpAQCAtMTg5Nyw3ICsxOTAyLDcgQEAgdm9pZCBVUkxQ
YXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
IG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CiAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CkBAIC0xOTE0LDcgKzE5MTksNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwCiAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
ICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CiAgICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0
aG9yaXR5T3JIb3N0QmVnaW4pKSB7CiAgICAgICAgICAgICBmYWlsdXJlKCk7CkBAIC0xOTIzLDkg
KzE5MjgsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAg
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZCArIDE7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9w
b3J0TGVuZ3RoICsgMTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcG9ydEVuZDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7CiAgICAgICAgIH0K
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CiAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CkBAIC0xOTM5LDkgKzE5
NDQsOSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgewogICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwog
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wb3J0RW5kOwor
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9w
b3J0TGVuZ3RoOwogICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1f
cGF0aEVuZDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKICAg
ICAgICAgYnJlYWs7CkBAIC0xOTU3LDcgKzE5NjIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBt
X3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDE7CiAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoOwogICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CkBAIC0xOTcwLDcgKzE5NzUsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBt
X3VybC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2Up
KSB7CiAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CiAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgNDsKQEAgLTE5
OTksNyArMjAwNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXAK
ICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwogICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICBtX3Vy
bC5tX3BvcnRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CiAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgMTsKICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwogICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwpAQCAtMjAxNSwxMCArMjAyMCwxMCBAQCB2b2lkIFVS
TFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAgIGlmIChpc0xvY2FsaG9z
dChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykg
LSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hy
aW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwu
bV9ob3N0RW5kOworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAg
fQogICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGgg
KyAxOwogICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OwogICAgICAgICBicmVhazsKQEAgLTI2MDEsNyArMjYwNiw5IEBAIGJvb2wgVVJMUGFyc2VyOjpw
YXJzZVBvcnQoQ29kZVBvaW50SXRlcmEKICAgICBhZHZhbmNlKGl0ZXJhdG9yLCBjb2xvbkl0ZXJh
dG9yKTsKICAgICB1aW50MzJfdCBwb3J0ID0gMDsKICAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3Iu
YXRFbmQoKSkpIHsKLSAgICAgICAgbV91cmwubV9wb3J0RW5kID0gY3VycmVudFBvc2l0aW9uKGNv
bG9uSXRlcmF0b3IpOworICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0
aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0
ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjYzOCw3ICsyNjQ1LDkg
QEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYQogICAgICAgICBhcHBl
bmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9y
dCkpOwogICAgIH0KIAotICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVy
YXRvcik7CisgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRv
cikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBV
Ukw6Om1heFBvcnRMZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NjQsNyArMjY3Myw3IEBAIGJvb2wgVVJMUGFy
c2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHBhcnNlUG9ydChpcHY2RW5kKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcG9ydEVuZCA9IG1fdXJsLm1faG9zdEVuZDsKKyAgICAgICAgICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9u
KGlwdjZFbmQpOwpAQCAtMjY4Nyw3ICsyNjk2LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9z
dEFuZFBvcnQoQ29kZVBvaQogICAgICAgICB9CiAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7
Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3Ip
OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwpA
QCAtMjcwOCw3ICsyNzE3LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29k
ZVBvaQogICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwogICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKICAgICAg
ICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
b3J0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CkBAIC0yNzI3
LDcgKzI3MzYsOSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pCiAg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CiAgICAg
ICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VQ
b3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9z
aXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IHBvcnRMZW5ndGg7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAK
QEAgLTI3NjksNyArMjc4MCw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENv
ZGVQb2kKICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwogICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0RW5kID0gY3VycmVu
dFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcGFy
c2VQb3J0KGl0ZXJhdG9yKTsKQEAgLTI3ODEsNyArMjc5Miw3IEBAIGJvb2wgVVJMUGFyc2VyOjpw
YXJzZUhvc3RBbmRQb3J0KENvZGVQb2kKICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXRlcmF0b3IpOwogICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAgcmV0
dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wb3J0RW5kID0gY3VycmVudFBv
c2l0aW9uKGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0yODY4LDI5ICsyODc5LDI5IEBAIGNvbnN0IFVJRE5BJiBVUkxQYXJz
ZXI6OmludGVybmF0aW9uYWxEb20KIAogYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewotICAgIC8vIEZJWE1FOiBtX2Nhbm5vdEJlQUJh
c2VVUkwgaXMgbm90IGNvbXBhcmVkIGJlY2F1c2UgdGhlIG9sZCBVUkw6OnBhcnNlIGRpZCBub3Qg
dXNlIGl0LAotICAgIC8vIGJ1dCBvbmNlIHdlIGdldCByaWQgb2YgVVJMOjpwYXJzZSBpdHMgdmFs
dWUgc2hvdWxkIGJlIHRlc3RlZC4KLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVz
IiwKKyAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKICAgICAgICAg
YS5tX2lzVmFsaWQsCisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAogICAgICAgICBhLm1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSwKICAgICAgICAgYS5tX3NjaGVtZUVuZCwKICAgICAgICAg
YS5tX3VzZXJTdGFydCwKICAgICAgICAgYS5tX3VzZXJFbmQsCiAgICAgICAgIGEubV9wYXNzd29y
ZEVuZCwKICAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEubV9wb3J0RW5kLAorICAgICAg
ICBhLm1faG9zdEVuZCArIGEubV9wb3J0TGVuZ3RoLAogICAgICAgICBhLm1fcGF0aEFmdGVyTGFz
dFNsYXNoLAogICAgICAgICBhLm1fcGF0aEVuZCwKICAgICAgICAgYS5tX3F1ZXJ5RW5kLAogICAg
ICAgICBhLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIGIubV9pc1ZhbGlkLAorICAg
ICAgICBiLm1fY2Fubm90QmVBQmFzZVVSTCwKICAgICAgICAgYi5tX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHksCiAgICAgICAgIGIubV9zY2hlbWVFbmQsCiAgICAgICAgIGIubV91c2VyU3RhcnQsCiAg
ICAgICAgIGIubV91c2VyRW5kLAogICAgICAgICBiLm1fcGFzc3dvcmRFbmQsCiAgICAgICAgIGIu
bV9ob3N0RW5kLAotICAgICAgICBiLm1fcG9ydEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBi
Lm1fcG9ydExlbmd0aCwKICAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKICAgICAgICAg
Yi5tX3BhdGhFbmQsCiAgICAgICAgIGIubV9xdWVyeUVuZCwKQEAgLTI4OTgsMTMgKzI5MDksMTQg
QEAgYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTAogCiAgICAgcmV0dXJu
IGEubV9zdHJpbmcgPT0gYi5tX3N0cmluZwogICAgICAgICAmJiBhLm1faXNWYWxpZCA9PSBiLm1f
aXNWYWxpZAorICAgICAgICAmJiBhLm1fY2Fubm90QmVBQmFzZVVSTCA9PSBiLm1fY2Fubm90QmVB
QmFzZVVSTAogICAgICAgICAmJiBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9PSBiLm1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseQogICAgICAgICAmJiBhLm1fc2NoZW1lRW5kID09IGIubV9zY2hl
bWVFbmQKICAgICAgICAgJiYgYS5tX3VzZXJTdGFydCA9PSBiLm1fdXNlclN0YXJ0CiAgICAgICAg
ICYmIGEubV91c2VyRW5kID09IGIubV91c2VyRW5kCiAgICAgICAgICYmIGEubV9wYXNzd29yZEVu
ZCA9PSBiLm1fcGFzc3dvcmRFbmQKICAgICAgICAgJiYgYS5tX2hvc3RFbmQgPT0gYi5tX2hvc3RF
bmQKLSAgICAgICAgJiYgYS5tX3BvcnRFbmQgPT0gYi5tX3BvcnRFbmQKKyAgICAgICAgJiYgYS5t
X3BvcnRMZW5ndGggPT0gYi5tX3BvcnRMZW5ndGgKICAgICAgICAgJiYgYS5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9PSBiLm1fcGF0aEFmdGVyTGFzdFNsYXNoCiAgICAgICAgICYmIGEubV9wYXRoRW5k
ID09IGIubV9wYXRoRW5kCiAgICAgICAgICYmIGEubV9xdWVyeUVuZCA9PSBiLm1fcXVlcnlFbmQ7
CkBAIC0yOTE2LDggKzI5MjgsNyBAQCBib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25z
aXN0ZW50CiAgICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1cmwubV91c2VyRW5kCiAgICAg
ICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRFbmQKICAgICAgICAgJiYgdXJs
Lm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAotICAgICAgICAmJiB1cmwubV9ob3N0RW5k
IDw9IHVybC5tX3BvcnRFbmQKLSAgICAgICAgJiYgdXJsLm1fcG9ydEVuZCA8PSB1cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5n
dGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCiAgICAgICAgICYmIHVybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCiAgICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0g
dXJsLm1fcXVlcnlFbmQKICAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5n
Lmxlbmd0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDIz
Mzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAy
Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSAzOwogCiBzdGF0aWMgY29u
c3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzM3ODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA3LTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNpemUg
b2YgV2ViQ29yZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oOgorICAgICAgICBJbmNyZW1lbnQgY2FjaGUgdmVyc2lvbiBiZWNhdXNlIG9m
IFVSTCBlbmNvZGluZyBjaGFuZ2UuCisKIDIwMTgtMDctMTIgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzIzNTYpOiBBZnRlciB6b29t
aW5nIGEgcGFnZSBpbiBhbmQgb3V0LCBpdCdzIHBvc3NpYmxlIHRvIHRlbXBvcmFyaWx5IGhhdmUg
bWlzc2luZyB0aWxlcyAoZ29vZ2xlLmNvbSwgYXBwbGUuY29tKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgJKHJldmlzaW9uIDIzMzc3MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgIHNpemVfdCBhcHByb3hpbWF0ZVNpemUoKSBjb25zdDsKIAogICAgIC8v
IEluY3JlbWVudGluZyB0aGlzIG51bWJlciB3aWxsIGRlbGV0ZSBhbGwgZXhpc3RpbmcgY2FjaGUg
Y29udGVudCBmb3IgZXZlcnlvbmUuIERvIHlvdSByZWFsbHkgbmVlZCB0byBkbyBpdD8KLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgdmVyc2lvbiA9IDEyOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB2ZXJzaW9uID0gMTM7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vLyBBbGxvdyB0aGUg
bGFzdCBzdGFibGUgdmVyc2lvbiBvZiB0aGUgY2FjaGUgdG8gY28tZXhpc3Qgd2l0aCB0aGUgbGF0
ZXN0IGRldmVsb3BtZW50IG9uZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGFzdFN0YWJs
ZVZlcnNpb24gPSAxMjsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzc3MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA3LTEyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHNpemUgb2YgV2ViQ29y
ZTo6VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODY4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDE4LTA3LTExICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBQ
YXNzIHRoZSBiYWNrZW5kIGxpYnJhcnkgbmFtZSBhcyBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIHRv
IHRoZSB3ZWIgcHJvY2VzcwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlci5jcHAJKHJldmlzaW9uIDIzMzc3MikKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc5
LDYgKzExNzksOSBAQCBURVNUX0YoVVJMUGFyc2VyVGVzdCwgRGVmYXVsdFBvcnQpCiAgICAgY2hl
Y2tVUkxEaWZmZXJlbmNlcygiZmlsZTovLzowL3BhdGgiLAogICAgICAgICB7IiIsICIiLCAiIiwg
IiIsIDAsICIiLCAiIiwgIiIsICJmaWxlOi8vOjAvcGF0aCJ9LAogICAgICAgICB7ImZpbGUiLCAi
IiwgIiIsICIiLCAwLCAiL3BhdGgiLCAiIiwgIiIsICJmaWxlOi8vOjAvcGF0aCJ9KTsKKyAgICAK
KyAgICBjaGVja1VSTCgiaHR0cDovL2V4YW1wbGUuY29tOjAwMDAwMDAwMDAwMDAwNzciLCB7Imh0
dHAiLCAiIiwgIiIsICJleGFtcGxlLmNvbSIsIDc3LCAiLyIsICIiLCAiIiwgImh0dHA6Ly9leGFt
cGxlLmNvbTo3Ny8ifSk7CisgICAgY2hlY2tVUkwoImh0dHA6Ly9leGFtcGxlLmNvbTowMDAwMDAw
MDAwMDAwMDgwIiwgeyJodHRwIiwgIiIsICIiLCAiZXhhbXBsZS5jb20iLCAwLCAiLyIsICIiLCAi
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS8ifSk7CiB9CiAKIFRFU1RfRihVUkxQYXJzZXJUZXN0LCBQ
YXJzZXJGYWlsdXJlcykK
</data>

          </attachment>
      

    </bug>

</bugzilla>