<?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>158354</bug_id>
          
          <creation_ts>2016-06-03 13:48:33 -0700</creation_ts>
          <short_desc>Rename NoncopyableFunction to Function</short_desc>
          <delta_ts>2016-07-18 04:54:13 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158374</dependson>
    
    <dependson>159877</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pvollan</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199019</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-03 13:48:33 -0700</bug_when>
    <thetext>Rename NoncopyableFunction to Function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199020</commentid>
    <comment_count>1</comment_count>
      <attachid>280459</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-03 13:49:43 -0700</bug_when>
    <thetext>Created attachment 280459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199022</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 13:51:41 -0700</bug_when>
    <thetext>Attachment 280459 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:243:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.h:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:123:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:147:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:132:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:183:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:627:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:96:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:240:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/FunctionDispatcher.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:524:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:158:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:302:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:524:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:526:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:530:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:44:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.cpp:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 101 in 56 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199031</commentid>
    <comment_count>3</comment_count>
      <attachid>280459</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-03 14:21:12 -0700</bug_when>
    <thetext>Comment on attachment 280459
Patch

R=me as long as it builds everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199074</commentid>
    <comment_count>4</comment_count>
      <attachid>280459</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 15:22:45 -0700</bug_when>
    <thetext>Comment on attachment 280459
Patch

Clearing flags on attachment: 280459

Committed r201663: &lt;http://trac.webkit.org/changeset/201663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199075</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 15:22:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199091</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-06-03 15:50:21 -0700</bug_when>
    <thetext>This change appears to have broken the Windows build:
https://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/95211

C:\cygwin\home\buildbot\slave\win-release\build\Source\WebCore\bindings\js\JSCallbackData.h(121): error C2661: &apos;WebCore::ScriptExecutionContext::Task::Task&apos;: no overloaded function takes 2 arguments (compiling source file C:\cygwin\home\buildbot\slave\win-release\build\Source\WebCore\DerivedSources.cpp) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebCore\WebCoreDerivedSources.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199160</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 17:52:39 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 158374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199205</commentid>
    <comment_count>8</comment_count>
      <attachid>280459</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-03 19:46:41 -0700</bug_when>
    <thetext>Comment on attachment 280459
Patch

If just named WTF::Function, then I think we need a comment explaining differences from std::function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201315</commentid>
    <comment_count>9</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-10 11:54:44 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 280459 [details]
&gt; Patch
&gt; 
&gt; If just named WTF::Function, then I think we need a comment explaining
&gt; differences from std::function.

I think our intention is to replace std::function with WTF::Function for the thread-safety reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201316</commentid>
    <comment_count>10</comment_count>
      <attachid>281024</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-10 11:56:26 -0700</bug_when>
    <thetext>Created attachment 281024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201339</commentid>
    <comment_count>11</comment_count>
      <attachid>281035</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-10 12:48:04 -0700</bug_when>
    <thetext>Created attachment 281035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201340</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 12:49:25 -0700</bug_when>
    <thetext>Attachment 281035 did not pass style-queue:


ERROR: Source/WebCore/dom/ScriptExecutionContext.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:166:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201363</commentid>
    <comment_count>13</comment_count>
      <attachid>281042</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-10 13:52:53 -0700</bug_when>
    <thetext>Created attachment 281042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201364</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 13:54:11 -0700</bug_when>
    <thetext>Attachment 281042 did not pass style-queue:


ERROR: Source/WebCore/dom/ScriptExecutionContext.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:166:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201392</commentid>
    <comment_count>15</comment_count>
      <attachid>281048</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-10 14:44:26 -0700</bug_when>
    <thetext>Created attachment 281048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201393</commentid>
    <comment_count>16</comment_count>
      <attachid>281049</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-10 14:45:32 -0700</bug_when>
    <thetext>Created attachment 281049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201394</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 14:48:12 -0700</bug_when>
    <thetext>Attachment 281049 did not pass style-queue:


ERROR: Source/WebCore/dom/ScriptExecutionContext.h:136:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:166:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203079</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-06-16 16:19:58 -0700</bug_when>
    <thetext>The Windows build error appears to be unrelated to these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203083</commentid>
    <comment_count>19</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-16 16:26:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; The Windows build error appears to be unrelated to these changes.

No, it&apos;s related and I don&apos;t know what&apos;s causing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203088</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-06-16 16:28:41 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; The Windows build error appears to be unrelated to these changes.
&gt; 
&gt; No, it&apos;s related and I don&apos;t know what&apos;s causing it.

Sorry -- I made that comment on the wrong bug. Let&apos;s see if Per can track down the cause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203247</commentid>
    <comment_count>21</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2016-06-16 23:48:01 -0700</bug_when>
    <thetext>I get this compile error:

1&gt;------ Build started: Project: WebCore (WebCore\WebCore), Configuration: Release Win32 ------
1&gt;  JSBindingsAllInOne.cpp
1&gt;c:\projects\webkit\opensource\source\webcore\dom\ScriptExecutionContext.h(148): error C2872: &apos;Function&apos;: ambiguous symbol
1&gt;  C:\Projects\WebKit\OpenSource\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/Function.h(33): note: could be &apos;WTF::Function = WTF::NoncopyableFunction&lt;T&gt;&apos;
1&gt;  c:\projects\webkit\opensource\webkitbuild\release\derivedsources\forwardingheaders\javascriptcore\PropertySlot.h(46): note: or       &apos;JSC::Attribute Function&apos;
1&gt;c:\projects\webkit\opensource\source\webcore\dom\ScriptExecutionContext.h(171): error C2872: &apos;Function&apos;: ambiguous symbol
1&gt;  C:\Projects\WebKit\OpenSource\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/Function.h(33): note: could be &apos;WTF::Function = WTF::NoncopyableFunction&lt;T&gt;&apos;
1&gt;  c:\projects\webkit\opensource\webkitbuild\release\derivedsources\forwardingheaders\javascriptcore\PropertySlot.h(46): note: or       &apos;JSC::Attribute Function&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203327</commentid>
    <comment_count>22</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-17 09:56:23 -0700</bug_when>
    <thetext>Thanks Per Arne, that&apos;s really useful!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203332</commentid>
    <comment_count>23</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2016-06-17 10:08:41 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Thanks Per Arne, that&apos;s really useful!

No problem :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204338</commentid>
    <comment_count>24</comment_count>
      <attachid>281790</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-21 16:03:50 -0700</bug_when>
    <thetext>Created attachment 281790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204342</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-21 16:06:29 -0700</bug_when>
    <thetext>Attachment 281790 did not pass style-queue:


ERROR: Source/WebCore/dom/ScriptExecutionContext.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:171:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204595</commentid>
    <comment_count>26</comment_count>
      <attachid>281851</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-22 11:25:04 -0700</bug_when>
    <thetext>Created attachment 281851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204596</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 11:27:38 -0700</bug_when>
    <thetext>Attachment 281851 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:243:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:123:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:147:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:101:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:121:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:627:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:114:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:165:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:240:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:255:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/FunctionDispatcher.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:385:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:158:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:302:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:537:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:541:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2801:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.cpp:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 100 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204601</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-22 11:41:15 -0700</bug_when>
    <thetext>All red? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204633</commentid>
    <comment_count>29</comment_count>
      <attachid>281864</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-22 12:58:53 -0700</bug_when>
    <thetext>Created attachment 281864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204636</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 13:01:49 -0700</bug_when>
    <thetext>Attachment 281864 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:243:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:123:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:147:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:101:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:121:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:627:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:114:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:165:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:240:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:255:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/FunctionDispatcher.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:385:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:158:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:302:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:537:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:541:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2801:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.cpp:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 100 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204655</commentid>
    <comment_count>31</comment_count>
      <attachid>281867</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-22 14:05:57 -0700</bug_when>
    <thetext>Created attachment 281867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204658</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 14:08:36 -0700</bug_when>
    <thetext>Attachment 281867 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:243:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:123:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:147:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:101:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:121:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:627:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:114:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:110:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:165:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:240:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:255:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/FunctionDispatcher.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:385:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:158:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:302:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:537:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:541:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2801:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.cpp:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 100 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205122</commentid>
    <comment_count>33</comment_count>
      <attachid>281995</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-24 10:09:49 -0700</bug_when>
    <thetext>Created attachment 281995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205124</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-24 10:11:27 -0700</bug_when>
    <thetext>Attachment 281995 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:243:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:123:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:147:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:101:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:121:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:627:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:165:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:240:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:255:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/FunctionDispatcher.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:385:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:158:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:302:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:537:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:541:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2801:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.cpp:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 102 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205154</commentid>
    <comment_count>35</comment_count>
      <attachid>282002</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-24 11:30:10 -0700</bug_when>
    <thetext>Created attachment 282002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205156</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-24 11:32:32 -0700</bug_when>
    <thetext>Attachment 282002 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/FileAPI/BlobRegistryProxy.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.h:208:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:243:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:118:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:123:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.cpp:147:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:101:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:121:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/win/WorkQueueWin.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:127:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/glib/RunLoopGLib.cpp:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:627:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/WorkQueueEfl.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:296:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/dom/ScriptExecutionContext.h:165:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:35:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/RunLoopGeneric.cpp:240:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.cpp:255:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/generic/WorkQueueGeneric.cpp:92:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/CrossThreadTask.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/FunctionDispatcher.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/scrolling/ScrollingThread.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioDestinationNode.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:31:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/cocoa/WorkQueueCocoa.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:385:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:483:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RunLoop.h:158:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.h:112:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:302:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/MainThread.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Network/NetworkProcessConnection.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:535:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:537:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/style/StyleTreeResolver.cpp:541:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageThread.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:2801:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/network/BlobRegistryImpl.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/mediastream/MediaStreamPrivate.h:115:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.h:46:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/Storage/StorageSyncManager.cpp:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/efl/DispatchQueueWorkItemEfl.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 102 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205183</commentid>
    <comment_count>37</comment_count>
      <attachid>282002</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-24 12:36:46 -0700</bug_when>
    <thetext>Comment on attachment 282002
Patch

Rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205184</commentid>
    <comment_count>38</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-24 12:40:35 -0700</bug_when>
    <thetext>Committed r202439: &lt;http://trac.webkit.org/changeset/202439&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280459</attachid>
            <date>2016-06-03 13:49:43 -0700</date>
            <delta_ts>2016-06-10 11:56:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160603135104.patch</filename>
            <type>text/plain</type>
            <size>73920</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5NTNiZGVlZDc4ZWZlNjdkY2IzN2E1
Yjc0N2E1ZTRiZTUzZDM4NDEuLjZlZDIzYTI5NjcwMDMyYzhmMDQ1ZDhjYjRmYzJhOGZmMzU0MWFi
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMDYtMDMgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJlYWRU
YXNrKToKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYv
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpmdW5j
dGlvblF1ZXVlKToKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWlu
VGhyZWFkLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgorICAgICAgICAo
V29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6
CisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4
dCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0
Zi93aW4vV29ya0l0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6V29ya0l0
ZW1XaW4pOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1XaW4uaDoKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmZ1bmN0aW9uKToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorCiAy
MDE2LTA2LTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVh
biB1cCBob3cgU3RhY2tWaXNpdG9yIGR1bXBzIGl0cyBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg0
MzBkNWY4NDJhYzcyOGU1YzU1MDE2ZGM2NjRlNGM1YjNlMmNiNy4uNDNkZWVhMGFjMzUwOTZmYTU2
YjNkODZmNDIxZDU5MTNjNjFhZjkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2
LTA2LTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIE5vbmNvcHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjpydW5UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s6OkFjdGl2
ZURPTUNhbGxiYWNrTWljcm90YXNrKToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2suaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6VGFzayk6CisgICAg
ICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnBlcmZv
cm0pOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpxdWV1ZVBvc3RM
YXlvdXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZsdXNoUG9zdExh
eW91dFRhc2tzUXVldWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhy
ZWFkOjpkaXNwYXRjaEJhcnJpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNU
YXNrUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpw
b3N0VGFzayk6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGFza0Rpc3BhdGNoZXI6OnBvc3RUYXNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJy
ZWRUYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hlZHVsZURl
ZmVycmVkVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0
dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFD
YXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6
OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cG9zdFJlc29sdXRpb25DYWxsYmFja1F1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJh
Y2spOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmg6CisKIDIwMTYtMDYtMDMg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
OiBXZWJHTCBkb2Vzbid0IHNob3cgdXAgaW4gQ1NTIHJlZmxlY3Rpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMz
MTZhY2IzZGQyZjVhNWYyNjdkNGFiNTkzZGJlOGQ3NjczOTU1YmMuLmEzMTljYmI2ZGZjNzQ1ZDEy
MzNmNWQwZjkyMzg2MTE0NDYzNGI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYt
MDYtMDMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKToK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpk
aXNwYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgor
ICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE2LTA2LTAyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgVXNlIG1vcmUg
cmVmZXJlbmNlcyBpbiBSZXNvdXJjZUxvYWRlciByZWxhdGVkIGNvZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBl
YWZkMjM0Y2RmZDI5MmU2ZGFiZDdkMmQyYTVlM2UzZGRmNzY0ODkzLi4xZTZhNTIzZGYxYzNiNGUw
MTMxMDJmNjU5ODc0NWFkYzFjNTRkN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTYtMDYtMDMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0byBGdW5jdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6Y2xlYXJEaXNrQ2FjaGVFbnRyaWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnRy
YXZlcnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpydW5UYXNrSW5RdWV1ZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorCiAy
MDE2LTA2LTAzICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRml4IHRoZSAhRU5BQkxFKElOREVYRURfREFUQUJBU0UpIGJ1aWxkIGFmdGVyIHIyMDE1NzUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NjMwZjBmMTA0
NjFkZjQ3YmQ4MjZmOWI1YTdhMDFiYTMzYWExNzMuLjExOGUxOGMxOWYxZjRhOTlhN2IzNTk5Njhl
ZDQyNDQ3NWYzYjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTE4LDcgKzExOCw3IEBACiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpj
UnVudGltZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0UyOUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi87
IH07CiAJCTgxMzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZG
MEI4IC8qIEJhc2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBC
YXNlNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgx
MzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKLQkJODNGMkJBREYxQ0Y5
NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBO
b25jb3B5YWJsZUZ1bmN0aW9uLmggKi87IH07CisJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAv
KiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi87IH07CiAJCTgzRkJB
OTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBl
Q2FzdHMuaCAqLzsgfTsKIAkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IH07CiAJCTkzOTM0QkQzMThBMUU4
QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdW
aWV3T2JqQy5tbSAqLzsgfTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQAogCQk3RTI5QzMzRDE1RkZENzlC
MDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25jb3B5YWJsZUZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBG
dW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyog
VHlwZUNhc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIg
LyogUmVmQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3Vu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMwMEQw
RDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFN0cmluZ1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFjL1N0cmluZ1ZpZXdPYmpDLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQwLDYgKzg0MCw3IEBACiAJCQkJMEY5
RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAogCQkJCTBGMkI2
NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4
MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovLAorCQkJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlD
MyAvKiBGdW5jdGlvbi5oICovLAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5j
dGlvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJCTFBMUQ4QjlCMTczMTg2Q0UwMDE0MURBNCAvKiBG
dW5jdGlvbkRpc3BhdGNoZXIuaCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyog
R2V0UHRyLmggKi8sCkBAIC04ODYsNyArODg3LDYgQEAKIAkJCQkxQTNGNkJFNjE3NEFEQTIxMDBC
MkVFQTcgLyogTmV2ZXJEZXN0cm95ZWQuaCAqLywKIAkJCQkwRjBEODVCMzE3MjM0Q0IxMDAzMzgy
MTAgLyogTm9Mb2NrLmggKi8sCiAJCQkJQThBNDcyRDAxNTFBODI1QjAwNDEyM0ZGIC8qIE5vbmNv
cHlhYmxlLmggKi8sCi0JCQkJODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxl
RnVuY3Rpb24uaCAqLywKIAkJCQlBOEE0NzJENTE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZD
b3Jlcy5jcHAgKi8sCiAJCQkJQThBNDcyRDYxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29y
ZXMuaCAqLywKIAkJCQk3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRy
YXMuaCAqLywKQEAgLTEyNTAsNyArMTI1MCw3IEBACiAJCQkJQThBNDczRDkxNTFBODI1QjAwNDEy
M0ZGIC8qIEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczREExNTFBODI1QjAw
NDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0RCMTUxQTgy
NUIwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzRjJCQURGMUNG
OTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5YWJsZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTI2ODRENDM2MUMwMDBENDAwMDgxRDY2MyAvKiBJbmRleFNwYXJzZVNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDczREMxNTFBODI1QjAwNDEyM0ZGIC8qIElubGluZUFTTS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTcwREEwODQxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2VydGlvbi5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2su
aCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IDFhMTZlM2EzOTBlYWE0
YmMzZjIxYzMwYmUxOWQzYzk4ZWNjNTFmNDguLmQ2OWUzMGFjMjZiZTllMDRiMDRmNTBjYWNmMmNm
MTg0YzM3ZjJmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC0yNiw3ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgotI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTM1LDcgKzM1LDcgQEAgY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrIHsKIHB1YmxpYzoKICAgICBDcm9z
c1RocmVhZFRhc2soKSA9IGRlZmF1bHQ7CiAKLSAgICBDcm9zc1RocmVhZFRhc2soTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlvbikKKyAgICBDcm9zc1RocmVhZFRhc2so
RnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrRnVuY3Rpb24pCiAgICAgICAgIDogbV90YXNrRnVuY3Rp
b24oV1RGTW92ZSh0YXNrRnVuY3Rpb24pKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhc2tGdW5j
dGlvbik7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOworICAgIEZ1bmN0
aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMmIyZGI4ZGVh
YmNkMWMyMzZjZmZkMjM3MmM4NmNhNTMwN2I2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZ1bmN0aW9uOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4KK2NsYXNzIEZ1bmN0aW9u
PE91dChJbi4uLik+IHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbigpID0gZGVmYXVsdDsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46
OnR5cGU+CisgICAgRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgICAgIDog
bV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFi
bGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpKQorICAgIHsKKyAgICB9CisKKyAgICBPdXQgb3Bl
cmF0b3IoKShJbi4uLiBpbikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NhbGxhYmxlV3Jh
cHBlcikKKyAgICAgICAgICAgIHJldHVybiBtX2NhbGxhYmxlV3JhcHBlci0+Y2FsbChzdGQ6OmZv
cndhcmQ8SW4+KGluKS4uLik7CisgICAgICAgIHJldHVybiBPdXQoKTsKKyAgICB9CisKKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxhYmxlV3JhcHBl
cjsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUm
Jj46OnZhbHVlPjo6dHlwZT4KKyAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYm
IGNhbGxhYmxlKQorICAgIHsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxlKSk7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBGdW5jdGlvbiYgb3BlcmF0b3I9
KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBudWxs
cHRyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRlOgorICAgIGNsYXNz
IENhbGxhYmxlV3JhcHBlckJhc2UgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNhbGxhYmxlV3JhcHBlckJhc2UoKSB7IH0K
KworICAgICAgICB2aXJ0dWFsIE91dCBjYWxsKEluLi4uKSA9IDA7CisgICAgfTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZT4KKyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXIg
OiBwdWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBleHBs
aWNpdCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgICAgICAg
ICA6IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0
ZTsKKyAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3QgQ2FsbGFibGVXcmFw
cGVyJikgPSBkZWxldGU7CisKKyAgICAgICAgT3V0IGNhbGwoSW4uLi4gaW4pIGZpbmFsIHsgcmV0
dXJuIG1fY2FsbGFibGUoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKKyAgICB9OworCisgICAgc3RkOjp1
bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFibGVXcmFwcGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6RnVuY3Rpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uRGlzcGF0Y2hlci5oCmluZGV4IGI1MmVlY2YxZWJmMjY5YTQwNjA4YmEyYTg2NzVhNzUxZDM4
MzQ4NjAuLjM0NGExNjAyMDg0MGY1Y2Q0NTA5ZDdjZTM2NGQ3MzdkNDk4ZWU3MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEZ1bmN0
aW9uRGlzcGF0Y2hlcl9oCiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8RnVuY3Rpb25EaXNwYXRjaGVyPiB7CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgfkZ1bmN0aW9uRGlzcGF0Y2hlcigpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25EaXNwYXRjaGVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuY3BwCmluZGV4IGJkMTFlMTBjMmQ1MTI5MzFjYTE2MTc1YzE5OWQxZGUxNzFkNzU1ZWYuLjZk
NDJjNGZkYmRhZGUyYjAxNzgxM2JhNDQ3MGRkMmNkZGFhNzVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
Y3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJ
ZGVudGlmaWVyOwogCiBzdGF0aWMgU3RhdGljTG9jayBtYWluVGhyZWFkRnVuY3Rpb25RdWV1ZU11
dGV4OwogCi1zdGF0aWMgRGVxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0
aW9uUXVldWUoKQorc3RhdGljIERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiYgZnVuY3Rpb25RdWV1
ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcXVlPE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4+PiBmdW5jdGlvblF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
ZXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4+IGZ1bmN0aW9uUXVldWU7CiAgICAgcmV0dXJuIGZ1bmN0
aW9uUXVldWU7CiB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIGRpc3BhdGNoRnVuY3Rpb25z
RnJvbU1haW5UaHJlYWQoKQogCiAgICAgYXV0byBzdGFydFRpbWUgPSBzdGQ6OmNocm9ubzo6c3Rl
YWR5X2Nsb2NrOjpub3coKTsKIAotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAKICAgICB3aGlsZSAodHJ1
ZSkgewogICAgICAgICB7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9u
c0Zyb21NYWluVGhyZWFkKCkKICAgICB9CiB9CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIGNhbGxPbk1haW5UaHJl
YWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggZjE5ZjU1OTAxOWRiNzk3NTBiNWY4YmRlY2ViNTllZmVm
ZGRhZTVlMS4uOTRjNzBjNjZkNmQ4MzJiYzlmNTM0ZTAyMDgxYWQ2MGZmZTUzZDJhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01h
aW5UaHJlYWQuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNp
bmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDEsNyAr
NDEsNyBAQCB0eXBlZGVmIHVpbnQzMl90IFRocmVhZElkZW50aWZpZXI7CiAvLyBNdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbk1haW5U
aHJlYWQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGNhbGxPbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbldlYlRocmVhZE9yRGlz
cGF0Y2hBc3luY09uTWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTm9uY29weWFibGVGdW5jdGlvbi5oIGIvU291cmNlL1dURi93dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjlmNGRjMDY0
MTc2NjQ3MWQyZWJjMmQ1M2M5ZmNkNDZhYTNhZTUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIE5vbmNvcHlhYmxlRnVu
Y3Rpb247Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgotY2xhc3Mg
Tm9uY29weWFibGVGdW5jdGlvbjxPdXQoSW4uLi4pPiB7Ci1wdWJsaWM6Ci0gICAgTm9uY29weWFi
bGVGdW5jdGlvbigpID0gZGVmYXVsdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxl
VHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZl
cmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5j
dGlvbihDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBl
cihzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3Zl
KGNhbGxhYmxlKSkpCi0gICAgewotICAgIH0KLQotICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGlu
KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1fY2FsbGFibGVXcmFwcGVyKQotICAgICAgICAg
ICAgcmV0dXJuIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKHN0ZDo6Zm9yd2FyZDxJbj4oaW4pLi4u
KTsKLSAgICAgICAgcmV0dXJuIE91dCgpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGFibGVXcmFwcGVyOyB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBl
PgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxs
YWJsZSkKLSAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIg
PSBudWxscHRyOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IGNsYXNzIENhbGxhYmxlV3JhcHBlckJhc2UgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkNhbGxhYmxlV3JhcHBlckJhc2Uo
KSB7IH0KLQotICAgICAgICB2aXJ0dWFsIE91dCBjYWxsKEluLi4uKSA9IDA7Ci0gICAgfTsKLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZT4KLSAgICBjbGFzcyBDYWxsYWJsZVdy
YXBwZXIgOiBwdWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgcHVibGljOgotICAgICAg
ICBleHBsaWNpdCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAg
ICAgICAgICA6IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotCi0gICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9
IGRlbGV0ZTsKLSAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3QgQ2FsbGFi
bGVXcmFwcGVyJikgPSBkZWxldGU7Ci0KLSAgICAgICAgT3V0IGNhbGwoSW4uLi4gaW4pIGZpbmFs
IHsgcmV0dXJuIG1fY2FsbGFibGUoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOyB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKLSAgICB9OwotCi0gICAg
c3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFibGVXcmFwcGVyOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6Tm9uY29weWFibGVGdW5jdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwIGIvU291cmNlL1dURi93
dGYvUnVuTG9vcC5jcHAKaW5kZXggOTY2MGYxNTE0ZTVmMDk4MTg2Mjk5OGY4MTc0MTczNjAwOTYy
NGE2Ny4uM2IwMjY3ZTk3MWI5MGYxZjNmZWM4YWJhYjllODYyZGRiMGY3YTJjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9v
cC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCiAKICAg
ICBzaXplX3QgZnVuY3Rpb25zVG9IYW5kbGUgPSAwOwogICAgIHsKLSAgICAgICAgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICAgICAgRnVuY3Rpb248dm9pZCAoKT4g
ZnVuY3Rpb247CiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1
bmN0aW9uUXVldWVMb2NrKTsKICAgICAgICAgICAgIGZ1bmN0aW9uc1RvSGFuZGxlID0gbV9mdW5j
dGlvblF1ZXVlLnNpemUoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFJ1bkxvb3A6OnBlcmZv
cm1Xb3JrKCkKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBmdW5jdGlvbnNIYW5kbGVkID0gMTsg
ZnVuY3Rpb25zSGFuZGxlZCA8IGZ1bmN0aW9uc1RvSGFuZGxlOyArK2Z1bmN0aW9uc0hhbmRsZWQp
IHsKLSAgICAgICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICAg
ICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAgICAgICAgIHsKICAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKIApAQCAtMTIzLDcgKzEyMyw3
IEBAIHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQogICAgIH0KIH0KIAotdm9pZCBSdW5Mb29w
OjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lk
IFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAg
ewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mdW5jdGlvblF1ZXVlTG9jayk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
LmgKaW5kZXggZTE1NThiNjI1OWMyN2YwZjcwOTAxNWVkNTljMTUyYjk4NjU1MzVkNS4uMzYxMWQ3
YTM5Y2I1OWNjMGY0OGU4YjE3ZGJiMmJlMjY2OWE5NGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzTWFp
bigpOwogICAgIH5SdW5Mb29wKCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2
b2lkICgpPiYmKSBvdmVycmlkZTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBydW4oKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CkBAIC03OSw3ICs3
OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNF
KEdFTkVSSUNfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRj
aEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcywgRnVuY3Rpb248dm9pZCAoKT4mJik7CiAjZW5kaWYKIAogICAg
IGNsYXNzIFRpbWVyQmFzZSB7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBlcmZvcm1Xb3JrKCk7CiAKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVMb2NrOwotICAgIERl
cXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKKyAgICBE
ZXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlvblF1ZXVlOwogCiAjaWYgVVNFKFdJTkRP
V1NfRVZFTlRfTE9PUCkKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlclJ1bkxvb3BNZXNzYWdlV2lu
ZG93Q2xhc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZTU1MzI1OTRhNTQzMjRkNjg4MTFmZTE2NmRh
NDBiZjc1MjM0Mjg0Yy4uYzk2YWEyZDk0MGQ2MTZjZWRmYzgyNDIyNDYwOTNkNjU4ODk0MzczMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTcyLDggKzcyLDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5
cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAgICAgdmlydHVhbCB+V29y
a1F1ZXVlKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3Bh
dGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJy
ZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoc2l6
ZV90IGluZGV4KT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1
ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCmlu
ZGV4IDk5NWE5NTRhYWMxZGI3NDEzM2RlOWNmYjk0ZjE5NDhjOTQxMjc0MTYuLmZkYmVmNzNiYWVj
MTZhYzU0MmNmYTY0ZTBmYjRmY2M3MzNhZTgyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3Jr
UXVldWVDb2NvYS5jcHAKQEAgLTI4LDEwICsyOCwxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAot
dm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogewogICAgIHJlZigpOwotICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIGF1dG8qIGZ1
bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAg
ICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CiAgICAgICAgICgqZnVuY3Rpb25Q
dHIpKCk7CiAgICAgICAgIGRlbGV0ZSBmdW5jdGlvblB0cjsKQEAgLTM5LDEwICszOSwxMCBAQCB2
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogICAgIH0pOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25v
OjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsK
ICAgICByZWYoKTsKLSAgICBhdXRvKiBmdW5jdGlvblB0ciA9IG5ldyBOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBhdXRvKiBmdW5jdGlvblB0ciA9
IG5ldyBGdW5jdGlvbjx2b2lkICgpPihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSks
IG1fZGlzcGF0Y2hRdWV1ZSwgXnsKICAgICAgICAgKCpmdW5jdGlvblB0cikoKTsKICAgICAgICAg
ZGVsZXRlIGZ1bmN0aW9uUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3Bh
dGNoUXVldWVXb3JrSXRlbUVmbC5oIGIvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVX
b3JrSXRlbUVmbC5oCmluZGV4IDNkZGZlNTdkZTZhM2RmZjNmZjg4NTFmMGQwMmEyOGYwMDFlMzY2
NTQuLjE2MmJhYjQyYThiNDg4Yjc3ZmRjNTE5NmZkNjQ5ZDcxMmRjYWYwMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmgKQEAgLTM0LDcgKzM0LDcg
QEAKIAogY2xhc3MgV29ya0l0ZW0gewogcHVibGljOgotICAgIFdvcmtJdGVtKFJlZjxXb3JrUXVl
dWU+JiYgd29ya1F1ZXVlLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24p
CisgICAgV29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV93b3JrUXVldWUoV1RGTW92ZSh3b3JrUXVldWUp
KQogICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgewpAQCAtNDQs
MTIgKzQ0LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dv
cmtRdWV1ZTsKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247Cisg
ICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKIH07CiAKIGNsYXNzIFRpbWVyV29ya0l0
ZW0gOiBwdWJsaWMgV29ya0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8VGltZXJXb3JrSXRlbT4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjpuYW5vc2Vj
b25kcyBkZWxheU5hbm9TZWNvbmRzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJX
b3JrSXRlbT4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uLCBzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXlOYW5vU2Vjb25k
cykKICAgICB7CiAgICAgICAgIEFTU0VSVChkZWxheU5hbm9TZWNvbmRzLmNvdW50KCkgPj0gMCk7
CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4obmV3IFRpbWVy
V29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwMDAwMDAwLjAgKyBkZWxheU5hbm9TZWNvbmRzLmNv
dW50KCkpKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRXhwaXJlZChk
b3VibGUgY3VycmVudFRpbWVOYW5vU2Vjb25kcykgY29uc3QgeyByZXR1cm4gY3VycmVudFRpbWVO
YW5vU2Vjb25kcyA+PSBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHM7IH0KIAogcHJvdGVjdGVk
OgotICAgIFRpbWVyV29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFu
b1NlY29uZHMpCisgICAgVGltZXJXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwg
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFub1Nl
Y29uZHMpCiAgICAgICAgIDogV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3ZlKGZ1
bmN0aW9uKSkKICAgICAgICAgLCBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHMoZXhwaXJhdGlv
blRpbWVOYW5vU2Vjb25kcykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwv
V29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCmlu
ZGV4IDQwZDE5MzlmY2Q0ZDBlZmE1Njg5ZWIwMmVkOTk4NmE5ZDc4MjA1ODkuLmRhOTEzYmYwNGNl
NzI3MzEwNzY3ZWY0Nzk0ZmRkMmI4NzhhNWY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2VmbC9Xb3JrUXVldWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0
RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKICAgICBtX2Rpc3BhdGNoUXVldWUtPmNs
ZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBpZiAoIW1fZGlz
cGF0Y2hRdWV1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goc3RkOjptYWtlX3VuaXF1ZTxXb3JrSXRlbT4o
KnRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIo
c3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogewogICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCmluZGV4IDE3MWFkMzAyNzI2
OTIyODZmMzJmMDk0OTJmNGYyODM3YTk3YWI2YzUuLjI1YWU2ZjE5NWMzMmZiNDEyZTA1OTU4YzM1
YjMzODk1OTMyNzQ4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9v
cEdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMu
Y3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBSdW5Mb29wOjpU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2No
ZWR1bGVkVGFzaz4gewogV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBjcmVhdGUoTm9uY29weWFibGVG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0
aW5nKQorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRlKEZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soV1RGTW92ZShmdW5j
dGlvbiksIGludGVydmFsLCByZXBlYXRpbmcpKTsKICAgICB9CiAKLSAgICBTY2hlZHVsZWRUYXNr
KE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFs
LCBib29sIHJlcGVhdGluZykKKyAgICBTY2hlZHVsZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24sIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCiAgICAgICAgIDogbV9m
dW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNo
cm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQogICAgICAgICAsIG1faXNSZXBlYXRp
bmcocmVwZWF0aW5nKQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5j
dGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9p
bnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CiAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBt
X2ZpcmVJbnRlcnZhbDsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX2lzQWN0aXZlIHsgdHJ1ZSB9
OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVm
UHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKICAgICB3YWtlVXAobG9ja2VyKTsK
IH0KIAotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25k
cyBkZWxheSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBS
dW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xv
b3BMb2NrKTsKICAgICBib29sIHJlcGVhdGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dl
bmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKaW5kZXggN2Y4MGU2OWNhNWM3YzMwNmY5MDc3YzRm
OWM4NTAzZWNjNmU1NDVjNy4uNWM3YjliNzY1NjY5NWRiNzZjZWNiYTc0NTM2MWM2MWViMmViMTFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIH0K
IH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogewogICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CiAg
ICAgbV9ydW5Mb29wLT5kaXNwYXRjaChbcHJvdGVjdCwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV0gewpAQCAtODksNyArODksNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12b2lkIFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMp
OwogICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
UnVuTG9vcEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5k
ZXggODliN2Y3MDcwYzlkNDI4ZTdiOGZiODE3YTdmOWU3YjNhZGRmOWYxOC4uOTI3Y2UzMjU0Zjhi
NTYyNzhiYTZiN2ZmMDIxYzBkZjBhYTVmMzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Z2xpYi9SdW5Mb29wR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xp
Yi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiBjbGFzcyBE
aXNwYXRjaEFmdGVyQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgRGlzcGF0Y2hBZnRlckNvbnRleHQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQorICAgIERpc3BhdGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAg
ICB7CiAgICAgfQpAQCAtMTM1LDEwICsxMzUsMTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgRnVu
Y3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKIH07CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hB
ZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiB7CiAgICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0
X3NvdXJjZV9uZXcoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcz4oZHVyYXRpb24pLmNvdW50KCkpKTsKICAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3Vy
Y2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
V29ya0l0ZW1XaW4uY3BwCmluZGV4IDg2NDIzMjJiOWU1MTZhN2U2MTNjM2MwNGEyNGY2YTMwNzU0
MzRmOTYuLjdiNzMwOTAwMjJhZWNiNWI3NWM4YTU2NTgxMzU3ZGVhMTE3YTdmYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvd2luL1dvcmtJdGVtV2luLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBX
VEYgewogCi1Xb3JrSXRlbVdpbjo6V29ya0l0ZW1XaW4oTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorV29ya0l0ZW1XaW46OldvcmtJdGVt
V2luKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCiAgICAg
OiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgICwgbV9xdWV1ZShxdWV1ZSkKIHsK
IH0KIAotUmVmUHRyPFdvcmtJdGVtV2luPiBXb3JrSXRlbVdpbjo6Y3JlYXRlKE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKK1JlZlB0cjxX
b3JrSXRlbVdpbj4gV29ya0l0ZW1XaW46OmNyZWF0ZShGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya0l0
ZW1XaW4oV1RGTW92ZShmdW5jdGlvbiksIHF1ZXVlKSk7CiB9CkBAIC00Nyw3ICs0Nyw3IEBAIFdv
cmtJdGVtV2luOjp+V29ya0l0ZW1XaW4oKQogewogfQogCi1IYW5kbGVXb3JrSXRlbTo6SGFuZGxl
V29ya0l0ZW0oSEFORExFIGhhbmRsZSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorSGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVt
KEhBTkRMRSBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSog
cXVldWUpCiAgICAgOiBXb3JrSXRlbVdpbihXVEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUpCiAgICAg
LCBtX2hhbmRsZShoYW5kbGUpCiAgICAgLCBtX3dhaXRIYW5kbGUoMCkKQEAgLTU1LDcgKzU1LDcg
QEAgSGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKEhBTkRMRSBoYW5kbGUsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW4KICAgICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxl
KTsKIH0KIAotUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBIYW5kbGVXb3JrSXRlbTo6Y3JlYXRlQnlB
ZG9wdGluZ0hhbmRsZShIQU5ETEUgaGFuZGxlLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCitSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IEhh
bmRsZVdvcmtJdGVtOjpjcmVhdGVCeUFkb3B0aW5nSGFuZGxlKEhBTkRMRSBoYW5kbGUsIEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIYW5kbGVXb3JrSXRlbShoYW5kbGUsIFdURk1vdmUoZnVuY3Rpb24pLCBx
dWV1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4uaAppbmRleCBiYWE3N2Q5N2E3NDlhMzJl
MjIyZDFiMTk5Mzg3Nzc0NDM1MjEzYWY4Li4yNGVlMjY1MmI1ODQ5ODljZjEwMmQxMmM5ODQzMDU1
NGNlMGY4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4uaApAQCAtMzksMzAgKzM5LDMwIEBA
IGNsYXNzIFdvcmtRdWV1ZTsKIAogY2xhc3MgV29ya0l0ZW1XaW4gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8V29ya0l0ZW1XaW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdv
cmtJdGVtV2luPiBjcmVhdGUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmLCBXb3JrUXVl
dWUqKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdvcmtJdGVtV2luPiBjcmVhdGUoRnVuY3Rpb248dm9p
ZCAoKT4mJiwgV29ya1F1ZXVlKik7CiAgICAgdmlydHVhbCB+V29ya0l0ZW1XaW4oKTsKIAotICAg
IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5j
dGlvbjsgfQorICAgIEZ1bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVu
Y3Rpb247IH0KICAgICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZS5n
ZXQoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV29ya0l0ZW1XaW4oTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiYmLCBXb3JrUXVldWUqKTsKKyAgICBXb3JrSXRlbVdpbihGdW5jdGlvbjx2b2lk
ICgpPiYmLCBXb3JrUXVldWUqKTsKIAogcHJpdmF0ZToKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsK
ICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3F1ZXVlOwogfTsKIAogY2xhc3MgSGFuZGxlV29ya0l0
ZW0gOiBwdWJsaWMgV29ya0l0ZW1XaW4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SGFu
ZGxlV29ya0l0ZW0+IGNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUoSEFORExFLCBOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYsIFdvcmtRdWV1ZSopOworICAgIHN0YXRpYyBSZWZQdHI8SGFuZGxl
V29ya0l0ZW0+IGNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUoSEFORExFLCBGdW5jdGlvbjx2b2lkICgp
PiYmLCBXb3JrUXVldWUqKTsKICAgICB2aXJ0dWFsIH5IYW5kbGVXb3JrSXRlbSgpOwogCiAgICAg
dm9pZCBzZXRXYWl0SGFuZGxlKEhBTkRMRSB3YWl0SGFuZGxlKSB7IG1fd2FpdEhhbmRsZSA9IHdh
aXRIYW5kbGU7IH0KICAgICBIQU5ETEUgd2FpdEhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fp
dEhhbmRsZTsgfQogCiBwcml2YXRlOgotICAgIEhhbmRsZVdvcmtJdGVtKEhBTkRMRSwgTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmLCBXb3JrUXVldWUqKTsKKyAgICBIYW5kbGVXb3JrSXRl
bShIQU5ETEUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYsIFdvcmtRdWV1ZSopOwogCiAgICAgSEFORExF
IG1faGFuZGxlOwogICAgIEhBTkRMRSBtX3dhaXRIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVl
dWVXaW4uY3BwCmluZGV4IGU0NTI5ODE0OWNhNDdiYWI5ZGU2MGQwOWM2ZWQwMmRiNGRmOTY5MGQu
Ljg1NWM0MjlkNzQ0YjkwMDA4ZTJhOGQ4NjlhOWE5Yjc1N2ZmYjYzZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgOjpEZWxldGVUaW1lclF1ZXVlRXgobV90aW1lclF1ZXVl
LCAwKTsKIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2
b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVt
UXVldWVMb2NrKTsKICAgICByZWYoKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBzdHJ1Y3QgVGltZXJD
b250ZXh0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRpbWVyQ29udGV4dD4gewogICAg
IHN0YXRpYyBSZWZQdHI8VGltZXJDb250ZXh0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgVGltZXJDb250ZXh0KTsgfQogCiAgICAgV29ya1F1ZXVlKiBxdWV1ZTsKLSAgICBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQgKCk+IGZ1
bmN0aW9uOwogICAgIE11dGV4IHRpbWVyTXV0ZXg7CiAgICAgSEFORExFIHRpbWVyOwogCkBAIC0x
ODAsNyArMTgwLDcgQEAgdm9pZCBXb3JrUXVldWU6OnRpbWVyQ2FsbGJhY2sodm9pZCogY29udGV4
dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKQogICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fdGltZXJRdWV1ZSk7CiAgICAgcmVmKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggOTY2OGYzMDAyMDBjMGU5
NzU4NWZjMTE5MmFjNGU0ZWM3MzY1ZTI3Zi4uOGYwZWFhYjk2YjY2ZjU3OWJkZGI2Y2ZmMjQ5NTgz
ODA3ZTlmZDRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcApAQCAtOTUs
NyArOTUsNyBAQCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246Ok1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbihQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbAogICAgIG1fbWVkaWFFbmRwb2ludC0+
Z2VuZXJhdGVEdGxzSW5mbygpOwogfQogCi12b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6cnVuVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKK3ZvaWQgTWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpydW5UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFz
aykKIHsKICAgICBpZiAobV9kdGxzRmluZ2VycHJpbnQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8g
T25seSBvbmUgdGFzayBuZWVkcyB0byBiZSBkZWZlcnJlZCBzaW5jZSBpdCB3aWxsIGhvbGQgb2Zm
IGFueSBvdGhlcnMgdW50aWwgY29tcGxldGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmgKaW5kZXggZjI1ODJmYjQzMTI1ZWJiNGRiNWU4MjJkNzhiOWEzYjY1NGRiODY1Mi4uZmZiNjRm
MTE5YTM4Y2Q4MzViNjNjM2EyNDk2MjVlNmZhYmQxNTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5oCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJSVENTZXNz
aW9uRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ck5lZ290aWF0aW9uTmVlZGVkU3RhdGUoKSBvdmVycmlkZSB7IG5vdEltcGxlbWVudGVkKCk7IH07
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBydW5UYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJik7CisgICAgdm9pZCBydW5UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIHZvaWQg
c3RhcnRSdW5uaW5nVGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVy
T3B0aW9ucyYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJik7CkBA
IC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50
KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFFbmRwb2ludD4gbV9tZWRpYUVu
ZHBvaW50OwogCi0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX2luaXRpYWxEZWZl
cnJlZFRhc2s7CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9pbml0aWFsRGVmZXJyZWRUYXNrOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNEUFByb2Nlc3Nvcj4gbV9zZHBQcm9jZXNzb3I7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaAppbmRleCBjZmU4ZjE1ZWU0ODQ3NzhkMjRhMDllODI0OTgxODViMDA3NjcxMzJlLi44
OGE3ZjcxMTM2YzBkMzYxYmY3MjNlOTg3OGJhYmYzYWVlZjYwYWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
QXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCByZXN1bWUoRnVuY3Rpb248dm9pZCAoKT4mJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGNsb3NlKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGlzUGxh
eWluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBhYzEzNzFlMmE1YTU3
MzMzNmI0NjhjZTVhN2MxZjdmNTk3MjFkMmM5Li43Y2VjY2JhMzk1MDUxMTg0YmE1ZDg5ODUyNGVl
NGNkMTQwZmE2YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xMDYsNyAr
MTA2LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5n
KCkKICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKIH0KIAotdm9pZCBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7
CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbgogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhX
VEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKEZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5p
dGlhbGl6ZWQoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6c3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpbwog
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9u
KSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNT
RVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgdW5pbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAppbmRleCAwOWM5YjM4YjdmOTIyYjA1MzIxNjc5ZTM1YjNjNjViZjE3NjE0ZjRm
Li4zNWEwZGYxNmQzNDQ3ZWVhZjY5ZGE5NGI1N2ExOWZjNTJlYzFmMzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIC8vIEF1ZGlvRGVz
dGluYXRpb25Ob2RlCiAgICAgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlc3VtZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2xvc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9z
ZShGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBsb25nIG1heENo
YW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFja01p
Y3JvdGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2suY3BwCmluZGV4IDdhYTIyNjlmNGM1ZmUxMTczMDg2M2NmMjEzMmZmZmQ4MjY5MjJlNjQuLjY2
ZjU5MGE0OTc1YWU5NjgzYzYxYTE2MTVmMjliZDFkZDc0YTcwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
OjpBY3RpdmVET01DYWxsYmFja01pY3JvdGFzayhNaWNyb3Rhc2tRdWV1ZSYgcXVldWUsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCitBY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWljcm90YXNrUXVldWUmIHF1ZXVlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
aykKICAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAg
ICwgbV9xdWV1ZShxdWV1ZSkKICAgICAsIG1fdGFzayhXVEZNb3ZlKHRhc2spKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaAppbmRleCBlMTFjNGQw
N2E0YWFhNTRiOWRmYjNiMzFkNDEzYzE5MjUwMDhiY2JhLi44YTdmN2Y2MzcwODMzZWIwNzYyZjJj
Y2VlMjU2YzExZTE3NmZlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
Q2FsbGJhY2tNaWNyb3Rhc2suaApAQCAtMjcsMTQgKzI3LDE0IEBACiAKICNpbmNsdWRlICJBY3Rp
dmVET01DYWxsYmFjay5oIgogI2luY2x1ZGUgIk1pY3JvdGFza3MuaCIKLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrIGZpbmFs
IDogcHVibGljIE1pY3JvdGFzaywgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBBY3RpdmVE
T01DYWxsYmFja01pY3JvdGFzayhNaWNyb3Rhc2tRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWljcm90YXNrUXVldWUmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5BY3RpdmVET01DYWxsYmFja01pY3JvdGFzaygpOwogCiAgICAgUmVzdWx0IHJ1bigpIG92
ZXJyaWRlOwpAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIC8vIGJlIGFjY2Vzc2VkIHZp
YSB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgd2hpY2ggc2hvdWxkIGhvbGQgYSByZWZlcmVu
Y2UgdG8gdGhlIHJlbGV2ZW50CiAgICAgLy8gcXVldWUuCiAgICAgTWljcm90YXNrUXVldWUmIG1f
cXVldWU7Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+IG1fdGFzazsKKyAgICBGdW5j
dGlvbjx2b2lkKCk+IG1fdGFzazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGRkMGFiMjFlMjA2
MjU1OTk1OWIzNzI5Yzk4Zjg4Zjg3ODkwYTQyZGUuLmRlOTkyOTY4OWYyMmY0NDA1ZjQzMzZhNmNh
YTIxZmMyMjhhMWUyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29sZVR5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC0x
MzMsMjAgKzEzMywyMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENsZWFu
dXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFz
aywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8
VCwgRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlw
ZT4KICAgICAgICAgVGFzayhUIHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhXVEZNb3ZlKHRh
c2spKQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRh
c2spCisgICAgICAgIFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrKQogICAgICAgICAgICAg
OiBtX3Rhc2soW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
eyB0YXNrKCk7IH0pCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlw
ZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIEZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRh
c2tUYWcsIFQgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAg
ICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0cnVlKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFu
dXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBtX3Rhc2s7CisgICAgICAgIEZ1bmN0aW9u
PHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4gbV90YXNrOwogICAgICAgICBib29sIG1f
aXNDbGVhbnVwVGFzazsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHAKaW5kZXggNGFlNmM4MGNlMzRlNzk0ZTVlYzYyZDc4MmM1ODEyOGYxNzZkMmVh
NC4uYjMyODdlZWUxYjc4MGFhMGFjYWY0MWEzZTYxYjM0M2Q3MTMwZTRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMzksNyArMzksNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjQsMTIgKzY0LDEyIEBAIGlubGluZSBBc3luY0ZpbGVTdHJlYW06OkludGVy
bmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKICNlbmRpZgogfQogCi1z
dGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+PiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQgKCk+Pj4gcXVldWU7CiAKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7CiAgICAgc3RkOjpjYWxsX29u
Y2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZv
aWQgY2FsbE9uRmlsZVRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3lu
Y0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTE0LDcgKzExNCw3IEBA
IEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiAgICAgfSk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKE5vbmNvcHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJhdGlvbikKK3Zv
aWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9pZChG
aWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7CiAgICAgYXV0
byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwogICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZpbnRl
cm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggMDg4YmIzNzc0NmY0NzU5ODJkNDcwODRkZjUw
NjFmMTk3NmM2OTJlMS4uMzVlODVhN2ExNWRlMzM5NzdjNzdlNzQ2YWJhZDMwOGExOWNlYmMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC0zNCw3ICszNCw3
IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBwZXJmb3JtKE5vbmNvcHlh
YmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0
cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0oRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lk
KEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRl
cm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZjA1YmYxYTM5OTBkZjVmZDJjNmE3NzJjOTgxMDcx
Y2ZmNWY0MjNiZS4uOTVlYzc4MjhjZWFlYWQ0MWJmMmQ2OWQ4NjViYmU2ZTUwNjYyM2U5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzEzMyw3ICszMTMzLDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgIHVwZGF0ZUVt
YmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9z
dExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQor
dm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKICAgICBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC0zMTQ2LDcgKzMxNDYsNyBAQCB2b2lkIEZyYW1lVmlldzo6
Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSgpCiAgICAgaWYgKCFtX3Bvc3RMYXlvdXRDYWxsYmFj
a1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCgpPj4gcXVldWUgPSBXVEZNb3ZlKG1fcG9zdExheW91dENhbGxiYWNrUXVl
dWUpOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBxdWV1ZSA9IFdURk1vdmUobV9wb3N0
TGF5b3V0Q2FsbGJhY2tRdWV1ZSk7CiAgICAgZm9yIChhdXRvJiB0YXNrIDogcXVldWUpCiAgICAg
ICAgIHRhc2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGY0NDQ5ZTUzNDhlNTg3
MzIyMjA5YmNhNjY2ZDQxYjZjMjgzMGRlMjkuLmU1OGNmNjJhNWI3NzE5MmE2ODA4YWYwOTM3ZjVl
NDAyOTVmZDUwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVSZWxheW91dCgpOwogICAgIHZvaWQgc2NoZWR1bGVSZWxheW91
dE9mU3VidHJlZShSZW5kZXJFbGVtZW50Jik7CiAgICAgdm9pZCB1bnNjaGVkdWxlUmVsYXlvdXQo
KTsKLSAgICB2b2lkIHF1ZXVlUG9zdExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAgICAgYm9vbCBsYXlvdXRQZW5kaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0lu
TGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSAhPSBPdXRzaWRlTGF5b3V0OyB9
CiAgICAgYm9vbCBpc0luUmVuZGVyVHJlZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
UGhhc2UgPT0gSW5SZW5kZXJUcmVlTGF5b3V0OyB9CkBAIC04MjgsNyArODI4LDcgQEAgcHJpdmF0
ZToKICAgICBTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7CiAK
ICAgICBJbnRSZWN0KiBtX2NhY2hlZFdpbmRvd0NsaXBSZWN0IHsgbnVsbHB0ciB9OwotICAgIFZl
Y3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4+IG1fcG9zdExheW91dENhbGxiYWNrUXVl
dWU7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcG9zdExheW91dENhbGxiYWNrUXVl
dWU7CiB9OwogCiBpbmxpbmUgdm9pZCBGcmFtZVZpZXc6OmluY3JlbWVudFZpc3VhbGx5Tm9uRW1w
dHlDaGFyYWN0ZXJDb3VudCh1bnNpZ25lZCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IDU3NjA3ODNkYjhjZTAwMzVj
OGVlNDA3OGE1NDVmNzA1ZmY2MTJkZjUuLjczMGMwYTZiZDkzZjQ1NzhkMWVkYmY5YWNlMWNkODY1
NjZlNmM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVGhyZWFkLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29sIFNjcm9sbGluZ1RocmVhZDo6aXND
dXJyZW50VGhyZWFkKCkKICAgICByZXR1cm4gdGhyZWFkSWRlbnRpZmllciAmJiBjdXJyZW50VGhy
ZWFkKCkgPT0gdGhyZWFkSWRlbnRpZmllcjsKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRp
c3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIGF1dG8mIHNjcm9sbGluZ1RocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCk7
CiAgICAgc2Nyb2xsaW5nVGhyZWFkLmNyZWF0ZVRocmVhZElmTmVlZGVkKCk7CkBAIC01OCw3ICs1
OCw3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgc2Nyb2xsaW5nVGhyZWFkLndha2VVcFJ1bkxvb3Ao
KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcihOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2hCYXJyaWVyKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgZGlzcGF0
Y2goW2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZShmdW5jdGlvbikpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQo
KQogewogICAgIEFTU0VSVChpc0N1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICBWZWN0b3I8Tm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPj4gZnVuY3Rpb25zOworICAgIFZlY3RvcjxGdW5jdGlvbjx2
b2lkICgpPj4gZnVuY3Rpb25zOwogICAgIAogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9mdW5jdGlvbnNNdXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCmluZGV4IDAzN2Y5NWI5MGI2M2E5ZGViMTMxYzM4
MWJkOWQzMjQ5OTdiNTQxZWQuLjU1MDkwNTUxZDU0YmEzZmQ1ZTUxODZhZDVmYjYzNWY0MWE2Nzg2
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ro
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVh
ZC5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDgs
MTEgKzQ4LDExIEBAIGNsYXNzIFNjcm9sbGluZ1RocmVhZCB7CiAKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0N1cnJlbnRUaHJlYWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAg
Ly8gV2lsbCBkaXNwYXRjaCB0aGUgZ2l2ZW4gZnVuY3Rpb24gb24gdGhlIG1haW4gdGhyZWFkIG9u
Y2UgYWxsIHBlbmRpbmcgZnVuY3Rpb25zCiAgICAgLy8gb24gdGhlIHNjcm9sbGluZyB0aHJlYWQg
aGF2ZSBmaW5pc2hlZCBleGVjdXRpbmcuIFVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nl
cy4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaEJhcnJpZXIoTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaEJhcnJpZXIoRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIE5ldmVyRGVzdHJveWVkPFNjcm9sbGluZ1RocmVhZD47CkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXg7CiAKICAgICBMb2Nr
IG1fZnVuY3Rpb25zTXV0ZXg7Ci0gICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4+IG1fZnVuY3Rpb25zOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlv
bnM7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBX
ZWJDb3JlOjpSdW5Mb29wIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HZW5lcmljVGFza1F1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNU
YXNrUXVldWUuY3BwCmluZGV4IDBjNmMyNDNiOGUwOGNhMTJiODk2NmQ5ZmFhY2NkZTQyMjJmOTAx
MDUuLjFhYTdlMWI4NzYzZmYxYjQ3ZGZiOGUyMTM5NDA3NjQ1ZWI3NTVlYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6VGFza0Rpc3BhdGNoZXIoKQogewogfQogCi12b2lkIFRh
c2tEaXNwYXRjaGVyPFRpbWVyPjo6cG9zdFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCit2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cG9zdFRhc2soRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewogICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChXVEZN
b3ZlKGZ1bmN0aW9uKSk7CiAgICAgcGVuZGluZ0Rpc3BhdGNoZXJzKCkuYXBwZW5kKG1fd2Vha1B0
ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVy
aWNUYXNrUXVldWUuaAppbmRleCA0ZDg1YzlhMGIyMTg0OThjNjk1MTQ2MTkxMDZkMzhkMDc5OTkx
YWJjLi5mNTBhMzYxMzlmMmY3NmUwNDU2NzdiNjk4NTVjMDVmNTVlNDJjNjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgcG9zdFRhc2soTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkKCk+JiYgZikKKyAgICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiBmKQogICAgIHsKICAgICAgICAgbV9jb250ZXh0LnBvc3RUYXNrKFdURk1vdmUoZikpOwog
ICAgIH0KQEAgLTUzLDcgKzUzLDcgQEAgdGVtcGxhdGU8PgogY2xhc3MgVGFza0Rpc3BhdGNoZXI8
VGltZXI+IHsKIHB1YmxpYzoKICAgICBUYXNrRGlzcGF0Y2hlcigpOwotICAgIHZvaWQgcG9zdFRh
c2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcG9zdFRhc2soRnVu
Y3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgVGltZXImIHNoYXJlZFRp
bWVyKCk7CkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE9uZVRh
c2soKTsKIAogICAgIFdlYWtQdHJGYWN0b3J5PFRhc2tEaXNwYXRjaGVyPiBtX3dlYWtQdHJGYWN0
b3J5OwotICAgIERlcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVGFz
a3M7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVGFza3M7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICB0eXBlZGVmIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiBUYXNrRnVuY3Rp
b247CisgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkKCk+IFRhc2tGdW5jdGlvbjsKIAogICAgIHZv
aWQgZW5xdWV1ZVRhc2soVGFza0Z1bmN0aW9uJiYgdGFzaykKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCmluZGV4IDg2OWE2OGU5ODg2YjJkMGJmNTk4YmUzMGE5MmRkZjY0NWRlOTM3Njgu
Ljk4OWIyZWYzNTZmM2Q5NjgzYTJmN2Q4ZmJkNWRlMmU2NzlkZTQ3ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlVHJhY2tzKCk7CiAgICAgdm9pZCByZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogCi0gICAgdm9p
ZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOwor
ICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAg
ICBlbnVtIERpc3BsYXlNb2RlIHsKICAgICAgICAgTm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQppbmRleCA4NGM3ZDYyMzI0ZjY0NzExZTE2NWU1MjQzZGY4OGYyMWE1MGVkN2U5Li5hYmY0
MzdkMzcxNjVmZmVlMzZlYjA3ZDJjYWM0ZmNkYjRkODVmZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1MKICAg
ICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBjYWxsT25NYWluVGhy
ZWFkKFt3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKaW5kZXggZDQ5ZDE1MTIxMzk2Mzg4NjQ5ZGUxNTdj
MzA0NzE3NDkzZWJmY2NiYy4uMTg3MmNkMmM4YmMzMjk1NTgzMjZjZmZmMWQ5NmZhN2VkNzVhODIy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Qcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogICAgIH0p
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBNZWRpYVN0cmVhbVBy
aXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24p
CiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhp
cyA9IGNyZWF0ZVdlYWtQdHIoKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVByaXZhdGUuaAppbmRleCA5MjMwNGVmYmQ2MzQ5YWNmMTk2OTc1NGZmODI4YTA2ZmE0NGMwZDNm
Li4yNWM0ZGI0ZDMzMTVkNTg1Y2ViYjgwZjlhMTYxOWY4ZDRkMmNiYzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuaApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKICAgICB2b2lkIHVwZGF0ZUFj
dGl2ZVZpZGVvVHJhY2soKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNr
KEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFTdHJlYW1Q
cml2YXRlPiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWTWVkaWFDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAppbmRleCBmNDc0YWViOWI3YzczY2JjNGM4
MzRjMmYxZWM5MmI1ODljMTQ1YzY0Li43NGQ3ZmZjMWYyNGYwODE5MzI0MGZjZTA2MzE3ODViZDY0
NWY2ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaApAQCAtMzEsNyArMzEsNyBAQAog
I2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC04Niw3ICs4Niw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHNldFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlVmlk
ZW9EYXRhT3V0cHV0Kik7CiAgICAgdm9pZCBzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFW
Q2FwdHVyZUF1ZGlvRGF0YU91dHB1dCopOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFz
ayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZl
cnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1
cFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQppbmRleCA3NmFmZDliYmU1
YTA3ZTlhNzU4YWE0NWI4ZTdjN2U2NTFjYmNiMzNiLi5jMmQ5MjhkZWIzZTZiNTA4OTg4MjU2YmM1
MzM3NTc5Y2Q5YWZjN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCkBAIC0yNDAs
NyArMjQwLDcgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0QXVkaW9TYW1wbGVCdWZm
ZXJEZWxlZ2F0ZShBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQKICAgICBbYXVkaW9PdXRwdXQgc2V0
U2FtcGxlQnVmZmVyRGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFBdWRp
b0NhcHR1cmVTZXJpYWxRdWV1ZSgpXTsKIH0KIAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6
c2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uKQordm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAg
IGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5jcHAKaW5kZXggZTE3MjU2M2RkZGM0Y2ViMjVkOWZkYTZhMzAzZTJjZjA5MWJmMDBkZC4u
MjRiNDEyYzUwNzM0ZWEwZjQxNzFjNjZhMGU5ZWY4ODdlYjU1MmE2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtNTIxLDEzICs1MjEsMTMgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlKENoYW5nZSBjaGFuZ2Up
CiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRhdGUpOwogfQogCi1zdGF0aWMgVmVjdG9yPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKQor
c3RhdGljIFZlY3RvcjxGdW5jdGlvbjx2b2lkICgpPj4mIHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tR
dWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+Pj4gdmVjdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8RnVuY3Rpb248dm9pZCAoKT4+PiB2ZWN0b3I7CiAgICAgcmV0dXJuIHZlY3RvcjsKIH0KIAot
dm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIGNhbGxiYWNrKQordm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soRnVuY3Rp
b248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVl
dWUoKS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggM2NlNzA0NjI2NzQ1YTkzNmViNGNkYjViOThiYTc0MDc2
MDhjMTUxNi4uN2NkOTEzZmIwYTMwODM0YWNkNzg1NGRmOTcyZGFkMzNlMTFhYjliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC0zNCw3ICszNCw3IEBACiAj
aW5jbHVkZSAiU3R5bGVVcGRhdGUuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVcGRhdGU+IG1fdXBkYXRlOwogfTsKIAotdm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9u
Q2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKK3ZvaWQgcXVldWVQb3N0
UmVzb2x1dGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogYm9vbCBwb3N0UmVzb2x1
dGlvbkNhbGxiYWNrc0FyZVN1c3BlbmRlZCgpOwogCiBib29sIGlzUGxhY2Vob2xkZXJTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcAppbmRleCBlMWE0YTE1ZGRkN2YzNDcxNjFlNDQ0MzM3MWZjNDdiNzIyNjhmOTk0
Li5lZGM5ZWIzM2M1MDM1NTIwYWM1NDJkMzVkMGE1YmNhMjJmOWM3NmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBT
dHJpbmcgU3RvcmFnZVN5bmNNYW5hZ2VyOjpmdWxsRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWRlbnRpZmllcgogICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiLmxvY2Fsc3RvcmFnZSIpOwogfQogCi12
b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uKQordm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQobV90aHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VTeW5jTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5oCmluZGV4IDc1YTQ4NmI2MjBjMmJiMzEyYWU4Y2RmOWQ1MDY0YjQwMjZiYTFlYzUu
Ljg5ZTZiNDMzYTUxZTYzZGVlMzlkNzg5ZDFkOGU1YmE1YjNiMmQ2ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZVN5bmNNYW5hZ2VyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoKTsKICAgICB+U3RvcmFnZVN5bmNNYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoKE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBkaXNwYXRjaChGdW5jdGlv
bjx2b2lkICgpPiYmKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggMjk2NmUwNDA2ZTE3MDRmMjIwYzUxYzI2
ZGU3OGQwODIxNDI2YzYwOS4uMGI2ZWQwNzZmZmY1NWExMWQ5MTZiZGU1OTlkY2Q1YmMwMWU4ZTE2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzQsMTEgKzc0
LDExIEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCgpCiAgICAgfQogfQog
Ci12b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgU3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZElEKTsKLSAgICBtX3F1ZXVlLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUo
ZnVuY3Rpb24pKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFk
Ojp0ZXJtaW5hdGUoKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1p
bmF0ZSgpCiAgICAgaWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1
ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+
KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwogICAgIH0pKTsK
ICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5oCmluZGV4IDQ3NTJkNWIxOWUxYjA2Y2FhOWU3ZWVkODg0NGI0OWQ1
ZjNmY2JmYTIuLjNmMWI4ODQ1YjZmM2ZkN2NmZTg3MTgwMmNlYTQ3ZDEwY2IxNDA4NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaApAQCAtMjYsMTAgKzI2LDkgQEAKICNpZm5k
ZWYgU3RvcmFnZVRocmVhZF9oCiAjZGVmaW5lIFN0b3JhZ2VUaHJlYWRfaAogCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGFydCgp
OwogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgp
PiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxs
VGhyZWFkcygpOwogCkBAIC01OSw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwZXJmb3Jt
VGVybWluYXRlKCk7CiAKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7Ci0gICAgTWVz
c2FnZVF1ZXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+IG1fcXVldWU7CisgICAgTWVz
c2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDNmZmQ1NDFjMTRiNjc3N2VjNjNlZDRhZWNlNzllNzRhZWYwMDBmYzMu
LjczZTVhYzlmNTBmN2UwMTlkZmM1NzU1YmYxYmRjOTAzNzE4YmVmOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTMwOCw3ICsz
MDgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9E
YXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdAogICAgICAgICBoYW5kbGVyKCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBG
dW5jdGlvbjx2b2lkIChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKE5ldHdvcmtDYWNo
ZTo6c2luZ2xldG9uKCkuaXNFbmFibGVkKCkpIHsKQEAgLTM1Miw3ICszNTIsNyBAQCBzdGF0aWMg
dm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Ywogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0
YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKLSAgICAgICAgZXhw
bGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoV2Vic2l0
ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBleHBsaWNpdCBDYWxsYmFja0Fn
Z3JlZ2F0b3IoRnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKKyAgICAgICAgRnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiBtX2NvbXBsZXRpb25IYW5k
bGVyOwogICAgICAgICBXZWJzaXRlRGF0YSBtX3dlYnNpdGVEYXRhOwogICAgIH07CiAKQEAgLTQx
Miw3ICs0MTIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRy
aWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBGdW5jdGlvbjx2
b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
KQogICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmlzRW5hYmxlZCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2NTA0
ZTc1YTlkZmQ2MTQzNjBlMjVlMTQwZTM5ZGVmZjE0ZjQ0OWY0Li44MTMzYzIyMTNiMzQwM2MyZTE4
NGU2M2U1Mzk0NWI1YjBkODQ3OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDc2NzYxODEw
OTQ4YzJiYzBiOGVhYmYyMDAyNWMwMjRjYzFkNWQxZC4uZTQ5MTMxZmM3ZWEzMWFjODI2OWE3MmY2
ZjViNTk5ZWI2Mzc5OGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBDYWNo
ZTo6cmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICBy
ZW1vdmUobWFrZUNhY2hlS2V5KHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDYWNoZTo6dHJhdmVyc2Uo
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZl
cnNlSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRy
YXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJs
ZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmgKaW5kZXggOGUyM2RjMTZiYjkxNDVlMjEzNGM4YjM1ZTliYWEyNjliYWFjNGRi
Yi4uMmM2YjdjMjcxMjBlZWI0ZmQzNzgzMzg2Mzc4MzE5ZTYzMWRiYjI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAi
U2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBFbnRy
eSYgZW50cnk7CiAgICAgICAgIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIHJlY29yZEluZm87
CiAgICAgfTsKLSAgICB2b2lkIHRyYXZlcnNlKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29u
c3QgVHJhdmVyc2FsRW50cnkqKT4mJik7CisgICAgdm9pZCB0cmF2ZXJzZShGdW5jdGlvbjx2b2lk
IChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXkm
KTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCA4YzkxYzllYzY3NTg4MjJjNmIz
MGY1ZmI0MGI4MmMxYzY0OGQ0ZWYxLi44NGI5NDk3OTZmNDdlMTViM2NiZmU0ZTI5MDM2ODc3MTJk
MWQ3OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtNjksNyArNjks
NyBAQCBSZWY8SU9DaGFubmVsPiBJT0NoYW5uZWw6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgSU9DaGFubmVsOjpUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSU9DaGFu
bmVsKGZpbGVQYXRoLCB0eXBlKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBydW5UYXNrSW5R
dWV1ZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1
ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBydW5UYXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkICgpPiYm
IHRhc2ssIFdvcmtRdWV1ZSogcXVldWUpCiB7CiAgICAgaWYgKHF1ZXVlKSB7CiAgICAgICAgIHF1
ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCBlMjVk
MzhjNjhjYTUwNTkyNDkzMGE5NzQyNzg5ZTUwMWZlOGQyYzBlLi45NTdmNDBkNWM5OTJjZDUyZmZk
OTg3YmRhNGU2ZWM1ZjM0ZDc2NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSA8d3RmL0Jsb29tRmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgICAgICBTaGFyZUNvdW50ID0g
MSA8PCAxLAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBUcmF2ZXJzZUZsYWdzOwotICAg
IHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBSZWNvcmQqLCBjb25zdCBS
ZWNvcmRJbmZvJik+IFRyYXZlcnNlSGFuZGxlcjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFJlY29yZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJhdmVyc2VIYW5kbGVyOwogICAg
IC8vIE51bGwgcmVjb3JkIHNpZ25hbHMgZW5kLgogICAgIHZvaWQgdHJhdmVyc2UoY29uc3QgU3Ry
aW5nJiB0eXBlLCBUcmF2ZXJzZUZsYWdzLCBUcmF2ZXJzZUhhbmRsZXImJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281024</attachid>
            <date>2016-06-10 11:56:26 -0700</date>
            <delta_ts>2016-06-10 12:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160610115756.patch</filename>
            <type>text/plain</type>
            <size>6567</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiM2Y1ZjYwZjhiYjZiNGVhYjMxMWVk
NWRhNmVhNzdhMWI1ZTE0NGMuLjk3OGQ0OWVjODVkMzcyY2M0MTI2MmUwZTBjZDI4ODk4ZGRhZDk2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxNi0wNi0wOSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5hZGRyZXNzZWQgcmV2
aWV3IGZlZWRiYWNrIGZyb20gcjIwMTg3MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMDY2MzBmMGYxMDQ2MWRmNDdiZDgyNmY5YjVhN2EwMWJhMzNhYTE3My4u
ZjEzZmM3NTM3N2FlN2M3MjA3YTM5MjBiMzJiMzVmMTBmMWQ5NTQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04Miw2ICs4Miw3IEBACiAJCTFBMUQ4QjlF
MTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUExRDhCOUQxNzMxODc5ODAwMTQxREE0
IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCTFBMjMzQzdEMTdEQUE2RTMwMEE5
M0FDRiAvKiBNYWxsb2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBMjMzQzdDMTdEQUE2RTMwMEE5M0FDRiAvKiBNYWxsb2NQdHIuaCAqLzsgfTsK
IAkJMUE0MjhCOEMxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
NDI4QjhCMUM4Rjg5REQwMDUxRTlFQiAvKiBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25z
LmggKi87IH07CisJCTFBNDQ3ODEwMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDc4MEYxRDBCNDNF
NTAwRTI1RDM4IC8qIEZ1bmN0aW9uLmggKi87IH07CiAJCTFBNDY1NjE5MUM3RkM2OEUwMEY1OTIw
RiAvKiBPcHRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBNDY1NjE4MUM3RkM2OEUwMEY1OTIwRiAvKiBPcHRpb25TZXQuaCAqLzsgfTsKIAkJ
MUE2QkI3NjkxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2QkI3NjgxNjJGMzAwNTAwREQxNkRC
IC8qIFN0cmVhbUJ1ZmZlci5oICovOyB9OwogCQkxQTZFQjFFMDE4N0QwQkQzMDAzMDEyNkYgLyog
U3RyaW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE2RUIxREYxODdEMEJEMzAwMzAxMjZGIC8qIFN0cmluZ1ZpZXcuaCAqLzsgfTsKQEAgLTQw
Niw2ICs0MDcsNyBAQAogCQkxQTIzM0M3QzE3REFBNkUzMDBBOTNBQ0YgLyogTWFsbG9jUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTNGNkJFNjE3NEFEQTIxMDBCMkVFQTcgLyogTmV2ZXJEZXN0
cm95ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV2ZXJEZXN0cm95ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGli
aWxpdHlEZWNsYXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBw
S2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQTQ0NzgwRjFEMEI0M0U1MDBFMjVEMzggLyogRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUE0NjU2MTgxQzdGQzY4RTAwRjU5MjBGIC8qIE9wdGlvblNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE2QkI3NjgxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1CdWZmZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUE2RUIxREYxODdEMEJEMzAwMzAxMjZGIC8qIFN0cmluZ1ZpZXcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQwLDYgKzg0Miw3IEBACiAJCQkJMEY5RDMzNUMxNjVE
QkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAogCQkJCTBGMkI2NkE1MTdCNkI0
RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLywKIAkJCQlBOEE0NzJBNjE1MUE4MjVBMDA0MTIz
RkYgLyogRm9yd2FyZC5oICovLAorCQkJCTFBNDQ3ODBGMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5j
dGlvbi5oICovLAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3Bh
dGNoZXIuY3BwICovLAogCQkJCTFBMUQ4QjlCMTczMTg2Q0UwMDE0MURBNCAvKiBGdW5jdGlvbkRp
c3BhdGNoZXIuaCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmgg
Ki8sCkBAIC0xMzczLDYgKzEzNzYsNyBAQAogCQkJCUE4QTQ3NDdGMTUxQTgyNUIwMDQxMjNGRiAv
KiBWZWN0b3JUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQx
MjNGRiAvKiBWTVRhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NENGQzhFMTZBNEYzMjcwMDZE
NTQwNCAvKiBXZWFrUHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTQ0NzgxMDFEMEI0M0U1MDBF
MjVEMzggLyogRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzUwMTY0MUJCMjU4RDUw
MEYwQTJBMyAvKiBXZWFrUmFuZG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRkE0N0M4QjE1MjUw
MkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNDQ3
OUQxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApp
bmRleCAwNTFjZDA0MmFlNGRmZDJjZjI5NTkzOWJmYTI0NDM2MjBkYzFjMzM2Li5iMzcyMTMxMDFh
MjBhODdiMzBmNTUzYzk1MTYyMzRiM2YwNDE0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0yNSw3ICsyNSw2
IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBGdW5j
dGlvbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIExhenlOZXZlckRlc3Ryb3llZDsKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVyRGVzdHJveWVkOwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgT3B0aW9uU2V0OwpAQCAtNjAsNyArNTksNiBAQCB1c2luZyBXVEY6OkJpbmFy
eVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q1N0cmluZzsKIHVzaW5nIFdURjo6RGVjb2RlcjsKIHVz
aW5nIFdURjo6RW5jb2RlcjsKLXVzaW5nIFdURjo6RnVuY3Rpb247CiB1c2luZyBXVEY6OkZ1bmN0
aW9uRGlzcGF0Y2hlcjsKIHVzaW5nIFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOwogdXNpbmcgV1RG
OjpOZXZlckRlc3Ryb3llZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMWYyMzlhNmM2NTFjNDVm
ZjNmMGE2MjE2MDlmOTk3Y2Y5MWIyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GdW5jdGlvbi5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPgordXNpbmcgRnVuY3Rp
b24gPSBOb25jb3B5YWJsZUZ1bmN0aW9uPE91dChJbi4uLik+OworCit9CisKK3VzaW5nIFdURjo6
RnVuY3Rpb247CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281035</attachid>
            <date>2016-06-10 12:48:04 -0700</date>
            <delta_ts>2016-06-10 13:52:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160610124934.patch</filename>
            <type>text/plain</type>
            <size>9311</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiM2Y1ZjYwZjhiYjZiNGVhYjMxMWVk
NWRhNmVhNzdhMWI1ZTE0NGMuLjk3OGQ0OWVjODVkMzcyY2M0MTI2MmUwZTBjZDI4ODk4ZGRhZDk2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxNi0wNi0wOSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5hZGRyZXNzZWQgcmV2
aWV3IGZlZWRiYWNrIGZyb20gcjIwMTg3MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlMThhY2JiNjQ4MTIwMjYz
YjM3ZTY5ZDJlN2VhOGM1ZGUzNDdmZDguLjVjNjcxMGE2OGE4YmY2NWMzNjA5OTA3MWU5MmYxMzc4
Y2YwNTljZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNi0xMCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvIEZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKwogMjAxNi0w
Ni0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIE9yaWdpbiBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGluIENPUlMgcmVxdWVzdHMgZm9yIHBy
ZWxvYWRlZCBjcm9zcy1vcmlnaW4gcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwNjYzMGYwZjEwNDYxZGY0N2JkODI2ZjliNWE3YTAxYmEzM2Fh
MTczLi5mMTNmYzc1Mzc3YWU3YzcyMDdhMzkyMGIzMmIzNWYxMGYxZDk1NDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyLDYgKzgyLDcgQEAKIAkJMUEx
RDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTFEOEI5RDE3MzE4Nzk4MDAx
NDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJMUEyMzNDN0QxN0RBQTZF
MzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oICov
OyB9OwogCQkxQTQyOEI4QzFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0eURl
Y2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJh
dGlvbnMuaCAqLzsgfTsKKwkJMUE0NDc4MTAxRDBCNDNFNTAwRTI1RDM4IC8qIEZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NzgwRjFE
MEI0M0U1MDBFMjVEMzggLyogRnVuY3Rpb24uaCAqLzsgfTsKIAkJMUE0NjU2MTkxQzdGQzY4RTAw
RjU5MjBGIC8qIE9wdGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0NjU2MTgxQzdGQzY4RTAwRjU5MjBGIC8qIE9wdGlvblNldC5oICovOyB9
OwogCQkxQTZCQjc2OTE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZCQjc2ODE2MkYzMDA1MDBE
RDE2REIgLyogU3RyZWFtQnVmZmVyLmggKi87IH07CiAJCTFBNkVCMUUwMTg3RDBCRDMwMDMwMTI2
RiAvKiBTdHJpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5nVmlldy5oICovOyB9OwpA
QCAtNDA2LDYgKzQwNyw3IEBACiAJCTFBMjMzQzdDMTdEQUE2RTMwMEE5M0FDRiAvKiBNYWxsb2NQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFsbG9jUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZl
ckRlc3Ryb3llZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29t
cGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBNDQ3ODBGMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTQ2NTYxODFDN0ZDNjhFMDBGNTkyMEYgLyogT3B0aW9uU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5n
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDAsNiArODQyLDcgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJMUE0NDc4MEYxRDBCNDNFNTAwRTI1RDM4IC8q
IEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9u
RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0
aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQ
dHIuaCAqLywKQEAgLTEzNzMsNiArMTM3Niw3IEBACiAJCQkJQThBNDc0N0YxNTFBODI1QjAwNDEy
M0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODAxNTFBODI1
QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMy
NzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBNDQ3ODEwMUQwQjQz
RTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNTAxNjQxQkIy
NThENTAwRjBBMkEzIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQTQ3QzhC
MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkU0NDc5RDFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCmluZGV4IDA1MWNkMDQyYWU0ZGZkMmNmMjk1OTM5YmZhMjQ0MzYyMGRjMWMzMzYuLmIzNzIx
MzEwMWEyMGE4N2IzMGY1NTNjOTUxNjIzNGIzZjA0MTRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTI1LDcg
KzI1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IEZ1bmN0aW9uOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBPcHRpb25TZXQ7CkBAIC02MCw3ICs1OSw2IEBAIHVzaW5nIFdURjo6
QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpEZWNvZGVy
OwogdXNpbmcgV1RGOjpFbmNvZGVyOwotdXNpbmcgV1RGOjpGdW5jdGlvbjsKIHVzaW5nIFdURjo6
RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB1c2lu
ZyBXVEY6Ok5ldmVyRGVzdHJveWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rp
b24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYxZjIzOWE2YzY1
MWM0NWZmM2YwYTYyMTYwOWY5OTdjZjkxYjI0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+Cit1c2luZyBG
dW5jdGlvbiA9IE5vbmNvcHlhYmxlRnVuY3Rpb248T3V0KEluLi4uKT47CisKK30KKwordXNpbmcg
V1RGOjpGdW5jdGlvbjsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggZGQwYWIyMWUyMDYyNTU5OTU5YjM3MjljOThmODhmODc4OTBhNDJkZS4uMWQ5
OTY1N2M0ZTczODFhNjA3OTI0ZTdkYTUyZjNiM2FlMWYwZjA4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1
bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhlY1N0YXRlOwpAQCAtMTMzLDIw
ICsxMzMsMjAgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDbGVhbnVwVGFz
a1RhZyB7IENsZWFudXBUYXNrIH07CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+
Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3Rk
Ojppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIEZ1
bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CiAg
ICAgICAgIFRhc2soVCB0YXNrKQogICAgICAgICAgICAgOiBtX3Rhc2soV1RGTW92ZSh0YXNrKSkK
ICAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrKQor
ICAgICAgICBUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKICAgICAgICAgICAgIDogbV90
YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFz
aygpOyB9KQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+Cisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFn
LCBUIHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAg
ICAgLCBtX2lzQ2xlYW51cFRhc2sodHJ1ZSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGVhbnVwVGFz
azsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4gbV90YXNrOworICAgICAgICBGdW5jdGlvbjx2b2lk
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+IG1fdGFzazsKICAgICAgICAgYm9vbCBtX2lzQ2xl
YW51cFRhc2s7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281042</attachid>
            <date>2016-06-10 13:52:53 -0700</date>
            <delta_ts>2016-06-10 14:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160610135423.patch</filename>
            <type>text/plain</type>
            <size>9284</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiM2Y1ZjYwZjhiYjZiNGVhYjMxMWVk
NWRhNmVhNzdhMWI1ZTE0NGMuLjk3OGQ0OWVjODVkMzcyY2M0MTI2MmUwZTBjZDI4ODk4ZGRhZDk2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxNi0wNi0wOSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5hZGRyZXNzZWQgcmV2
aWV3IGZlZWRiYWNrIGZyb20gcjIwMTg3MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlMThhY2JiNjQ4MTIwMjYz
YjM3ZTY5ZDJlN2VhOGM1ZGUzNDdmZDguLjVjNjcxMGE2OGE4YmY2NWMzNjA5OTA3MWU5MmYxMzc4
Y2YwNTljZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNi0xMCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvIEZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKwogMjAxNi0w
Ni0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIE9yaWdpbiBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGluIENPUlMgcmVxdWVzdHMgZm9yIHBy
ZWxvYWRlZCBjcm9zcy1vcmlnaW4gcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwNjYzMGYwZjEwNDYxZGY0N2JkODI2ZjliNWE3YTAxYmEzM2Fh
MTczLi5mMTNmYzc1Mzc3YWU3YzcyMDdhMzkyMGIzMmIzNWYxMGYxZDk1NDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyLDYgKzgyLDcgQEAKIAkJMUEx
RDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTFEOEI5RDE3MzE4Nzk4MDAx
NDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJMUEyMzNDN0QxN0RBQTZF
MzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oICov
OyB9OwogCQkxQTQyOEI4QzFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0eURl
Y2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJh
dGlvbnMuaCAqLzsgfTsKKwkJMUE0NDc4MTAxRDBCNDNFNTAwRTI1RDM4IC8qIEZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NzgwRjFE
MEI0M0U1MDBFMjVEMzggLyogRnVuY3Rpb24uaCAqLzsgfTsKIAkJMUE0NjU2MTkxQzdGQzY4RTAw
RjU5MjBGIC8qIE9wdGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0NjU2MTgxQzdGQzY4RTAwRjU5MjBGIC8qIE9wdGlvblNldC5oICovOyB9
OwogCQkxQTZCQjc2OTE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZCQjc2ODE2MkYzMDA1MDBE
RDE2REIgLyogU3RyZWFtQnVmZmVyLmggKi87IH07CiAJCTFBNkVCMUUwMTg3RDBCRDMwMDMwMTI2
RiAvKiBTdHJpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5nVmlldy5oICovOyB9OwpA
QCAtNDA2LDYgKzQwNyw3IEBACiAJCTFBMjMzQzdDMTdEQUE2RTMwMEE5M0FDRiAvKiBNYWxsb2NQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFsbG9jUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZl
ckRlc3Ryb3llZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29t
cGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBNDQ3ODBGMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTQ2NTYxODFDN0ZDNjhFMDBGNTkyMEYgLyogT3B0aW9uU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5n
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDAsNiArODQyLDcgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJMUE0NDc4MEYxRDBCNDNFNTAwRTI1RDM4IC8q
IEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9u
RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0
aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQ
dHIuaCAqLywKQEAgLTEzNzMsNiArMTM3Niw3IEBACiAJCQkJQThBNDc0N0YxNTFBODI1QjAwNDEy
M0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODAxNTFBODI1
QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMy
NzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBNDQ3ODEwMUQwQjQz
RTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNTAxNjQxQkIy
NThENTAwRjBBMkEzIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQTQ3QzhC
MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkU0NDc5RDFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCmluZGV4IDA1MWNkMDQyYWU0ZGZkMmNmMjk1OTM5YmZhMjQ0MzYyMGRjMWMzMzYuLmIzNzIx
MzEwMWEyMGE4N2IzMGY1NTNjOTUxNjIzNGIzZjA0MTRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTI1LDcg
KzI1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IEZ1bmN0aW9uOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBPcHRpb25TZXQ7CkBAIC02MCw3ICs1OSw2IEBAIHVzaW5nIFdURjo6
QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpEZWNvZGVy
OwogdXNpbmcgV1RGOjpFbmNvZGVyOwotdXNpbmcgV1RGOjpGdW5jdGlvbjsKIHVzaW5nIFdURjo6
RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB1c2lu
ZyBXVEY6Ok5ldmVyRGVzdHJveWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rp
b24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JkZTNkMTBkM2Rm
MWFhNjZmYmU2NjQ5M2NjYTgxMzUwOTQxM2U4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBGdW5jdGlvbiA9IE5vbmNvcHlh
YmxlRnVuY3Rpb248VD47CisKK30KKwordXNpbmcgV1RGOjpGdW5jdGlvbjsKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZGQwYWIyMWUyMDYyNTU5
OTU5YjM3MjljOThmODhmODc4OTBhNDJkZS4uMWQ5OTY1N2M0ZTczODFhNjA3OTI0ZTdkYTUyZjNi
M2FlMWYwZjA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNs
dWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgRXhlY1N0YXRlOwpAQCAtMTMzLDIwICsxMzMsMjAgQEAgcHVibGljOgogICAgIHB1
YmxpYzoKICAgICAgICAgZW51bSBDbGVhbnVwVGFza1RhZyB7IENsZWFudXBUYXNrIH07CiAKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
Pj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIEZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgIFRhc2soVCB0YXNrKQogICAgICAg
ICAgICAgOiBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKICAgICAgICAgICAgICwgbV9pc0NsZWFudXBU
YXNrKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUYXNrKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrKQorICAgICAgICBUYXNrKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9KQogICAgICAgICAgICAgLCBtX2lz
Q2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19jb252ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxU
LCBGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAgICAgICAgICA6IG1f
dGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2sodHJ1ZSkK
QEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNDbGVhbnVwVGFzaygp
IGNvbnN0IHsgcmV0dXJuIG1faXNDbGVhbnVwVGFzazsgfQogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4g
bV90YXNrOworICAgICAgICBGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+
IG1fdGFzazsKICAgICAgICAgYm9vbCBtX2lzQ2xlYW51cFRhc2s7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281048</attachid>
            <date>2016-06-10 14:44:26 -0700</date>
            <delta_ts>2016-06-10 14:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160610144556.patch</filename>
            <type>text/plain</type>
            <size>9289</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiM2Y1ZjYwZjhiYjZiNGVhYjMxMWVk
NWRhNmVhNzdhMWI1ZTE0NGMuLjk3OGQ0OWVjODVkMzcyY2M0MTI2MmUwZTBjZDI4ODk4ZGRhZDk2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxNi0wNi0wOSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5hZGRyZXNzZWQgcmV2
aWV3IGZlZWRiYWNrIGZyb20gcjIwMTg3MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlMThhY2JiNjQ4MTIwMjYz
YjM3ZTY5ZDJlN2VhOGM1ZGUzNDdmZDguLjVjNjcxMGE2OGE4YmY2NWMzNjA5OTA3MWU5MmYxMzc4
Y2YwNTljZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNi0xMCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvIEZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKwogMjAxNi0w
Ni0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIE9yaWdpbiBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGluIENPUlMgcmVxdWVzdHMgZm9yIHBy
ZWxvYWRlZCBjcm9zcy1vcmlnaW4gcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwNjYzMGYwZjEwNDYxZGY0N2JkODI2ZjliNWE3YTAxYmEzM2Fh
MTczLi5mMTNmYzc1Mzc3YWU3YzcyMDdhMzkyMGIzMmIzNWYxMGYxZDk1NDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyLDYgKzgyLDcgQEAKIAkJMUEx
RDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTFEOEI5RDE3MzE4Nzk4MDAx
NDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJMUEyMzNDN0QxN0RBQTZF
MzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oICov
OyB9OwogCQkxQTQyOEI4QzFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0eURl
Y2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJh
dGlvbnMuaCAqLzsgfTsKKwkJMUE0NDc4MTAxRDBCNDNFNTAwRTI1RDM4IC8qIEZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NzgwRjFE
MEI0M0U1MDBFMjVEMzggLyogRnVuY3Rpb24uaCAqLzsgfTsKIAkJMUE0NjU2MTkxQzdGQzY4RTAw
RjU5MjBGIC8qIE9wdGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0NjU2MTgxQzdGQzY4RTAwRjU5MjBGIC8qIE9wdGlvblNldC5oICovOyB9
OwogCQkxQTZCQjc2OTE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZCQjc2ODE2MkYzMDA1MDBE
RDE2REIgLyogU3RyZWFtQnVmZmVyLmggKi87IH07CiAJCTFBNkVCMUUwMTg3RDBCRDMwMDMwMTI2
RiAvKiBTdHJpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5nVmlldy5oICovOyB9OwpA
QCAtNDA2LDYgKzQwNyw3IEBACiAJCTFBMjMzQzdDMTdEQUE2RTMwMEE5M0FDRiAvKiBNYWxsb2NQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFsbG9jUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZl
ckRlc3Ryb3llZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29t
cGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBNDQ3ODBGMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTQ2NTYxODFDN0ZDNjhFMDBGNTkyMEYgLyogT3B0aW9uU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5n
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDAsNiArODQyLDcgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJMUE0NDc4MEYxRDBCNDNFNTAwRTI1RDM4IC8q
IEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9u
RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0
aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQ
dHIuaCAqLywKQEAgLTEzNzMsNiArMTM3Niw3IEBACiAJCQkJQThBNDc0N0YxNTFBODI1QjAwNDEy
M0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODAxNTFBODI1
QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMy
NzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBNDQ3ODEwMUQwQjQz
RTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNTAxNjQxQkIy
NThENTAwRjBBMkEzIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQTQ3QzhC
MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkU0NDc5RDFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCmluZGV4IDA1MWNkMDQyYWU0ZGZkMmNmMjk1OTM5YmZhMjQ0MzYyMGRjMWMzMzYuLmIzNzIx
MzEwMWEyMGE4N2IzMGY1NTNjOTUxNjIzNGIzZjA0MTRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTI1LDcg
KzI1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IEZ1bmN0aW9uOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBPcHRpb25TZXQ7CkBAIC02MCw3ICs1OSw2IEBAIHVzaW5nIFdURjo6
QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpEZWNvZGVy
OwogdXNpbmcgV1RGOjpFbmNvZGVyOwotdXNpbmcgV1RGOjpGdW5jdGlvbjsKIHVzaW5nIFdURjo6
RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB1c2lu
ZyBXVEY6Ok5ldmVyRGVzdHJveWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rp
b24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JkZTNkMTBkM2Rm
MWFhNjZmYmU2NjQ5M2NjYTgxMzUwOTQxM2U4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBGdW5jdGlvbiA9IE5vbmNvcHlh
YmxlRnVuY3Rpb248VD47CisKK30KKwordXNpbmcgV1RGOjpGdW5jdGlvbjsKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZGQwYWIyMWUyMDYyNTU5
OTU5YjM3MjljOThmODhmODc4OTBhNDJkZS4uYmZlM2ZkZjY0MjNiNzA2NzRlZDExYjdmOWNhOWU3
NTIzN2Y2ZmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNs
dWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgRXhlY1N0YXRlOwpAQCAtMTMzLDIwICsxMzMsMjAgQEAgcHVibGljOgogICAgIHB1
YmxpYzoKICAgICAgICAgZW51bSBDbGVhbnVwVGFza1RhZyB7IENsZWFudXBUYXNrIH07CiAKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
Pj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhUIHRhc2spCiAg
ICAgICAgICAgICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAgICAgLCBtX2lzQ2xl
YW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRhc2soTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCisgICAgICAgIFRhc2soRnVuY3Rpb248
dm9pZCAoKT4mJiB0YXNrKQogICAgICAgICAgICAgOiBtX3Rhc2soW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeyB0YXNrKCk7IH0pCiAgICAgICAgICAgICAs
IG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NvbnZlcnRpYmxlPFQsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQsIEZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46
OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFzaykKICAgICAgICAgICAg
IDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0
cnVlKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBU
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiBtX3Rhc2s7CisgICAgICAgIEZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKT4gbV90YXNrOwogICAgICAgICBib29sIG1faXNDbGVhbnVwVGFzazsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281049</attachid>
            <date>2016-06-10 14:45:32 -0700</date>
            <delta_ts>2016-06-21 16:03:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160610144702.patch</filename>
            <type>text/plain</type>
            <size>9294</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiM2Y1ZjYwZjhiYjZiNGVhYjMxMWVk
NWRhNmVhNzdhMWI1ZTE0NGMuLjk3OGQ0OWVjODVkMzcyY2M0MTI2MmUwZTBjZDI4ODk4ZGRhZDk2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxNi0wNi0wOSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5hZGRyZXNzZWQgcmV2
aWV3IGZlZWRiYWNrIGZyb20gcjIwMTg3MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlMThhY2JiNjQ4MTIwMjYz
YjM3ZTY5ZDJlN2VhOGM1ZGUzNDdmZDguLjVjNjcxMGE2OGE4YmY2NWMzNjA5OTA3MWU5MmYxMzc4
Y2YwNTljZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNi0xMCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBOb25jb3B5
YWJsZUZ1bmN0aW9uIHRvIEZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKwogMjAxNi0w
Ni0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIE9yaWdpbiBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGluIENPUlMgcmVxdWVzdHMgZm9yIHBy
ZWxvYWRlZCBjcm9zcy1vcmlnaW4gcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwNjYzMGYwZjEwNDYxZGY0N2JkODI2ZjliNWE3YTAxYmEzM2Fh
MTczLi5mMTNmYzc1Mzc3YWU3YzcyMDdhMzkyMGIzMmIzNWYxMGYxZDk1NDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyLDYgKzgyLDcgQEAKIAkJMUEx
RDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTFEOEI5RDE3MzE4Nzk4MDAx
NDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJMUEyMzNDN0QxN0RBQTZF
MzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0ci5oICov
OyB9OwogCQkxQTQyOEI4QzFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJpbGl0eURl
Y2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0MjhCOEIxQzhGODlERDAwNTFFOUVCIC8qIEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJh
dGlvbnMuaCAqLzsgfTsKKwkJMUE0NDc4MTAxRDBCNDNFNTAwRTI1RDM4IC8qIEZ1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NzgwRjFE
MEI0M0U1MDBFMjVEMzggLyogRnVuY3Rpb24uaCAqLzsgfTsKIAkJMUE0NjU2MTkxQzdGQzY4RTAw
RjU5MjBGIC8qIE9wdGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0NjU2MTgxQzdGQzY4RTAwRjU5MjBGIC8qIE9wdGlvblNldC5oICovOyB9
OwogCQkxQTZCQjc2OTE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZCQjc2ODE2MkYzMDA1MDBE
RDE2REIgLyogU3RyZWFtQnVmZmVyLmggKi87IH07CiAJCTFBNkVCMUUwMTg3RDBCRDMwMDMwMTI2
RiAvKiBTdHJpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5nVmlldy5oICovOyB9OwpA
QCAtNDA2LDYgKzQwNyw3IEBACiAJCTFBMjMzQzdDMTdEQUE2RTMwMEE5M0FDRiAvKiBNYWxsb2NQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFsbG9jUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZl
ckRlc3Ryb3llZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29t
cGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBNDQ3ODBGMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTQ2NTYxODFDN0ZDNjhFMDBGNTkyMEYgLyogT3B0aW9uU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZFQjFERjE4N0QwQkQzMDAzMDEyNkYgLyogU3RyaW5n
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDAsNiArODQyLDcgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJMUE0NDc4MEYxRDBCNDNFNTAwRTI1RDM4IC8q
IEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9u
RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0
aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQ
dHIuaCAqLywKQEAgLTEzNzMsNiArMTM3Niw3IEBACiAJCQkJQThBNDc0N0YxNTFBODI1QjAwNDEy
M0ZGIC8qIFZlY3RvclRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODAxNTFBODI1
QjAwNDEyM0ZGIC8qIFZNVGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0Q0ZDOEUxNkE0RjMy
NzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBNDQ3ODEwMUQwQjQz
RTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNTAxNjQxQkIy
NThENTAwRjBBMkEzIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQTQ3QzhC
MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkU0NDc5RDFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCmluZGV4IDA1MWNkMDQyYWU0ZGZkMmNmMjk1OTM5YmZhMjQ0MzYyMGRjMWMzMzYuLmIzNzIx
MzEwMWEyMGE4N2IzMGY1NTNjOTUxNjIzNGIzZjA0MTRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTI1LDcg
KzI1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IEZ1bmN0aW9uOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBPcHRpb25TZXQ7CkBAIC02MCw3ICs1OSw2IEBAIHVzaW5nIFdURjo6
QmluYXJ5U2VtYXBob3JlOwogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpEZWNvZGVy
OwogdXNpbmcgV1RGOjpFbmNvZGVyOwotdXNpbmcgV1RGOjpGdW5jdGlvbjsKIHVzaW5nIFdURjo6
RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB1c2lu
ZyBXVEY6Ok5ldmVyRGVzdHJveWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rp
b24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JkZTNkMTBkM2Rm
MWFhNjZmYmU2NjQ5M2NjYTgxMzUwOTQxM2U4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBGdW5jdGlvbiA9IE5vbmNvcHlh
YmxlRnVuY3Rpb248VD47CisKK30KKwordXNpbmcgV1RGOjpGdW5jdGlvbjsKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZGQwYWIyMWUyMDYyNTU5
OTU5YjM3MjljOThmODhmODc4OTBhNDJkZS4uNGVjMDEzY2RhZDZmYTc2MDIyMzc0NzNlNTY2MDU2
MWY4MGU5OTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNs
dWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgRXhlY1N0YXRlOwpAQCAtMTMzLDIwICsxMzMsMjAgQEAgcHVibGljOgogICAgIHB1
YmxpYzoKICAgICAgICAgZW51bSBDbGVhbnVwVGFza1RhZyB7IENsZWFudXBUYXNrIH07CiAKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
Pj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhUIHRhc2spCiAg
ICAgICAgICAgICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAgICAgLCBtX2lzQ2xl
YW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRhc2soTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCisgICAgICAgIFRhc2soRnVuY3Rpb248
dm9pZCAoKT4mJiB0YXNrKQogICAgICAgICAgICAgOiBtX3Rhc2soW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeyB0YXNrKCk7IH0pCiAgICAgICAgICAgICAs
IG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NvbnZlcnRpYmxlPFQsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQsIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZh
bHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhDbGVhbnVwVGFza1RhZywgVCB0YXNrKQogICAgICAg
ICAgICAgOiBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKICAgICAgICAgICAgICwgbV9pc0NsZWFudXBU
YXNrKHRydWUpCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzQ2xl
YW51cFRhc2soKSBjb25zdCB7IHJldHVybiBtX2lzQ2xlYW51cFRhc2s7IH0KIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik+IG1fdGFzazsKKyAgICAgICAgRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281790</attachid>
            <date>2016-06-21 16:03:50 -0700</date>
            <delta_ts>2016-06-22 11:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160621160342.patch</filename>
            <type>text/plain</type>
            <size>9324</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmJhOTcxYzIzOTdmNWZlZGZkZTU0
ZjA4ZDBjYTdlMzFjNGU5MjcuLmViNmY3NDQ2ZjljNzRjOTFmM2QzYjUyNjliNzc1ZDIxY2EyNjE2
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvRm9yd2Fy
ZC5oOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOiBBZGRlZC4KKwogMjAxNi0wNi0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgogCiAgICAgICAgIEFkZCBz
eXN0ZW0gdHJhY2luZyBwb2ludHMgZm9yIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIHdvcmtmbG93
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYTdhMDdjZjBjYjg0NTVmOTc0NzBiMGIyOTI2ZjM1YzZmNmVlMzE1NS4u
Y2YyMDBmMzM2MjdjODA4M2ZiN2YxMTBkNjM5NTNhZGFhYTkwZTM0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE2LTA2LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE5vbmNvcHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s6OlRhc2spOgorCiAyMDE2LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAKICAgICAgICAgQWRkIHN5c3RlbSB0cmFjaW5nIHBv
aW50cyBmb3IgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgd29ya2Zsb3cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjZTNiYWU3OTUzMTc0NjVjZjljZGZhOWEy
Mjg5ZmY2MDA2YzY0MDYuLmY1ZjQxOTg1NzUyZTcxMGRiMTFkNmVmYmUxMjY2MDU3ZTExNzlkMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODIsNiArODIs
NyBAQAogCQkxQTFEOEI5RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMUQ4QjlE
MTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwICovOyB9OwogCQkxQTIz
M0M3RDE3REFBNkUzMDBBOTNBQ0YgLyogTWFsbG9jUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzM0M3QzE3REFBNkUzMDBBOTNBQ0YgLyogTWFs
bG9jUHRyLmggKi87IH07CiAJCTFBNDI4QjhDMUM4Rjg5REQwMDUxRTlFQiAvKiBBcHBLaXRDb21w
YXRpYmlsaXR5RGVjbGFyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyogQXBwS2l0Q29tcGF0aWJp
bGl0eURlY2xhcmF0aW9ucy5oICovOyB9OworCQkxQTQ0NzgxMDFEMEI0M0U1MDBFMjVEMzggLyog
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNDQ3ODBGMUQwQjQzRTUwMEUyNUQzOCAvKiBGdW5jdGlvbi5oICovOyB9OwogCQkxQTQ2NTYx
OTFDN0ZDNjhFMDBGNTkyMEYgLyogT3B0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ2NTYxODFDN0ZDNjhFMDBGNTkyMEYgLyogT3B0aW9u
U2V0LmggKi87IH07CiAJCTFBNkJCNzY5MTYyRjMwMDUwMEREMTZEQiAvKiBTdHJlYW1CdWZmZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkJCNzY4
MTYyRjMwMDUwMEREMTZEQiAvKiBTdHJlYW1CdWZmZXIuaCAqLzsgfTsKIAkJMUE2RUIxRTAxODdE
MEJEMzAwMzAxMjZGIC8qIFN0cmluZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkVCMURGMTg3RDBCRDMwMDMwMTI2RiAvKiBTdHJpbmdWaWV3
LmggKi87IH07CkBAIC00MDcsNiArNDA4LDcgQEAKIAkJMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNG
IC8qIE1hbGxvY1B0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWxsb2NQ
dHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzRjZCRTYxNzRBREEyMTAwQjJF
RUE3IC8qIE5ldmVyRGVzdHJveWVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldmVyRGVzdHJveWVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDI4QjhCMUM4Rjg5REQwMDUxRTlFQiAv
KiBBcHBLaXRDb21wYXRpYmlsaXR5RGVjbGFyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFwcEtpdENvbXBhdGliaWxpdHlEZWNsYXJhdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE0NDc4MEYxRDBCNDNFNTAwRTI1RDM4IC8qIEZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDY1NjE4MUM3RkM2OEUwMEY1OTIwRiAvKiBPcHRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNkJCNzY4MTYyRjMwMDUwMEREMTZEQiAvKiBTdHJl
YW1CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNkVCMURGMTg3RDBCRDMwMDMwMTI2
RiAvKiBTdHJpbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0Myw2ICs4NDUsNyBAQAog
CQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJ
CQkwRjJCNjZBNTE3QjZCNEY3MDBBN0FFM0YgLyogRmxpcEJ5dGVzLmggKi8sCiAJCQkJQThBNDcy
QTYxNTFBODI1QTAwNDEyM0ZGIC8qIEZvcndhcmQuaCAqLywKKwkJCQkxQTQ0NzgwRjFEMEI0M0U1
MDBFMjVEMzggLyogRnVuY3Rpb24uaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQg
LyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFE
QTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmggKi8sCiAJCQkJQThBNDcyQTgxNTFBODI1QTAwNDEy
M0ZGIC8qIEdldFB0ci5oICovLApAQCAtMTM3Nyw2ICsxMzgwLDcgQEAKIAkJCQlBOEE0NzQ3RjE1
MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQ4MDE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzRD
RkM4RTE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE0
NDc4MTAxRDBCNDNFNTAwRTI1RDM4IC8qIEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjM1MDE2NDFCQjI1OEQ1MDBGMEEyQTMgLyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUZBNDdDOEIxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRTQ0NzlEMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmgKaW5kZXggMDUxY2QwNDJhZTRkZmQyY2YyOTU5MzliZmEyNDQzNjIwZGMx
YzMzNi4uYjM3MjEzMTAxYTIwYTg3YjMwZjU1M2M5NTE2MjM0YjNmMDQxNGViNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQu
aApAQCAtMjUsNyArMjUsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgRnVuY3Rpb247CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5TmV2
ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBOZXZlckRlc3Ryb3llZDsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE9wdGlvblNldDsKQEAgLTYwLDcgKzU5LDYgQEAg
dXNpbmcgV1RGOjpCaW5hcnlTZW1hcGhvcmU7CiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1c2luZyBX
VEY6OkRlY29kZXI7CiB1c2luZyBXVEY6OkVuY29kZXI7Ci11c2luZyBXVEY6OkZ1bmN0aW9uOwog
dXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7CiB1c2luZyBXVEY6OkxhenlOZXZlckRlc3Ry
b3llZDsKIHVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GdW5jdGlvbi5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YmRlM2QxMGQzZGYxYWE2NmZiZTY2NDkzY2NhODEzNTA5NDEzZTg1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIEZ1bmN0aW9u
ID0gTm9uY29weWFibGVGdW5jdGlvbjxUPjsKKworfQorCit1c2luZyBXVEY6OkZ1bmN0aW9uOwor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwNzky
ZThjOTk5NmY1YjRkZDZjZDExMjg0OWNjNTY0NGQ5YzA5YjVkLi4wOTY0OTdlYTk5ZTA5YmY4ODE1
YTA5YTRmYWFjOTIwMGE0NGY4NzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJTdXBwbGVtZW50YWJs
ZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFt
ZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC0xMzgsMjAgKzEzOCwy
MCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENsZWFudXBUYXNrVGFnIHsg
Q2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVl
ICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgorICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jh
c2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5j
dGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgogICAg
ICAgICBUYXNrKFQgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAg
ICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAg
ICAgICAgVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKICAgICAgICAgICAgIDog
bV90YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsg
dGFzaygpOyB9KQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51
cFRhc2tUYWcsIFQgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAg
ICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0cnVlKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0Ns
ZWFudXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBtX3Rhc2s7CisgICAgICAgIFdURjo6
RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBtX3Rhc2s7CiAgICAgICAg
IGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281851</attachid>
            <date>2016-06-22 11:25:04 -0700</date>
            <delta_ts>2016-06-22 12:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160622112459.patch</filename>
            <type>text/plain</type>
            <size>86328</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmJhOTcxYzIzOTdmNWZlZGZkZTU0
ZjA4ZDBjYTdlMzFjNGU5MjcuLjg4OGJhMDgzMWFkODI3Y2RjMmI1NGJmZDA3OTUwNjAwZGY2ZGFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJlYWRU
YXNrKToKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYv
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpmdW5j
dGlvblF1ZXVlKToKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWlu
VGhyZWFkLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgorICAgICAgICAo
V29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6
CisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4
dCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0
Zi93aW4vV29ya0l0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6V29ya0l0
ZW1XaW4pOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1XaW4uaDoKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmZ1bmN0aW9uKToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorCiAy
MDE2LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAK
ICAgICAgICAgQWRkIHN5c3RlbSB0cmFjaW5nIHBvaW50cyBmb3IgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgd29ya2Zsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ODYwZTJjMGZkNDhjMDczYWIyMTA4NjI5M2M2
Mjg2Y2UwNTg4NDhhLi42YjJmMjIzNjNlZDYzOTRlNTc3YmY2NzA0Y2IxMGNkMDdlZDZmNmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAgQEAKIDIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlv
biB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1blRh
c2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAq
IGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybSk6CisgICAgICAgICogZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNj
cm9sbGluZ1RocmVhZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hl
cjo6cG9zdFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OnF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKworMjAxNi0wNi0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCBidWlsZC4KIAogICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MWI4ZTg5NjNhMmFj
MjgwOTNmNTQzY2VlZmI2Mzg2YWNjZjcxZTQ1Li5jNjE2ZGEwNTRlYzUyOTBkOGU2ZjI0OTMyOGE3
NTFlMzYwZmY5ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA2LTIxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE5vbmNv
cHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaCk6CisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuaDoKKwogMjAxNi0wNi0yMCAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBj
aGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDVhOGMyODEw
MDhhMjFhYzBjMmM3ZDExZmY1MGY5MjU2ZWNmZTAzNDMuLjJhMDRmYzQ2OWZiOTk0MmFjOWU1YTQ1
Zjc2OTc2ZmEzMGU3YTA1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxNi0wNi0y
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbmFt
ZSBOb25jb3B5YWJsZUZ1bmN0aW9uIHRvIEZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpjbGVhckRpc2tDYWNoZUVudHJpZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6dHJhdmVyc2Up
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJ1blRhc2tJblF1ZXVlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisKKzIwMTYtMDYt
MjEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBGaXgg
YnVpbGQuCiAKICAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZjZTNiYWU3
OTUzMTc0NjVjZjljZGZhOWEyMjg5ZmY2MDA2YzY0MDYuLjQzNGY2NmUzM2U5Y2NkOGM5NTM3Zjc1
NzBlZjJhODJiMDdlYzNkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTE5LDcgKzExOSw3IEBACiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBP
YmpjUnVudGltZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0UyOUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmgg
Ki87IH07CiAJCTgxMzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAw
MUZGMEI4IC8qIEJhc2U2NC5jcHAgKi87IH07CiAJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAv
KiBCYXNlNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLzsgfTsKLQkJODNGMkJBREYx
Q0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAv
KiBOb25jb3B5YWJsZUZ1bmN0aW9uLmggKi87IH07CisJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlD
MyAvKiBGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi87IH07CiAJCTgz
RkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBU
eXBlQ2FzdHMuaCAqLzsgfTsKIAkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjQ2
RjVGMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IH07CiAJCTkzOTM0QkQzMThB
MUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJp
bmdWaWV3T2JqQy5tbSAqLzsgfTsKQEAgLTQ0OSw3ICs0NDksNyBAQAogCQk3RTI5QzMzRDE1RkZE
NzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25jb3B5YWJsZUZ1bmN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAv
KiBGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIg
LyogVHlwZUNhc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JG
MjIgLyogUmVmQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZD
b3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFN0cmluZ1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFjL1N0cmluZ1ZpZXdPYmpD
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQzLDYgKzg0Myw3IEBACiAJCQkJ
MEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAogCQkJCTBG
MkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLywKIAkJCQlBOEE0NzJBNjE1
MUE4MjVBMDA0MTIzRkYgLyogRm9yd2FyZC5oICovLAorCQkJCTgzRjJCQURFMUNGOTUyNEUwMDNF
OTlDMyAvKiBGdW5jdGlvbi5oICovLAogCQkJCTFBMUQ4QjlEMTczMTg3OTgwMDE0MURBNCAvKiBG
dW5jdGlvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJCTFBMUQ4QjlCMTczMTg2Q0UwMDE0MURBNCAv
KiBGdW5jdGlvbkRpc3BhdGNoZXIuaCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYg
LyogR2V0UHRyLmggKi8sCkBAIC04ODksNyArODkwLDYgQEAKIAkJCQkxQTNGNkJFNjE3NEFEQTIx
MDBCMkVFQTcgLyogTmV2ZXJEZXN0cm95ZWQuaCAqLywKIAkJCQkwRjBEODVCMzE3MjM0Q0IxMDAz
MzgyMTAgLyogTm9Mb2NrLmggKi8sCiAJCQkJQThBNDcyRDAxNTFBODI1QjAwNDEyM0ZGIC8qIE5v
bmNvcHlhYmxlLmggKi8sCi0JCQkJODNGMkJBREUxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlh
YmxlRnVuY3Rpb24uaCAqLywKIAkJCQlBOEE0NzJENTE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVy
T2ZDb3Jlcy5jcHAgKi8sCiAJCQkJQThBNDcyRDYxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9m
Q29yZXMuaCAqLywKIAkJCQk3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVF
eHRyYXMuaCAqLywKQEAgLTEyNTQsNyArMTI1NCw3IEBACiAJCQkJQThBNDczRDkxNTFBODI1QjAw
NDEyM0ZGIC8qIEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczREExNTFBODI1
QjAwNDEyM0ZGIC8qIEhhc2hUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0RCMTUx
QTgyNUIwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzRjJCQURG
MUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5YWJsZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2ODRENDM2MUMwMDBENDAwMDgxRDY2MyAvKiBJbmRleFNwYXJzZVNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczREMxNTFBODI1QjAwNDEyM0ZGIC8qIElubGluZUFTTS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwREEwODQxNzk5RjA0RDAwNTI5QTlCIC8qIEluc2VydGlvbi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRh
c2suaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IGI0ZTk2YzRjNTli
N2QwZTc2ZDQxZjg1MWEwMGNlZTVjYTc0OGM4ZTQuLjBhNjZlYzE3ZjdhZDRhOTU5ODQzY2VjYzU0
N2Y5Y2NiMDMwMWUzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFz
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
QEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrIHsKIHB1YmxpYzoKICAgICBD
cm9zc1RocmVhZFRhc2soKSA9IGRlZmF1bHQ7CiAKLSAgICBDcm9zc1RocmVhZFRhc2soTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlvbikKKyAgICBDcm9zc1RocmVhZFRh
c2soRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrRnVuY3Rpb24pCiAgICAgICAgIDogbV90YXNrRnVu
Y3Rpb24oV1RGTW92ZSh0YXNrRnVuY3Rpb24pKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdGFz
a0Z1bmN0aW9uKTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247CisgICAg
RnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjOTU4NTYyMzhlNDdjNWQ4YjM4ZDg2MWMwYmY3
MWRiZWQ4YmRjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5o
CkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGdW5jdGlvbjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+CitjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7Citw
dWJsaWM6CisgICAgRnVuY3Rpb24oKSA9IGRlZmF1bHQ7CisgICAgRnVuY3Rpb24oc3RkOjpudWxs
cHRyX3QpIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJs
ZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KKyAgICBGdW5jdGlvbihDYWxsYWJsZVR5cGUmJiBjYWxs
YWJsZSkKKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxh
YmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZNb3ZlKGNhbGxhYmxlKSkpCisgICAgeworICAg
IH0KKworICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKG1fY2FsbGFibGVXcmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGFibGVXcmFw
cGVyLT5jYWxsKHN0ZDo6Zm9yd2FyZDxJbj4oaW4pLi4uKTsKKyAgICAgICAgcmV0dXJuIE91dCgp
OworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fY2FsbGFibGVXcmFwcGVyOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5
cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVmZXJl
bmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIEZ1bmN0aW9uJiBvcGVyYXRv
cj0oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCisgICAgeworICAgICAgICBtX2NhbGxhYmxlV3Jh
cHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdU
Rk1vdmUoY2FsbGFibGUpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEZ1
bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCisgICAgeworICAgICAgICBtX2NhbGxh
YmxlV3JhcHBlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2FsbGFibGVX
cmFwcGVyQmFzZSgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgT3V0IGNhbGwoSW4uLi4pID0gMDsK
KyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlPgorICAgIGNsYXNz
IENhbGxhYmxlV3JhcHBlciA6IHB1YmxpYyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIGV4cGxpY2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5cGUmJiBjYWxs
YWJsZSkKKyAgICAgICAgICAgIDogbV9jYWxsYWJsZShXVEZNb3ZlKGNhbGxhYmxlKSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgQ2FsbGFibGVXcmFwcGVyKGNvbnN0IENhbGxhYmxl
V3JhcHBlciYpID0gZGVsZXRlOworICAgICAgICBDYWxsYWJsZVdyYXBwZXImIG9wZXJhdG9yPShj
b25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0ZTsKKworICAgICAgICBPdXQgY2FsbChJbi4u
LiBpbikgZmluYWwgeyByZXR1cm4gbV9jYWxsYWJsZShzdGQ6OmZvcndhcmQ8SW4+KGluKS4uLik7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIENhbGxhYmxlVHlwZSBtX2NhbGxhYmxlOworICAg
IH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVyQmFzZT4gbV9jYWxsYWJs
ZVdyYXBwZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpGdW5jdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKaW5kZXggYjUyZWVjZjFlYmYyNjlhNDA2
MDhiYTJhODY3NWE3NTFkMzgzNDg2MC4uMzQ0YTE2MDIwODQwZjVjZDQ1MDlkN2NlMzY0ZDczN2Q0
OThlZTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgKQEAgLTI3LDcgKzI3LDcg
QEAKICNkZWZpbmUgRnVuY3Rpb25EaXNwYXRjaGVyX2gKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEZ1bmN0aW9uRGlzcGF0Y2hlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGdW5jdGlvbkRpc3BhdGNoZXI+IHsKIHB1YmxpYzoK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+RnVuY3Rpb25EaXNwYXRjaGVyKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkRpc3BhdGNo
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAKaW5kZXggYmQxMWUxMGMyZDUxMjkzMWNhMTYxNzVjMTk5
ZDFkZTE3MWQ3NTVlZi4uNmQ0MmM0ZmRiZGFkZTJiMDE3ODEzYmE0NDcwZGQyY2RkYWE3NWY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgc3RhdGljIFRocmVhZElkZW50
aWZpZXIgbWFpblRocmVhZElkZW50aWZpZXI7CiAKIHN0YXRpYyBTdGF0aWNMb2NrIG1haW5UaHJl
YWRGdW5jdGlvblF1ZXVlTXV0ZXg7CiAKLXN0YXRpYyBEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+PiYgZnVuY3Rpb25RdWV1ZSgpCitzdGF0aWMgRGVxdWU8RnVuY3Rpb248dm9pZCAo
KT4+JiBmdW5jdGlvblF1ZXVlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4+IGZ1bmN0aW9uUXVldWU7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+Pj4gZnVuY3Rpb25RdWV1ZTsK
ICAgICByZXR1cm4gZnVuY3Rpb25RdWV1ZTsKIH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQg
ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAKICAgICBhdXRvIHN0YXJ0VGltZSA9
IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogCi0gICAgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsK
IAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQoKQogICAgIH0KIH0KIAotdm9pZCBjYWxs
T25NYWluVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3Zv
aWQgY2FsbE9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAg
IEFTU0VSVChmdW5jdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRleCBmMTlmNTU5MDE5ZGI3OTc1
MGI1ZjhiZGVjZWI1OWVmZWZkZGFlNWUxLi45NGM3MGM2NmQ2ZDgzMmJjOWY1MzRlMDIwODFhZDYw
ZmZlNTNkMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKKysrIGIv
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRl
IDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCkBAIC00MSw3ICs0MSw3IEBAIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmll
cjsKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgY2FsbE9uTWFpblRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkICgp
PiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2Fs
bE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVlYzM2MDVkN2UzOTIyMzU2ZDc0YjFjMDQzMjYyYjg4NWYwZDgxYzguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvTm9u
Y29weWFibGVGdW5jdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIE5vbmNvcHlhYmxlRnVuY3Rpb247Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBPdXQsIHR5cGVu
YW1lLi4uIEluPgotY2xhc3MgTm9uY29weWFibGVGdW5jdGlvbjxPdXQoSW4uLi4pPiB7Ci1wdWJs
aWM6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbigpID0gZGVmYXVsdDsKLSAgICBOb25jb3B5YWJs
ZUZ1bmN0aW9uKHN0ZDo6bnVsbHB0cl90KSB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1
ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgTm9uY29weWFi
bGVGdW5jdGlvbihDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxl
V3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihX
VEZNb3ZlKGNhbGxhYmxlKSkpCi0gICAgewotICAgIH0KLQotICAgIE91dCBvcGVyYXRvcigpKElu
Li4uIGluKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1fY2FsbGFibGVXcmFwcGVyKQotICAg
ICAgICAgICAgcmV0dXJuIG1fY2FsbGFibGVXcmFwcGVyLT5jYWxsKHN0ZDo6Zm9yd2FyZDxJbj4o
aW4pLi4uKTsKLSAgICAgICAgcmV0dXJuIE91dCgpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGFibGVXcmFwcGVyOyB9Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+
Ojp0eXBlPgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUm
JiBjYWxsYWJsZSkKLSAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkp
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgTm9uY29weWFibGVGdW5jdGlv
biYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdy
YXBwZXIgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIGNsYXNzIENhbGxhYmxlV3JhcHBlckJhc2UgewotICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkNhbGxhYmxlV3JhcHBl
ckJhc2UoKSB7IH0KLQotICAgICAgICB2aXJ0dWFsIE91dCBjYWxsKEluLi4uKSA9IDA7Ci0gICAg
fTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZT4KLSAgICBjbGFzcyBDYWxs
YWJsZVdyYXBwZXIgOiBwdWJsaWMgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgcHVibGljOgot
ICAgICAgICBleHBsaWNpdCBDYWxsYWJsZVdyYXBwZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUp
Ci0gICAgICAgICAgICA6IG1fY2FsbGFibGUoV1RGTW92ZShjYWxsYWJsZSkpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIENhbGxhYmxlV3JhcHBlcihjb25zdCBDYWxsYWJsZVdyYXBw
ZXImKSA9IGRlbGV0ZTsKLSAgICAgICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3Qg
Q2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7Ci0KLSAgICAgICAgT3V0IGNhbGwoSW4uLi4gaW4p
IGZpbmFsIHsgcmV0dXJuIG1fY2FsbGFibGUoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBDYWxsYWJsZVR5cGUgbV9jYWxsYWJsZTsKLSAgICB9Owot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENhbGxhYmxlV3JhcHBlckJhc2U+IG1fY2FsbGFibGVXcmFw
cGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6Tm9uY29weWFibGVG
dW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5jcHAKaW5kZXggOTY2MGYxNTE0ZTVmMDk4MTg2Mjk5OGY4MTc0MTcz
NjAwOTYyNGE2Ny4uM2IwMjY3ZTk3MWI5MGYxZjNmZWM4YWJhYjllODYyZGRiMGY3YTJjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygp
CiAKICAgICBzaXplX3QgZnVuY3Rpb25zVG9IYW5kbGUgPSAwOwogICAgIHsKLSAgICAgICAgTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKKyAgICAgICAgRnVuY3Rpb248dm9p
ZCAoKT4gZnVuY3Rpb247CiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKICAgICAgICAgICAgIGZ1bmN0aW9uc1RvSGFuZGxlID0g
bV9mdW5jdGlvblF1ZXVlLnNpemUoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFJ1bkxvb3A6
OnBlcmZvcm1Xb3JrKCkKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBmdW5jdGlvbnNIYW5kbGVk
ID0gMTsgZnVuY3Rpb25zSGFuZGxlZCA8IGZ1bmN0aW9uc1RvSGFuZGxlOyArK2Z1bmN0aW9uc0hh
bmRsZWQpIHsKLSAgICAgICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsK
KyAgICAgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAgICAgICAgIHsKICAgICAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKIApAQCAtMTIzLDcg
KzEyMyw3IEBAIHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQogICAgIH0KIH0KIAotdm9pZCBS
dW5Mb29wOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24p
Cit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7
CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mdW5jdGlvblF1ZXVlTG9jayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wLmgKaW5kZXggZTE1NThiNjI1OWMyN2YwZjcwOTAxNWVkNTljMTUyYjk4NjU1MzVkNS4u
MzYxMWQ3YTM5Y2I1OWNjMGY0OGU4YjE3ZGJiMmJlMjY2OWE5NGQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGlzTWFpbigpOwogICAgIH5SdW5Mb29wKCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaChGdW5j
dGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBydW4oKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkg
fHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiYmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgRnVuY3Rpb248dm9pZCAoKT4mJik7CiAjZW5kaWYK
IAogICAgIGNsYXNzIFRpbWVyQmFzZSB7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBlcmZvcm1Xb3JrKCk7CiAKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVMb2NrOwot
ICAgIERlcXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsK
KyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlvblF1ZXVlOwogCiAjaWYgVVNF
KFdJTkRPV1NfRVZFTlRfTE9PUCkKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlclJ1bkxvb3BNZXNz
YWdlV2luZG93Q2xhc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggNmFjODZmNjlmNzQ0MDg3ZGQ2YWQ1
M2FlZGM0ZDUyNDQ3OTBmYjIyYy4uYjllYWY0ODZmYzFmNDIzOWNkNjQ1ZWUyYjdkMzBiMTJjODRl
MzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5h
bWUsIFR5cGUgPSBUeXBlOjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CiAgICAgdmlydHVh
bCB+V29ya1F1ZXVlKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBj
b25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoc2l6ZV90IGluZGV4KT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
V29ya1F1ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2Eu
Y3BwCmluZGV4IDk5NWE5NTRhYWMxZGI3NDEzM2RlOWNmYjk0ZjE5NDhjOTQxMjc0MTYuLmZkYmVm
NzNiYWVjMTZhYzU0MmNmYTY0ZTBmYjRmY2M3MzNhZTgyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9Xb3JrUXVldWVDb2NvYS5jcHAKQEAgLTI4LDEwICsyOCwxMCBAQAogCiBuYW1lc3BhY2UgV1RG
IHsKIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogewogICAgIHJlZigpOwotICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3
IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIGF1
dG8qIGZ1bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rpb24p
KTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUsIF57CiAgICAgICAgICgqZnVu
Y3Rpb25QdHIpKCk7CiAgICAgICAgIGRlbGV0ZSBmdW5jdGlvblB0cjsKQEAgLTM5LDEwICszOSwx
MCBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRl
cihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKIHsKICAgICByZWYoKTsKLSAgICBhdXRvKiBmdW5jdGlvblB0ciA9IG5ldyBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBhdXRvKiBmdW5jdGlv
blB0ciA9IG5ldyBGdW5jdGlvbjx2b2lkICgpPihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZGlz
cGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24uY291
bnQoKSksIG1fZGlzcGF0Y2hRdWV1ZSwgXnsKICAgICAgICAgKCpmdW5jdGlvblB0cikoKTsKICAg
ICAgICAgZGVsZXRlIGZ1bmN0aW9uUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZs
L0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oIGIvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNo
UXVldWVXb3JrSXRlbUVmbC5oCmluZGV4IDNkZGZlNTdkZTZhM2RmZjNmZjg4NTFmMGQwMmEyOGYw
MDFlMzY2NTQuLjE2MmJhYjQyYThiNDg4Yjc3ZmRjNTE5NmZkNjQ5ZDcxMmRjYWYwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmgKQEAgLTM0LDcg
KzM0LDcgQEAKIAogY2xhc3MgV29ya0l0ZW0gewogcHVibGljOgotICAgIFdvcmtJdGVtKFJlZjxX
b3JrUXVldWU+JiYgd29ya1F1ZXVlLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24pCisgICAgV29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV93b3JrUXVldWUoV1RGTW92ZSh3b3Jr
UXVldWUpKQogICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgewpA
QCAtNDQsMTIgKzQ0LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVl
PiBtX3dvcmtRdWV1ZTsKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rp
b247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKIH07CiAKIGNsYXNzIFRpbWVy
V29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVl
LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjpu
YW5vc2Vjb25kcyBkZWxheU5hbm9TZWNvbmRzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
VGltZXJXb3JrSXRlbT4gY3JlYXRlKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlv
bjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXlOYW5v
U2Vjb25kcykKICAgICB7CiAgICAgICAgIEFTU0VSVChkZWxheU5hbm9TZWNvbmRzLmNvdW50KCkg
Pj0gMCk7CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4obmV3
IFRpbWVyV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAxMDAwMDAwMDAwLjAgKyBkZWxheU5hbm9TZWNv
bmRzLmNvdW50KCkpKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRXhw
aXJlZChkb3VibGUgY3VycmVudFRpbWVOYW5vU2Vjb25kcykgY29uc3QgeyByZXR1cm4gY3VycmVu
dFRpbWVOYW5vU2Vjb25kcyA+PSBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHM7IH0KIAogcHJv
dGVjdGVkOgotICAgIFRpbWVyV29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGV4cGlyYXRpb25U
aW1lTmFub1NlY29uZHMpCisgICAgVGltZXJXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYmIHdvcmtR
dWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1l
TmFub1NlY29uZHMpCiAgICAgICAgIDogV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZN
b3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgLCBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29uZHMoZXhw
aXJhdGlvblRpbWVOYW5vU2Vjb25kcykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwu
Y3BwCmluZGV4IDQwZDE5MzlmY2Q0ZDBlZmE1Njg5ZWIwMmVkOTk4NmE5ZDc4MjA1ODkuLmRhOTEz
YmYwNGNlNzI3MzEwNzY3ZWY0Nzk0ZmRkMmI4NzhhNWY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3Jr
UXVldWVFZmwuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVy
U29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKICAgICBtX2Rpc3BhdGNoUXVl
dWUtPmNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBpZiAo
IW1fZGlzcGF0Y2hRdWV1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uKQogICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
SXRlbT4oKnRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNo
QWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogewogICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCmluZGV4IDE3MWFk
MzAyNzI2OTIyODZmMzJmMDk0OTJmNGYyODM3YTk3YWI2YzUuLjI1YWU2ZjE5NWMzMmZiNDEyZTA1
OTU4YzM1YjMzODk1OTMyNzQ4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMv
UnVuTG9vcEdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdl
bmVyaWMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBSdW5M
b29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2NoZWR1bGVkVGFzaz4gewogV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBjcmVhdGUoTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wg
cmVwZWF0aW5nKQorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRlKEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soV1RGTW92
ZShmdW5jdGlvbiksIGludGVydmFsLCByZXBlYXRpbmcpKTsKICAgICB9CiAKLSAgICBTY2hlZHVs
ZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGlu
dGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICBTY2hlZHVsZWRUYXNrKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCiAgICAgICAg
IDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgLCBtX2ZpcmVJbnRlcnZh
bChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihz
dGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQogICAgICAgICAsIG1faXNS
ZXBlYXRpbmcocmVwZWF0aW5nKQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAg
ICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRp
bWVfcG9pbnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CiAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kcyBtX2ZpcmVJbnRlcnZhbDsKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX2lzQWN0aXZlIHsg
dHJ1ZSB9OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtl
VXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKICAgICB3YWtlVXAobG9j
a2VyKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkZWxheSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQor
dm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxh
eSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKICAgICBib29sIHJlcGVhdGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAKaW5kZXggN2Y4MGU2OWNhNWM3YzMwNmY5
MDc3YzRmOWM4NTAzZWNjNmU1NDVjNy4uNWM3YjliNzY1NjY5NWRiNzZjZWNiYTc0NTM2MWM2MWVi
MmViMTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQog
ICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2
b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhp
cyk7CiAgICAgbV9ydW5Mb29wLT5kaXNwYXRjaChbcHJvdGVjdCwgZnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKV0gewpAQCAtODksNyArODksNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2go
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVs
YXksIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0
KHRoaXMpOwogICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1
bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5j
cHAKaW5kZXggODliN2Y3MDcwYzlkNDI4ZTdiOGZiODE3YTdmOWU3YjNhZGRmOWYxOC4uOTI3Y2Uz
MjU0ZjhiNTYyNzhiYTZiN2ZmMDIxYzBkZjBhYTVmMzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5M
b29wR0xpYi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiBj
bGFzcyBEaXNwYXRjaEFmdGVyQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgRGlzcGF0Y2hBZnRlckNvbnRleHQoTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkICgpPiYmIGZ1bmN0aW9uKQorICAgIERpc3BhdGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9u
KSkKICAgICB7CiAgICAgfQpAQCAtMTM1LDEwICsxMzUsMTAgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247Cisg
ICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKIH07CiAKLXZvaWQgUnVuTG9vcDo6ZGlz
cGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ190
aW1lb3V0X3NvdXJjZV9uZXcoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLmNvdW50KCkpKTsKICAgICBnX3NvdXJjZV9zZXRfbmFt
ZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291cmNlL1dURi93
dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggNzAzZWYwOWYyMTY5NjA4NjkzMGM0MTQ0Mzhk
YjNhMWIyODQ2OWQ1MC4uM2VmNjFmYjVmNGQ2MzA1ODJkMDMzMDQ0ZTUxZDc2NzI5OWY1Nzg1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBX
b3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgOjpEZWxldGVUaW1lclF1ZXVlRXgo
bV90aW1lclF1ZXVlLCAwKTsKIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKICAgICByZWYoKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBz
dHJ1Y3QgVGltZXJDb250ZXh0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRpbWVyQ29u
dGV4dD4gewogICAgIHN0YXRpYyBSZWZQdHI8VGltZXJDb250ZXh0PiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgVGltZXJDb250ZXh0KTsgfQogCiAgICAgV29ya1F1ZXVlKiBxdWV1ZTsK
LSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIEZ1bmN0aW9u
PHZvaWQgKCk+IGZ1bmN0aW9uOwogICAgIE11dGV4IHRpbWVyTXV0ZXg7CiAgICAgSEFORExFIHRp
bWVyOwogCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXb3JrUXVldWU6OnRpbWVyQ2FsbGJhY2so
dm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKQogICAgIH0KIH0KIAotdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0
aW9uLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fdGltZXJRdWV1ZSk7
CiAgICAgcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzEx
MDRhYjA0Yzc1ZDVhMzc3ODQxMzRjZmY0NGZmNWM0OTZiNjE3Zi4uMGVkODhiMDVhZjgxNTkyMjU5
ZjE0ZjQwMjg1ZjcyYmY4ODQxNDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIGhhc1VuYXNzb2NpYXRlZFRyYW5z
Y2VpdmVycyhjb25zdCBSdHBUcmFuc2NlaXZlclZlY3RvciYgdHJhbnNjZWl2ZXJzCiAgICAgfSk7
CiB9CiAKLXZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpydW5UYXNrKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrKQordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnJ1blRhc2soRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrKQogewogICAgIGlmIChtX2R0
bHNGaW5nZXJwcmludC5pc051bGwoKSkgewogICAgICAgICAvLyBPbmx5IG9uZSB0YXNrIG5lZWRz
IHRvIGJlIGRlZmVycmVkIHNpbmNlIGl0IHdpbGwgaG9sZCBvZmYgYW55IG90aGVycyB1bnRpbCBj
b21wbGV0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAppbmRleCA3YjQ2OWYzNmNj
MTA4ZDM0NTNiZDViMmQ5Y2JmMzI0MjYyNjdhZTRlLi5lMDRlN2NkOTVhYzkxZDdkOTNiYjgwMTY2
NzBlNzQwNWQxMTNhMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKQEAgLTM3
LDcgKzM3LDcgQEAKICNpbmNsdWRlICJNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck5lZ290aWF0
aW9uTmVlZGVkU3RhdGUoKSBvdmVycmlkZSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBydW5UYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7Cisg
ICAgdm9pZCBydW5UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogICAgIHZvaWQgc3RhcnRSdW5u
aW5nVGFza3MoKTsKIAogICAgIHZvaWQgY3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYs
IFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJik7CkBAIC0xMTEsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICBQZWVyQ29ubmVjdGlvbkJhY2tlbmRDbGllbnQqIG1fY2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZHBvaW50PiBtX21lZGlhRW5kcG9pbnQ7
CiAKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1faW5pdGlhbERlZmVycmVkVGFz
azsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U0RQUHJvY2Vzc29yPiBtX3NkcFByb2Nlc3NvcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CmluZGV4IGNmZThmMTVlZTQ4NDc3OGQyNGEwOWU4MjQ5ODE4NWIwMDc2NzEzMmUuLjg4YTdmNzEx
MzZjMGQzNjFiZjcyM2U5ODc4YmFiZjNhZWVmNjBhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKICNpbmNsdWRlICJBdWRpb05v
ZGUuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3Vt
ZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGNsb3NlKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lkICgpPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZChGdW5jdGlvbjx2b2lkICgpPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
RnVuY3Rpb248dm9pZCAoKT4mJikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGlzUGxheWluZ0RpZENoYW5nZSgpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGFjMTM3MWUyYTVhNTczMzM2YjQ2
OGNlNWE3YzFmN2Y1OTcyMWQyYzkuLjdjZWNjYmEzOTUwNTExODRiYTVkODk4NTI0ZWU0Y2QxNDBm
YTZjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogICAg
ICAgICBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVzdW1lKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUoRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICBp
ZiAoaXNJbml0aWFsaXplZCgpKQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpyZXN1bWUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uCiAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUo
ZnVuY3Rpb24pKTsKIH0KIAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3Bl
bmQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICBpZiAoaXNJbml0aWFsaXpl
ZCgpKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvCiAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUoZnVuY3Rpb24pKTsKIH0K
IAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OmNsb3NlKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNJ
bml0aWFsaXplZCgpKTsKICAgICB1bmluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCmluZGV4IDA5YzliMzhiN2Y5MjJiMDUzMjE2NzllMzViM2M2NWJmMTc2MTRmNGYuLjM1YTBk
ZjE2ZDM0NDdlZWFmNjlkYTk0YjU3YTE5ZmM1MmVjMWYzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gQXVkaW9EZXN0aW5hdGlv
bk5vZGUKICAgICB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydFJlbmRlcmluZygpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVzdW1lKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc3Vz
cGVuZChGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlKEZ1bmN0
aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIGxvbmcgbWF4Q2hhbm5lbENv
dW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKaW5kZXggODY5YjZlYWE4MDRmNzc0NmEwMTEwZTc1MjdkYzFkOGFkMjI2NTY2Zi4uMTdi
YjY5ZTQ5YWJiMGIzMzRiY2Q3MDZhMDk4Zjk3ZTE3ZTg5NjhlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yNzk4
LDcgKzI3OTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJsb2JV
UkxzSXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQlZhbHVlJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihGdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAppbmRleCA0YzY3MGU2ZGMxMTdiM2UwNWVmOTliYmI1NTFiMjgxNTZkMzdhNmZiLi41Mzg4
YmIyNjc4YmRiNjA5NjQwMzA3ZjgwZGI3OGQyYTFhZmQzNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIHZv
aWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KGNvbnN0IElEQlZhbHVlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVC
bG9ic1RvRGlza0ZvckluZGV4ZWREQihGdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBJREJWYWx1ZSB3cml0ZUJsb2JzVG9EaXNrRm9ySW5k
ZXhlZERCU3luY2hyb25vdXNseSgpOwogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNy
b3Rhc2suY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
LmNwcAppbmRleCA3YWEyMjY5ZjRjNWZlMTE3MzA4NjNjZjIxMzJmZmZkODI2OTIyZTY0Li42NmY1
OTBhNDk3NWFlOTY4M2M2MWExNjE1ZjI5YmQxZGQ3NGE3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAKQEAgLTI4LDcgKzI4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWljcm90YXNrUXVldWUmIHF1ZXVlLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQorQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s6OkFjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrKE1pY3JvdGFza1F1ZXVlJiBxdWV1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
CiAgICAgOiBBY3RpdmVET01DYWxsYmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAs
IG1fcXVldWUocXVldWUpCiAgICAgLCBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKaW5kZXggZTExYzRkMDdh
NGFhYTU0YjlkZmIzYjMxZDQxM2MxOTI1MDA4YmNiYS4uOGE3ZjdmNjM3MDgzM2ViMDc2MmYyY2Nl
ZTI1NmMxMWUxNzZmZWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNh
bGxiYWNrTWljcm90YXNrLmgKQEAgLTI3LDE0ICsyNywxNCBAQAogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzayBmaW5hbCA6
IHB1YmxpYyBNaWNyb3Rhc2ssIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aXZlRE9N
Q2FsbGJhY2tNaWNyb3Rhc2soTWljcm90YXNrUXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEFj
dGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1pY3JvdGFza1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soKTsKIAogICAgIFJlc3VsdCBydW4oKSBvdmVy
cmlkZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBiZSBhY2Nlc3NlZCB2aWEg
dGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHdoaWNoIHNob3VsZCBob2xkIGEgcmVmZXJlbmNl
IHRvIHRoZSByZWxldmVudAogICAgIC8vIHF1ZXVlLgogICAgIE1pY3JvdGFza1F1ZXVlJiBtX3F1
ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CisgICAgRnVuY3Rp
b248dm9pZCgpPiBtX3Rhc2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwNzkyZThjOTk5NmY1
YjRkZDZjZDExMjg0OWNjNTY0NGQ5YzA5YjVkLi4wOTY0OTdlYTk5ZTA5YmY4ODE1YTA5YTRmYWFj
OTIwMGE0NGY4NzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
VGFzay5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIERl
cHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBwdWJs
aWM6CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRh
c2sgfTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6
aXNfY29udmVydGlibGU8VCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFz
aywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lk
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNr
KFQgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAg
ICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAgICAgICAgVGFz
ayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9
KQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19jb252ZXJ0aWJsZTxULCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcs
IFQgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAg
ICAsIG1faXNDbGVhbnVwVGFzayh0cnVlKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNr
OyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBtX3Rhc2s7CisgICAgICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9p
c0NsZWFudXBUYXNrOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcAppbmRleCA0YWU2YzgwY2UzNGU3OTRlNWVjNjJkNzgyYzU4MTI4ZjE3NmQyZWE0
Li45YTkzYTFiYjVmYTMxNTU1Y2JhNjI2MzkyNjhiYmE3MTIwZmY0Y2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNp
bmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1
bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsMTIgKzY0LDEyIEBAIGlu
bGluZSBBc3luY0ZpbGVTdHJlYW06OkludGVybmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGll
bnQmIGNsaWVudCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxP
bkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+PiBx
dWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZv
aWQgKCk+Pj4gcXVldWU7CiAKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRo
cmVhZE9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsK
QEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0g
ICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsK
IH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYg
Y2xpZW50KQpAQCAtMTE0LDcgKzExNCw3IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0
cmVhbSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKE5vbmNv
cHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmls
ZVN0cmVhbSYpPiYmIG9wZXJhdGlvbikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1
bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0m
KT4mJiBvcGVyYXRpb24pCiB7CiAgICAgYXV0byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwog
ICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZpbnRlcm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3Bl
cmF0aW9uKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXgg
MDg4YmIzNzc0NmY0NzU5ODJkNDcwODRkZjUwNjFmMTk3NmM2OTJlMS4uMzVlODVhN2ExNWRlMzM5
NzdjNzdlNzQ2YWJhZDMwOGExOWNlYmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5oCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7
Ci0gICAgdm9pZCBwZXJmb3JtKE5vbmNvcHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lk
KEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0o
RnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVh
bSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRlcm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElu
dGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYTMx
MWRiMGVkYzRlNmIxZDVkNTUyNmRjZThiZTZmNWFhMDliYmEwMS4uNmVkNjhkZjAxMzlhOWIzNGQ5
YjUxOWM3ZjA3MzI4OTllZTQ3YTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
MzE0MSw3ICszMTQxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmZsdXNoQW55UGVuZGluZ1Bvc3RMYXlv
dXRUYXNrcygpCiAgICAgICAgIHVwZGF0ZUVtYmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQoKTsKIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91
dENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3Bvc3RMYXlv
dXRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC0zMTU0LDcg
KzMxNTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSgpCiAg
ICAgaWYgKCFtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gcXVldWUgPSBXVEZN
b3ZlKG1fcG9zdExheW91dENhbGxiYWNrUXVldWUpOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lk
KCk+PiBxdWV1ZSA9IFdURk1vdmUobV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZSk7CiAgICAgZm9y
IChhdXRvJiB0YXNrIDogcXVldWUpCiAgICAgICAgIHRhc2soKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCmluZGV4IGY0NDQ5ZTUzNDhlNTg3MzIyMjA5YmNhNjY2ZDQxYjZjMjgzMGRlMjkuLjg2
MTEzODE4NzZjMzQ2N2IzMDdlYTQ4NWE4MzVmZDlhOTIyODU1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaApAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgdm9pZCBz
Y2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKFJlbmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHVuc2No
ZWR1bGVSZWxheW91dCgpOwotICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJh
Y2soRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBib29sIGxheW91dFBlbmRpbmcoKSBjb25zdDsK
ICAgICBib29sIGlzSW5MYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFBoYXNlICE9IE91
dHNpZGVMYXlvdXQ7IH0KICAgICBib29sIGlzSW5SZW5kZXJUcmVlTGF5b3V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXRQaGFzZSA9PSBJblJlbmRlclRyZWVMYXlvdXQ7IH0KQEAgLTgyOCw3ICs4
MjgsNyBAQCBwcml2YXRlOgogICAgIFNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5p
bmdCZWhhdmlvcjsKIAogICAgIEludFJlY3QqIG1fY2FjaGVkV2luZG93Q2xpcFJlY3QgeyBudWxs
cHRyIH07Ci0gICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5
b3V0Q2FsbGJhY2tRdWV1ZTsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5
b3V0Q2FsbGJhY2tRdWV1ZTsKIH07CiAKIGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50
VmlzdWFsbHlOb25FbXB0eUNoYXJhY3RlckNvdW50KHVuc2lnbmVkIGNvdW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggNTc2
MDc4M2RiOGNlMDAzNWM4ZWU0MDc4YTU0NWY3MDVmZjYxMmRmNS4uNzMwYzBhNmJkOTNmNDU3OGQx
ZWRiZjlhY2UxY2Q4NjU2NmU2Yzk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgU2Nyb2xs
aW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogICAgIHJldHVybiB0aHJlYWRJZGVudGlmaWVy
ICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWRJZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9s
bGluZ1RocmVhZDo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uKQordm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgYXV0byYgc2Nyb2xsaW5nVGhyZWFkID0gU2Nyb2xsaW5nVGhyZWFk
OjpzaW5nbGV0b24oKTsKICAgICBzY3JvbGxpbmdUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQo
KTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICBzY3JvbGxpbmdUaHJlYWQu
d2FrZVVwUnVuTG9vcCgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJy
aWVyKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xs
aW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
IHsKICAgICBkaXNwYXRjaChbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CkBAIC0xMDQs
NyArMTA0LDcgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNj
cm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIAotICAg
IFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlvbnM7CisgICAgVmVj
dG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlvbnM7CiAgICAgCiAgICAgewogICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2Z1bmN0aW9uc011dGV4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKaW5kZXggMDM3Zjk1Yjkw
YjYzYTlkZWIxMzFjMzgxYmQ5ZDMyNDk5N2I1NDFlZC4uMjhkNTc1NWQ3ZGEyZDA5MzlhNDE5NTMy
ZmRjYTU0YzBjNThlZDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CkBAIC00OCwxMSArNDgsMTEgQEAgY2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKIAogcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzQ3VycmVudFRocmVhZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7
CiAKICAgICAvLyBXaWxsIGRpc3BhdGNoIHRoZSBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgbWFpbiB0
aHJlYWQgb25jZSBhbGwgcGVuZGluZyBmdW5jdGlvbnMKICAgICAvLyBvbiB0aGUgc2Nyb2xsaW5n
IHRocmVhZCBoYXZlIGZpbmlzaGVkIGV4ZWN1dGluZy4gVXNlZCBmb3Igc3luY2hyb25pemF0aW9u
IHB1cnBvc2VzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmll
cihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0
ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsKIAog
ICAgIExvY2sgbV9mdW5jdGlvbnNNdXRleDsKLSAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPj4gbV9mdW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBt
X2Z1bmN0aW9uczsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgdXNlIFdlYkNvcmU6OlJ1bkxvb3AgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5jcHAKaW5kZXggMGM2YzI0M2I4ZTA4Y2ExMmI4OTY2ZDlmYWFjY2Rl
NDIyMmY5MDEwNS4uMWFhN2UxYjg3NjNmZjFiNDdkZmI4ZTIxMzk0MDc2NDVlYjc1NWViMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CiAK
LXZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQo
bV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCmluZGV4IDRkODVjOWEwYjIxODQ5OGM2OTUxNDYxOTEwNmQz
OGQwNzk5OTFhYmMuLmY1MGEzNjEzOWYyZjc2ZTA0NTY3N2I2OTg1NWMwNWY1NWU0MmM2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKQEAgLTI3LDcgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwb3N0VGFzayhO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmKQorICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rp
b248dm9pZCgpPiYmIGYpCiAgICAgewogICAgICAgICBtX2NvbnRleHQucG9zdFRhc2soV1RGTW92
ZShmKSk7CiAgICAgfQpAQCAtNTMsNyArNTMsNyBAQCB0ZW1wbGF0ZTw+CiBjbGFzcyBUYXNrRGlz
cGF0Y2hlcjxUaW1lcj4gewogcHVibGljOgogICAgIFRhc2tEaXNwYXRjaGVyKCk7Ci0gICAgdm9p
ZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0
VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYg
c2hhcmVkVGltZXIoKTsKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3Bh
dGNoT25lVGFzaygpOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8VGFza0Rpc3BhdGNoZXI+IG1fd2Vh
a1B0ckZhY3Rvcnk7Ci0gICAgRGVxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+PiBtX3Bl
bmRpbmdUYXNrczsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+IFRh
c2tGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoKT4gVGFza0Z1bmN0aW9uOwog
CiAgICAgdm9pZCBlbnF1ZXVlVGFzayhUYXNrRnVuY3Rpb24mJiB0YXNrKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggODY5YTY4ZTk4ODZiMmQwYmY1OThiZTMwYTkyZGRmNjQ1
ZGU5Mzc2OC4uMjBjOTQ2MDY1ODkxZjE1YTAwNTMyNTZmMDg1NTE2Yzk2MTUzMzk4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVRyYWNrcygpOwogICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsK
IAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+
JiYpOwogCiAgICAgZW51bSBEaXNwbGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KaW5kZXggODRjN2Q2MjMyNGY2NDcxMWUxNjVlNTI0M2RmODhmMjFhNTBl
ZDdlOS4uYWJmNDM3ZDM3MTY1ZmZlZTM2ZWIwN2QyY2FjNGZjZGI0ZDg1ZmY4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTCiAgICAgbV9wbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNr
KE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlv
bjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2Fs
bE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RG
TW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCmluZGV4IGQ0OWQxNTEyMTM5NjM4
ODY0OWRlMTU3YzMwNDcxNzQ5M2ViZmNjYmMuLjE4NzJjZDJjOGJjMzI5NTU4MzI2Y2ZmZjFkOTZm
YTdlZDc1YTgyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
JikKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJy
ZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVk
aWFTdHJlYW1Qcml2YXRlOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVh
ZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlv
bildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXggOTIzMDRlZmJkNjM0OWFjZjE5Njk3NTRmZjgyOGEw
NmZhNDRjMGQzZi4uYWJmY2FiNmMwMWViOTFhYWVjMTU4M2YxZDI5OGM1Mjc3OGE2ZDlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Qcml2YXRlLmgKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTExMiw3ICsxMTIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQg
dXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFz
ayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZl
cnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRp
YVN0cmVhbVByaXZhdGU+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4g
bV9vYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGY0NzRhZWI5Yjdj
NzNjYmM0YzgzNGMyZjFlYzkyYjU4OWMxNDVjNjQuLjc0ZDdmZmMxZjI0ZjA4MTkzMjQwZmNlMDYz
MTc4NWJkNjQ1ZjZlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC0zMSw3ICsz
MSw3IEBACiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTg2LDcgKzg2LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNh
cHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsKICAgICB2b2lkIHNldEF1ZGlvU2FtcGxlQnVmZmVyRGVs
ZWdhdGUoQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBzY2hl
ZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHNldHVwU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDc2
YWZkOWJiZTVhMDdlOWE3NThhYTQ1YjhlN2M3ZTY1MWNiY2IzM2IuLmMyZDkyOGRlYjNlNmI1MDg5
ODgyNTZiYzUzMzc1NzljZDlhZmM3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0K
QEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXRBdWRpb1Nh
bXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dAogICAgIFthdWRpb091
dHB1dCBzZXRTYW1wbGVCdWZmZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpn
bG9iYUF1ZGlvQ2FwdHVyZVNlcmlhbFF1ZXVlKCldOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJl
U291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCit2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVk
VGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlv
bik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1
bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IDI3OTU3OWNmYmViYWFkMTVhZmIwNjM4ZTA5
ZTJmNjRjMGE1N2ExZjYuLmUyMjVmZWM3NTQ5MDYwZWQxZDRjOTNlMTE2MjBkOWU5ZDM2NDJiZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApA
QCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQ
YXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDY4MDYwMzU0ZTdlNTBlYmQ4Njdi
MWQwODA5ZDNkMjdjM2U1MTRiYjguLmE2N2ZhY2Y3NWUwZmVjMjFkODRjMTZjYWY0YjY0ODI4YjZj
MjBhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0cnVjdCBCbG9iRm9yRmlsZVdy
aXRpbmcgewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
cj4+IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnM7CiB9OwogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6
OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBh
dGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRp
bmc7CiAgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCA0NThjMDY1MDNh
N2U2M2U5MjI2MTg4MTA4MWUzNDkwMmE0YzdhYTU5Li4yMDM5N2U5ZWM5ZjQ0MTBmMTA4NTdjYTRi
MjliNjUxMWViZTZjMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGU7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRh
Pj4gbV9ibG9iczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRy
ZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAKaW5kZXggNzBhMWZhZWM1MmRmYTgyOGJlYWU1OWNiYjNhZGQwNDU3MjNhNjZkNS4uMGMxOWM2
MjBmMTRhNTQyMGNkOTU2YmNiYWUyNWU3ZjRkNGM3YTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtNTMyLDEzICs1MzIsMTMgQEAgc3RkOjp1bmlx
dWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlKENoYW5nZSBjaGFuZ2UpCiAgICAg
cmV0dXJuIFdURk1vdmUobV91cGRhdGUpOwogfQogCi1zdGF0aWMgVmVjdG9yPE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4+JiBwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKQorc3RhdGlj
IFZlY3RvcjxGdW5jdGlvbjx2b2lkICgpPj4mIHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tRdWV1ZSgp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+Pj4gdmVjdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RnVu
Y3Rpb248dm9pZCAoKT4+PiB2ZWN0b3I7CiAgICAgcmV0dXJuIHZlY3RvcjsKIH0KIAotdm9pZCBx
dWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGNhbGxiYWNrKQordm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9p
ZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKS5h
cHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJl
ZVJlc29sdmVyLmgKaW5kZXggM2NlNzA0NjI2NzQ1YTkzNmViNGNkYjViOThiYTc0MDc2MDhjMTUx
Ni4uZjc0NjZkMTQxNjg4ZWI0NjYwOTI1N2VlMzNjYjcxYzdkY2U0ZGU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCkBAIC0zMiw5ICszMiw4IEBACiAjaW5jbHVk
ZSAiU3R5bGVDaGFuZ2UuaCIKICNpbmNsdWRlICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlVXBkYXRlLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VXBkYXRlPiBtX3VwZGF0ZTsKIH07CiAKLXZvaWQgcXVldWVQb3N0UmVzb2x1dGlvbkNh
bGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7Cit2b2lkIHF1ZXVlUG9zdFJl
c29sdXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkICgpPiYmKTsKIGJvb2wgcG9zdFJlc29sdXRp
b25DYWxsYmFja3NBcmVTdXNwZW5kZWQoKTsKIAogYm9vbCBpc1BsYWNlaG9sZGVyU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFu
YWdlci5jcHAKaW5kZXggZTFhNGExNWRkZDdmMzQ3MTYxZTQ0NDMzNzFmYzQ3YjcyMjY4Zjk5NC4u
ZWRjOWViMzNjNTAzNTUyMGFjNTQyZDM1ZDBhNWJjYTIyZjljNzZkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgU3Ry
aW5nIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkZW50aWZpZXIKICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9p
ZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaChGdW5jdGlv
bjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKG1fdGhyZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01h
bmFnZXIuaAppbmRleCA3NWE0ODZiNjIwYzJiYjMxMmFlOGNkZjlkNTA2NGI0MDI2YmExZWM1Li44
OWU2YjQzM2E1MWU2M2RlZTM5ZDc4OWQxZDhlNWJhNWIzYjJkNmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VTeW5jTWFuYWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiAgICAgflN0b3JhZ2VTeW5jTWFuYWdlcigpOwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJik7CiAgICAgdm9pZCBjbG9zZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDI5NjZlMDQwNmUxNzA0ZjIyMGM1MWMyNmRl
NzhkMDgyMTQyNmM2MDkuLjBiNmVkMDc2ZmZmNTVhMTFkOTE2YmRlNTk5ZGNkNWJjMDFlOGUxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc0LDExICs3NCwx
MSBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogICAgIH0KIH0KIAot
dm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCit2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1
bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248
dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6
dGVybWluYXRlKCkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5h
dGUoKQogICAgIGlmICghbV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1
ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pihb
dGhpc10geworICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9p
ZCAoKT4+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAg
ICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VUaHJlYWQuaAppbmRleCA0NzUyZDViMTllMWIwNmNhYTllN2VlZDg4NDRiNDlkNWYz
ZmNiZmEyLi4zZjFiODg0NWI2ZjNmZDdjZmU4NzE4MDJjZWE0N2QxMGNiMTQwODRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgKQEAgLTI2LDEwICsyNiw5IEBACiAjaWZuZGVm
IFN0b3JhZ2VUaHJlYWRfaAogI2RlZmluZSBTdG9yYWdlVGhyZWFkX2gKIAotI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsK
ICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRo
cmVhZHMoKTsKIApAQCAtNTksNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRl
cm1pbmF0ZSgpOwogCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3Nh
Z2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PiBtX3F1ZXVlOworICAgIE1lc3Nh
Z2VRdWV1ZTxGdW5jdGlvbjx2b2lkICgpPj4gbV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IGQzNGQ4NDIwNTk1ZGQ1OWVi
YWUyZGY3YjY4MTYwMWNiZDA3MTZiYTAuLjhkY2YxYmUzY2NkZmQ1MDhjMWJmNGQ5ZWE2YjIxNzVm
YTE2ZDM5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBA
IHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uCiAgICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JT
aXplKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxT
dHJpbmc+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkud3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTIwMTY5YTkxYmJlZWNkNDZkY2I4
NzZiZDA5YjJmODQ3MGRmZGQ4OS4uNzQwNmEzY2I1ZTY3N2UyZjNmZmJhYTc0YjgzMGY2NmQyZmE0
YWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTI3LDEwICsyNyw5IEBACiAjZGVmaW5l
IE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+Ci0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOwpAQCAtNTUsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0
YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHVpbnQ2NF90
IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6
VVJMJik7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9p
ZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2
b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCmluZGV4IGRiYTJjODhkOTFhMmNkYjQwMGEwNDg2MDJjMmEwY2QwOTNlZGFlMjUu
LmQ1NDZkOTE0ZmZlMzUyYmMxNDcxNzk2MzhlNzNhMjIyZGI3NzM3MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtNjMsOSArNjMsOSBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24gewogICAgIFJlamVjdFByb3RlY3Rpb25TcGFjZQogfTsKICAg
ICAKLXR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpPiBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwotdHlwZWRlZiBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKLXR5
cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBl
ZGVmIEZ1bmN0aW9uPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5
cGVkZWYgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGI0Mjg4ZjVlMDdjNDNmMTZhYWQyNDI5ZjU2NzI0NDRiZjczYWRlMmYuLmI4NzE4MTBhOTdk
YjlkMGY3NWRhMDQ4MGM1OTA3Y2MxOWU1NTY1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQg
c2Vzc2lvbklEKQogICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwog
CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94
RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QKICAgICAgICAgaGFu
ZGxlcigpOwogfQogCi1zdGF0aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9u
cywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMo
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZl
dGNoT3B0aW9ucywgRnVuY3Rpb248dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGlm
IChOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLmlzRW5hYmxlZCgpKSB7CkBAIC0zNTIsNyArMzUy
LDcgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gd2Vic2l0ZURhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZl
dGNoT3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tB
Z2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7
Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgZXhwbGlj
aXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjYsNyArMzY2
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGEKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
CiAKLSAgICAgICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29t
cGxldGlvbkhhbmRsZXI7CisgICAgICAgIEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9j
b21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKICAg
ICB9OwogCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJp
ZXMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFy
RGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lu
cywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRSkKICAgICBpZiAoTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJs
ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggY2I4MDA5ZWQ0NzY0NDNlMGI3NGNiYTFhOTJjMGQ0ZDJmZWQ0OWMwZC4uZjIxODEy
NzM3M2U0YzdkZTFhYWE1OTY0MjBhYzY5ODY3N2ExZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTExMyw3
ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9u
c1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yMDUs
NyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNo
YXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0
aW9uSGFuZGxlcnM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1f
c2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29h
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBh
OTMwYTcwNjBjZDAwNGNlYzQ0YzEwMjY4ZjQ5YmMxZjY5YmQzMDRiLi4yZjQ4MTM0YTY0ZTgwOGE0
ZjdjNzM5NmNjMzc5YTgzYmFkMzNkM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCB2
b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9k
eSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAg
ICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBDYWNoZTo6
cmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZW1v
dmUobWFrZUNhY2hlS2V5KHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDYWNoZTo6dHJhdmVyc2UoTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNl
SGFuZGxlcikKK3ZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZl
cnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmgKaW5kZXggNThmMGM2ZDYzN2U1ZDNmMGJlNjJlMmY3ZDRkNGMwNGZlMDhkNjMyOC4u
MzlkNzYwODk3MWM1OTkxZjdmYWNkZTRjZDE0ZDRiMTUwMzgxMzc1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29tcGxldGlvbiBo
YW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgogICAg
IHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xv
YmFsRnJhbWVJRCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+
JiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoTWFwcGVk
Qm9keSYpPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5
Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTExNCw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEVudHJ5JiBlbnRyeTsKICAgICAgICAgY29uc3Qg
U3RvcmFnZTo6UmVjb3JkSW5mbyYgcmVjb3JkSW5mbzsKICAgICB9OwotICAgIHZvaWQgdHJhdmVy
c2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsK
KyAgICB2b2lkIHRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+
JiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNv
dXAuY3BwCmluZGV4IDhjOTFjOWVjNjc1ODgyMmM2YjMwZjVmYjQwYjgyYzFjNjQ4ZDRlZjEuLjg0
Yjk0OTc5NmY0N2UxNWIzY2JmZTRlMjkwMzY4NzcxMmQxZDc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUlPQ2hhbm5lbFNvdXAuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFJlZjxJT0NoYW5uZWw+IElPQ2hh
bm5lbDo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUgdHlwZSkK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJT0NoYW5uZWwoZmlsZVBhdGgsIHR5cGUpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVlKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiB0YXNrLCBXb3JrUXVldWUqIHF1ZXVlKQorc3RhdGljIGlubGluZSB2b2lkIHJ1
blRhc2tJblF1ZXVlKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkK
IHsKICAgICBpZiAocXVldWUpIHsKICAgICAgICAgcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFz
aykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IDgzYmE2Yzc1YmFmOGEyZjJmMDBhZjdkMDJmOGY2
YWU3YWNjMTViM2YuLjE0NWY4OTY3OWMxNGY0YWFlZTRmNDFjODIyNTY2NTY0MjExMjdjMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Rp
bWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb29tRmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpm
dW5jdGlvbjxib29sIChzdGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPik+IFJldHJpZXZlQ29tcGxldGlv
bkhhbmRsZXI7CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBLZXkmLCB1bnNpZ25lZCBwcmlvcml0
eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKIAotICAgIHR5cGVkZWYgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRs
ZXI7CisgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4g
TWFwcGVkQm9keUhhbmRsZXI7CiAgICAgdm9pZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRC
b2R5SGFuZGxlciYmKTsKIAogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwpAQCAtNzksNyAr
NzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFNoYXJlQ291bnQgPSAxIDw8IDEsCiAgICAgfTsKICAg
ICB0eXBlZGVmIHVuc2lnbmVkIFRyYXZlcnNlRmxhZ3M7Ci0gICAgdHlwZWRlZiBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlY29yZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJhdmVy
c2VIYW5kbGVyOworICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoY29uc3QgUmVjb3JkKiwgY29u
c3QgUmVjb3JkSW5mbyYpPiBUcmF2ZXJzZUhhbmRsZXI7CiAgICAgLy8gTnVsbCByZWNvcmQgc2ln
bmFscyBlbmQuCiAgICAgdm9pZCB0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNl
RmxhZ3MsIFRyYXZlcnNlSGFuZGxlciYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggOTBmOTQwYTc1
NzJjNDEwYmMyOWYwMjkyZDg1YzA0N2VkYTVmOWMxMC4uZWQwNDBlNWVkZWI1Nzk1YWRkNzVlYWM5
ZmU2N2U2ZmNlZDc3NzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6Ondy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhz
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS0+d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmls
ZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxl
QVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5kZXggNThkM2FiZGVlYTVlMjNhNmYyMmY2NmE5OTAy
ZmE3ZGQxNWI2ZDc3My4uODM1M2ZhNzgyOWU0ZWVmNTkxNGFhMjhhN2JhY2YyZTc0OWRiZmRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQg
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDNjODNhNDczMzgzYWE1ZDkyZjY3N2I0ODU2OThkOWQ5NDc5Zjc3YjIuLjhmNzdh
YmI2YmVmMDY5MjQzY2VlZDMxNTFlNjQzYzIzNzE0YjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBzdGF0aWMgdWludDY0X3Qgd3JpdGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKICAgICB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciA9ICsrd3JpdGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA3N2I1NGRhNGJkMTAyZTlkNTBkNDM5MzUxMDg5YTI3NWM0
OTM5YTRiLi5lZjhlMGZiYWU0OWY3MmEwNzllY2Y0OGZlYTlkZTQxYTJmMWFjM2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC04MSw3
ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHBy
b2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBs
ZXRpb25IYW5kbGVyczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpPj4gbV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281864</attachid>
            <date>2016-06-22 12:58:53 -0700</date>
            <delta_ts>2016-06-22 14:05:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160622125848.patch</filename>
            <type>text/plain</type>
            <size>86358</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmJhOTcxYzIzOTdmNWZlZGZkZTU0
ZjA4ZDBjYTdlMzFjNGU5MjcuLjg4OGJhMDgzMWFkODI3Y2RjMmI1NGJmZDA3OTUwNjAwZGY2ZGFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJlYWRU
YXNrKToKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYv
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpmdW5j
dGlvblF1ZXVlKToKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWlu
VGhyZWFkLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgorICAgICAgICAo
V29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6
CisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4
dCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0
Zi93aW4vV29ya0l0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6V29ya0l0
ZW1XaW4pOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1XaW4uaDoKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmZ1bmN0aW9uKToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorCiAy
MDE2LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAK
ICAgICAgICAgQWRkIHN5c3RlbSB0cmFjaW5nIHBvaW50cyBmb3IgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgd29ya2Zsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDViOGU0YzA1OWZlYTdhODUwZWYyZmJlOWZj
MTczMGVhOGYzNmNhLi5iN2VhNjZkZjI3YmFhOTkzNDViNGYwZTkzM2M4YjAyMWQ0NDA1ZDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlv
biB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1blRh
c2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAq
IGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybSk6CisgICAgICAgICogZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNj
cm9sbGluZ1RocmVhZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hl
cjo6cG9zdFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OnF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKwogMjAxNi0wNi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2VwdGlvbiBpcyBub3QgdGhyb3duIHdoZW4gc2hp
cHBpbmcgbWV0aG9kIGlzIGFuIGludmFsaWQgYW1vdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUxYjhlODk2M2Ey
YWMyODA5M2Y1NDNjZWVmYjYzODZhY2NmNzFlNDUuLmM2MTZkYTA1NGVjNTI5MGQ4ZTZmMjQ5MzI4
YTc1MWUzNjBmZjlmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMjEgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9u
Y29weWFibGVGdW5jdGlvbiB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE2LTA2LTIwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ3Y2Y3
ODhjMTcwYzQ2YmM0ZDczZDQzMzVjYTgyNmE2ZjAzNzk1Ni4uNzM5MDMyOTA0M2JhNmRjMmQ2NzNm
NTliNGQ3Y2M1MDBmNDhmN2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA2
LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVu
YW1lIE5vbmNvcHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cnVuVGFza0luUXVldWUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNi0w
Ni0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBsb2dn
aW5nIHJlbGF0ZWQgdG8gcHJvY2VzcyBhc3NlcnRpb25zIHRvIGhlbHAgZGVidWcgcHJvY2VzcyBz
dXNwZW5zaW9uIGlzc3VlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmNlM2JhZTc5NTMxNzQ2NWNmOWNkZmE5YTIyODlmZjYwMDZjNjQwNi4uNDM0ZjY2ZTMz
ZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNyArMTE5LDcgQEAKIAkJN0UyOUMzM0UxNUZGRDc5
QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1
bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0
MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIw
OTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9
OwotCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCAqLzsgfTsKKwkJODNGMkJBREYx
Q0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24u
aCAqLzsgfTsKIAkJODNGQkE5MzIxOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5
NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovOyB9OwogCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JG
MjIgLyogUmVmQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgfTsK
IAkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovOyB9OwpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAJ
CTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpjUnVudGltZUV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNl
NjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5
YWJsZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmNvcHlh
YmxlRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlE
RjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZUNhc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5
MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU3RyaW5nVmlld09iakMubW07IHBhdGggPSBtYWMv
U3RyaW5nVmlld09iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDMsNiAr
ODQzLDcgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAog
CQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJODNGMkJB
REUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5
ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMx
ODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUx
QTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKQEAgLTg4OSw3ICs4OTAsNiBAQAogCQkJCTFB
M0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4
NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVC
MDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKLQkJCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5
QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQx
MjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0NzJENjE1MUE4MjVCMDA0MTIz
RkYgLyogTnVtYmVyT2ZDb3Jlcy5oICovLAogCQkJCTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAv
KiBPYmpjUnVudGltZUV4dHJhcy5oICovLApAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIAkJCQlBOEE0
NzNEOTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzYxQzAwMEQ0MDAwODFENjYzIC8qIEluZGV4U3Bh
cnNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyog
SW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDREMDA1MjlBOUIg
LyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKaW5k
ZXggYjRlOTZjNGM1OWI3ZDBlNzZkNDFmODUxYTAwY2VlNWNhNzQ4YzhlNC4uMGE2NmVjMTdmN2Fk
NGE5NTk4NDNjZWNjNTQ3ZjljY2IwMzAxZTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDcm9zc1RocmVhZFRhc2sgewog
cHVibGljOgogICAgIENyb3NzVGhyZWFkVGFzaygpID0gZGVmYXVsdDsKIAotICAgIENyb3NzVGhy
ZWFkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFza0Z1bmN0aW9uKQorICAg
IENyb3NzVGhyZWFkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlvbikKICAgICAg
ICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlvbikpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV90YXNrRnVuY3Rpb24pOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tG
dW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM5NTg1NjIzOGU0N2M1
ZDhiMzhkODYxYzBiZjcxZGJlZDhiZGNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZ1bmN0aW9uOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4KK2NsYXNzIEZ1bmN0aW9uPE91
dChJbi4uLik+IHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbigpID0gZGVmYXVsdDsKKyAgICBGdW5j
dGlvbihzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJs
ZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVm
ZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIEZ1bmN0aW9uKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUp
KSkKKyAgICB7CisgICAgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAobV9jYWxsYWJsZVdyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4g
bV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOworICAgICAg
ICByZXR1cm4gT3V0KCk7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgRnVu
Y3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAgICB7CisgICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2Fs
bGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7Cisg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5DYWxsYWJsZVdyYXBwZXJCYXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCBPdXQgY2Fs
bChJbi4uLikgPSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5
cGU+CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIDogcHVibGljIENhbGxhYmxlV3JhcHBlckJh
c2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICAgICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2Fs
bGFibGUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsYWJsZVdyYXBwZXIo
Y29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisgICAgICAgIENhbGxhYmxlV3JhcHBl
ciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOworCisgICAgICAg
IE91dCBjYWxsKEluLi4uIGluKSBmaW5hbCB7IHJldHVybiBtX2NhbGxhYmxlKHN0ZDo6Zm9yd2Fy
ZDxJbj4oaW4pLi4uKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FsbGFibGVUeXBlIG1f
Y2FsbGFibGU7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYWJsZVdyYXBwZXJC
YXNlPiBtX2NhbGxhYmxlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAppbmRleCBiNTJl
ZWNmMWViZjI2OWE0MDYwOGJhMmE4Njc1YTc1MWQzODM0ODYwLi4zNDRhMTYwMjA4NDBmNWNkNDUw
OWQ3Y2UzNjRkNzM3ZDQ5OGVlNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaApA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBGdW5jdGlvbkRpc3BhdGNoZXJfaAogCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnVuY3Rpb25E
aXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uRGlzcGF0Y2hl
cj4gewogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5GdW5jdGlvbkRp
c3BhdGNoZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEZ1
bmN0aW9uRGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCBiZDExZTEwYzJkNTEy
OTMxY2ExNjE3NWMxOTlkMWRlMTcxZDc1NWVmLi42ZDQyYzRmZGJkYWRlMmIwMTc4MTNiYTQ0NzBk
ZDJjZGRhYTc1ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcsOSBAQCBzdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3RhdGljIFN0YXRp
Y0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERlcXVlPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1ZTxG
dW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0aW9uUXVldWUoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gZnVuY3Rpb25RdWV1
ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8RnVuY3Rpb248dm9pZCAoKT4+PiBm
dW5jdGlvblF1ZXVlOwogICAgIHJldHVybiBmdW5jdGlvblF1ZXVlOwogfQogCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIAogICAgIGF1
dG8gc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKLSAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQog
fQogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQordm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IGYx
OWY1NTkwMTlkYjc5NzUwYjVmOGJkZWNlYjU5ZWZlZmRkYWU1ZTEuLjk0YzcwYzY2ZDZkODMyYmM5
ZjUzNGUwMjA4MWFkNjBmZmU1M2QyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQxLDcgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBU
aHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQodm9p
ZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWVjMzYwNWQ3ZTM5MjIzNTZkNzRiMWMwNDMyNjJiODg1ZjBk
ODFjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgTm9uY29weWFibGVGdW5jdGlvbjsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+Ci1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uPE91dChJ
bi4uLik+IHsKLXB1YmxpYzoKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0Owot
ICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24oc3RkOjpudWxscHRyX3QpIHsgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4K
LSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAg
ICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENh
bGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgT3V0
IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9jYWxsYWJs
ZVdyYXBwZXIpCi0gICAgICAgICAgICByZXR1cm4gbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3Rk
Ojpmb3J3YXJkPEluPihpbikuLi4pOwotICAgICAgICByZXR1cm4gT3V0KCk7Ci0gICAgfQotCi0g
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdy
YXBwZXI7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVU
eXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9
KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCi0gICAgewotICAgICAg
ICBtX2NhbGxhYmxlV3JhcHBlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+
Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQotCi0gICAgICAgIHZpcnR1YWwgT3V0IGNhbGwoSW4u
Li4pID0gMDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlPgot
ICAgIGNsYXNzIENhbGxhYmxlV3JhcHBlciA6IHB1YmxpYyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5
cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgICAgIDogbV9jYWxsYWJsZShXVEZNb3ZlKGNhbGxhYmxl
KSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbGFibGVXcmFwcGVyKGNvbnN0
IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOwotICAgICAgICBDYWxsYWJsZVdyYXBwZXImIG9w
ZXJhdG9yPShjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0ZTsKLQotICAgICAgICBPdXQg
Y2FsbChJbi4uLiBpbikgZmluYWwgeyByZXR1cm4gbV9jYWxsYWJsZShzdGQ6OmZvcndhcmQ8SW4+
KGluKS4uLik7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhbGxhYmxlVHlwZSBtX2NhbGxh
YmxlOwotICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVyQmFzZT4g
bV9jYWxsYWJsZVdyYXBwZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RG
OjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAppbmRleCA5NjYwZjE1MTRlNWYwOTgx
ODYyOTk4ZjgxNzQxNzM2MDA5NjI0YTY3Li4zYjAyNjdlOTcxYjkwZjFmM2ZlYzhhYmFiOWU4NjJk
ZGIwZjdhMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJ1bkxvb3A6
OnBlcmZvcm1Xb3JrKCkKIAogICAgIHNpemVfdCBmdW5jdGlvbnNUb0hhbmRsZSA9IDA7CiAgICAg
ewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgICAg
ICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAgICAgewogICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgICAgICAgICAgZnVuY3Rp
b25zVG9IYW5kbGUgPSBtX2Z1bmN0aW9uUXVldWUuc2l6ZSgpOwpAQCAtMTA2LDcgKzEwNiw3IEBA
IHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGZ1
bmN0aW9uc0hhbmRsZWQgPSAxOyBmdW5jdGlvbnNIYW5kbGVkIDwgZnVuY3Rpb25zVG9IYW5kbGU7
ICsrZnVuY3Rpb25zSGFuZGxlZCkgewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOworICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAg
ICAgewogICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2sp
OwogCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAg
fQogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKIHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0
aW9uUXVldWVMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBlMTU1OGI2MjU5YzI3ZjBmNzA5MDE1ZWQ1OWMx
NTJiOTg2NTUzNWQ1Li4zNjExZDdhMzljYjU5Y2MwZjQ4ZThiMTdkYmIyYmUyNjY5YTk0ZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgaXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKTsKIAotICAgIHZvaWQgZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHJ1bigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHN0b3AoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR0xJ
Ql9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBGdW5jdGlvbjx2b2lkICgp
PiYmKTsKICNlbmRpZgogCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKQEAgLTE1NSw3ICsxNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKIAogICAgIE11dGV4IG1fZnVuY3Rp
b25RdWV1ZUxvY2s7Ci0gICAgRGVxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9m
dW5jdGlvblF1ZXVlOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVl
dWU7CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogICAgIHN0YXRpYyBib29sIHJlZ2lz
dGVyUnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA2YWM4NmY2
OWY3NDQwODdkZDZhZDUzYWVkYzRkNTI0NDc5MGZiMjJjLi5iOWVhZjQ4NmZjMWY0MjM5Y2Q2NDVl
ZTJiN2QzMGIxMmM4NGUzOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0
KTsKICAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKaW5kZXggOTk1YTk1NGFhYzFkYjc0MTMzZGU5Y2ZiOTRmMTk0OGM5
NDEyNzQxNi4uZmRiZWY3M2JhZWMxNmFjNTQyY2ZhNjRlMGZiNGZjYzczM2FlODI1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApAQCAtMjgsMTAgKzI4LDEwIEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgcmVmKCk7Ci0gICAgYXV0byogZnVu
Y3Rpb25QdHIgPSBuZXcgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPihXVEZNb3ZlKGZ1bmN0
aW9uKSk7CisgICAgYXV0byogZnVuY3Rpb25QdHIgPSBuZXcgRnVuY3Rpb248dm9pZCAoKT4oV1RG
TW92ZShmdW5jdGlvbikpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgXnsK
ICAgICAgICAgKCpmdW5jdGlvblB0cikoKTsKICAgICAgICAgZGVsZXRlIGZ1bmN0aW9uUHRyOwpA
QCAtMzksMTAgKzM5LDEwIEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uKQogewogICAgIHJlZigpOwotICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0g
bmV3IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4oV1RGTW92ZShmdW5jdGlvbikpOworICAg
IGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rp
b24pKTsKICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCBkdXJhdGlvbi5jb3VudCgpKSwgbV9kaXNwYXRjaFF1ZXVlLCBeewogICAgICAgICAoKmZ1bmN0
aW9uUHRyKSgpOwogICAgICAgICBkZWxldGUgZnVuY3Rpb25QdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmggYi9Tb3VyY2UvV1RGL3d0
Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmgKaW5kZXggM2RkZmU1N2RlNmEzZGZmM2Zm
ODg1MWYwZDAyYTI4ZjAwMWUzNjY1NC4uMTYyYmFiNDJhOGI0ODhiNzdmZGM1MTk2ZmQ2NDlkNzEy
ZGNhZjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3Jr
SXRlbUVmbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0ZW1F
ZmwuaApAQCAtMzQsNyArMzQsNyBAQAogCiBjbGFzcyBXb3JrSXRlbSB7CiBwdWJsaWM6Ci0gICAg
V29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKKyAgICBXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYmIHdvcmtR
dWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgOiBtX3dvcmtRdWV1
ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCiAgICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0
aW9uKSkKICAgICB7CkBAIC00NCwxMiArNDQsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogfTsK
IAogY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBjcmVhdGUoUmVmPFdvcmtRdWV1
ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwg
c3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5TmFub1NlY29uZHMpCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBjcmVhdGUoUmVmPFdvcmtRdWV1ZT4mJiB3b3Jr
UXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjpuYW5vc2Vj
b25kcyBkZWxheU5hbm9TZWNvbmRzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGRlbGF5TmFub1Nl
Y29uZHMuY291bnQoKSA+PSAwKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUaW1l
cldvcmtJdGVtPihuZXcgVGltZXJXb3JrSXRlbShXVEZNb3ZlKHdvcmtRdWV1ZSksIFdURk1vdmUo
ZnVuY3Rpb24pLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAwMDAwMDAuMCAr
IGRlbGF5TmFub1NlY29uZHMuY291bnQoKSkpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNFeHBpcmVkKGRvdWJsZSBjdXJyZW50VGltZU5hbm9TZWNvbmRzKSBjb25zdCB7
IHJldHVybiBjdXJyZW50VGltZU5hbm9TZWNvbmRzID49IG1fZXhwaXJhdGlvblRpbWVOYW5vU2Vj
b25kczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVGltZXJXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYm
IHdvcmtRdWV1ZSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3Vi
bGUgZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKKyAgICBUaW1lcldvcmtJdGVtKFJlZjxXb3Jr
UXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3VibGUg
ZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKICAgICAgICAgOiBXb3JrSXRlbShXVEZNb3ZlKHdv
cmtRdWV1ZSksIFdURk1vdmUoZnVuY3Rpb24pKQogICAgICAgICAsIG1fZXhwaXJhdGlvblRpbWVO
YW5vU2Vjb25kcyhleHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIvU291cmNlL1dURi93dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKaW5kZXggNDBkMTkzOWZjZDRkMGVmYTU2ODllYjAyZWQ5OTg2YTlk
NzgyMDU4OS4uZGE5MTNiZjA0Y2U3MjczMTA3NjdlZjQ3OTRmZGQyYjg3OGE1ZjRlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBXb3JrUXVl
dWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yKQogICAg
IG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKTsKIH0KIAotdm9pZCBX
b3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogewogICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1cm47CkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChzdGQ6Om1h
a2VfdW5pcXVlPFdvcmtJdGVtPigqdGhpcywgV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAotdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0
aW9uLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5j
cHAKaW5kZXggMTcxYWQzMDI3MjY5MjI4NmYzMmYwOTQ5MmY0ZjI4MzdhOTdhYjZjNS4uMjVhZTZm
MTk1YzMyZmI0MTJlMDU5NThjMzViMzM4OTU5MzI3NDhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2Vu
ZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV1RG
IHsKIGNsYXNzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzayA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTY2hlZHVsZWRUYXNrPiB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y2hlZHVsZWRUYXNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+
IGNyZWF0ZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBp
bnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNr
PiBjcmVhdGUoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFsLCBi
b29sIHJlcGVhdGluZykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1
bGVkVGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOwogICAgIH0K
IAotICAgIFNjaGVkdWxlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIFNjaGVkdWxlZFRhc2so
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVh
dGluZykKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgICAgICAs
IG1fZmlyZUludGVydmFsKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSkpCiAg
ICAgICAgICwgbV9pc1JlcGVhdGluZyhyZXBlYXRpbmcpCkBAIC05MCw3ICs5MCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBt
X2Z1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CiAgICAgQ29uZGl0
aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKICAgICBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+
IG1faXNBY3RpdmUgeyB0cnVlIH07CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBSdW5Mb29wOjpz
Y2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQog
ICAgIHdha2VVcChsb2NrZXIpOwogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5h
bm9zZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwogICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3Bw
IGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAppbmRleCA3Zjgw
ZTY5Y2E1YzdjMzA2ZjkwNzdjNGY5Yzg1MDNlY2M2ZTU0NWM3Li41YzdiOWI3NjU2Njk1ZGI3NmNl
Y2JhNzQ1MzYxYzYxZWIyZWIxMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmlj
L1dvcmtRdWV1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1
ZXVlR2VuZXJpYy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3Bh
dGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgUmVmUHRyPFdvcmtRdWV1
ZT4gcHJvdGVjdCh0aGlzKTsKICAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV29ya1F1
ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpu
YW5vc2Vjb25kcyBkZWxheSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRz
IGRlbGF5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIFJlZlB0cjxXb3Jr
UXVldWU+IHByb3RlY3QodGhpcyk7CiAgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5
LCBbcHJvdGVjdCwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGli
L1J1bkxvb3BHTGliLmNwcAppbmRleCA4OWI3ZjcwNzBjOWQ0MjhlN2I4ZmI4MTdhN2Y5ZTdiM2Fk
ZGY5ZjE4Li45MjdjZTMyNTRmOGI1NjI3OGJhNmI3ZmYwMjFjMGRmMGFhNWYzMjE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUnVuTG9v
cDo6d2FrZVVwKCkKIGNsYXNzIERpc3BhdGNoQWZ0ZXJDb250ZXh0IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEaXNwYXRjaEFmdGVyQ29udGV4dChOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgRGlzcGF0Y2hBZnRlckNvbnRl
eHQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdU
Rk1vdmUoZnVuY3Rpb24pKQogICAgIHsKICAgICB9CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4g
bV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogfTsKIAotdm9p
ZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlv
biwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBSdW5Mb29w
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBHUmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9
IGFkb3B0R1JlZihnX3RpbWVvdXRfc291cmNlX25ldyhzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2Fz
dDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihkdXJhdGlvbikuY291bnQoKSkpOwogICAgIGdf
c291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hB
ZnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAppbmRleCA3MDNlZjA5ZjIxNjk2
MDg2OTMwYzQxNDQzOGRiM2ExYjI4NDY5ZDUwLi4zZWY2MWZiNWY0ZDYzMDU4MmQwMzMwNDRlNTFk
NzY3Mjk5ZjU3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAgICA6OkRlbGV0
ZVRpbWVyUXVldWVFeChtX3RpbWVyUXVldWUsIDApOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgIHJlZigpOwpAQCAtMTE4
LDcgKzExOCw3IEBAIHN0cnVjdCBUaW1lckNvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VGltZXJDb250ZXh0PiB7CiAgICAgc3RhdGljIFJlZlB0cjxUaW1lckNvbnRleHQ+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lckNvbnRleHQpOyB9CiAKICAgICBXb3Jr
UXVldWUqIHF1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247
CisgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAgICAgTXV0ZXggdGltZXJNdXRleDsK
ICAgICBIQU5ETEUgdGltZXI7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdvcmtRdWV1ZTo6
dGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCiAg
ICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25k
cyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
bV90aW1lclF1ZXVlKTsKICAgICByZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmNwcAppbmRleCAxYjc3NGJmMzgzMGQ3OWQ1NmI1NTU2MDI2YzBiMDM1NTQyNDY4MjZiLi43N2Ex
YjBmOTdjZGJmNjJiOTMwNDcxZWI4NjI2Y2E5MGQ5MDEwY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJvb2wgaGFzVW5h
c3NvY2lhdGVkVHJhbnNjZWl2ZXJzKGNvbnN0IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0cmFuc2Nl
aXZlcnMKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1
blRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCiB7
CiAgICAgaWYgKG1fZHRsc0ZpbmdlcnByaW50LmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIE9ubHkg
b25lIHRhc2sgbmVlZHMgdG8gYmUgZGVmZXJyZWQgc2luY2UgaXQgd2lsbCBob2xkIG9mZiBhbnkg
b3RoZXJzIHVudGlsIGNvbXBsZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDAxN2Y5ZDQzYmYzNDU4NDljZjkyNWUzMDc4ODlhNjM2N2JmNWNmNDcuLjFmY2E3ZjNjNDA5
YjcwYjVlODdjMzcxMTBhNjNjNzg0OTRhMjI5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBl
ZXJDb25uZWN0aW9uQmFja2VuZC5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWdvdGlhdGlvbk5l
ZWRlZCA9IGZhbHNlOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgcnVuVGFzayhGdW5jdGlvbjx2b2lkICgp
PiYmKTsKICAgICB2b2lkIHN0YXJ0UnVubmluZ1Rhc2tzKCk7CiAKICAgICB2b2lkIGNyZWF0ZU9m
ZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFF
bmRwb2ludD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9pbml0
aWFsRGVmZXJyZWRUYXNrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNEUFByb2Nlc3Nvcj4gbV9z
ZHBQcm9jZXNzb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjZmU4ZjE1ZWU0ODQ3NzhkMjRhMDllODI0
OTgxODViMDA3NjcxMzJlLi44OGE3ZjcxMTM2YzBkMzYxYmY3MjNlOTg3OGJhYmYzYWVlZjYwYWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQXVkaW9JT0NhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksOSArNTksOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRnVuY3Rpb248dm9pZCAoKT4m
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQogCiAgICAg
dmlydHVhbCBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBpc1Bs
YXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApp
bmRleCBhYzEzNzFlMmE1YTU3MzMzNmI0NjhjZTVhN2MxZjdmNTk3MjFkMmM5Li43Y2VjY2JhMzk1
MDUxMTg0YmE1ZDg5ODUyNGVlNGNkMTQwZmE2YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OnN0YXJ0UmVuZGVyaW5nKCkKICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKIH0K
IAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZShOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6cmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbgogICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQo
KSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3RpbwogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgdW5pbml0aWFsaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAwOWM5YjM4YjdmOTIyYjA1MzIxNjc5
ZTM1YjNjNjViZjE3NjE0ZjRmLi4zNWEwZGYxNmQzNDQ3ZWVhZjY5ZGE5NGI1N2ExOWZjNTJlYzFm
MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGlj
OgogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdm9pZCBlbmFibGVJbnB1dChjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRSZW5kZXJp
bmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc3VtZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2UoTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lkICgpPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKICAgICB1
bnNpZ25lZCBsb25nIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNQbGF5aW5nKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDg2OWI2ZWFhODA0Zjc3NDZhMDEx
MGU3NTI3ZGMxZDhhZDIyNjU2NmYuLmJiZjk2MzdlYzc0NWQ3NWZkYjAwNDJiMTFkNzFhNWU1N2Y4
NWIwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtMjc5OCw3ICsyNzk4LDcgQEAgVmVjdG9yPFN0cmluZz4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNU
b0Rpc2tGb3JJbmRleGVkREIoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1
ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBJREJW
YWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA0YzY3MGU2ZGMxMTdiM2Uw
NWVmOTliYmI1NTFiMjgxNTZkMzdhNmZiLi41Mzg4YmIyNjc4YmRiNjA5NjQwMzA3ZjgwZGI3OGQy
YTFhZmQzNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJM
c0lzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4
ZWREQihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQlZhbHVlJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihGdW5j
dGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBJ
REJWYWx1ZSB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpOwogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcAppbmRleCA3YWEyMjY5ZjRjNWZlMTE3
MzA4NjNjZjIxMzJmZmZkODI2OTIyZTY0Li42NmY1OTBhNDk3NWFlOTY4M2M2MWExNjE1ZjI5YmQx
ZGQ3NGE3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1BY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2so
TWljcm90YXNrUXVldWUmIHF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQorQWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2s6OkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1pY3JvdGFz
a1F1ZXVlJiBxdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgOiBBY3RpdmVET01DYWxsYmFjaygm
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1fcXVldWUocXVldWUpCiAgICAgLCBtX3Rh
c2soV1RGTW92ZSh0YXNrKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01DYWxsYmFja01pY3JvdGFzay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrLmgKaW5kZXggZTExYzRkMDdhNGFhYTU0YjlkZmIzYjMxZDQxM2MxOTI1MDA4
YmNiYS4uOGE3ZjdmNjM3MDgzM2ViMDc2MmYyY2NlZTI1NmMxMWUxNzZmZWU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKQEAgLTI3LDE0
ICsyNywxNCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKICNpbmNsdWRlICJN
aWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBY3Rp
dmVET01DYWxsYmFja01pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2ssIHB1YmxpYyBB
Y3RpdmVET01DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWljcm90YXNr
UXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
KCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1p
Y3JvdGFza1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2soKTsKIAogICAgIFJlc3VsdCBydW4oKSBvdmVycmlkZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBiZSBhY2Nlc3NlZCB2aWEgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IHdoaWNoIHNob3VsZCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZWxldmVudAogICAgIC8vIHF1
ZXVlLgogICAgIE1pY3JvdGFza1F1ZXVlJiBtX3F1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCgpPiBtX3Rhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCBkYTU4ZTAwOTJmODU2MDA3MzZkMTIxNzVjNTY0MThlNTk2Nzc0OGMx
Li5jYjJlNmU4ZDQwZmNlYzIyNDkwMzE4ZmFmMWFjMmI5ZGQ4NTMwODY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMzLDggKzMzLDggQEAKICNp
bmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29sZVR5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFs
dWU7CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBl
bnVtIENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jh
c2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29u
dmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+
Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKFQgdGFzaykKICAgICAgICAgICAgIDogbV90
YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYgdGFzaykKKyAgICAgICAgVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYg
dGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9KQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51
cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252
ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+
CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFzaykKICAgICAgICAgICAgIDogbV90
YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0cnVlKQpA
QCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBUYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBt
X3Rhc2s7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA0YWU2YzgwY2Uz
NGU3OTRlNWVjNjJkNzgyYzU4MTI4ZjE3NmQyZWE0Li45YTkzYTFiYjVmYTMxNTU1Y2JhNjI2Mzky
NjhiYmE3MTIwZmY0Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjQsMTIgKzY0LDEyIEBAIGlubGluZSBBc3luY0ZpbGVTdHJlYW06OkludGVy
bmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKICNlbmRpZgogfQogCi1z
dGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+PiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQgKCk+Pj4gcXVldWU7CiAKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7CiAgICAgc3RkOjpjYWxsX29u
Y2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZv
aWQgY2FsbE9uRmlsZVRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3lu
Y0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTE0LDcgKzExNCw3IEBA
IEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiAgICAgfSk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKE5vbmNvcHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJhdGlvbikKK3Zv
aWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9pZChG
aWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7CiAgICAgYXV0
byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwogICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZpbnRl
cm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggMDg4YmIzNzc0NmY0NzU5ODJkNDcwODRkZjUw
NjFmMTk3NmM2OTJlMS4uMzVlODVhN2ExNWRlMzM5NzdjNzdlNzQ2YWJhZDMwOGExOWNlYmMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC0zNCw3ICszNCw3
IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBwZXJmb3JtKE5vbmNvcHlh
YmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0
cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0oRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lk
KEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRl
cm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYTMxMWRiMGVkYzRlNmIxZDVkNTUyNmRjZThiZTZm
NWFhMDliYmEwMS4uNmVkNjhkZjAxMzlhOWIzNGQ5YjUxOWM3ZjA3MzI4OTllZTQ3YTVjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzE0MSw3ICszMTQxLDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgIHVwZGF0ZUVt
YmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9z
dExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQor
dm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKICAgICBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6
Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSgpCiAgICAgaWYgKCFtX3Bvc3RMYXlvdXRDYWxsYmFj
a1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCgpPj4gcXVldWUgPSBXVEZNb3ZlKG1fcG9zdExheW91dENhbGxiYWNrUXVl
dWUpOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBxdWV1ZSA9IFdURk1vdmUobV9wb3N0
TGF5b3V0Q2FsbGJhY2tRdWV1ZSk7CiAgICAgZm9yIChhdXRvJiB0YXNrIDogcXVldWUpCiAgICAg
ICAgIHRhc2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGY0NDQ5ZTUzNDhlNTg3
MzIyMjA5YmNhNjY2ZDQxYjZjMjgzMGRlMjkuLjg2MTEzODE4NzZjMzQ2N2IzMDdlYTQ4NWE4MzVm
ZDlhOTIyODU1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzUsOSArMzUsOSBAQAog
I2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKFJl
bmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwotICAgIHZvaWQg
cXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soRnVuY3Rpb248dm9pZCgpPiYmKTsKICAg
ICBib29sIGxheW91dFBlbmRpbmcoKSBjb25zdDsKICAgICBib29sIGlzSW5MYXlvdXQoKSBjb25z
dCB7IHJldHVybiBtX2xheW91dFBoYXNlICE9IE91dHNpZGVMYXlvdXQ7IH0KICAgICBib29sIGlz
SW5SZW5kZXJUcmVlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSA9PSBJblJl
bmRlclRyZWVMYXlvdXQ7IH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBwcml2YXRlOgogICAgIFNjcm9s
bFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKIAogICAgIEludFJlY3Qq
IG1fY2FjaGVkV2luZG93Q2xpcFJlY3QgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKKyAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKIH07CiAKIGlu
bGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eUNoYXJhY3RlckNv
dW50KHVuc2lnbmVkIGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggNTc2MDc4M2RiOGNlMDAzNWM4ZWU0MDc4YTU0NWY3
MDVmZjYxMmRmNS4uNzMwYzBhNmJkOTNmNDU3OGQxZWRiZjlhY2UxY2Q4NjU2NmU2Yzk4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQo
KQogICAgIHJldHVybiB0aHJlYWRJZGVudGlmaWVyICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJl
YWRJZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBTY3JvbGxpbmdUaHJlYWQ6
OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0byYgc2Ny
b2xsaW5nVGhyZWFkID0gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICBzY3JvbGxp
bmdUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBT
Y3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKICAgICBzY3JvbGxpbmdUaHJlYWQud2FrZVVwUnVuTG9vcCgpOwogfQogCi12b2lk
IFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIo
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBkaXNwYXRjaChbZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNT
RVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+PiBmdW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5j
dGlvbnM7CiAgICAgCiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayht
X2Z1bmN0aW9uc011dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVGhyZWFkLmgKaW5kZXggMDM3Zjk1YjkwYjYzYTlkZWIxMzFjMzgxYmQ5ZDMyNDk5N2I1
NDFlZC4uMjhkNTc1NWQ3ZGEyZDA5MzlhNDE5NTMyZmRjYTU0YzBjNThlZDI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTMxLDkg
KzMxLDkgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OCwxMSArNDgsMTEgQEAgY2xhc3Mg
U2Nyb2xsaW5nVGhyZWFkIHsKIAogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQ3VycmVudFRo
cmVhZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICAvLyBXaWxsIGRpc3BhdGNoIHRo
ZSBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQgb25jZSBhbGwgcGVuZGluZyBmdW5j
dGlvbnMKICAgICAvLyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBoYXZlIGZpbmlzaGVkIGV4ZWN1
dGluZy4gVXNlZCBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihG
dW5jdGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBMb2Nr
IG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsKIAogICAgIExvY2sgbV9mdW5jdGlvbnNNdXRleDsK
LSAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlvbnM7Cisg
ICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uczsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxvb3AgaGVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKaW5kZXgg
MGM2YzI0M2I4ZTA4Y2ExMmI4OTY2ZDlmYWFjY2RlNDIyMmY5MDEwNS4uMWFhN2UxYjg3NjNmZjFi
NDdkZmI4ZTIxMzk0MDc2NDVlYjc1NWViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgVGFza0Rpc3BhdGNoZXI8VGlt
ZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CiAKLXZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+
Ojpwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
VGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCiB7CiAgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKICAg
ICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFr
UHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCmluZGV4
IDRkODVjOWEwYjIxODQ5OGM2OTUxNDYxOTEwNmQzOGQwNzk5OTFhYmMuLmY1MGEzNjEzOWYyZjc2
ZTA0NTY3N2I2OTg1NWMwNWY1NWU0MmM2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
ZW5lcmljVGFza1F1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4m
JiBmKQorICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGYpCiAgICAgewogICAg
ICAgICBtX2NvbnRleHQucG9zdFRhc2soV1RGTW92ZShmKSk7CiAgICAgfQpAQCAtNTMsNyArNTMs
NyBAQCB0ZW1wbGF0ZTw+CiBjbGFzcyBUYXNrRGlzcGF0Y2hlcjxUaW1lcj4gewogcHVibGljOgog
ICAgIFRhc2tEaXNwYXRjaGVyKCk7Ci0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKQEAgLTYzLDcgKzYz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoT25lVGFzaygpOwogCiAgICAgV2Vha1B0
ckZhY3Rvcnk8VGFza0Rpc3BhdGNoZXI+IG1fd2Vha1B0ckZhY3Rvcnk7Ci0gICAgRGVxdWU8Tm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBEZXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5cGVkZWYg
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+IFRhc2tGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1
bmN0aW9uPHZvaWQoKT4gVGFza0Z1bmN0aW9uOwogCiAgICAgdm9pZCBlbnF1ZXVlVGFzayhUYXNr
RnVuY3Rpb24mJiB0YXNrKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggODY5
YTY4ZTk4ODZiMmQwYmY1OThiZTMwYTkyZGRmNjQ1ZGU5Mzc2OC4uMjBjOTQ2MDY1ODkxZjE1YTAw
NTMyNTZmMDg1NTE2Yzk2MTUzMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTMw
LDggKzMwLDggQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygpOwogICAg
IHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxl
RGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgZW51bSBEaXNwbGF5TW9k
ZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggODRjN2Q2
MjMyNGY2NDcxMWUxNjVlNTI0M2RmODhmMjFhNTBlZDdlOS4uYWJmNDM3ZDM3MTY1ZmZlZTM2ZWIw
N2QyY2FjNGZjZGI0ZDg1ZmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNjI0
LDcgKzYyNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
ZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTCiAgICAgbV9wbGF5ZXItPm5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBj
cmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuY3BwCmluZGV4IGQ0OWQxNTEyMTM5NjM4ODY0OWRlMTU3YzMwNDcxNzQ5M2ViZmNjYmMu
LjE4NzJjZDJjOGJjMzI5NTU4MzI2Y2ZmZjFkOTZmYTdlZDc1YTgyMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2
YXRlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFj
a0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKICAgICB9KTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hlZHVsZURl
ZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChm
dW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRy
KCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXgg
OTIzMDRlZmJkNjM0OWFjZjE5Njk3NTRmZjgyOGEwNmZhNDRjMGQzZi4uYWJmY2FiNmMwMWViOTFh
YWVjMTU4M2YxZDI5OGM1Mjc3OGE2ZDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTM5LDkgKzM5
LDkgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFj
dGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwog
Ci0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVN0cmVhbVByaXZhdGU+IG1fd2Vha1B0ckZh
Y3Rvcnk7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCmluZGV4IGY0NzRhZWI5YjdjNzNjYmM0YzgzNGMyZjFlYzkyYjU4OWMxNDVj
NjQuLjc0ZDdmZmMxZjI0ZjA4MTkzMjQwZmNlMDYzMTc4NWJkNjQ1ZjZlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiR2VuZXJpY1Rh
c2tRdWV1ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0
VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsKICAg
ICB2b2lkIHNldEF1ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9EYXRhT3V0
cHV0Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0
dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDc2YWZkOWJiZTVhMDdlOWE3NThhYTQ1YjhlN2M3
ZTY1MWNiY2IzM2IuLmMyZDkyOGRlYjNlNmI1MDg5ODgyNTZiYzUzMzc1NzljZDlhZmM3ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlh
Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEFW
TWVkaWFDYXB0dXJlU291cmNlOjpzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVy
ZUF1ZGlvRGF0YU91dHB1dAogICAgIFthdWRpb091dHB1dCBzZXRTYW1wbGVCdWZmZXJEZWxlZ2F0
ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYUF1ZGlvQ2FwdHVyZVNlcmlhbFF1ZXVl
KCldOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFz
ayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIEFWTWVkaWFD
YXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbild
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmlu
ZGV4IDI3OTU3OWNmYmViYWFkMTVhZmIwNjM4ZTA5ZTJmNjRjMGE1N2ExZjYuLmUyMjVmZWM3NTQ5
MDYwZWQxZDRjOTNlMTE2MjBkOWU5ZDM2NDJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0
IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVh
bCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
Y3BwCmluZGV4IDY4MDYwMzU0ZTdlNTBlYmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjguLmE2N2Zh
Y2Y3NWUwZmVjMjFkODRjMTZjYWY0YjY0ODI4YjZjMjBhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMjUyLDcg
KzI1Miw3IEBAIHN0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcgewogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnM7
CiB9OwogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8Qmxv
YkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRpbmc7CiAgICAgZm9yIChhdXRvJiB1cmwgOiBi
bG9iVVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaAppbmRleCA0NThjMDY1MDNhN2U2M2U5MjI2MTg4MTA4MWUzNDkwMmE0Yzdh
YTU5Li4yMDM5N2U5ZWM5ZjQ0MTBmMTA4NTdjYTRiMjliNjUxMWViZTZjMjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggNzBhMWZhZWM1MmRmYTgyOGJl
YWU1OWNiYjNhZGQwNDU3MjNhNjZkNS4uMGMxOWM2MjBmMTRhNTQyMGNkOTU2YmNiYWUyNWU3ZjRk
NGM3YTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApA
QCAtNTMyLDEzICs1MzIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVy
OjpyZXNvbHZlKENoYW5nZSBjaGFuZ2UpCiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRhdGUpOwog
fQogCi1zdGF0aWMgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBwb3N0UmVz
b2x1dGlvbkNhbGxiYWNrUXVldWUoKQorc3RhdGljIFZlY3RvcjxGdW5jdGlvbjx2b2lkICgpPj4m
IHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tRdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gdmVjdG9yOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+PiB2ZWN0b3I7CiAg
ICAgcmV0dXJuIHZlY3RvcjsKIH0KIAotdm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2so
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBxdWV1ZVBvc3RS
ZXNvbHV0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBw
b3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggM2NlNzA0NjI2
NzQ1YTkzNmViNGNkYjViOThiYTc0MDc2MDhjMTUxNi4uZjc0NjZkMTQxNjg4ZWI0NjYwOTI1N2Vl
MzNjYjcxYzdkY2U0ZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5oCkBAIC0zMiw5ICszMiw4IEBACiAjaW5jbHVkZSAiU3R5bGVDaGFuZ2UuaCIKICNpbmNsdWRl
ICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgiCi0jaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBtX3VwZGF0ZTsKIH07
CiAKLXZvaWQgcXVldWVQb3N0UmVzb2x1dGlvbkNhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJik7Cit2b2lkIHF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIGJvb2wgcG9zdFJlc29sdXRpb25DYWxsYmFja3NBcmVTdXNwZW5kZWQoKTsK
IAogYm9vbCBpc1BsYWNlaG9sZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggZTFhNGExNWRkZDdm
MzQ3MTYxZTQ0NDMzNzFmYzQ3YjcyMjY4Zjk5NC4uZWRjOWViMzNjNTAzNTUyMGFjNTQyZDM1ZDBh
NWJjYTIyZjljNzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFu
YWdlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZnVs
bERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIKICAgICBy
ZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVy
ICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3Bh
dGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU3RvcmFn
ZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAppbmRleCA3NWE0ODZiNjIwYzJi
YjMxMmFlOGNkZjlkNTA2NGI0MDI2YmExZWM1Li44OWU2YjQzM2E1MWU2M2RlZTM5ZDc4OWQxZDhl
NWJhNWIzYjJkNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdl
ci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VTeW5jTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgflN0b3JhZ2VTeW5jTWFuYWdl
cigpOwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYp
OworICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3Jh
Z2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmlu
ZGV4IDI5NjZlMDQwNmUxNzA0ZjIyMGM1MWMyNmRlNzhkMDgyMTQyNmM2MDkuLjBiNmVkMDc2ZmZm
NTVhMTFkOTE2YmRlNTk5ZGNkNWJjMDFlOGUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRo
cmVhZEVudHJ5UG9pbnQoKQogICAgIH0KIH0KIAotdm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRj
aChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFN0b3JhZ2VU
aHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90
aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24p
KSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTkwLDcgKzkwLDcg
QEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWRJRCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAgICAgIHBl
cmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24o
bV90aHJlYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRleCA0NzUy
ZDViMTllMWIwNmNhYTllN2VlZDg4NDRiNDlkNWYzZmNiZmEyLi4zZjFiODg0NWI2ZjNmZDdjZmU4
NzE4MDJjZWE0N2QxMGNiMTQwODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmgKQEAgLTI2LDEwICsyNiw5IEBACiAjaWZuZGVmIFN0b3JhZ2VUaHJlYWRfaAogI2RlZmluZSBT
dG9yYWdlVGhyZWFkX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCi0g
ICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZv
aWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIApAQCAtNTksNyArNTgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgpOwogCiAgICAgVGhyZWFkSWRl
bnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxGdW5jdGlvbjx2b2lkICgpPj4g
bV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCmluZGV4IGQzNGQ4NDIwNTk1ZGQ1OWViYWUyZGY3YjY4MTYwMWNiZDA3MTZiYTAuLjhk
Y2YxYmUzY2NkZmQ1MDhjMWJmNGQ5ZWE2YjIxNzVmYTE2ZDM5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0
cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uCiAg
ICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxv
YlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKaW5kZXggYTIwMTY5YTkxYmJlZWNkNDZkY2I4NzZiZDA5YjJmODQ3MGRmZGQ4OS4uNzQwNmEz
Y2I1ZTY3N2UyZjNmZmJhYTc0YjgzMGY2NmQyZmE0YWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKQEAgLTI3LDEwICsyNyw5IEBACiAjZGVmaW5lIE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpAQCAtNTUs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOwogICAgIHVpbnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NE
aWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IGRiYTJjODhkOTFh
MmNkYjQwMGEwNDg2MDJjMmEwY2QwOTNlZGFlMjUuLmQ1NDZkOTE0ZmZlMzUyYmMxNDcxNzk2Mzhl
NzNhMjIyZGI3NzM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMsOSArNjMs
OSBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gewogICAg
IFJlamVjdFByb3RlY3Rpb25TcGFjZQogfTsKICAgICAKLXR5cGVkZWYgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyOwotdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKLXR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7Cit0
eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZChXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogCiBjbGFzcyBOZXR3
b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGI0Mjg4ZjVlMDdjNDNmMTZhYWQyNDI5
ZjU2NzI0NDRiZjczYWRlMmYuLmI4NzE4MTBhOTdkYjlkMGY3NWRhMDQ4MGM1OTA3Y2MxOWU1NTY1
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFNlc3Npb25UcmFj
a2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRl
bnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHN0
YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNz
Rm9yQmxvYnModWludDY0X3QKICAgICAgICAgaGFuZGxlcigpOwogfQogCi1zdGF0aWMgdm9pZCBm
ZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGF0
aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248dm9pZCAo
VmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigp
LmlzRW5hYmxlZCgpKSB7CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNr
Q2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZl
dGMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNr
QWdncmVnYXRvcihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKEZ1bmN0
aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAg
IDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAg
ICAgewogICAgICAgICB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGEKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIEZ1
bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAg
V2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKICAgICB9OwogCkBAIC00MTIsNyArNDEyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1z
dGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAoTmV0
d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggY2I4MDA5ZWQ0NzY0NDNlMGI3
NGNiYTFhOTJjMGQ0ZDJmZWQ0OWMwZC4uZjIxODEyNzM3M2U0YzdkZTFhYWE1OTY0MjBhYzY5ODY3
N2ExZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAot
ICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiBwcml2YXRlOgog
ICAgIE5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwog
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9z
YW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29t
cGxldGlvbkhhbmRsZXJzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBhOTMwYTcwNjBjZDAwNGNlYzQ0YzEwMjY4ZjQ5
YmMxZjY5YmQzMDRiLi4yZjQ4MTM0YTY0ZTgwOGE0ZjdjNzM5NmNjMzc5YTgzYmFkMzNkM2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogICAg
IH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CkBA
IC00ODAsNyArNDgwLDcgQEAgdm9pZCBDYWNoZTo6cmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZW1vdmUobWFrZUNhY2hlS2V5KHJlcXVlc3QpKTsK
IH0KIAotdm9pZCBDYWNoZTo6dHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25z
dCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OnRyYXZl
cnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5k
bGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggNThmMGM2ZDYzN2U1
ZDNmMGJlNjJlMmY3ZDRkNGMwNGZlMDhkNjMyOC4uMzlkNzYwODk3MWM1OTkxZjdmYWNkZTRjZDE0
ZDRiMTUwMzgxMzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDYsNyArMTA2LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ29tcGxldGlvbiBoYW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sg
c3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBk
YXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
LCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRp
bmdSZXNwb25zZSk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IEVudHJ5JiBlbnRyeTsKICAgICAgICAgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYgcmVjb3Jk
SW5mbzsKICAgICB9OwotICAgIHZvaWQgdHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsKKyAgICB2b2lkIHRyYXZlcnNlKEZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IEtleSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDhjOTFjOWVjNjc1ODgy
MmM2YjMwZjVmYjQwYjgyYzFjNjQ4ZDRlZjEuLjg0Yjk0OTc5NmY0N2UxNWIzY2JmZTRlMjkwMzY4
NzcxMmQxZDc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIFJlZjxJT0NoYW5uZWw+IElPQ2hhbm5lbDo6b3Blbihjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUgdHlwZSkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
T0NoYW5uZWwoZmlsZVBhdGgsIHR5cGUpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJ1blRh
c2tJblF1ZXVlKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrLCBXb3JrUXVldWUq
IHF1ZXVlKQorc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVlKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKIHsKICAgICBpZiAocXVldWUpIHsKICAgICAg
ICAgcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4
IDgzYmE2Yzc1YmFmOGEyZjJmMDBhZjdkMDJmOGY2YWU3YWNjMTViM2YuLjE0NWY4OTY3OWMxNGY0
YWFlZTRmNDFjODIyNTY2NTY0MjExMjdjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTM0LDgg
KzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb29t
RmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxib29sIChzdGQ6OnVuaXF1ZV9w
dHI8UmVjb3JkPik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgdm9pZCByZXRyaWV2
ZShjb25zdCBLZXkmLCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYmKTsKIAotICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBEYXRh
JiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CisgICAgdHlwZWRlZiBGdW5jdGlvbjx2
b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CiAgICAgdm9p
ZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYmKTsKIAogICAgIHZvaWQg
cmVtb3ZlKGNvbnN0IEtleSYpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFNo
YXJlQ291bnQgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRyYXZlcnNl
RmxhZ3M7Ci0gICAgdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlY29y
ZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJhdmVyc2VIYW5kbGVyOworICAgIHR5cGVkZWYgRnVu
Y3Rpb248dm9pZCAoY29uc3QgUmVjb3JkKiwgY29uc3QgUmVjb3JkSW5mbyYpPiBUcmF2ZXJzZUhh
bmRsZXI7CiAgICAgLy8gTnVsbCByZWNvcmQgc2lnbmFscyBlbmQuCiAgICAgdm9pZCB0cmF2ZXJz
ZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNlRmxhZ3MsIFRyYXZlcnNlSGFuZGxlciYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKaW5kZXggOTBmOTQwYTc1NzJjNDEwYmMyOWYwMjkyZDg1YzA0N2VkYTVm
OWMxMC4uZWQwNDBlNWVkZWI1Nzk1YWRkNzVlYWM5ZmU2N2U2ZmNlZDc3NzI1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQ
cm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9
CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5k
ZXggNThkM2FiZGVlYTVlMjNhNmYyMmY2NmE5OTAyZmE3ZGQxNWI2ZDc3My4uODM1M2ZhNzgyOWU0
ZWVmNTkxNGFhMjhhN2JhY2YyZTc0OWRiZmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUo
Y29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDNjODNhNDczMzgzYWE1ZDky
ZjY3N2I0ODU2OThkOWQ5NDc5Zjc3YjIuLjhmNzdhYmI2YmVmMDY5MjQzY2VlZDMxNTFlNjQzYzIz
NzE0YjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04NSw3ICs4NSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhz
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0X3Qgd3JpdGVCbG9i
VG9GaWxlSWRlbnRpZmllcjsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrd3Jp
dGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA3N2I1
NGRhNGJkMTAyZTlkNTBkNDM5MzUxMDg5YTI3NWM0OTM5YTRiLi5lZjhlMGZiYWU0OWY3MmEwNzll
Y2Y0OGZlYTlkZTQxYTJmMWFjM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwog
Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgLy8g
VGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vz
cy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPj4gbV93cml0
ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281867</attachid>
            <date>2016-06-22 14:05:57 -0700</date>
            <delta_ts>2016-06-24 10:09:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160622140552.patch</filename>
            <type>text/plain</type>
            <size>86358</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmJhOTcxYzIzOTdmNWZlZGZkZTU0
ZjA4ZDBjYTdlMzFjNGU5MjcuLjg4OGJhMDgzMWFkODI3Y2RjMmI1NGJmZDA3OTUwNjAwZGY2ZGFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJlYWRU
YXNrKToKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYv
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpmdW5j
dGlvblF1ZXVlKToKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWlu
VGhyZWFkLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgorICAgICAgICAo
V29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6
CisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4
dCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0
Zi93aW4vV29ya0l0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6V29ya0l0
ZW1XaW4pOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1XaW4uaDoKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmZ1bmN0aW9uKToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorCiAy
MDE2LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAK
ICAgICAgICAgQWRkIHN5c3RlbSB0cmFjaW5nIHBvaW50cyBmb3IgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgd29ya2Zsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDViOGU0YzA1OWZlYTdhODUwZWYyZmJlOWZj
MTczMGVhOGYzNmNhLi5iN2VhNjZkZjI3YmFhOTkzNDViNGYwZTkzM2M4YjAyMWQ0NDA1ZDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlv
biB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1blRh
c2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAq
IGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybSk6CisgICAgICAgICogZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNj
cm9sbGluZ1RocmVhZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hl
cjo6cG9zdFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OnF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKwogMjAxNi0wNi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2VwdGlvbiBpcyBub3QgdGhyb3duIHdoZW4gc2hp
cHBpbmcgbWV0aG9kIGlzIGFuIGludmFsaWQgYW1vdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUxYjhlODk2M2Ey
YWMyODA5M2Y1NDNjZWVmYjYzODZhY2NmNzFlNDUuLmM2MTZkYTA1NGVjNTI5MGQ4ZTZmMjQ5MzI4
YTc1MWUzNjBmZjlmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMjEgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9u
Y29weWFibGVGdW5jdGlvbiB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE2LTA2LTIwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ3Y2Y3
ODhjMTcwYzQ2YmM0ZDczZDQzMzVjYTgyNmE2ZjAzNzk1Ni4uNzM5MDMyOTA0M2JhNmRjMmQ2NzNm
NTliNGQ3Y2M1MDBmNDhmN2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA2
LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVu
YW1lIE5vbmNvcHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cnVuVGFza0luUXVldWUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNi0w
Ni0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBsb2dn
aW5nIHJlbGF0ZWQgdG8gcHJvY2VzcyBhc3NlcnRpb25zIHRvIGhlbHAgZGVidWcgcHJvY2VzcyBz
dXNwZW5zaW9uIGlzc3VlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmNlM2JhZTc5NTMxNzQ2NWNmOWNkZmE5YTIyODlmZjYwMDZjNjQwNi4uNDM0ZjY2ZTMz
ZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNyArMTE5LDcgQEAKIAkJN0UyOUMzM0UxNUZGRDc5
QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1
bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0
MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIw
OTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9
OwotCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCAqLzsgfTsKKwkJODNGMkJBREYx
Q0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24u
aCAqLzsgfTsKIAkJODNGQkE5MzIxOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5
NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovOyB9OwogCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JG
MjIgLyogUmVmQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgfTsK
IAkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovOyB9OwpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAJ
CTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpjUnVudGltZUV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNl
NjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5
YWJsZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmNvcHlh
YmxlRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlE
RjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZUNhc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5
MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU3RyaW5nVmlld09iakMubW07IHBhdGggPSBtYWMv
U3RyaW5nVmlld09iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDMsNiAr
ODQzLDcgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAog
CQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJODNGMkJB
REUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5
ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMx
ODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUx
QTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKQEAgLTg4OSw3ICs4OTAsNiBAQAogCQkJCTFB
M0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4
NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVC
MDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKLQkJCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5
QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQx
MjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0NzJENjE1MUE4MjVCMDA0MTIz
RkYgLyogTnVtYmVyT2ZDb3Jlcy5oICovLAogCQkJCTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAv
KiBPYmpjUnVudGltZUV4dHJhcy5oICovLApAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIAkJCQlBOEE0
NzNEOTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzYxQzAwMEQ0MDAwODFENjYzIC8qIEluZGV4U3Bh
cnNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyog
SW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDREMDA1MjlBOUIg
LyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKaW5k
ZXggYjRlOTZjNGM1OWI3ZDBlNzZkNDFmODUxYTAwY2VlNWNhNzQ4YzhlNC4uMGE2NmVjMTdmN2Fk
NGE5NTk4NDNjZWNjNTQ3ZjljY2IwMzAxZTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDcm9zc1RocmVhZFRhc2sgewog
cHVibGljOgogICAgIENyb3NzVGhyZWFkVGFzaygpID0gZGVmYXVsdDsKIAotICAgIENyb3NzVGhy
ZWFkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFza0Z1bmN0aW9uKQorICAg
IENyb3NzVGhyZWFkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlvbikKICAgICAg
ICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlvbikpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV90YXNrRnVuY3Rpb24pOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tG
dW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM5NTg1NjIzOGU0N2M1
ZDhiMzhkODYxYzBiZjcxZGJlZDhiZGNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZ1bmN0aW9uOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4KK2NsYXNzIEZ1bmN0aW9uPE91
dChJbi4uLik+IHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbigpID0gZGVmYXVsdDsKKyAgICBGdW5j
dGlvbihzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJs
ZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVm
ZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIEZ1bmN0aW9uKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUp
KSkKKyAgICB7CisgICAgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAobV9jYWxsYWJsZVdyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4g
bV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOworICAgICAg
ICByZXR1cm4gT3V0KCk7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgRnVu
Y3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAgICB7CisgICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2Fs
bGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7Cisg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5DYWxsYWJsZVdyYXBwZXJCYXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCBPdXQgY2Fs
bChJbi4uLikgPSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5
cGU+CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIDogcHVibGljIENhbGxhYmxlV3JhcHBlckJh
c2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICAgICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2Fs
bGFibGUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsYWJsZVdyYXBwZXIo
Y29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisgICAgICAgIENhbGxhYmxlV3JhcHBl
ciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOworCisgICAgICAg
IE91dCBjYWxsKEluLi4uIGluKSBmaW5hbCB7IHJldHVybiBtX2NhbGxhYmxlKHN0ZDo6Zm9yd2Fy
ZDxJbj4oaW4pLi4uKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FsbGFibGVUeXBlIG1f
Y2FsbGFibGU7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYWJsZVdyYXBwZXJC
YXNlPiBtX2NhbGxhYmxlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAppbmRleCBiNTJl
ZWNmMWViZjI2OWE0MDYwOGJhMmE4Njc1YTc1MWQzODM0ODYwLi4zNDRhMTYwMjA4NDBmNWNkNDUw
OWQ3Y2UzNjRkNzM3ZDQ5OGVlNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaApA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBGdW5jdGlvbkRpc3BhdGNoZXJfaAogCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnVuY3Rpb25E
aXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uRGlzcGF0Y2hl
cj4gewogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5GdW5jdGlvbkRp
c3BhdGNoZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEZ1
bmN0aW9uRGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCBiZDExZTEwYzJkNTEy
OTMxY2ExNjE3NWMxOTlkMWRlMTcxZDc1NWVmLi42ZDQyYzRmZGJkYWRlMmIwMTc4MTNiYTQ0NzBk
ZDJjZGRhYTc1ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcsOSBAQCBzdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3RhdGljIFN0YXRp
Y0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERlcXVlPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1ZTxG
dW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0aW9uUXVldWUoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gZnVuY3Rpb25RdWV1
ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8RnVuY3Rpb248dm9pZCAoKT4+PiBm
dW5jdGlvblF1ZXVlOwogICAgIHJldHVybiBmdW5jdGlvblF1ZXVlOwogfQogCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIAogICAgIGF1
dG8gc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKLSAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQog
fQogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQordm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IGYx
OWY1NTkwMTlkYjc5NzUwYjVmOGJkZWNlYjU5ZWZlZmRkYWU1ZTEuLjk0YzcwYzY2ZDZkODMyYmM5
ZjUzNGUwMjA4MWFkNjBmZmU1M2QyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQxLDcgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBU
aHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQodm9p
ZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWVjMzYwNWQ3ZTM5MjIzNTZkNzRiMWMwNDMyNjJiODg1ZjBk
ODFjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgTm9uY29weWFibGVGdW5jdGlvbjsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+Ci1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uPE91dChJ
bi4uLik+IHsKLXB1YmxpYzoKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0Owot
ICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24oc3RkOjpudWxscHRyX3QpIHsgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4K
LSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAg
ICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENh
bGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgT3V0
IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9jYWxsYWJs
ZVdyYXBwZXIpCi0gICAgICAgICAgICByZXR1cm4gbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3Rk
Ojpmb3J3YXJkPEluPihpbikuLi4pOwotICAgICAgICByZXR1cm4gT3V0KCk7Ci0gICAgfQotCi0g
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdy
YXBwZXI7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVU
eXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9
KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCi0gICAgewotICAgICAg
ICBtX2NhbGxhYmxlV3JhcHBlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+
Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQotCi0gICAgICAgIHZpcnR1YWwgT3V0IGNhbGwoSW4u
Li4pID0gMDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlPgot
ICAgIGNsYXNzIENhbGxhYmxlV3JhcHBlciA6IHB1YmxpYyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5
cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgICAgIDogbV9jYWxsYWJsZShXVEZNb3ZlKGNhbGxhYmxl
KSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbGFibGVXcmFwcGVyKGNvbnN0
IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOwotICAgICAgICBDYWxsYWJsZVdyYXBwZXImIG9w
ZXJhdG9yPShjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0ZTsKLQotICAgICAgICBPdXQg
Y2FsbChJbi4uLiBpbikgZmluYWwgeyByZXR1cm4gbV9jYWxsYWJsZShzdGQ6OmZvcndhcmQ8SW4+
KGluKS4uLik7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhbGxhYmxlVHlwZSBtX2NhbGxh
YmxlOwotICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVyQmFzZT4g
bV9jYWxsYWJsZVdyYXBwZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RG
OjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAppbmRleCA5NjYwZjE1MTRlNWYwOTgx
ODYyOTk4ZjgxNzQxNzM2MDA5NjI0YTY3Li4zYjAyNjdlOTcxYjkwZjFmM2ZlYzhhYmFiOWU4NjJk
ZGIwZjdhMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJ1bkxvb3A6
OnBlcmZvcm1Xb3JrKCkKIAogICAgIHNpemVfdCBmdW5jdGlvbnNUb0hhbmRsZSA9IDA7CiAgICAg
ewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgICAg
ICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAgICAgewogICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgICAgICAgICAgZnVuY3Rp
b25zVG9IYW5kbGUgPSBtX2Z1bmN0aW9uUXVldWUuc2l6ZSgpOwpAQCAtMTA2LDcgKzEwNiw3IEBA
IHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGZ1
bmN0aW9uc0hhbmRsZWQgPSAxOyBmdW5jdGlvbnNIYW5kbGVkIDwgZnVuY3Rpb25zVG9IYW5kbGU7
ICsrZnVuY3Rpb25zSGFuZGxlZCkgewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOworICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAg
ICAgewogICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2sp
OwogCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAg
fQogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKIHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0
aW9uUXVldWVMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBlMTU1OGI2MjU5YzI3ZjBmNzA5MDE1ZWQ1OWMx
NTJiOTg2NTUzNWQ1Li4zNjExZDdhMzljYjU5Y2MwZjQ4ZThiMTdkYmIyYmUyNjY5YTk0ZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgaXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKTsKIAotICAgIHZvaWQgZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHJ1bigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHN0b3AoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR0xJ
Ql9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBGdW5jdGlvbjx2b2lkICgp
PiYmKTsKICNlbmRpZgogCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKQEAgLTE1NSw3ICsxNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKIAogICAgIE11dGV4IG1fZnVuY3Rp
b25RdWV1ZUxvY2s7Ci0gICAgRGVxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9m
dW5jdGlvblF1ZXVlOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVl
dWU7CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogICAgIHN0YXRpYyBib29sIHJlZ2lz
dGVyUnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA2YWM4NmY2
OWY3NDQwODdkZDZhZDUzYWVkYzRkNTI0NDc5MGZiMjJjLi5iOWVhZjQ4NmZjMWY0MjM5Y2Q2NDVl
ZTJiN2QzMGIxMmM4NGUzOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0
KTsKICAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9X
b3JrUXVldWVDb2NvYS5jcHAKaW5kZXggOTk1YTk1NGFhYzFkYjc0MTMzZGU5Y2ZiOTRmMTk0OGM5
NDEyNzQxNi4uZmRiZWY3M2JhZWMxNmFjNTQyY2ZhNjRlMGZiNGZjYzczM2FlODI1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApAQCAtMjgsMTAgKzI4LDEwIEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgcmVmKCk7Ci0gICAgYXV0byogZnVu
Y3Rpb25QdHIgPSBuZXcgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPihXVEZNb3ZlKGZ1bmN0
aW9uKSk7CisgICAgYXV0byogZnVuY3Rpb25QdHIgPSBuZXcgRnVuY3Rpb248dm9pZCAoKT4oV1RG
TW92ZShmdW5jdGlvbikpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hRdWV1ZSwgXnsK
ICAgICAgICAgKCpmdW5jdGlvblB0cikoKTsKICAgICAgICAgZGVsZXRlIGZ1bmN0aW9uUHRyOwpA
QCAtMzksMTAgKzM5LDEwIEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uKQogewogICAgIHJlZigpOwotICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0g
bmV3IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4oV1RGTW92ZShmdW5jdGlvbikpOworICAg
IGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rp
b24pKTsKICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCBkdXJhdGlvbi5jb3VudCgpKSwgbV9kaXNwYXRjaFF1ZXVlLCBeewogICAgICAgICAoKmZ1bmN0
aW9uUHRyKSgpOwogICAgICAgICBkZWxldGUgZnVuY3Rpb25QdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmggYi9Tb3VyY2UvV1RGL3d0
Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJdGVtRWZsLmgKaW5kZXggM2RkZmU1N2RlNmEzZGZmM2Zm
ODg1MWYwZDAyYTI4ZjAwMWUzNjY1NC4uMTYyYmFiNDJhOGI0ODhiNzdmZGM1MTk2ZmQ2NDlkNzEy
ZGNhZjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3Jr
SXRlbUVmbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0ZW1F
ZmwuaApAQCAtMzQsNyArMzQsNyBAQAogCiBjbGFzcyBXb3JrSXRlbSB7CiBwdWJsaWM6Ci0gICAg
V29ya0l0ZW0oUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKKyAgICBXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYmIHdvcmtR
dWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgOiBtX3dvcmtRdWV1
ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCiAgICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0
aW9uKSkKICAgICB7CkBAIC00NCwxMiArNDQsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogfTsK
IAogY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBjcmVhdGUoUmVmPFdvcmtRdWV1
ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwg
c3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5TmFub1NlY29uZHMpCisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxUaW1lcldvcmtJdGVtPiBjcmVhdGUoUmVmPFdvcmtRdWV1ZT4mJiB3b3Jr
UXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjpuYW5vc2Vj
b25kcyBkZWxheU5hbm9TZWNvbmRzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGRlbGF5TmFub1Nl
Y29uZHMuY291bnQoKSA+PSAwKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUaW1l
cldvcmtJdGVtPihuZXcgVGltZXJXb3JrSXRlbShXVEZNb3ZlKHdvcmtRdWV1ZSksIFdURk1vdmUo
ZnVuY3Rpb24pLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAwMDAwMDAuMCAr
IGRlbGF5TmFub1NlY29uZHMuY291bnQoKSkpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNFeHBpcmVkKGRvdWJsZSBjdXJyZW50VGltZU5hbm9TZWNvbmRzKSBjb25zdCB7
IHJldHVybiBjdXJyZW50VGltZU5hbm9TZWNvbmRzID49IG1fZXhwaXJhdGlvblRpbWVOYW5vU2Vj
b25kczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVGltZXJXb3JrSXRlbShSZWY8V29ya1F1ZXVlPiYm
IHdvcmtRdWV1ZSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3Vi
bGUgZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKKyAgICBUaW1lcldvcmtJdGVtKFJlZjxXb3Jr
UXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBkb3VibGUg
ZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKICAgICAgICAgOiBXb3JrSXRlbShXVEZNb3ZlKHdv
cmtRdWV1ZSksIFdURk1vdmUoZnVuY3Rpb24pKQogICAgICAgICAsIG1fZXhwaXJhdGlvblRpbWVO
YW5vU2Vjb25kcyhleHBpcmF0aW9uVGltZU5hbm9TZWNvbmRzKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIvU291cmNlL1dURi93dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKaW5kZXggNDBkMTkzOWZjZDRkMGVmYTU2ODllYjAyZWQ5OTg2YTlk
NzgyMDU4OS4uZGE5MTNiZjA0Y2U3MjczMTA3NjdlZjQ3OTRmZGQyYjg3OGE1ZjRlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBXb3JrUXVl
dWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yKQogICAg
IG1fZGlzcGF0Y2hRdWV1ZS0+Y2xlYXJTb2NrZXRFdmVudEhhbmRsZXIoKTsKIH0KIAotdm9pZCBX
b3JrUXVldWU6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogewogICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1cm47CkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChzdGQ6Om1h
a2VfdW5pcXVlPFdvcmtJdGVtPigqdGhpcywgV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAotdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0
aW9uLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKCFtX2Rpc3BhdGNoUXVldWUp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5j
cHAKaW5kZXggMTcxYWQzMDI3MjY5MjI4NmYzMmYwOTQ5MmY0ZjI4MzdhOTdhYjZjNS4uMjVhZTZm
MTk1YzMyZmI0MTJlMDU5NThjMzViMzM4OTU5MzI3NDhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2Vu
ZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCBuYW1lc3BhY2UgV1RG
IHsKIGNsYXNzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzayA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTY2hlZHVsZWRUYXNrPiB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y2hlZHVsZWRUYXNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+
IGNyZWF0ZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBp
bnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNr
PiBjcmVhdGUoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFsLCBi
b29sIHJlcGVhdGluZykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1
bGVkVGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOwogICAgIH0K
IAotICAgIFNjaGVkdWxlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIFNjaGVkdWxlZFRhc2so
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVh
dGluZykKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogICAgICAgICAs
IG1fZmlyZUludGVydmFsKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSkpCiAg
ICAgICAgICwgbV9pc1JlcGVhdGluZyhyZXBlYXRpbmcpCkBAIC05MCw3ICs5MCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBt
X2Z1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CiAgICAgQ29uZGl0
aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKICAgICBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+
IG1faXNBY3RpdmUgeyB0cnVlIH07CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBSdW5Mb29wOjpz
Y2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQog
ICAgIHdha2VVcChsb2NrZXIpOwogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5h
bm9zZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwogICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3Bw
IGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAppbmRleCA3Zjgw
ZTY5Y2E1YzdjMzA2ZjkwNzdjNGY5Yzg1MDNlY2M2ZTU0NWM3Li41YzdiOWI3NjU2Njk1ZGI3NmNl
Y2JhNzQ1MzYxYzYxZWIyZWIxMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmlj
L1dvcmtRdWV1ZUdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1
ZXVlR2VuZXJpYy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3JrUXVldWU6OmRpc3Bh
dGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgUmVmUHRyPFdvcmtRdWV1
ZT4gcHJvdGVjdCh0aGlzKTsKICAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5j
dGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV29ya1F1
ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpu
YW5vc2Vjb25kcyBkZWxheSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRz
IGRlbGF5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIFJlZlB0cjxXb3Jr
UXVldWU+IHByb3RlY3QodGhpcyk7CiAgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5
LCBbcHJvdGVjdCwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGli
L1J1bkxvb3BHTGliLmNwcAppbmRleCA4OWI3ZjcwNzBjOWQ0MjhlN2I4ZmI4MTdhN2Y5ZTdiM2Fk
ZGY5ZjE4Li45MjdjZTMyNTRmOGI1NjI3OGJhNmI3ZmYwMjFjMGRmMGFhNWYzMjE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUnVuTG9v
cDo6d2FrZVVwKCkKIGNsYXNzIERpc3BhdGNoQWZ0ZXJDb250ZXh0IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEaXNwYXRjaEFmdGVyQ29udGV4dChOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgRGlzcGF0Y2hBZnRlckNvbnRl
eHQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdU
Rk1vdmUoZnVuY3Rpb24pKQogICAgIHsKICAgICB9CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4g
bV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOwogfTsKIAotdm9p
ZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlv
biwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBSdW5Mb29w
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBHUmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9
IGFkb3B0R1JlZihnX3RpbWVvdXRfc291cmNlX25ldyhzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2Fz
dDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihkdXJhdGlvbikuY291bnQoKSkpOwogICAgIGdf
c291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hB
ZnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAppbmRleCA3MDNlZjA5ZjIxNjk2
MDg2OTMwYzQxNDQzOGRiM2ExYjI4NDY5ZDUwLi4zZWY2MWZiNWY0ZDYzMDU4MmQwMzMwNDRlNTFk
NzY3Mjk5ZjU3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAgICA6OkRlbGV0
ZVRpbWVyUXVldWVFeChtX3RpbWVyUXVldWUsIDApOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgIHJlZigpOwpAQCAtMTE4
LDcgKzExOCw3IEBAIHN0cnVjdCBUaW1lckNvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VGltZXJDb250ZXh0PiB7CiAgICAgc3RhdGljIFJlZlB0cjxUaW1lckNvbnRleHQ+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lckNvbnRleHQpOyB9CiAKICAgICBXb3Jr
UXVldWUqIHF1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247
CisgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAgICAgTXV0ZXggdGltZXJNdXRleDsK
ICAgICBIQU5ETEUgdGltZXI7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdvcmtRdWV1ZTo6
dGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCiAg
ICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25k
cyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
bV90aW1lclF1ZXVlKTsKICAgICByZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmNwcAppbmRleCAxYjc3NGJmMzgzMGQ3OWQ1NmI1NTU2MDI2YzBiMDM1NTQyNDY4MjZiLi43N2Ex
YjBmOTdjZGJmNjJiOTMwNDcxZWI4NjI2Y2E5MGQ5MDEwY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJvb2wgaGFzVW5h
c3NvY2lhdGVkVHJhbnNjZWl2ZXJzKGNvbnN0IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0cmFuc2Nl
aXZlcnMKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1
blRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCiB7
CiAgICAgaWYgKG1fZHRsc0ZpbmdlcnByaW50LmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIE9ubHkg
b25lIHRhc2sgbmVlZHMgdG8gYmUgZGVmZXJyZWQgc2luY2UgaXQgd2lsbCBob2xkIG9mZiBhbnkg
b3RoZXJzIHVudGlsIGNvbXBsZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDAxN2Y5ZDQzYmYzNDU4NDljZjkyNWUzMDc4ODlhNjM2N2JmNWNmNDcuLjFmY2E3ZjNjNDA5
YjcwYjVlODdjMzcxMTBhNjNjNzg0OTRhMjI5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBl
ZXJDb25uZWN0aW9uQmFja2VuZC5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWdvdGlhdGlvbk5l
ZWRlZCA9IGZhbHNlOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgcnVuVGFzayhGdW5jdGlvbjx2b2lkICgp
PiYmKTsKICAgICB2b2lkIHN0YXJ0UnVubmluZ1Rhc2tzKCk7CiAKICAgICB2b2lkIGNyZWF0ZU9m
ZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFF
bmRwb2ludD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9pbml0
aWFsRGVmZXJyZWRUYXNrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNEUFByb2Nlc3Nvcj4gbV9z
ZHBQcm9jZXNzb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjZmU4ZjE1ZWU0ODQ3NzhkMjRhMDllODI0
OTgxODViMDA3NjcxMzJlLi44OGE3ZjcxMTM2YzBkMzYxYmY3MjNlOTg3OGJhYmYzYWVlZjYwYWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQXVkaW9JT0NhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92
aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksOSArNTksOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRnVuY3Rpb248dm9pZCAoKT4m
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQogCiAgICAg
dmlydHVhbCBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBpc1Bs
YXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApp
bmRleCBhYzEzNzFlMmE1YTU3MzMzNmI0NjhjZTVhN2MxZjdmNTk3MjFkMmM5Li43Y2VjY2JhMzk1
MDUxMTg0YmE1ZDg5ODUyNGVlNGNkMTQwZmE2YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OnN0YXJ0UmVuZGVyaW5nKCkKICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKIH0K
IAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZShOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6cmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJU
KGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbgogICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQo
KSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3RpbwogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgdW5pbml0aWFsaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAwOWM5YjM4YjdmOTIyYjA1MzIxNjc5
ZTM1YjNjNjViZjE3NjE0ZjRmLi4zNWEwZGYxNmQzNDQ3ZWVhZjY5ZGE5NGI1N2ExOWZjNTJlYzFm
MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGlj
OgogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdm9pZCBlbmFibGVJbnB1dChjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRSZW5kZXJp
bmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc3VtZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2UoTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lkICgpPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKICAgICB1
bnNpZ25lZCBsb25nIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNQbGF5aW5nKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDg2OWI2ZWFhODA0Zjc3NDZhMDEx
MGU3NTI3ZGMxZDhhZDIyNjU2NmYuLmJiZjk2MzdlYzc0NWQ3NWZkYjAwNDJiMTFkNzFhNWU1N2Y4
NWIwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtMjc5OCw3ICsyNzk4LDcgQEAgVmVjdG9yPFN0cmluZz4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNU
b0Rpc2tGb3JJbmRleGVkREIoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1
ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBJREJW
YWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA0YzY3MGU2ZGMxMTdiM2Uw
NWVmOTliYmI1NTFiMjgxNTZkMzdhNmZiLi41Mzg4YmIyNjc4YmRiNjA5NjQwMzA3ZjgwZGI3OGQy
YTFhZmQzNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJM
c0lzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4
ZWREQihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQlZhbHVlJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihGdW5j
dGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBJ
REJWYWx1ZSB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpOwogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcAppbmRleCA3YWEyMjY5ZjRjNWZlMTE3
MzA4NjNjZjIxMzJmZmZkODI2OTIyZTY0Li42NmY1OTBhNDk3NWFlOTY4M2M2MWExNjE1ZjI5YmQx
ZGQ3NGE3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1BY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2so
TWljcm90YXNrUXVldWUmIHF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQorQWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2s6OkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1pY3JvdGFz
a1F1ZXVlJiBxdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgOiBBY3RpdmVET01DYWxsYmFjaygm
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1fcXVldWUocXVldWUpCiAgICAgLCBtX3Rh
c2soV1RGTW92ZSh0YXNrKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01DYWxsYmFja01pY3JvdGFzay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrLmgKaW5kZXggZTExYzRkMDdhNGFhYTU0YjlkZmIzYjMxZDQxM2MxOTI1MDA4
YmNiYS4uOGE3ZjdmNjM3MDgzM2ViMDc2MmYyY2NlZTI1NmMxMWUxNzZmZWU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKQEAgLTI3LDE0
ICsyNywxNCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKICNpbmNsdWRlICJN
aWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBY3Rp
dmVET01DYWxsYmFja01pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2ssIHB1YmxpYyBB
Y3RpdmVET01DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWljcm90YXNr
UXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
KCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1p
Y3JvdGFza1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2soKTsKIAogICAgIFJlc3VsdCBydW4oKSBvdmVycmlkZTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBiZSBhY2Nlc3NlZCB2aWEgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IHdoaWNoIHNob3VsZCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZWxldmVudAogICAgIC8vIHF1
ZXVlLgogICAgIE1pY3JvdGFza1F1ZXVlJiBtX3F1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCgpPiBtX3Rhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCBkYTU4ZTAwOTJmODU2MDA3MzZkMTIxNzVjNTY0MThlNTk2Nzc0OGMx
Li5jYjJlNmU4ZDQwZmNlYzIyNDkwMzE4ZmFmMWFjMmI5ZGQ4NTMwODY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMzLDggKzMzLDggQEAKICNp
bmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29sZVR5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0VmFs
dWU7CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBl
bnVtIENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jh
c2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29u
dmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+
Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKFQgdGFzaykKICAgICAgICAgICAgIDogbV90
YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYgdGFzaykKKyAgICAgICAgVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYg
dGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9KQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51
cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252
ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+
CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFzaykKICAgICAgICAgICAgIDogbV90
YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0cnVlKQpA
QCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBUYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiBt
X3Rhc2s7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA0YWU2YzgwY2Uz
NGU3OTRlNWVjNjJkNzgyYzU4MTI4ZjE3NmQyZWE0Li45YTkzYTFiYjVmYTMxNTU1Y2JhNjI2Mzky
NjhiYmE3MTIwZmY0Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjQsMTIgKzY0LDEyIEBAIGlubGluZSBBc3luY0ZpbGVTdHJlYW06OkludGVy
bmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKICNlbmRpZgogfQogCi1z
dGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+PiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQgKCk+Pj4gcXVldWU7CiAKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7CiAgICAgc3RkOjpjYWxsX29u
Y2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZv
aWQgY2FsbE9uRmlsZVRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3lu
Y0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTE0LDcgKzExNCw3IEBA
IEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiAgICAgfSk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKE5vbmNvcHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJhdGlvbikKK3Zv
aWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248dm9pZChG
aWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7CiAgICAgYXV0
byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwogICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZpbnRl
cm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggMDg4YmIzNzc0NmY0NzU5ODJkNDcwODRkZjUw
NjFmMTk3NmM2OTJlMS4uMzVlODVhN2ExNWRlMzM5NzdjNzdlNzQ2YWJhZDMwOGExOWNlYmMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC0zNCw3ICszNCw3
IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBwZXJmb3JtKE5vbmNvcHlh
YmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0
cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0oRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lk
KEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRl
cm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYTMxMWRiMGVkYzRlNmIxZDVkNTUyNmRjZThiZTZm
NWFhMDliYmEwMS4uNmVkNjhkZjAxMzlhOWIzNGQ5YjUxOWM3ZjA3MzI4OTllZTQ3YTVjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzE0MSw3ICszMTQxLDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgIHVwZGF0ZUVt
YmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9z
dExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQor
dm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKICAgICBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6
Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSgpCiAgICAgaWYgKCFtX3Bvc3RMYXlvdXRDYWxsYmFj
a1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCgpPj4gcXVldWUgPSBXVEZNb3ZlKG1fcG9zdExheW91dENhbGxiYWNrUXVl
dWUpOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBxdWV1ZSA9IFdURk1vdmUobV9wb3N0
TGF5b3V0Q2FsbGJhY2tRdWV1ZSk7CiAgICAgZm9yIChhdXRvJiB0YXNrIDogcXVldWUpCiAgICAg
ICAgIHRhc2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGY0NDQ5ZTUzNDhlNTg3
MzIyMjA5YmNhNjY2ZDQxYjZjMjgzMGRlMjkuLjg2MTEzODE4NzZjMzQ2N2IzMDdlYTQ4NWE4MzVm
ZDlhOTIyODU1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzUsOSArMzUsOSBAQAog
I2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKFJl
bmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwotICAgIHZvaWQg
cXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soRnVuY3Rpb248dm9pZCgpPiYmKTsKICAg
ICBib29sIGxheW91dFBlbmRpbmcoKSBjb25zdDsKICAgICBib29sIGlzSW5MYXlvdXQoKSBjb25z
dCB7IHJldHVybiBtX2xheW91dFBoYXNlICE9IE91dHNpZGVMYXlvdXQ7IH0KICAgICBib29sIGlz
SW5SZW5kZXJUcmVlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSA9PSBJblJl
bmRlclRyZWVMYXlvdXQ7IH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBwcml2YXRlOgogICAgIFNjcm9s
bFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKIAogICAgIEludFJlY3Qq
IG1fY2FjaGVkV2luZG93Q2xpcFJlY3QgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKKyAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKIH07CiAKIGlu
bGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eUNoYXJhY3RlckNv
dW50KHVuc2lnbmVkIGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggNTc2MDc4M2RiOGNlMDAzNWM4ZWU0MDc4YTU0NWY3
MDVmZjYxMmRmNS4uNzMwYzBhNmJkOTNmNDU3OGQxZWRiZjlhY2UxY2Q4NjU2NmU2Yzk4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQo
KQogICAgIHJldHVybiB0aHJlYWRJZGVudGlmaWVyICYmIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJl
YWRJZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBTY3JvbGxpbmdUaHJlYWQ6
OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0byYgc2Ny
b2xsaW5nVGhyZWFkID0gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICBzY3JvbGxp
bmdUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBT
Y3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKICAgICBzY3JvbGxpbmdUaHJlYWQud2FrZVVwUnVuTG9vcCgpOwogfQogCi12b2lk
IFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJhcnJpZXIo
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBkaXNwYXRjaChbZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNT
RVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+PiBmdW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBmdW5j
dGlvbnM7CiAgICAgCiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayht
X2Z1bmN0aW9uc011dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVGhyZWFkLmgKaW5kZXggMDM3Zjk1YjkwYjYzYTlkZWIxMzFjMzgxYmQ5ZDMyNDk5N2I1
NDFlZC4uMjhkNTc1NWQ3ZGEyZDA5MzlhNDE5NTMyZmRjYTU0YzBjNThlZDI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTMxLDkg
KzMxLDkgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OCwxMSArNDgsMTEgQEAgY2xhc3Mg
U2Nyb2xsaW5nVGhyZWFkIHsKIAogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQ3VycmVudFRo
cmVhZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoKE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICAvLyBXaWxsIGRpc3BhdGNoIHRo
ZSBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQgb25jZSBhbGwgcGVuZGluZyBmdW5j
dGlvbnMKICAgICAvLyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBoYXZlIGZpbmlzaGVkIGV4ZWN1
dGluZy4gVXNlZCBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihG
dW5jdGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBMb2Nr
IG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsKIAogICAgIExvY2sgbV9mdW5jdGlvbnNNdXRleDsK
LSAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlvbnM7Cisg
ICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uczsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxvb3AgaGVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKaW5kZXgg
MGM2YzI0M2I4ZTA4Y2ExMmI4OTY2ZDlmYWFjY2RlNDIyMmY5MDEwNS4uMWFhN2UxYjg3NjNmZjFi
NDdkZmI4ZTIxMzk0MDc2NDVlYjc1NWViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgVGFza0Rpc3BhdGNoZXI8VGlt
ZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CiAKLXZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+
Ojpwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
VGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCiB7CiAgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKICAg
ICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFr
UHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCmluZGV4
IDRkODVjOWEwYjIxODQ5OGM2OTUxNDYxOTEwNmQzOGQwNzk5OTFhYmMuLmY1MGEzNjEzOWYyZjc2
ZTA0NTY3N2I2OTg1NWMwNWY1NWU0MmM2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
ZW5lcmljVGFza1F1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4m
JiBmKQorICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGYpCiAgICAgewogICAg
ICAgICBtX2NvbnRleHQucG9zdFRhc2soV1RGTW92ZShmKSk7CiAgICAgfQpAQCAtNTMsNyArNTMs
NyBAQCB0ZW1wbGF0ZTw+CiBjbGFzcyBUYXNrRGlzcGF0Y2hlcjxUaW1lcj4gewogcHVibGljOgog
ICAgIFRhc2tEaXNwYXRjaGVyKCk7Ci0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwog
CiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKQEAgLTYzLDcgKzYz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoT25lVGFzaygpOwogCiAgICAgV2Vha1B0
ckZhY3Rvcnk8VGFza0Rpc3BhdGNoZXI+IG1fd2Vha1B0ckZhY3Rvcnk7Ci0gICAgRGVxdWU8Tm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBEZXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5cGVkZWYg
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+IFRhc2tGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1
bmN0aW9uPHZvaWQoKT4gVGFza0Z1bmN0aW9uOwogCiAgICAgdm9pZCBlbnF1ZXVlVGFzayhUYXNr
RnVuY3Rpb24mJiB0YXNrKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggODY5
YTY4ZTk4ODZiMmQwYmY1OThiZTMwYTkyZGRmNjQ1ZGU5Mzc2OC4uMjBjOTQ2MDY1ODkxZjE1YTAw
NTMyNTZmMDg1NTE2Yzk2MTUzMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTMw
LDggKzMwLDggQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygpOwogICAg
IHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxl
RGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgZW51bSBEaXNwbGF5TW9k
ZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggODRjN2Q2
MjMyNGY2NDcxMWUxNjVlNTI0M2RmODhmMjFhNTBlZDdlOS4uYWJmNDM3ZDM3MTY1ZmZlZTM2ZWIw
N2QyY2FjNGZjZGI0ZDg1ZmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNjI0
LDcgKzYyNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
ZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTCiAgICAgbV9wbGF5ZXItPm5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBj
cmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuY3BwCmluZGV4IGQ0OWQxNTEyMTM5NjM4ODY0OWRlMTU3YzMwNDcxNzQ5M2ViZmNjYmMu
LjE4NzJjZDJjOGJjMzI5NTU4MzI2Y2ZmZjFkOTZmYTdlZDc1YTgyMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2
YXRlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFj
a0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKICAgICB9KTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hlZHVsZURl
ZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChm
dW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRy
KCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXgg
OTIzMDRlZmJkNjM0OWFjZjE5Njk3NTRmZjgyOGEwNmZhNDRjMGQzZi4uYWJmY2FiNmMwMWViOTFh
YWVjMTU4M2YxZDI5OGM1Mjc3OGE2ZDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTM5LDkgKzM5
LDkgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhcmFj
dGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFjaygpOwog
Ci0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVN0cmVhbVByaXZhdGU+IG1fd2Vha1B0ckZh
Y3Rvcnk7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCmluZGV4IGY0NzRhZWI5YjdjNzNjYmM0YzgzNGMyZjFlYzkyYjU4OWMxNDVj
NjQuLjc0ZDdmZmMxZjI0ZjA4MTkzMjQwZmNlMDYzMTc4NWJkNjQ1ZjZlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiR2VuZXJpY1Rh
c2tRdWV1ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0
VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsKICAg
ICB2b2lkIHNldEF1ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9EYXRhT3V0
cHV0Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0
dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDc2YWZkOWJiZTVhMDdlOWE3NThhYTQ1YjhlN2M3
ZTY1MWNiY2IzM2IuLmMyZDkyOGRlYjNlNmI1MDg5ODgyNTZiYzUzMzc1NzljZDlhZmM3ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlh
Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEFW
TWVkaWFDYXB0dXJlU291cmNlOjpzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVy
ZUF1ZGlvRGF0YU91dHB1dAogICAgIFthdWRpb091dHB1dCBzZXRTYW1wbGVCdWZmZXJEZWxlZ2F0
ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYUF1ZGlvQ2FwdHVyZVNlcmlhbFF1ZXVl
KCldOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFz
ayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIEFWTWVkaWFD
YXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbild
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmlu
ZGV4IDI3OTU3OWNmYmViYWFkMTVhZmIwNjM4ZTA5ZTJmNjRjMGE1N2ExZjYuLmUyMjVmZWM3NTQ5
MDYwZWQxZDRjOTNlMTE2MjBkOWU5ZDM2NDJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0
IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAgdmlydHVh
bCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
Y3BwCmluZGV4IDY4MDYwMzU0ZTdlNTBlYmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjguLmE2N2Zh
Y2Y3NWUwZmVjMjFkODRjMTZjYWY0YjY0ODI4YjZjMjBhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMjUyLDcg
KzI1Miw3IEBAIHN0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcgewogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnM7
CiB9OwogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8Qmxv
YkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRpbmc7CiAgICAgZm9yIChhdXRvJiB1cmwgOiBi
bG9iVVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaAppbmRleCA0NThjMDY1MDNhN2U2M2U5MjI2MTg4MTA4MWUzNDkwMmE0Yzdh
YTU5Li4yMDM5N2U5ZWM5ZjQ0MTBmMTA4NTdjYTRiMjliNjUxMWViZTZjMjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggNzBhMWZhZWM1MmRmYTgyOGJl
YWU1OWNiYjNhZGQwNDU3MjNhNjZkNS4uMGMxOWM2MjBmMTRhNTQyMGNkOTU2YmNiYWUyNWU3ZjRk
NGM3YTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApA
QCAtNTMyLDEzICs1MzIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVy
OjpyZXNvbHZlKENoYW5nZSBjaGFuZ2UpCiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRhdGUpOwog
fQogCi1zdGF0aWMgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBwb3N0UmVz
b2x1dGlvbkNhbGxiYWNrUXVldWUoKQorc3RhdGljIFZlY3RvcjxGdW5jdGlvbjx2b2lkICgpPj4m
IHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tRdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gdmVjdG9yOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+PiB2ZWN0b3I7CiAg
ICAgcmV0dXJuIHZlY3RvcjsKIH0KIAotdm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2so
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBxdWV1ZVBvc3RS
ZXNvbHV0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBw
b3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggM2NlNzA0NjI2
NzQ1YTkzNmViNGNkYjViOThiYTc0MDc2MDhjMTUxNi4uZjc0NjZkMTQxNjg4ZWI0NjYwOTI1N2Vl
MzNjYjcxYzdkY2U0ZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5oCkBAIC0zMiw5ICszMiw4IEBACiAjaW5jbHVkZSAiU3R5bGVDaGFuZ2UuaCIKICNpbmNsdWRl
ICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgiCi0jaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBtX3VwZGF0ZTsKIH07
CiAKLXZvaWQgcXVldWVQb3N0UmVzb2x1dGlvbkNhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJik7Cit2b2lkIHF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIGJvb2wgcG9zdFJlc29sdXRpb25DYWxsYmFja3NBcmVTdXNwZW5kZWQoKTsK
IAogYm9vbCBpc1BsYWNlaG9sZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggZTFhNGExNWRkZDdm
MzQ3MTYxZTQ0NDMzNzFmYzQ3YjcyMjY4Zjk5NC4uZWRjOWViMzNjNTAzNTUyMGFjNTQyZDM1ZDBh
NWJjYTIyZjljNzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFu
YWdlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZnVs
bERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIKICAgICBy
ZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVy
ICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3Bh
dGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU3RvcmFn
ZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAppbmRleCA3NWE0ODZiNjIwYzJi
YjMxMmFlOGNkZjlkNTA2NGI0MDI2YmExZWM1Li44OWU2YjQzM2E1MWU2M2RlZTM5ZDc4OWQxZDhl
NWJhNWIzYjJkNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdl
ci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VTeW5jTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgflN0b3JhZ2VTeW5jTWFuYWdl
cigpOwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYp
OworICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBjbG9z
ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3Jh
Z2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmlu
ZGV4IDI5NjZlMDQwNmUxNzA0ZjIyMGM1MWMyNmRlNzhkMDgyMTQyNmM2MDkuLjBiNmVkMDc2ZmZm
NTVhMTFkOTE2YmRlNTk5ZGNkNWJjMDFlOGUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRo
cmVhZEVudHJ5UG9pbnQoKQogICAgIH0KIH0KIAotdm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRj
aChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFN0b3JhZ2VU
aHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90
aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24p
KSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTkwLDcgKzkwLDcg
QEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWRJRCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAgICAgIHBl
cmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24o
bV90aHJlYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRo
cmVhZC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRleCA0NzUy
ZDViMTllMWIwNmNhYTllN2VlZDg4NDRiNDlkNWYzZmNiZmEyLi4zZjFiODg0NWI2ZjNmZDdjZmU4
NzE4MDJjZWE0N2QxMGNiMTQwODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmgKQEAgLTI2LDEwICsyNiw5IEBACiAjaWZuZGVmIFN0b3JhZ2VUaHJlYWRfaAogI2RlZmluZSBT
dG9yYWdlVGhyZWFkX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCi0g
ICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZv
aWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIApAQCAtNTksNyArNTgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgpOwogCiAgICAgVGhyZWFkSWRl
bnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxGdW5jdGlvbjx2b2lkICgpPj4g
bV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCmluZGV4IGQzNGQ4NDIwNTk1ZGQ1OWViYWUyZGY3YjY4MTYwMWNiZDA3MTZiYTAuLjhk
Y2YxYmUzY2NkZmQ1MDhjMWJmNGQ5ZWE2YjIxNzVmYTE2ZDM5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0
cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uCiAg
ICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxv
YlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKaW5kZXggYTIwMTY5YTkxYmJlZWNkNDZkY2I4NzZiZDA5YjJmODQ3MGRmZGQ4OS4uNzQwNmEz
Y2I1ZTY3N2UyZjNmZmJhYTc0YjgzMGY2NmQyZmE0YWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKQEAgLTI3LDEwICsyNyw5IEBACiAjZGVmaW5lIE5ldHdvcmtCbG9iUmVnaXN0cnlfaAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpAQCAtNTUs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOwogICAgIHVpbnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NE
aWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IGRiYTJjODhkOTFh
MmNkYjQwMGEwNDg2MDJjMmEwY2QwOTNlZGFlMjUuLmQ1NDZkOTE0ZmZlMzUyYmMxNDcxNzk2Mzhl
NzNhMjIyZGI3NzM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMsOSArNjMs
OSBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gewogICAg
IFJlamVjdFByb3RlY3Rpb25TcGFjZQogfTsKICAgICAKLXR5cGVkZWYgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyOwotdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKLXR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7Cit0
eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZChXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogCiBjbGFzcyBOZXR3
b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGI0Mjg4ZjVlMDdjNDNmMTZhYWQyNDI5
ZjU2NzI0NDRiZjczYWRlMmYuLmI4NzE4MTBhOTdkYjlkMGY3NWRhMDQ4MGM1OTA3Y2MxOWU1NTY1
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFNlc3Npb25UcmFj
a2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRl
bnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHN0
YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNz
Rm9yQmxvYnModWludDY0X3QKICAgICAgICAgaGFuZGxlcigpOwogfQogCi1zdGF0aWMgdm9pZCBm
ZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGF0
aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248dm9pZCAo
VmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigp
LmlzRW5hYmxlZCgpKSB7CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNr
Q2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZl
dGMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNr
QWdncmVnYXRvcihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKEZ1bmN0
aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAg
IDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAg
ICAgewogICAgICAgICB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGEKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIEZ1
bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAg
V2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKICAgICB9OwogCkBAIC00MTIsNyArNDEyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1z
dGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAoTmV0
d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggY2I4MDA5ZWQ0NzY0NDNlMGI3
NGNiYTFhOTJjMGQ0ZDJmZWQ0OWMwZC4uZjIxODEyNzM3M2U0YzdkZTFhYWE1OTY0MjBhYzY5ODY3
N2ExZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAot
ICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiBwcml2YXRlOgog
ICAgIE5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwog
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9z
YW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29t
cGxldGlvbkhhbmRsZXJzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBhOTMwYTcwNjBjZDAwNGNlYzQ0YzEwMjY4ZjQ5
YmMxZjY5YmQzMDRiLi4yZjQ4MTM0YTY0ZTgwOGE0ZjdjNzM5NmNjMzc5YTgzYmFkMzNkM2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogICAg
IH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CkBA
IC00ODAsNyArNDgwLDcgQEAgdm9pZCBDYWNoZTo6cmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZW1vdmUobWFrZUNhY2hlS2V5KHJlcXVlc3QpKTsK
IH0KIAotdm9pZCBDYWNoZTo6dHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25z
dCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKK3ZvaWQgQ2FjaGU6OnRyYXZl
cnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5k
bGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggNThmMGM2ZDYzN2U1
ZDNmMGJlNjJlMmY3ZDRkNGMwNGZlMDhkNjMyOC4uMzlkNzYwODk3MWM1OTkxZjdmYWNkZTRjZDE0
ZDRiMTUwMzgxMzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDYsNyArMTA2LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ29tcGxldGlvbiBoYW5kbGVyIG1heSBnZXQgY2FsbGVkIGJhY2sg
c3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBk
YXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
LCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRp
bmdSZXNwb25zZSk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IEVudHJ5JiBlbnRyeTsKICAgICAgICAgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYgcmVjb3Jk
SW5mbzsKICAgICB9OwotICAgIHZvaWQgdHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsKKyAgICB2b2lkIHRyYXZlcnNlKEZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IEtleSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDhjOTFjOWVjNjc1ODgy
MmM2YjMwZjVmYjQwYjgyYzFjNjQ4ZDRlZjEuLjg0Yjk0OTc5NmY0N2UxNWIzY2JmZTRlMjkwMzY4
NzcxMmQxZDc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIFJlZjxJT0NoYW5uZWw+IElPQ2hhbm5lbDo6b3Blbihjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUgdHlwZSkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
T0NoYW5uZWwoZmlsZVBhdGgsIHR5cGUpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJ1blRh
c2tJblF1ZXVlKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrLCBXb3JrUXVldWUq
IHF1ZXVlKQorc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVlKEZ1bmN0aW9uPHZvaWQg
KCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKIHsKICAgICBpZiAocXVldWUpIHsKICAgICAg
ICAgcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4
IDgzYmE2Yzc1YmFmOGEyZjJmMDBhZjdkMDJmOGY2YWU3YWNjMTViM2YuLjE0NWY4OTY3OWMxNGY0
YWFlZTRmNDFjODIyNTY2NTY0MjExMjdjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTM0LDgg
KzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb29t
RmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxib29sIChzdGQ6OnVuaXF1ZV9w
dHI8UmVjb3JkPik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgdm9pZCByZXRyaWV2
ZShjb25zdCBLZXkmLCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYmKTsKIAotICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBEYXRh
JiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CisgICAgdHlwZWRlZiBGdW5jdGlvbjx2
b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CiAgICAgdm9p
ZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYmKTsKIAogICAgIHZvaWQg
cmVtb3ZlKGNvbnN0IEtleSYpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFNo
YXJlQ291bnQgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRyYXZlcnNl
RmxhZ3M7Ci0gICAgdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlY29y
ZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJhdmVyc2VIYW5kbGVyOworICAgIHR5cGVkZWYgRnVu
Y3Rpb248dm9pZCAoY29uc3QgUmVjb3JkKiwgY29uc3QgUmVjb3JkSW5mbyYpPiBUcmF2ZXJzZUhh
bmRsZXI7CiAgICAgLy8gTnVsbCByZWNvcmQgc2lnbmFscyBlbmQuCiAgICAgdm9pZCB0cmF2ZXJz
ZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNlRmxhZ3MsIFRyYXZlcnNlSGFuZGxlciYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKaW5kZXggOTBmOTQwYTc1NzJjNDEwYmMyOWYwMjkyZDg1YzA0N2VkYTVm
OWMxMC4uZWQwNDBlNWVkZWI1Nzk1YWRkNzVlYWM5ZmU2N2U2ZmNlZDc3NzI1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQ
cm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9
CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5k
ZXggNThkM2FiZGVlYTVlMjNhNmYyMmY2NmE5OTAyZmE3ZGQxNWI2ZDc3My4uODM1M2ZhNzgyOWU0
ZWVmNTkxNGFhMjhhN2JhY2YyZTc0OWRiZmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUo
Y29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDNjODNhNDczMzgzYWE1ZDky
ZjY3N2I0ODU2OThkOWQ5NDc5Zjc3YjIuLjhmNzdhYmI2YmVmMDY5MjQzY2VlZDMxNTFlNjQzYzIz
NzE0YjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04NSw3ICs4NSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhz
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0X3Qgd3JpdGVCbG9i
VG9GaWxlSWRlbnRpZmllcjsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrd3Jp
dGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA3N2I1
NGRhNGJkMTAyZTlkNTBkNDM5MzUxMDg5YTI3NWM0OTM5YTRiLi5lZjhlMGZiYWU0OWY3MmEwNzll
Y2Y0OGZlYTlkZTQxYTJmMWFjM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwog
Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgLy8g
VGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vz
cy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPj4gbV93cml0
ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281995</attachid>
            <date>2016-06-24 10:09:49 -0700</date>
            <delta_ts>2016-06-24 11:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160624100949.patch</filename>
            <type>text/plain</type>
            <size>87048</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmJhOTcxYzIzOTdmNWZlZGZkZTU0
ZjA4ZDBjYTdlMzFjNGU5MjcuLjg4OGJhMDgzMWFkODI3Y2RjMmI1NGJmZDA3OTUwNjAwZGY2ZGFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJlYWRU
YXNrKToKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYv
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpmdW5j
dGlvblF1ZXVlKToKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWlu
VGhyZWFkLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgorICAgICAgICAo
V29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6
CisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4
dCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0
Zi93aW4vV29ya0l0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6V29ya0l0
ZW1XaW4pOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1XaW4uaDoKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmZ1bmN0aW9uKToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorCiAy
MDE2LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAK
ICAgICAgICAgQWRkIHN5c3RlbSB0cmFjaW5nIHBvaW50cyBmb3IgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgd29ya2Zsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDViOGU0YzA1OWZlYTdhODUwZWYyZmJlOWZj
MTczMGVhOGYzNmNhLi5iN2VhNjZkZjI3YmFhOTkzNDViNGYwZTkzM2M4YjAyMWQ0NDA1ZDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlv
biB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1blRh
c2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAq
IGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybSk6CisgICAgICAgICogZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNj
cm9sbGluZ1RocmVhZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hl
cjo6cG9zdFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OnF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKwogMjAxNi0wNi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2VwdGlvbiBpcyBub3QgdGhyb3duIHdoZW4gc2hp
cHBpbmcgbWV0aG9kIGlzIGFuIGludmFsaWQgYW1vdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUxYjhlODk2M2Ey
YWMyODA5M2Y1NDNjZWVmYjYzODZhY2NmNzFlNDUuLmM2MTZkYTA1NGVjNTI5MGQ4ZTZmMjQ5MzI4
YTc1MWUzNjBmZjlmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMjEgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9u
Y29weWFibGVGdW5jdGlvbiB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE2LTA2LTIwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ3Y2Y3
ODhjMTcwYzQ2YmM0ZDczZDQzMzVjYTgyNmE2ZjAzNzk1Ni4uNzM5MDMyOTA0M2JhNmRjMmQ2NzNm
NTliNGQ3Y2M1MDBmNDhmN2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA2
LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVu
YW1lIE5vbmNvcHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cnVuVGFza0luUXVldWUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNi0w
Ni0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBsb2dn
aW5nIHJlbGF0ZWQgdG8gcHJvY2VzcyBhc3NlcnRpb25zIHRvIGhlbHAgZGVidWcgcHJvY2VzcyBz
dXNwZW5zaW9uIGlzc3VlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmNlM2JhZTc5NTMxNzQ2NWNmOWNkZmE5YTIyODlmZjYwMDZjNjQwNi4uNDM0ZjY2ZTMz
ZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNyArMTE5LDcgQEAKIAkJN0UyOUMzM0UxNUZGRDc5
QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1
bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0
MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIw
OTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9
OwotCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCAqLzsgfTsKKwkJODNGMkJBREYx
Q0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24u
aCAqLzsgfTsKIAkJODNGQkE5MzIxOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5
NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovOyB9OwogCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JG
MjIgLyogUmVmQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgfTsK
IAkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovOyB9OwpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAJ
CTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpjUnVudGltZUV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNl
NjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5
YWJsZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmNvcHlh
YmxlRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlE
RjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZUNhc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5
MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU3RyaW5nVmlld09iakMubW07IHBhdGggPSBtYWMv
U3RyaW5nVmlld09iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDMsNiAr
ODQzLDcgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAog
CQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJODNGMkJB
REUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5
ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMx
ODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUx
QTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKQEAgLTg4OSw3ICs4OTAsNiBAQAogCQkJCTFB
M0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4
NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVC
MDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKLQkJCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5
QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQx
MjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0NzJENjE1MUE4MjVCMDA0MTIz
RkYgLyogTnVtYmVyT2ZDb3Jlcy5oICovLAogCQkJCTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAv
KiBPYmpjUnVudGltZUV4dHJhcy5oICovLApAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIAkJCQlBOEE0
NzNEOTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzYxQzAwMEQ0MDAwODFENjYzIC8qIEluZGV4U3Bh
cnNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyog
SW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDREMDA1MjlBOUIg
LyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKaW5k
ZXggYjRlOTZjNGM1OWI3ZDBlNzZkNDFmODUxYTAwY2VlNWNhNzQ4YzhlNC4uMGE2NmVjMTdmN2Fk
NGE5NTk4NDNjZWNjNTQ3ZjljY2IwMzAxZTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDcm9zc1RocmVhZFRhc2sgewog
cHVibGljOgogICAgIENyb3NzVGhyZWFkVGFzaygpID0gZGVmYXVsdDsKIAotICAgIENyb3NzVGhy
ZWFkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFza0Z1bmN0aW9uKQorICAg
IENyb3NzVGhyZWFkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlvbikKICAgICAg
ICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlvbikpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV90YXNrRnVuY3Rpb24pOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tG
dW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM5NTg1NjIzOGU0N2M1
ZDhiMzhkODYxYzBiZjcxZGJlZDhiZGNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZ1bmN0aW9uOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4KK2NsYXNzIEZ1bmN0aW9uPE91
dChJbi4uLik+IHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbigpID0gZGVmYXVsdDsKKyAgICBGdW5j
dGlvbihzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJs
ZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVm
ZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIEZ1bmN0aW9uKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUp
KSkKKyAgICB7CisgICAgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAobV9jYWxsYWJsZVdyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4g
bV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOworICAgICAg
ICByZXR1cm4gT3V0KCk7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgRnVu
Y3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAgICB7CisgICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2Fs
bGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7Cisg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5DYWxsYWJsZVdyYXBwZXJCYXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCBPdXQgY2Fs
bChJbi4uLikgPSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5
cGU+CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIDogcHVibGljIENhbGxhYmxlV3JhcHBlckJh
c2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICAgICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2Fs
bGFibGUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsYWJsZVdyYXBwZXIo
Y29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisgICAgICAgIENhbGxhYmxlV3JhcHBl
ciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOworCisgICAgICAg
IE91dCBjYWxsKEluLi4uIGluKSBmaW5hbCB7IHJldHVybiBtX2NhbGxhYmxlKHN0ZDo6Zm9yd2Fy
ZDxJbj4oaW4pLi4uKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FsbGFibGVUeXBlIG1f
Y2FsbGFibGU7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYWJsZVdyYXBwZXJC
YXNlPiBtX2NhbGxhYmxlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAppbmRleCBiNTJl
ZWNmMWViZjI2OWE0MDYwOGJhMmE4Njc1YTc1MWQzODM0ODYwLi4zNDRhMTYwMjA4NDBmNWNkNDUw
OWQ3Y2UzNjRkNzM3ZDQ5OGVlNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaApA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBGdW5jdGlvbkRpc3BhdGNoZXJfaAogCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnVuY3Rpb25E
aXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uRGlzcGF0Y2hl
cj4gewogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5GdW5jdGlvbkRp
c3BhdGNoZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEZ1
bmN0aW9uRGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCBiZDExZTEwYzJkNTEy
OTMxY2ExNjE3NWMxOTlkMWRlMTcxZDc1NWVmLi42ZDQyYzRmZGJkYWRlMmIwMTc4MTNiYTQ0NzBk
ZDJjZGRhYTc1ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcsOSBAQCBzdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3RhdGljIFN0YXRp
Y0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERlcXVlPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1ZTxG
dW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0aW9uUXVldWUoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gZnVuY3Rpb25RdWV1
ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8RnVuY3Rpb248dm9pZCAoKT4+PiBm
dW5jdGlvblF1ZXVlOwogICAgIHJldHVybiBmdW5jdGlvblF1ZXVlOwogfQogCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIAogICAgIGF1
dG8gc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKLSAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQog
fQogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQordm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IGYx
OWY1NTkwMTlkYjc5NzUwYjVmOGJkZWNlYjU5ZWZlZmRkYWU1ZTEuLjk0YzcwYzY2ZDZkODMyYmM5
ZjUzNGUwMjA4MWFkNjBmZmU1M2QyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQxLDcgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBU
aHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQodm9p
ZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWVjMzYwNWQ3ZTM5MjIzNTZkNzRiMWMwNDMyNjJiODg1ZjBk
ODFjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgTm9uY29weWFibGVGdW5jdGlvbjsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+Ci1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uPE91dChJ
bi4uLik+IHsKLXB1YmxpYzoKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0Owot
ICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24oc3RkOjpudWxscHRyX3QpIHsgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4K
LSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAg
ICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENh
bGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgT3V0
IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9jYWxsYWJs
ZVdyYXBwZXIpCi0gICAgICAgICAgICByZXR1cm4gbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3Rk
Ojpmb3J3YXJkPEluPihpbikuLi4pOwotICAgICAgICByZXR1cm4gT3V0KCk7Ci0gICAgfQotCi0g
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdy
YXBwZXI7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVU
eXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9
KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCi0gICAgewotICAgICAg
ICBtX2NhbGxhYmxlV3JhcHBlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+
Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQotCi0gICAgICAgIHZpcnR1YWwgT3V0IGNhbGwoSW4u
Li4pID0gMDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlPgot
ICAgIGNsYXNzIENhbGxhYmxlV3JhcHBlciA6IHB1YmxpYyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5
cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgICAgIDogbV9jYWxsYWJsZShXVEZNb3ZlKGNhbGxhYmxl
KSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbGFibGVXcmFwcGVyKGNvbnN0
IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOwotICAgICAgICBDYWxsYWJsZVdyYXBwZXImIG9w
ZXJhdG9yPShjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0ZTsKLQotICAgICAgICBPdXQg
Y2FsbChJbi4uLiBpbikgZmluYWwgeyByZXR1cm4gbV9jYWxsYWJsZShzdGQ6OmZvcndhcmQ8SW4+
KGluKS4uLik7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhbGxhYmxlVHlwZSBtX2NhbGxh
YmxlOwotICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVyQmFzZT4g
bV9jYWxsYWJsZVdyYXBwZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RG
OjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAppbmRleCA5NjYwZjE1MTRlNWYwOTgx
ODYyOTk4ZjgxNzQxNzM2MDA5NjI0YTY3Li4zYjAyNjdlOTcxYjkwZjFmM2ZlYzhhYmFiOWU4NjJk
ZGIwZjdhMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJ1bkxvb3A6
OnBlcmZvcm1Xb3JrKCkKIAogICAgIHNpemVfdCBmdW5jdGlvbnNUb0hhbmRsZSA9IDA7CiAgICAg
ewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgICAg
ICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAgICAgewogICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgICAgICAgICAgZnVuY3Rp
b25zVG9IYW5kbGUgPSBtX2Z1bmN0aW9uUXVldWUuc2l6ZSgpOwpAQCAtMTA2LDcgKzEwNiw3IEBA
IHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGZ1
bmN0aW9uc0hhbmRsZWQgPSAxOyBmdW5jdGlvbnNIYW5kbGVkIDwgZnVuY3Rpb25zVG9IYW5kbGU7
ICsrZnVuY3Rpb25zSGFuZGxlZCkgewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOworICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAg
ICAgewogICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2sp
OwogCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAg
fQogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKIHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0
aW9uUXVldWVMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBlMTU1OGI2MjU5YzI3ZjBmNzA5MDE1ZWQ1OWMx
NTJiOTg2NTUzNWQ1Li4zNjExZDdhMzljYjU5Y2MwZjQ4ZThiMTdkYmIyYmUyNjY5YTk0ZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgaXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKTsKIAotICAgIHZvaWQgZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHJ1bigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHN0b3AoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR0xJ
Ql9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBGdW5jdGlvbjx2b2lkICgp
PiYmKTsKICNlbmRpZgogCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKQEAgLTE1NSw3ICsxNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKIAogICAgIE11dGV4IG1fZnVuY3Rp
b25RdWV1ZUxvY2s7Ci0gICAgRGVxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9m
dW5jdGlvblF1ZXVlOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVl
dWU7CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogICAgIHN0YXRpYyBib29sIHJlZ2lz
dGVyUnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA2YWM4NmY2
OWY3NDQwODdkZDZhZDUzYWVkYzRkNTI0NDc5MGZiMjJjLi41YWMzMmY4YzY5ZWJlNjFhZmRlYWNj
YWI5N2Q0ZTE3NGU3ZjZjNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0
KTsKICAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2xhdGlsZSBMT05HIG1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZDsKIAog
ICAgIE11dGV4IG1fZnVuY3Rpb25RdWV1ZUxvY2s7Ci0gICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9p
ZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKIAogICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CiAjZWxp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCmluZGV4IDk5NWE5NTRhYWMxZGI3NDEzM2Rl
OWNmYjk0ZjE5NDhjOTQxMjc0MTYuLmZkYmVmNzNiYWVjMTZhYzU0MmNmYTY0ZTBmYjRmY2M3MzNh
ZTgyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKQEAgLTI4LDEw
ICsyOCwxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNo
KE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVl
OjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIHJlZigpOwot
ICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4o
V1RGTW92ZShmdW5jdGlvbikpOworICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9u
PHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3Bh
dGNoUXVldWUsIF57CiAgICAgICAgICgqZnVuY3Rpb25QdHIpKCk7CiAgICAgICAgIGRlbGV0ZSBm
dW5jdGlvblB0cjsKQEAgLTM5LDEwICszOSwxMCBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2go
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVy
YXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwg
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICByZWYoKTsKLSAgICBhdXRvKiBm
dW5jdGlvblB0ciA9IG5ldyBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVu
Y3Rpb24pKTsKKyAgICBhdXRvKiBmdW5jdGlvblB0ciA9IG5ldyBGdW5jdGlvbjx2b2lkICgpPihX
VEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSksIG1fZGlzcGF0Y2hRdWV1ZSwgXnsKICAg
ICAgICAgKCpmdW5jdGlvblB0cikoKTsKICAgICAgICAgZGVsZXRlIGZ1bmN0aW9uUHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oIGIv
U291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oCmluZGV4IDNkZGZl
NTdkZTZhM2RmZjNmZjg4NTFmMGQwMmEyOGYwMDFlMzY2NTQuLjE2MmJhYjQyYThiNDg4Yjc3ZmRj
NTE5NmZkNjQ5ZDcxMmRjYWYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNw
YXRjaFF1ZXVlV29ya0l0ZW1FZmwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hR
dWV1ZVdvcmtJdGVtRWZsLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogY2xhc3MgV29ya0l0ZW0gewog
cHVibGljOgotICAgIFdvcmtJdGVtKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgV29ya0l0ZW0oUmVmPFdvcmtR
dWV1ZT4mJiB3b3JrUXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAg
IDogbV93b3JrUXVldWUoV1RGTW92ZSh3b3JrUXVldWUpKQogICAgICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewpAQCAtNDQsMTIgKzQ0LDEyIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKLSAgICBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9m
dW5jdGlvbjsKIH07CiAKIGNsYXNzIFRpbWVyV29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW0gewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4gY3JlYXRl
KFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheU5hbm9TZWNvbmRzKQor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4gY3JlYXRlKFJlZjxXb3Jr
UXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBzdGQ6OmNo
cm9ubzo6bmFub3NlY29uZHMgZGVsYXlOYW5vU2Vjb25kcykKICAgICB7CiAgICAgICAgIEFTU0VS
VChkZWxheU5hbm9TZWNvbmRzLmNvdW50KCkgPj0gMCk7CiAgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4obmV3IFRpbWVyV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVl
dWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAx
MDAwMDAwMDAwLjAgKyBkZWxheU5hbm9TZWNvbmRzLmNvdW50KCkpKTsKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzRXhwaXJlZChkb3VibGUgY3VycmVudFRpbWVOYW5vU2Vj
b25kcykgY29uc3QgeyByZXR1cm4gY3VycmVudFRpbWVOYW5vU2Vjb25kcyA+PSBtX2V4cGlyYXRp
b25UaW1lTmFub1NlY29uZHM7IH0KIAogcHJvdGVjdGVkOgotICAgIFRpbWVyV29ya0l0ZW0oUmVm
PFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMpCisgICAgVGltZXJXb3Jr
SXRlbShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMpCiAgICAgICAgIDogV29ya0l0
ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgLCBtX2V4
cGlyYXRpb25UaW1lTmFub1NlY29uZHMoZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCmluZGV4IDQwZDE5MzlmY2Q0ZDBlZmE1Njg5
ZWIwMmVkOTk4NmE5ZDc4MjA1ODkuLmRhOTEzYmYwNGNlNzI3MzEwNzY3ZWY0Nzk0ZmRkMmI4Nzhh
NWY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVz
Y3JpcHRvcikKICAgICBtX2Rpc3BhdGNoUXVldWUtPmNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7
CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKIHsKICAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlz
cGF0Y2goc3RkOjptYWtlX3VuaXF1ZTxXb3JrSXRlbT4oKnRoaXMsIFdURk1vdmUoZnVuY3Rpb24p
KSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkdXJhdGlvbiwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRz
IGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmICghbV9k
aXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwCmluZGV4IDE3MWFkMzAyNzI2OTIyODZmMzJmMDk0OTJmNGYyODM3YTk3
YWI2YzUuLjI1YWU2ZjE5NWMzMmZiNDEyZTA1OTU4YzM1YjMzODk1OTMyNzQ4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAg
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4gewogV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxT
Y2hlZHVsZWRUYXNrPiBjcmVhdGUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHN0YXRpYyBSZWZQdHI8
U2NoZWR1bGVkVGFzaz4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJs
ZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNjaGVkdWxlZFRhc2soV1RGTW92ZShmdW5jdGlvbiksIGludGVydmFsLCByZXBlYXRp
bmcpKTsKICAgICB9CiAKLSAgICBTY2hlZHVsZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICBT
Y2hlZHVsZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBpbnRlcnZh
bCwgYm9vbCByZXBlYXRpbmcpCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9u
KSkKICAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihp
bnRlcnZhbCkpKQogICAgICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQpAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9u
OwogICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7
CiAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbDsKICAgICBzdGQ6
OmF0b21pYzxib29sPiBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZv
aWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzaz4gdGFzaykKICAgICB3YWtlVXAobG9ja2VyKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKICAgICBib29sIHJlcGVh
dGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5j
cHAKaW5kZXggN2Y4MGU2OWNhNWM3YzMwNmY5MDc3YzRmOWM4NTAzZWNjNmU1NDVjNy4uNWM3Yjli
NzY1NjY5NWRiNzZjZWNiYTc0NTM2MWM2MWViMmViMTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
ZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgV29ya1F1
ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIFJl
ZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CiAgICAgbV9ydW5Mb29wLT5kaXNwYXRjaChb
cHJvdGVjdCwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewpAQCAtODksNyArODksNyBA
QCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihz
dGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25v
OjpuYW5vc2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOwogICAgIG1fcnVuTG9vcC0+ZGlzcGF0
Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggODliN2Y3MDcwYzlkNDI4ZTdiOGZi
ODE3YTdmOWU3YjNhZGRmOWYxOC4uOTI3Y2UzMjU0ZjhiNTYyNzhiYTZiN2ZmMDIxYzBkZjBhYTVm
MzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBA
QCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiBjbGFzcyBEaXNwYXRjaEFmdGVyQ29udGV4dCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGlzcGF0Y2hBZnRlckNv
bnRleHQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQorICAgIERpc3Bh
dGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDog
bV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQpAQCAtMTM1LDEwICsx
MzUsMTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlv
bjsKIH07CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
K3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVy
YXRpb24sIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgR1JlZlB0cjxHU291
cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoc3RkOjpjaHJvbm86
OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLmNvdW50
KCkpKTsKICAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5M
b29wIGRpc3BhdGNoQWZ0ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3Jr
UXVldWVXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXgg
NzAzZWYwOWYyMTY5NjA4NjkzMGM0MTQ0MzhkYjNhMWIyODQ2OWQ1MC4uZjRjNGI4Yzc3ZGNlOTk1
ZjU3ZjI1NjcwMmMxZjljZWY4YzY1YTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L1dvcmtRdWV1ZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrT25SZWdpc3Rl
cmVkV29ya1RocmVhZCgpCiAgICAgbV9mdW5jdGlvblF1ZXVlTG9jay5sb2NrKCk7CiAKICAgICB3
aGlsZSAoIW1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uUXVldWU7CisgICAgICAgIFZlY3RvcjxG
dW5jdGlvbjx2b2lkICgpPj4gZnVuY3Rpb25RdWV1ZTsKICAgICAgICAgbV9mdW5jdGlvblF1ZXVl
LnN3YXAoZnVuY3Rpb25RdWV1ZSk7CiAKICAgICAgICAgLy8gQWxsb3cgbW9yZSB3b3JrIHRvIGJl
IHNjaGVkdWxlZCB3aGlsZSB3ZSdyZSBub3QgdXNpbmcgdGhlIHF1ZXVlIGRpcmVjdGx5LgpAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAgICA6
OkRlbGV0ZVRpbWVyUXVldWVFeChtX3RpbWVyUXVldWUsIDApOwogfQogCi12b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgIHJlZigpOwpA
QCAtMTE4LDcgKzExOCw3IEBAIHN0cnVjdCBUaW1lckNvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGltZXJDb250ZXh0PiB7CiAgICAgc3RhdGljIFJlZlB0cjxUaW1lckNvbnRl
eHQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lckNvbnRleHQpOyB9CiAKICAg
ICBXb3JrUXVldWUqIHF1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAgICAgTXV0ZXggdGltZXJN
dXRleDsKICAgICBIQU5ETEUgdGltZXI7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdvcmtR
dWV1ZTo6dGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0Rmly
ZWQpCiAgICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9u
bzo6bmFub3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBB
U1NFUlQobV90aW1lclF1ZXVlKTsKICAgICByZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmNwcAppbmRleCAxYjc3NGJmMzgzMGQ3OWQ1NmI1NTU2MDI2YzBiMDM1NTQyNDY4MjZi
Li43N2ExYjBmOTdjZGJmNjJiOTMwNDcxZWI4NjI2Y2E5MGQ5MDEwY2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJvb2wg
aGFzVW5hc3NvY2lhdGVkVHJhbnNjZWl2ZXJzKGNvbnN0IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0
cmFuc2NlaXZlcnMKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rp
b246OnJ1blRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit2b2lkIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRh
c2spCiB7CiAgICAgaWYgKG1fZHRsc0ZpbmdlcnByaW50LmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IE9ubHkgb25lIHRhc2sgbmVlZHMgdG8gYmUgZGVmZXJyZWQgc2luY2UgaXQgd2lsbCBob2xkIG9m
ZiBhbnkgb3RoZXJzIHVudGlsIGNvbXBsZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5oCmluZGV4IDAxN2Y5ZDQzYmYzNDU4NDljZjkyNWUzMDc4ODlhNjM2N2JmNWNmNDcuLjFmY2E3
ZjNjNDA5YjcwYjVlODdjMzcxMTBhNjNjNzg0OTRhMjI5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1
bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWdvdGlh
dGlvbk5lZWRlZCA9IGZhbHNlOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgcnVuVGFzayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKICAgICB2b2lkIHN0YXJ0UnVubmluZ1Rhc2tzKCk7CiAKICAgICB2b2lkIGNy
ZWF0ZU9mZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRl
c2NyaXB0aW9uUHJvbWlzZSYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFFbmRwb2ludD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CisgICAgRnVuY3Rpb248dm9pZCAoKT4g
bV9pbml0aWFsRGVmZXJyZWRUYXNrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNEUFByb2Nlc3Nv
cj4gbV9zZHBQcm9jZXNzb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjZmU4ZjE1ZWU0ODQ3NzhkMjRh
MDllODI0OTgxODViMDA3NjcxMzJlLi44OGE3ZjcxMTM2YzBkMzYxYmY3MjNlOTg3OGJhYmYzYWVl
ZjYwYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQXVkaW9J
T0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3Vy
Y2VQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksOSAr
NTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmlu
ZyYgaW5wdXREZXZpY2VJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5n
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRnVuY3Rpb248dm9p
ZCAoKT4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4m
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQog
CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAppbmRleCBhYzEzNzFlMmE1YTU3MzMzNmI0NjhjZTVhN2MxZjdmNTk3MjFkMmM5Li43Y2Vj
Y2JhMzk1MDUxMTg0YmE1ZDg5ODUyNGVlNGNkMTQwZmE2YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKCkKICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQo
KTsKIH0KIAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZShOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAg
QVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTEx
NSw3ICsxMTUsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbgogICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNw
ZW5kKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlh
bGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2
b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3RpbwogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
K3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgdW5pbml0
aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAwOWM5YjM4YjdmOTIyYjA1
MzIxNjc5ZTM1YjNjNjViZjE3NjE0ZjRmLi4zNWEwZGYxNmQzNDQ3ZWVhZjY5ZGE5NGI1N2ExOWZj
NTJlYzFmMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDkgKzUwLDkgQEAg
cHVibGljOgogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdm9pZCBlbmFibGVJbnB1
dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRS
ZW5kZXJpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc3VtZShOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2UoTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lk
ICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsK
ICAgICB1bnNpZ25lZCBsb25nIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDg2OWI2ZWFhODA0Zjc3
NDZhMDExMGU3NTI3ZGMxZDhhZDIyNjU2NmYuLmJiZjk2MzdlYzc0NWQ3NWZkYjAwNDJiMTFkNzFh
NWU1N2Y4NWIwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjc5OCw3ICsyNzk4LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRl
QmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBJ
REJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA0YzY3MGU2ZGMx
MTdiM2UwNWVmOTliYmI1NTFiMjgxNTZkMzdhNmZiLi41Mzg4YmIyNjc4YmRiNjA5NjQwMzA3Zjgw
ZGI3OGQyYTFhZmQzNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODcsNyArODcsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8U3RyaW5nPiBi
bG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0Zv
ckluZGV4ZWREQihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQlZhbHVlJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihGdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICBJREJWYWx1ZSB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgp
OwogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcAppbmRleCA3YWEyMjY5ZjRj
NWZlMTE3MzA4NjNjZjIxMzJmZmZkODI2OTIyZTY0Li42NmY1OTBhNDk3NWFlOTY4M2M2MWExNjE1
ZjI5YmQxZGQ3NGE3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
Q2FsbGJhY2tNaWNyb3Rhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01D
YWxsYmFja01pY3JvdGFzay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1BY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNy
b3Rhc2soTWljcm90YXNrUXVldWUmIHF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s6OkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1p
Y3JvdGFza1F1ZXVlJiBxdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgOiBBY3RpdmVET01DYWxs
YmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1fcXVldWUocXVldWUpCiAgICAg
LCBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrLmgKaW5kZXggZTExYzRkMDdhNGFhYTU0YjlkZmIzYjMxZDQxM2Mx
OTI1MDA4YmNiYS4uOGE3ZjdmNjM3MDgzM2ViMDc2MmYyY2NlZTI1NmMxMWUxNzZmZWU2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKQEAg
LTI3LDE0ICsyNywxNCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKICNpbmNs
dWRlICJNaWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2ssIHB1
YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWlj
cm90YXNrUXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90
YXNrKE1pY3JvdGFza1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2soKTsKIAogICAgIFJlc3VsdCBydW4oKSBvdmVycmlkZTsKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBiZSBhY2Nlc3NlZCB2aWEgdGhlIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHdoaWNoIHNob3VsZCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZWxldmVudAogICAg
IC8vIHF1ZXVlLgogICAgIE1pY3JvdGFza1F1ZXVlJiBtX3F1ZXVlOwotICAgIE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAppbmRleCBkYTU4ZTAwOTJmODU2MDA3MzZkMTIxNzVjNTY0MThlNTk2
Nzc0OGMxLi5jYjJlNmU4ZDQwZmNlYzIyNDkwMzE4ZmFmMWFjMmI5ZGQ4NTMwODY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMzLDggKzMzLDgg
QEAKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29s
ZVR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2Ny
aXB0VmFsdWU7CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAg
ICAgICBlbnVtIENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6
OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+
Ojp0eXBlPgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6
aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKFQgdGFzaykKICAgICAgICAgICAg
IDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhm
YWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgVGFzayhOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAgICAgICAgVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiYgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9KQogICAgICAgICAgICAgLCBtX2lz
Q2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19jb252ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxU
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46
OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFzaykKICAgICAgICAgICAg
IDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0
cnVlKQpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBU
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiBtX3Rhc2s7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA0YWU2
YzgwY2UzNGU3OTRlNWVjNjJkNzgyYzU4MTI4ZjE3NmQyZWE0Li45YTkzYTFiYjVmYTMxNTU1Y2Jh
NjI2MzkyNjhiYmE3MTIwZmY0Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0Zp
bGVTdHJlYW0uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjQsMTIgKzY0LDEyIEBAIGlubGluZSBBc3luY0ZpbGVTdHJlYW06
OkludGVybmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKICNlbmRpZgog
fQogCi1zdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1
ZXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+PiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQgKCk+Pj4gcXVldWU7CiAKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7CiAgICAgc3RkOjpj
YWxsX29uY2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3Rh
dGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShm
dW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFt
OjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTE0LDcgKzEx
NCw3IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiAgICAgfSk7CiB9CiAK
LXZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKE5vbmNvcHlhYmxlRnVuY3Rpb248c3RkOjpm
dW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJhdGlv
bikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248
dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7CiAg
ICAgYXV0byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwogICAgIGNhbGxPbkZpbGVUaHJlYWQo
WyZpbnRlcm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggMDg4YmIzNzc0NmY0NzU5ODJkNDcw
ODRkZjUwNjFmMTk3NmM2OTJlMS4uMzVlODVhN2ExNWRlMzM5NzdjNzdlNzQ2YWJhZDMwOGExOWNl
YmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBwZXJmb3JtKE5v
bmNvcHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4o
RmlsZVN0cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0oRnVuY3Rpb248c3RkOjpmdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVj
dCBJbnRlcm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYTMxMWRiMGVkYzRlNmIxZDVkNTUyNmRj
ZThiZTZmNWFhMDliYmEwMS4uNmVkNjhkZjAxMzlhOWIzNGQ5YjUxOWM3ZjA3MzI4OTllZTQ3YTVj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzE0MSw3ICszMTQxLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OmZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgIHVw
ZGF0ZUVtYmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnF1
ZXVlUG9zdExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxi
YWNrKQordm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSgpCiAgICAgaWYgKCFtX3Bvc3RMYXlvdXRD
YWxsYmFja1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gcXVldWUgPSBXVEZNb3ZlKG1fcG9zdExheW91dENhbGxi
YWNrUXVldWUpOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBxdWV1ZSA9IFdURk1vdmUo
bV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZSk7CiAgICAgZm9yIChhdXRvJiB0YXNrIDogcXVldWUp
CiAgICAgICAgIHRhc2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGY0NDQ5ZTUz
NDhlNTg3MzIyMjA5YmNhNjY2ZDQxYjZjMjgzMGRlMjkuLjg2MTEzODE4NzZjMzQ2N2IzMDdlYTQ4
NWE4MzVmZDlhOTIyODU1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzUsOSArMzUs
OSBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzY2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0
cmVlKFJlbmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwotICAg
IHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soRnVuY3Rpb248dm9pZCgpPiYm
KTsKICAgICBib29sIGxheW91dFBlbmRpbmcoKSBjb25zdDsKICAgICBib29sIGlzSW5MYXlvdXQo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dFBoYXNlICE9IE91dHNpZGVMYXlvdXQ7IH0KICAgICBi
b29sIGlzSW5SZW5kZXJUcmVlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSA9
PSBJblJlbmRlclRyZWVMYXlvdXQ7IH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKIAogICAgIElu
dFJlY3QqIG1fY2FjaGVkV2luZG93Q2xpcFJlY3QgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKKyAg
ICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKIH07
CiAKIGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eUNoYXJh
Y3RlckNvdW50KHVuc2lnbmVkIGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggNTc2MDc4M2RiOGNlMDAzNWM4ZWU0MDc4
YTU0NWY3MDVmZjYxMmRmNS4uNzMwYzBhNmJkOTNmNDU3OGQxZWRiZjlhY2UxY2Q4NjU2NmU2Yzk4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRU
aHJlYWQoKQogICAgIHJldHVybiB0aHJlYWRJZGVudGlmaWVyICYmIGN1cnJlbnRUaHJlYWQoKSA9
PSB0aHJlYWRJZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2go
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0
byYgc2Nyb2xsaW5nVGhyZWFkID0gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICBz
Y3JvbGxpbmdUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKICAgICBzY3JvbGxpbmdUaHJlYWQud2FrZVVwUnVuTG9vcCgpOwogfQog
Ci12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJh
cnJpZXIoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBkaXNwYXRjaChbZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAg
ICAgQVNTRVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+
PiBmdW5jdGlvbnM7CiAgICAgCiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX2Z1bmN0aW9uc011dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmgKaW5kZXggMDM3Zjk1YjkwYjYzYTlkZWIxMzFjMzgxYmQ5ZDMy
NDk5N2I1NDFlZC4uMjhkNTc1NWQ3ZGEyZDA5MzlhNDE5NTMyZmRjYTU0YzBjNThlZDI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAg
LTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Db25k
aXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OCwxMSArNDgsMTEgQEAg
Y2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKIAogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQ3Vy
cmVudFRocmVhZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoKE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICAvLyBXaWxsIGRpc3Bh
dGNoIHRoZSBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQgb25jZSBhbGwgcGVuZGlu
ZyBmdW5jdGlvbnMKICAgICAvLyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBoYXZlIGZpbmlzaGVk
IGV4ZWN1dGluZy4gVXNlZCBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFy
cmllcihGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJE
ZXN0cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsKIAogICAgIExvY2sgbV9mdW5jdGlvbnNN
dXRleDsKLSAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlv
bnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uczsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxv
b3AgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNr
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAK
aW5kZXggMGM2YzI0M2I4ZTA4Y2ExMmI4OTY2ZDlmYWFjY2RlNDIyMmY5MDEwNS4uMWFhN2UxYjg3
NjNmZjFiNDdkZmI4ZTIxMzk0MDc2NDVlYjc1NWViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgVGFza0Rpc3BhdGNo
ZXI8VGltZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CiAKLXZvaWQgVGFza0Rpc3BhdGNoZXI8
VGltZXI+Ojpwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
K3ZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24p
KTsKICAgICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobV93ZWFrUHRyRmFjdG9yeS5jcmVh
dGVXZWFrUHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJp
Y1Rhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5o
CmluZGV4IDRkODVjOWEwYjIxODQ5OGM2OTUxNDYxOTEwNmQzOGQwNzk5OTFhYmMuLmY1MGEzNjEz
OWYyZjc2ZTA0NTY3N2I2OTg1NWMwNWY1NWU0MmM2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
RnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQoKT4mJiBmKQorICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGYpCiAgICAg
ewogICAgICAgICBtX2NvbnRleHQucG9zdFRhc2soV1RGTW92ZShmKSk7CiAgICAgfQpAQCAtNTMs
NyArNTMsNyBAQCB0ZW1wbGF0ZTw+CiBjbGFzcyBUYXNrRGlzcGF0Y2hlcjxUaW1lcj4gewogcHVi
bGljOgogICAgIFRhc2tEaXNwYXRjaGVyKCk7Ci0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKQEAgLTYz
LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoT25lVGFzaygpOwogCiAgICAg
V2Vha1B0ckZhY3Rvcnk8VGFza0Rpc3BhdGNoZXI+IG1fd2Vha1B0ckZhY3Rvcnk7Ci0gICAgRGVx
dWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBEZXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKIH07CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5
cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+IFRhc2tGdW5jdGlvbjsKKyAgICB0eXBl
ZGVmIEZ1bmN0aW9uPHZvaWQoKT4gVGFza0Z1bmN0aW9uOwogCiAgICAgdm9pZCBlbnF1ZXVlVGFz
ayhUYXNrRnVuY3Rpb24mJiB0YXNrKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5k
ZXggODY5YTY4ZTk4ODZiMmQwYmY1OThiZTMwYTkyZGRmNjQ1ZGU5Mzc2OC4uMjBjOTQ2MDY1ODkx
ZjE1YTAwNTMyNTZmMDg1NTE2Yzk2MTUzMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgK
QEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygp
OwogICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVE
ZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAgICB2b2lkIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgZW51bSBEaXNw
bGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXgg
ODRjN2Q2MjMyNGY2NDcxMWUxNjVlNTI0M2RmODhmMjFhNTBlZDdlOS4uYWJmNDM3ZDM3MTY1ZmZl
ZTM2ZWIwN2QyY2FjNGZjZGI0ZDg1ZmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpA
QCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTCiAgICAgbV9wbGF5ZXIt
Pm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVByaXZhdGUuY3BwCmluZGV4IGQ0OWQxNTEyMTM5NjM4ODY0OWRlMTU3YzMwNDcxNzQ5M2Vi
ZmNjYmMuLjE4NzJjZDJjOGJjMzI5NTU4MzI2Y2ZmZjFkOTZmYTdlZDc1YTgyMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRl
Ojp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKICAgICB9KTsKIH0KIAotdm9p
ZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hl
ZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFT
U0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVX
ZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgK
aW5kZXggOTIzMDRlZmJkNjM0OWFjZjE5Njk3NTRmZjgyOGEwNmZhNDRjMGQzZi4uYWJmY2FiNmMw
MWViOTFhYWVjMTU4M2YxZDI5OGM1Mjc3OGE2ZDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTM5
LDkgKzM5LDkgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFj
aygpOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9p
ZCAoKT4mJik7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVN0cmVhbVByaXZhdGU+IG1fd2Vh
a1B0ckZhY3Rvcnk7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGY0NzRhZWI5YjdjNzNjYmM0YzgzNGMyZjFlYzkyYjU4
OWMxNDVjNjQuLjc0ZDdmZmMxZjI0ZjA4MTkzMjQwZmNlMDYzMTc4NWJkNjQ1ZjZlYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiR2Vu
ZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQq
KTsKICAgICB2b2lkIHNldEF1ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9E
YXRhT3V0cHV0Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVk
aWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDc2YWZkOWJiZTVhMDdlOWE3NThhYTQ1
YjhlN2M3ZTY1MWNiY2IzM2IuLmMyZDkyOGRlYjNlNmI1MDg5ODgyNTZiYzUzMzc1NzljZDlhZmM3
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2
b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFW
Q2FwdHVyZUF1ZGlvRGF0YU91dHB1dAogICAgIFthdWRpb091dHB1dCBzZXRTYW1wbGVCdWZmZXJE
ZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYUF1ZGlvQ2FwdHVyZVNlcmlh
bFF1ZXVlKCldOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVy
cmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIEFW
TWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5j
dGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eS5oCmluZGV4IDI3OTU3OWNmYmViYWFkMTVhZmIwNjM4ZTA5ZTJmNjRjMGE1N2ExZjYuLmUyMjVm
ZWM3NTQ5MDYwZWQxZDRjOTNlMTE2MjBkOWU5ZDM2NDJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzIsNyArMzIsNyBAQAogCiAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwCmluZGV4IDY4MDYwMzU0ZTdlNTBlYmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjgu
LmE2N2ZhY2Y3NWUwZmVjMjFkODRjMTZjYWY0YjY0ODI4YjZjMjBhZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAt
MjUyLDcgKzI1Miw3IEBAIHN0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcgewogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1
ZmZlcnM7CiB9OwogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0
b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRpbmc7CiAgICAgZm9yIChhdXRvJiB1
cmwgOiBibG9iVVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCA0NThjMDY1MDNhN2U2M2U5MjI2MTg4MTA4MWUzNDkw
MmE0YzdhYTU5Li4yMDM5N2U5ZWM5ZjQ0MTBmMTA4NTdjYTRiMjliNjUxMWViZTZjMjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggNzBhMWZhZWM1MmRm
YTgyOGJlYWU1OWNiYjNhZGQwNDU3MjNhNjZkNS4uMGMxOWM2MjBmMTRhNTQyMGNkOTU2YmNiYWUy
NWU3ZjRkNGM3YTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcApAQCAtNTMyLDEzICs1MzIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJl
c29sdmVyOjpyZXNvbHZlKENoYW5nZSBjaGFuZ2UpCiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRh
dGUpOwogfQogCi1zdGF0aWMgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBw
b3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKQorc3RhdGljIFZlY3RvcjxGdW5jdGlvbjx2b2lk
ICgpPj4mIHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tRdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gdmVjdG9yOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+PiB2ZWN0
b3I7CiAgICAgcmV0dXJuIHZlY3RvcjsKIH0KIAotdm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2Fs
bGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBxdWV1
ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKS5hcHBlbmQoV1RGTW92ZShjYWxsYmFj
aykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggM2Nl
NzA0NjI2NzQ1YTkzNmViNGNkYjViOThiYTc0MDc2MDhjMTUxNi4uZjc0NjZkMTQxNjg4ZWI0NjYw
OTI1N2VlMzNjYjcxYzdkY2U0ZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5oCkBAIC0zMiw5ICszMiw4IEBACiAjaW5jbHVkZSAiU3R5bGVDaGFuZ2UuaCIKICNp
bmNsdWRlICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgi
Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAs
NyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBtX3VwZGF0
ZTsKIH07CiAKLXZvaWQgcXVldWVQb3N0UmVzb2x1dGlvbkNhbGxiYWNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4mJik7Cit2b2lkIHF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayhGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIGJvb2wgcG9zdFJlc29sdXRpb25DYWxsYmFja3NBcmVTdXNwZW5k
ZWQoKTsKIAogYm9vbCBpc1BsYWNlaG9sZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggZTFhNGEx
NWRkZDdmMzQ3MTYxZTQ0NDMzNzFmYzQ3YjcyMjY4Zjk5NC4uZWRjOWViMzNjNTAzNTUyMGFjNTQy
ZDM1ZDBhNWJjYTIyZjljNzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdl
cjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIK
ICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVu
dGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6
OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
U3RvcmFnZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAppbmRleCA3NWE0ODZi
NjIwYzJiYjMxMmFlOGNkZjlkNTA2NGI0MDI2YmExZWM1Li44OWU2YjQzM2E1MWU2M2RlZTM5ZDc4
OWQxZDhlNWJhNWIzYjJkNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VT
eW5jTWFuYWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgflN0b3JhZ2VTeW5j
TWFuYWdlcigpOwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9p
ZCBjbG9zZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwCmluZGV4IDI5NjZlMDQwNmUxNzA0ZjIyMGM1MWMyNmRlNzhkMDgyMTQyNmM2MDkuLjBiNmVk
MDc2ZmZmNTVhMTFkOTE2YmRlNTk5ZGNkNWJjMDFlOGUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCB2b2lkIFN0b3JhZ2VUaHJl
YWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogICAgIH0KIH0KIAotdm9pZCBTdG9yYWdlVGhyZWFkOjpk
aXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFN0
b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkg
JiYgbV90aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVl
dWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVu
Y3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJl
YWRJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAg
ICAgIHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgd2FpdEZvclRocmVhZENvbXBs
ZXRpb24obV90aHJlYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRl
eCA0NzUyZDViMTllMWIwNmNhYTllN2VlZDg4NDRiNDlkNWYzZmNiZmEyLi4zZjFiODg0NWI2ZjNm
ZDdjZmU4NzE4MDJjZWE0N2QxMGNiMTQwODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmgKQEAgLTI2LDEwICsyNiw5IEBACiAjaWZuZGVmIFN0b3JhZ2VUaHJlYWRfaAogI2Rl
ZmluZSBTdG9yYWdlVGhyZWFkX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TWVzc2FnZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHRlcm1pbmF0ZSgp
OwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOwor
ICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIApAQCAtNTksNyAr
NTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgpOwogCiAgICAgVGhy
ZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxGdW5jdGlvbjx2b2lk
ICgpPj4gbV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IGQzNGQ4NDIwNTk1ZGQ1OWViYWUyZGY3YjY4MTYwMWNiZDA3MTZi
YTAuLjhkY2YxYmUzY2NkZmQ1MDhjMWJmNGQ5ZWE2YjIxNzVmYTE2ZDM5NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9i
UmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0
aW9uCiAgICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKaW5kZXggYTIwMTY5YTkxYmJlZWNkNDZkY2I4NzZiZDA5YjJmODQ3MGRmZGQ4OS4u
NzQwNmEzY2I1ZTY3N2UyZjNmZmJhYTc0YjgzMGY2NmQyZmE0YWYwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKQEAgLTI3LDEwICsyNyw5IEBACiAjZGVmaW5lIE5ldHdvcmtCbG9iUmVnaXN0cnlf
aAogCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpA
QCAtNTUsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyos
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHVpbnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IGRiYTJj
ODhkOTFhMmNkYjQwMGEwNDg2MDJjMmEwY2QwOTNlZGFlMjUuLmQ1NDZkOTE0ZmZlMzUyYmMxNDcx
Nzk2MzhlNzNhMjIyZGI3NzM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMs
OSArNjMsOSBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ewogICAgIFJlamVjdFByb3RlY3Rpb25TcGFjZQogfTsKICAgICAKLXR5cGVkZWYgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyOwotdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKLXR5cGVkZWYgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik+IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZChX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogCiBjbGFz
cyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGI0Mjg4ZjVlMDdjNDNmMTZh
YWQyNDI5ZjU2NzI0NDRiZjczYWRlMmYuLmI4NzE4MTBhOTdkYjlkMGY3NWRhMDQ4MGM1OTA3Y2Mx
OWU1NTY1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFNlc3Np
b25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRi
b3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCkBAIC0zMDgsNyArMzA4LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQ
cm9jZXNzRm9yQmxvYnModWludDY0X3QKICAgICAgICAgaGFuZGxlcigpOwogfQogCi1zdGF0aWMg
dm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CitzdGF0aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248
dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmds
ZXRvbigpLmlzRW5hYmxlZCgpKSB7CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgZmV0
Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENh
bGxiYWNrQWdncmVnYXRvcihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9y
KEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAg
ICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGEKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAg
ICAgIEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAg
ICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKICAgICB9OwogCkBAIC00MTIsNyArNDEy
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
fQogCi1zdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBp
ZiAoTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggY2I4MDA5ZWQ0NzY0
NDNlMGI3NGNiYTFhOTJjMGQ0ZDJmZWQ0OWMwZC4uZjIxODEyNzM3M2U0YzdkZTFhYWE1OTY0MjBh
YzY5ODY3N2ExZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklE
KTsKIAotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiBwcml2
YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1l
bnRzOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgp
Pj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBhOTMwYTcwNjBjZDAwNGNlYzQ0YzEw
MjY4ZjQ5YmMxZjY5YmQzMDRiLi4yZjQ4MTM0YTY0ZTgwOGE0ZjdjNzM5NmNjMzc5YTgzYmFkMzNk
M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1l
SQogICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0
YSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBDYWNoZTo6cmVtb3ZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZW1vdmUobWFrZUNhY2hlS2V5KHJlcXVl
c3QpKTsKIH0KIAotdm9pZCBDYWNoZTo6dHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKK3ZvaWQgQ2FjaGU6
OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVy
c2VIYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggNThmMGM2
ZDYzN2U1ZDNmMGJlNjJlMmY3ZDRkNGMwNGZlMDhkNjMyOC4uMzlkNzYwODk3MWM1OTkxZjdmYWNk
ZTRjZDE0ZDRiMTUwMzgxMzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDYsNyArMTA2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29tcGxldGlvbiBoYW5kbGVyIG1heSBnZXQgY2FsbGVk
IGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgogICAgIHZvaWQgcmV0cmlldmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZh
bGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IEVudHJ5JiBlbnRyeTsKICAgICAgICAgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYg
cmVjb3JkSW5mbzsKICAgICB9OwotICAgIHZvaWQgdHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsKKyAgICB2b2lkIHRyYXZlcnNlKEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3Zl
KGNvbnN0IEtleSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDhjOTFjOWVj
Njc1ODgyMmM2YjMwZjVmYjQwYjgyYzFjNjQ4ZDRlZjEuLjg0Yjk0OTc5NmY0N2UxNWIzY2JmZTRl
MjkwMzY4NzcxMmQxZDc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIFJlZjxJT0NoYW5uZWw+IElPQ2hhbm5lbDo6b3Blbihjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUgdHlwZSkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJT0NoYW5uZWwoZmlsZVBhdGgsIHR5cGUpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk
IHJ1blRhc2tJblF1ZXVlKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrLCBXb3Jr
UXVldWUqIHF1ZXVlKQorc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVlKEZ1bmN0aW9u
PHZvaWQgKCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKIHsKICAgICBpZiAocXVldWUpIHsK
ICAgICAgICAgcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CmluZGV4IDgzYmE2Yzc1YmFmOGEyZjJmMDBhZjdkMDJmOGY2YWU3YWNjMTViM2YuLjE0NWY4OTY3
OWMxNGY0YWFlZTRmNDFjODIyNTY2NTY0MjExMjdjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAg
LTM0LDggKzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Jsb29tRmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxib29sIChzdGQ6OnVu
aXF1ZV9wdHI8UmVjb3JkPik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgdm9pZCBy
ZXRyaWV2ZShjb25zdCBLZXkmLCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlciYmKTsKIAotICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25z
dCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CisgICAgdHlwZWRlZiBGdW5j
dGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CiAg
ICAgdm9pZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYmKTsKIAogICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNoYXJlQ291bnQgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRy
YXZlcnNlRmxhZ3M7Ci0gICAgdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFJlY29yZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJhdmVyc2VIYW5kbGVyOworICAgIHR5cGVk
ZWYgRnVuY3Rpb248dm9pZCAoY29uc3QgUmVjb3JkKiwgY29uc3QgUmVjb3JkSW5mbyYpPiBUcmF2
ZXJzZUhhbmRsZXI7CiAgICAgLy8gTnVsbCByZWNvcmQgc2lnbmFscyBlbmQuCiAgICAgdm9pZCB0
cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNlRmxhZ3MsIFRyYXZlcnNlSGFuZGxl
ciYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggOTBmOTQwYTc1NzJjNDEwYmMyOWYwMjkyZDg1YzA0
N2VkYTVmOWMxMC4uZWQwNDBlNWVkZWI1Nzk1YWRkNzVlYWM5ZmU2N2U2ZmNlZDc3NzI1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVn
aXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNp
emU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
LmgKaW5kZXggNThkM2FiZGVlYTVlMjNhNmYyMmY2NmE5OTAyZmE3ZGQxNWI2ZDc3My4uODM1M2Zh
NzgyOWU0ZWVmNTkxNGFhMjhhN2JhY2YyZTc0OWRiZmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxv
YlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJp
ZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDNjODNhNDczMzgz
YWE1ZDkyZjY3N2I0ODU2OThkOWQ5NDc5Zjc3YjIuLjhmNzdhYmI2YmVmMDY5MjQzY2VlZDMxNTFl
NjQzYzIzNzE0YjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04NSw3ICs4
NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0X3Qgd3Jp
dGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9
ICsrd3JpdGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCA3N2I1NGRhNGJkMTAyZTlkNTBkNDM5MzUxMDg5YTI3NWM0OTM5YTRiLi5lZjhlMGZiYWU0OWY3
MmEwNzllY2Y0OGZlYTlkZTQxYTJmMWFjM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsg
cHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPj4g
bV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282002</attachid>
            <date>2016-06-24 11:30:10 -0700</date>
            <delta_ts>2016-06-24 12:36:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158354-20160624113010.patch</filename>
            <type>text/plain</type>
            <size>87048</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlNmJhOTcxYzIzOTdmNWZlZGZkZTU0
ZjA4ZDBjYTdlMzFjNGU5MjcuLjg4OGJhMDgzMWFkODI3Y2RjMmI1NGJmZDA3OTUwNjAwZGY2ZGFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlvbiB0
byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJlYWRU
YXNrKToKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYv
d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjpmdW5j
dGlvblF1ZXVlKToKKyAgICAgICAgKFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVh
ZCk6CisgICAgICAgIChXVEY6OmNhbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWlu
VGhyZWFkLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAg
ICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgorICAgICAgICAo
V29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZs
L1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6
CisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4
dCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0
Zi93aW4vV29ya0l0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6V29ya0l0
ZW1XaW4pOgorICAgICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a0l0ZW1XaW4uaDoKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmZ1bmN0aW9uKToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorCiAy
MDE2LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAK
ICAgICAgICAgQWRkIHN5c3RlbSB0cmFjaW5nIHBvaW50cyBmb3IgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgd29ya2Zsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDViOGU0YzA1OWZlYTdhODUwZWYyZmJlOWZj
MTczMGVhOGYzNmNhLi5iN2VhNjZkZjI3YmFhOTkzNDViNGYwZTkzM2M4YjAyMWQ0NDA1ZDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9uY29weWFibGVGdW5jdGlv
biB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJ1blRh
c2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAq
IGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybSk6CisgICAgICAgICogZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNj
cm9sbGluZ1RocmVhZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hl
cjo6cG9zdFRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2spOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OnF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKwogMjAxNi0wNi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2VwdGlvbiBpcyBub3QgdGhyb3duIHdoZW4gc2hp
cHBpbmcgbWV0aG9kIGlzIGFuIGludmFsaWQgYW1vdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUxYjhlODk2M2Ey
YWMyODA5M2Y1NDNjZWVmYjYzODZhY2NmNzFlNDUuLmM2MTZkYTA1NGVjNTI5MGQ4ZTZmMjQ5MzI4
YTc1MWUzNjBmZjlmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMjEgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9u
Y29weWFibGVGdW5jdGlvbiB0byBGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE2LTA2LTIwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ3Y2Y3
ODhjMTcwYzQ2YmM0ZDczZDQzMzVjYTgyNmE2ZjAzNzk1Ni4uNzM5MDMyOTA0M2JhNmRjMmQ2NzNm
NTliNGQ3Y2M1MDBmNDhmN2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA2
LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVu
YW1lIE5vbmNvcHlhYmxlRnVuY3Rpb24gdG8gRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cnVuVGFza0luUXVldWUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKwogMjAxNi0w
Ni0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBsb2dn
aW5nIHJlbGF0ZWQgdG8gcHJvY2VzcyBhc3NlcnRpb25zIHRvIGhlbHAgZGVidWcgcHJvY2VzcyBz
dXNwZW5zaW9uIGlzc3VlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZmNlM2JhZTc5NTMxNzQ2NWNmOWNkZmE5YTIyODlmZjYwMDZjNjQwNi4uNDM0ZjY2ZTMz
ZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTksNyArMTE5LDcgQEAKIAkJN0UyOUMzM0UxNUZGRDc5
QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1
bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0
MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIw
OTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9
OwotCQk4M0YyQkFERjFDRjk1MjRFMDAzRTk5QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCAqLzsgfTsKKwkJODNGMkJBREYx
Q0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyQkFERTFDRjk1MjRFMDAzRTk5QzMgLyogRnVuY3Rpb24u
aCAqLzsgfTsKIAkJODNGQkE5MzIxOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQkE5MzExOURGNDU5
NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovOyB9OwogCQk4NkY0NkY2MTFBMjg0MEVFMDBDQ0JG
MjIgLyogUmVmQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLzsgfTsK
IAkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovOyB9OwpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAJ
CTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpjUnVudGltZUV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNl
NjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzRjJCQURFMUNGOTUyNEUwMDNFOTlDMyAvKiBOb25jb3B5
YWJsZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmNvcHlh
YmxlRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNGMkJBREUxQ0Y5
NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlE
RjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZUNhc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RjQ2RjVG
MUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5
MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU3RyaW5nVmlld09iakMubW07IHBhdGggPSBtYWMv
U3RyaW5nVmlld09iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDMsNiAr
ODQzLDcgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAog
CQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCisJCQkJODNGMkJB
REUxQ0Y5NTI0RTAwM0U5OUMzIC8qIEZ1bmN0aW9uLmggKi8sCiAJCQkJMUExRDhCOUQxNzMxODc5
ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJMUExRDhCOUIxNzMx
ODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oICovLAogCQkJCUE4QTQ3MkE4MTUx
QTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKQEAgLTg4OSw3ICs4OTAsNiBAQAogCQkJCTFB
M0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJCTBGMEQ4
NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVC
MDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKLQkJCQk4M0YyQkFERTFDRjk1MjRFMDAzRTk5
QzMgLyogTm9uY29weWFibGVGdW5jdGlvbi5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQx
MjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0NzJENjE1MUE4MjVCMDA0MTIz
RkYgLyogTnVtYmVyT2ZDb3Jlcy5oICovLAogCQkJCTdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAv
KiBPYmpjUnVudGltZUV4dHJhcy5oICovLApAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIAkJCQlBOEE0
NzNEOTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNEQTE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczREIxNTFBODI1QjAwNDEyM0ZGIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJODNGMkJBREYxQ0Y5NTI0RTAwM0U5OUMzIC8qIE5vbmNvcHlhYmxlRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTgzRjJCQURGMUNGOTUyNEUwMDNFOTlDMyAvKiBGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzYxQzAwMEQ0MDAwODFENjYzIC8qIEluZGV4U3Bh
cnNlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNEQzE1MUE4MjVCMDA0MTIzRkYgLyog
SW5saW5lQVNNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NDE3OTlGMDREMDA1MjlBOUIg
LyogSW5zZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKaW5k
ZXggYjRlOTZjNGM1OWI3ZDBlNzZkNDFmODUxYTAwY2VlNWNhNzQ4YzhlNC4uMGE2NmVjMTdmN2Fk
NGE5NTk4NDNjZWNjNTQ3ZjljY2IwMzAxZTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDcm9zc1RocmVhZFRhc2sgewog
cHVibGljOgogICAgIENyb3NzVGhyZWFkVGFzaygpID0gZGVmYXVsdDsKIAotICAgIENyb3NzVGhy
ZWFkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFza0Z1bmN0aW9uKQorICAg
IENyb3NzVGhyZWFkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlvbikKICAgICAg
ICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlvbikpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV90YXNrRnVuY3Rpb24pOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tG
dW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM5NTg1NjIzOGU0N2M1
ZDhiMzhkODYxYzBiZjcxZGJlZDhiZGNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZ1bmN0aW9uOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4KK2NsYXNzIEZ1bmN0aW9uPE91
dChJbi4uLik+IHsKK3B1YmxpYzoKKyAgICBGdW5jdGlvbigpID0gZGVmYXVsdDsKKyAgICBGdW5j
dGlvbihzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJs
ZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVm
ZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgorICAgIEZ1bmN0aW9uKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUp
KSkKKyAgICB7CisgICAgfQorCisgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAobV9jYWxsYWJsZVdyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4g
bV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOworICAgICAg
ICByZXR1cm4gT3V0KCk7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CisgICAgRnVu
Y3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKKyAgICB7CisgICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2Fs
bGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7Cisg
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5DYWxsYWJsZVdyYXBwZXJCYXNlKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCBPdXQgY2Fs
bChJbi4uLikgPSAwOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5
cGU+CisgICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyIDogcHVibGljIENhbGxhYmxlV3JhcHBlckJh
c2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FsbGFibGVXcmFwcGVyKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQorICAgICAgICAgICAgOiBtX2NhbGxhYmxlKFdURk1vdmUoY2Fs
bGFibGUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsYWJsZVdyYXBwZXIo
Y29uc3QgQ2FsbGFibGVXcmFwcGVyJikgPSBkZWxldGU7CisgICAgICAgIENhbGxhYmxlV3JhcHBl
ciYgb3BlcmF0b3I9KGNvbnN0IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOworCisgICAgICAg
IE91dCBjYWxsKEluLi4uIGluKSBmaW5hbCB7IHJldHVybiBtX2NhbGxhYmxlKHN0ZDo6Zm9yd2Fy
ZDxJbj4oaW4pLi4uKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FsbGFibGVUeXBlIG1f
Y2FsbGFibGU7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYWJsZVdyYXBwZXJC
YXNlPiBtX2NhbGxhYmxlV3JhcHBlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OkZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25EaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaAppbmRleCBiNTJl
ZWNmMWViZjI2OWE0MDYwOGJhMmE4Njc1YTc1MWQzODM0ODYwLi4zNDRhMTYwMjA4NDBmNWNkNDUw
OWQ3Y2UzNjRkNzM3ZDQ5OGVlNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlv
bkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaApA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBGdW5jdGlvbkRpc3BhdGNoZXJfaAogCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnVuY3Rpb25E
aXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uRGlzcGF0Y2hl
cj4gewogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5GdW5jdGlvbkRp
c3BhdGNoZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEZ1
bmN0aW9uRGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVh
ZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCBiZDExZTEwYzJkNTEy
OTMxY2ExNjE3NWMxOTlkMWRlMTcxZDc1NWVmLi42ZDQyYzRmZGJkYWRlMmIwMTc4MTNiYTQ0NzBk
ZDJjZGRhYTc1ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNDcsOSArNDcsOSBAQCBzdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKIAogc3RhdGljIFN0YXRp
Y0xvY2sgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKIAotc3RhdGljIERlcXVlPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBmdW5jdGlvblF1ZXVlKCkKK3N0YXRpYyBEZXF1ZTxG
dW5jdGlvbjx2b2lkICgpPj4mIGZ1bmN0aW9uUXVldWUoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxEZXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gZnVuY3Rpb25RdWV1
ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8RnVuY3Rpb248dm9pZCAoKT4+PiBm
dW5jdGlvblF1ZXVlOwogICAgIHJldHVybiBmdW5jdGlvblF1ZXVlOwogfQogCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIAogICAgIGF1
dG8gc3RhcnRUaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKLSAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewpAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpCiAgICAgfQog
fQogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQordm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5oIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCmluZGV4IGYx
OWY1NTkwMTlkYjc5NzUwYjVmOGJkZWNlYjU5ZWZlZmRkYWU1ZTEuLjk0YzcwYzY2ZDZkODMyYmM5
ZjUzNGUwMjA4MWFkNjBmZmU1M2QyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTQxLDcgKzQxLDcgQEAgdHlwZWRlZiB1aW50MzJfdCBU
aHJlYWRJZGVudGlmaWVyOwogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQodm9p
ZCAoXmJsb2NrKSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWVjMzYwNWQ3ZTM5MjIzNTZkNzRiMWMwNDMyNjJiODg1ZjBk
ODFjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgTm9uY29weWFibGVGdW5jdGlvbjsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+Ci1jbGFzcyBOb25jb3B5YWJsZUZ1bmN0aW9uPE91dChJ
bi4uLik+IHsKLXB1YmxpYzoKLSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKCkgPSBkZWZhdWx0Owot
ICAgIE5vbmNvcHlhYmxlRnVuY3Rpb24oc3RkOjpudWxscHRyX3QpIHsgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4K
LSAgICBOb25jb3B5YWJsZUZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAg
ICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENh
bGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKLSAgICB7Ci0gICAgfQotCi0gICAgT3V0
IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9jYWxsYWJs
ZVdyYXBwZXIpCi0gICAgICAgICAgICByZXR1cm4gbV9jYWxsYWJsZVdyYXBwZXItPmNhbGwoc3Rk
Ojpmb3J3YXJkPEluPihpbikuLi4pOwotICAgICAgICByZXR1cm4gT3V0KCk7Ci0gICAgfQotCi0g
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdy
YXBwZXI7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVU
eXBlJiY+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgTm9uY29weWFibGVGdW5jdGlvbiYgb3BlcmF0b3I9
KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQotICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBOb25j
b3B5YWJsZUZ1bmN0aW9uJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCi0gICAgewotICAgICAg
ICBtX2NhbGxhYmxlV3JhcHBlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgQ2FsbGFibGVXcmFwcGVyQmFzZSB7Ci0gICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+
Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQotCi0gICAgICAgIHZpcnR1YWwgT3V0IGNhbGwoSW4u
Li4pID0gMDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlPgot
ICAgIGNsYXNzIENhbGxhYmxlV3JhcHBlciA6IHB1YmxpYyBDYWxsYWJsZVdyYXBwZXJCYXNlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5
cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgICAgIDogbV9jYWxsYWJsZShXVEZNb3ZlKGNhbGxhYmxl
KSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQ2FsbGFibGVXcmFwcGVyKGNvbnN0
IENhbGxhYmxlV3JhcHBlciYpID0gZGVsZXRlOwotICAgICAgICBDYWxsYWJsZVdyYXBwZXImIG9w
ZXJhdG9yPShjb25zdCBDYWxsYWJsZVdyYXBwZXImKSA9IGRlbGV0ZTsKLQotICAgICAgICBPdXQg
Y2FsbChJbi4uLiBpbikgZmluYWwgeyByZXR1cm4gbV9jYWxsYWJsZShzdGQ6OmZvcndhcmQ8SW4+
KGluKS4uLik7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhbGxhYmxlVHlwZSBtX2NhbGxh
YmxlOwotICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGFibGVXcmFwcGVyQmFzZT4g
bV9jYWxsYWJsZVdyYXBwZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RG
OjpOb25jb3B5YWJsZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAppbmRleCA5NjYwZjE1MTRlNWYwOTgx
ODYyOTk4ZjgxNzQxNzM2MDA5NjI0YTY3Li4zYjAyNjdlOTcxYjkwZjFmM2ZlYzhhYmFiOWU4NjJk
ZGIwZjdhMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJ1bkxvb3A6
OnBlcmZvcm1Xb3JrKCkKIAogICAgIHNpemVfdCBmdW5jdGlvbnNUb0hhbmRsZSA9IDA7CiAgICAg
ewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOworICAgICAg
ICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAgICAgewogICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgICAgICAgICAgZnVuY3Rp
b25zVG9IYW5kbGUgPSBtX2Z1bmN0aW9uUXVldWUuc2l6ZSgpOwpAQCAtMTA2LDcgKzEwNiw3IEBA
IHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGZ1
bmN0aW9uc0hhbmRsZWQgPSAxOyBmdW5jdGlvbnNIYW5kbGVkIDwgZnVuY3Rpb25zVG9IYW5kbGU7
ICsrZnVuY3Rpb25zSGFuZGxlZCkgewotICAgICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+IGZ1bmN0aW9uOworICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKICAgICAg
ICAgewogICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2sp
OwogCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAg
fQogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKIHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0
aW9uUXVldWVMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBlMTU1OGI2MjU5YzI3ZjBmNzA5MDE1ZWQ1OWMx
NTJiOTg2NTUzNWQ1Li4zNjExZDdhMzljYjU5Y2MwZjQ4ZThiMTdkYmIyYmUyNjY5YTk0ZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgaXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKTsKIAotICAgIHZvaWQgZGlz
cGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHJ1bigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHN0b3AoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR0xJ
Ql9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBGdW5jdGlvbjx2b2lkICgp
PiYmKTsKICNlbmRpZgogCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKQEAgLTE1NSw3ICsxNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKIAogICAgIE11dGV4IG1fZnVuY3Rp
b25RdWV1ZUxvY2s7Ci0gICAgRGVxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9m
dW5jdGlvblF1ZXVlOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVl
dWU7CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogICAgIHN0YXRpYyBib29sIHJlZ2lz
dGVyUnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCA2YWM4NmY2
OWY3NDQwODdkZDZhZDUzYWVkYzRkNTI0NDc5MGZiMjJjLi41YWMzMmY4YzY5ZWJlNjFhZmRlYWNj
YWI5N2Q0ZTE3NGU3ZjZjNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0
KTsKICAgICB2aXJ0dWFsIH5Xb3JrUXVldWUoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJikgb3ZlcnJpZGU7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2xhdGlsZSBMT05HIG1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZDsKIAog
ICAgIE11dGV4IG1fZnVuY3Rpb25RdWV1ZUxvY2s7Ci0gICAgVmVjdG9yPE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9p
ZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKIAogICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CiAjZWxp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCmluZGV4IDk5NWE5NTRhYWMxZGI3NDEzM2Rl
OWNmYjk0ZjE5NDhjOTQxMjc0MTYuLmZkYmVmNzNiYWVjMTZhYzU0MmNmYTY0ZTBmYjRmY2M3MzNh
ZTgyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKQEAgLTI4LDEw
ICsyOCwxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNo
KE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVl
OjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIHJlZigpOwot
ICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4o
V1RGTW92ZShmdW5jdGlvbikpOworICAgIGF1dG8qIGZ1bmN0aW9uUHRyID0gbmV3IEZ1bmN0aW9u
PHZvaWQgKCk+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3Bh
dGNoUXVldWUsIF57CiAgICAgICAgICgqZnVuY3Rpb25QdHIpKCk7CiAgICAgICAgIGRlbGV0ZSBm
dW5jdGlvblB0cjsKQEAgLTM5LDEwICszOSwxMCBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2go
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVy
YXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwg
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICByZWYoKTsKLSAgICBhdXRvKiBm
dW5jdGlvblB0ciA9IG5ldyBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+KFdURk1vdmUoZnVu
Y3Rpb24pKTsKKyAgICBhdXRvKiBmdW5jdGlvblB0ciA9IG5ldyBGdW5jdGlvbjx2b2lkICgpPihX
VEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgZHVyYXRpb24uY291bnQoKSksIG1fZGlzcGF0Y2hRdWV1ZSwgXnsKICAg
ICAgICAgKCpmdW5jdGlvblB0cikoKTsKICAgICAgICAgZGVsZXRlIGZ1bmN0aW9uUHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oIGIv
U291cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oCmluZGV4IDNkZGZl
NTdkZTZhM2RmZjNmZjg4NTFmMGQwMmEyOGYwMDFlMzY2NTQuLjE2MmJhYjQyYThiNDg4Yjc3ZmRj
NTE5NmZkNjQ5ZDcxMmRjYWYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNw
YXRjaFF1ZXVlV29ya0l0ZW1FZmwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hR
dWV1ZVdvcmtJdGVtRWZsLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogY2xhc3MgV29ya0l0ZW0gewog
cHVibGljOgotICAgIFdvcmtJdGVtKFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgV29ya0l0ZW0oUmVmPFdvcmtR
dWV1ZT4mJiB3b3JrUXVldWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAg
IDogbV93b3JrUXVldWUoV1RGTW92ZSh3b3JrUXVldWUpKQogICAgICAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewpAQCAtNDQsMTIgKzQ0LDEyIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKLSAgICBOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9m
dW5jdGlvbjsKIH07CiAKIGNsYXNzIFRpbWVyV29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW0gewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4gY3JlYXRl
KFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheU5hbm9TZWNvbmRzKQor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4gY3JlYXRlKFJlZjxXb3Jr
UXVldWU+JiYgd29ya1F1ZXVlLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uLCBzdGQ6OmNo
cm9ubzo6bmFub3NlY29uZHMgZGVsYXlOYW5vU2Vjb25kcykKICAgICB7CiAgICAgICAgIEFTU0VS
VChkZWxheU5hbm9TZWNvbmRzLmNvdW50KCkgPj0gMCk7CiAgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXJXb3JrSXRlbT4obmV3IFRpbWVyV29ya0l0ZW0oV1RGTW92ZSh3b3JrUXVl
dWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKiAx
MDAwMDAwMDAwLjAgKyBkZWxheU5hbm9TZWNvbmRzLmNvdW50KCkpKTsKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzRXhwaXJlZChkb3VibGUgY3VycmVudFRpbWVOYW5vU2Vj
b25kcykgY29uc3QgeyByZXR1cm4gY3VycmVudFRpbWVOYW5vU2Vjb25kcyA+PSBtX2V4cGlyYXRp
b25UaW1lTmFub1NlY29uZHM7IH0KIAogcHJvdGVjdGVkOgotICAgIFRpbWVyV29ya0l0ZW0oUmVm
PFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMpCisgICAgVGltZXJXb3Jr
SXRlbShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbiwgZG91YmxlIGV4cGlyYXRpb25UaW1lTmFub1NlY29uZHMpCiAgICAgICAgIDogV29ya0l0
ZW0oV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgLCBtX2V4
cGlyYXRpb25UaW1lTmFub1NlY29uZHMoZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCmluZGV4IDQwZDE5MzlmY2Q0ZDBlZmE1Njg5
ZWIwMmVkOTk4NmE5ZDc4MjA1ODkuLmRhOTEzYmYwNGNlNzI3MzEwNzY3ZWY0Nzk0ZmRkMmI4Nzhh
NWY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVz
Y3JpcHRvcikKICAgICBtX2Rpc3BhdGNoUXVldWUtPmNsZWFyU29ja2V0RXZlbnRIYW5kbGVyKCk7
CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKIHsKICAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlz
cGF0Y2goc3RkOjptYWtlX3VuaXF1ZTxXb3JrSXRlbT4oKnRoaXMsIFdURk1vdmUoZnVuY3Rpb24p
KSk7CiB9CiAKLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkdXJhdGlvbiwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRz
IGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIGlmICghbV9k
aXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVu
TG9vcEdlbmVyaWMuY3BwCmluZGV4IDE3MWFkMzAyNzI2OTIyODZmMzJmMDk0OTJmNGYyODM3YTk3
YWI2YzUuLjI1YWU2ZjE5NWMzMmZiNDEyZTA1OTU4YzM1YjMzODk1OTMyNzQ4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAg
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4gewogV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxT
Y2hlZHVsZWRUYXNrPiBjcmVhdGUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHN0YXRpYyBSZWZQdHI8
U2NoZWR1bGVkVGFzaz4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJs
ZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNjaGVkdWxlZFRhc2soV1RGTW92ZShmdW5jdGlvbiksIGludGVydmFsLCByZXBlYXRp
bmcpKTsKICAgICB9CiAKLSAgICBTY2hlZHVsZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbiwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICBT
Y2hlZHVsZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24sIGRvdWJsZSBpbnRlcnZh
bCwgYm9vbCByZXBlYXRpbmcpCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9u
KSkKICAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihp
bnRlcnZhbCkpKQogICAgICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQpAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9u
OwogICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7
CiAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbDsKICAgICBzdGQ6
OmF0b21pYzxib29sPiBtX2lzQWN0aXZlIHsgdHJ1ZSB9OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZv
aWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzaz4gdGFzaykKICAgICB3YWtlVXAobG9ja2VyKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0
ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlv
bikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKICAgICBib29sIHJlcGVh
dGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVl
dWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5j
cHAKaW5kZXggN2Y4MGU2OWNhNWM3YzMwNmY5MDc3YzRmOWM4NTAzZWNjNmU1NDVjNy4uNWM3Yjli
NzY1NjY5NWRiNzZjZWNiYTc0NTM2MWM2MWViMmViMTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
ZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgV29ya1F1
ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIFJl
ZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CiAgICAgbV9ydW5Mb29wLT5kaXNwYXRjaChb
cHJvdGVjdCwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewpAQCAtODksNyArODksNyBA
QCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQogICAgIH0pOwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihz
dGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25v
OjpuYW5vc2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOwogICAgIG1fcnVuTG9vcC0+ZGlzcGF0
Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291cmNl
L1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggODliN2Y3MDcwYzlkNDI4ZTdiOGZi
ODE3YTdmOWU3YjNhZGRmOWYxOC4uOTI3Y2UzMjU0ZjhiNTYyNzhiYTZiN2ZmMDIxYzBkZjBhYTVm
MzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBA
QCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiBjbGFzcyBEaXNwYXRjaEFmdGVyQ29udGV4dCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGlzcGF0Y2hBZnRlckNv
bnRleHQoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQorICAgIERpc3Bh
dGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDog
bV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQpAQCAtMTM1LDEwICsx
MzUsMTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlv
bjsKIH07CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
K3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZHVy
YXRpb24sIEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgR1JlZlB0cjxHU291
cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoc3RkOjpjaHJvbm86
OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLmNvdW50
KCkpKTsKICAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5M
b29wIGRpc3BhdGNoQWZ0ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3Jr
UXVldWVXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXgg
NzAzZWYwOWYyMTY5NjA4NjkzMGM0MTQ0MzhkYjNhMWIyODQ2OWQ1MC4uZjRjNGI4Yzc3ZGNlOTk1
ZjU3ZjI1NjcwMmMxZjljZWY4YzY1YTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L1dvcmtRdWV1ZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrT25SZWdpc3Rl
cmVkV29ya1RocmVhZCgpCiAgICAgbV9mdW5jdGlvblF1ZXVlTG9jay5sb2NrKCk7CiAKICAgICB3
aGlsZSAoIW1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+IGZ1bmN0aW9uUXVldWU7CisgICAgICAgIFZlY3RvcjxG
dW5jdGlvbjx2b2lkICgpPj4gZnVuY3Rpb25RdWV1ZTsKICAgICAgICAgbV9mdW5jdGlvblF1ZXVl
LnN3YXAoZnVuY3Rpb25RdWV1ZSk7CiAKICAgICAgICAgLy8gQWxsb3cgbW9yZSB3b3JrIHRvIGJl
IHNjaGVkdWxlZCB3aGlsZSB3ZSdyZSBub3QgdXNpbmcgdGhlIHF1ZXVlIGRpcmVjdGx5LgpAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAgICA6
OkRlbGV0ZVRpbWVyUXVldWVFeChtX3RpbWVyUXVldWUsIDApOwogfQogCi12b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwogICAgIHJlZigpOwpA
QCAtMTE4LDcgKzExOCw3IEBAIHN0cnVjdCBUaW1lckNvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGltZXJDb250ZXh0PiB7CiAgICAgc3RhdGljIFJlZlB0cjxUaW1lckNvbnRl
eHQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lckNvbnRleHQpOyB9CiAKICAg
ICBXb3JrUXVldWUqIHF1ZXVlOwotICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4gZnVu
Y3Rpb247CisgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb247CiAgICAgTXV0ZXggdGltZXJN
dXRleDsKICAgICBIQU5ETEUgdGltZXI7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdvcmtR
dWV1ZTo6dGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0Rmly
ZWQpCiAgICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9u
bzo6bmFub3NlY29uZHMgZHVyYXRpb24sIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBB
U1NFUlQobV90aW1lclF1ZXVlKTsKICAgICByZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmNwcAppbmRleCAxYjc3NGJmMzgzMGQ3OWQ1NmI1NTU2MDI2YzBiMDM1NTQyNDY4MjZi
Li43N2ExYjBmOTdjZGJmNjJiOTMwNDcxZWI4NjI2Y2E5MGQ5MDEwY2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJvb2wg
aGFzVW5hc3NvY2lhdGVkVHJhbnNjZWl2ZXJzKGNvbnN0IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0
cmFuc2NlaXZlcnMKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rp
b246OnJ1blRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCit2b2lkIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cnVuVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIHRh
c2spCiB7CiAgICAgaWYgKG1fZHRsc0ZpbmdlcnByaW50LmlzTnVsbCgpKSB7CiAgICAgICAgIC8v
IE9ubHkgb25lIHRhc2sgbmVlZHMgdG8gYmUgZGVmZXJyZWQgc2luY2UgaXQgd2lsbCBob2xkIG9m
ZiBhbnkgb3RoZXJzIHVudGlsIGNvbXBsZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5oCmluZGV4IDAxN2Y5ZDQzYmYzNDU4NDljZjkyNWUzMDc4ODlhNjM2N2JmNWNmNDcuLjFmY2E3
ZjNjNDA5YjcwYjVlODdjMzcxMTBhNjNjNzg0OTRhMjI5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1
bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyTmVnb3RpYXRpb25OZWVkZWRTdGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWdvdGlh
dGlvbk5lZWRlZCA9IGZhbHNlOyB9OwogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGFzayhOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgcnVuVGFzayhGdW5jdGlvbjx2
b2lkICgpPiYmKTsKICAgICB2b2lkIHN0YXJ0UnVubmluZ1Rhc2tzKCk7CiAKICAgICB2b2lkIGNy
ZWF0ZU9mZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRl
c2NyaXB0aW9uUHJvbWlzZSYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFFbmRwb2ludD4gbV9tZWRpYUVuZHBvaW50OwogCi0gICAgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiBtX2luaXRpYWxEZWZlcnJlZFRhc2s7CisgICAgRnVuY3Rpb248dm9pZCAoKT4g
bV9pbml0aWFsRGVmZXJyZWRUYXNrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNEUFByb2Nlc3Nv
cj4gbV9zZHBQcm9jZXNzb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjZmU4ZjE1ZWU0ODQ3NzhkMjRh
MDllODI0OTgxODViMDA3NjcxMzJlLi44OGE3ZjcxMTM2YzBkMzYxYmY3MjNlOTg3OGJhYmYzYWVl
ZjYwYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQXVkaW9J
T0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3Vy
Y2VQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksOSAr
NTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmlu
ZyYgaW5wdXREZXZpY2VJZCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5n
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRnVuY3Rpb248dm9p
ZCAoKT4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4m
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQog
CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAppbmRleCBhYzEzNzFlMmE1YTU3MzMzNmI0NjhjZTVhN2MxZjdmNTk3MjFkMmM5Li43Y2Vj
Y2JhMzk1MDUxMTg0YmE1ZDg5ODUyNGVlNGNkMTQwZmE2YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKCkKICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQo
KTsKIH0KIAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZShOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAg
QVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTEx
NSw3ICsxMTUsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbgogICAgICAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNw
ZW5kKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlh
bGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2
b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3RpbwogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
K3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgdW5pbml0
aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAwOWM5YjM4YjdmOTIyYjA1
MzIxNjc5ZTM1YjNjNjViZjE3NjE0ZjRmLi4zNWEwZGYxNmQzNDQ3ZWVhZjY5ZGE5NGI1N2ExOWZj
NTJlYzFmMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDkgKzUwLDkgQEAg
cHVibGljOgogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdm9pZCBlbmFibGVJbnB1
dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRS
ZW5kZXJpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc3VtZShOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3VzcGVuZChOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2UoTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lk
ICgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsK
ICAgICB1bnNpZ25lZCBsb25nIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDg2OWI2ZWFhODA0Zjc3
NDZhMDExMGU3NTI3ZGMxZDhhZDIyNjU2NmYuLmJiZjk2MzdlYzc0NWQ3NWZkYjAwNDJiMTFkNzFh
NWU1N2Y4NWIwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjc5OCw3ICsyNzk4LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRl
QmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBJ
REJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA0YzY3MGU2ZGMx
MTdiM2UwNWVmOTliYmI1NTFiMjgxNTZkMzdhNmZiLi41Mzg4YmIyNjc4YmRiNjA5NjQwMzA3Zjgw
ZGI3OGQyYTFhZmQzNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODcsNyArODcsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8U3RyaW5nPiBi
bG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0Zv
ckluZGV4ZWREQihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQlZhbHVlJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihGdW5jdGlvbjx2b2lkIChjb25zdCBJREJWYWx1ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICBJREJWYWx1ZSB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgp
OwogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcAppbmRleCA3YWEyMjY5ZjRj
NWZlMTE3MzA4NjNjZjIxMzJmZmZkODI2OTIyZTY0Li42NmY1OTBhNDk3NWFlOTY4M2M2MWExNjE1
ZjI5YmQxZGQ3NGE3MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
Q2FsbGJhY2tNaWNyb3Rhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01D
YWxsYmFja01pY3JvdGFzay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1BY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJhY2tNaWNy
b3Rhc2soTWljcm90YXNrUXVldWUmIHF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s6OkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrKE1p
Y3JvdGFza1F1ZXVlJiBxdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgOiBBY3RpdmVET01DYWxs
YmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1fcXVldWUocXVldWUpCiAgICAg
LCBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrLmgKaW5kZXggZTExYzRkMDdhNGFhYTU0YjlkZmIzYjMxZDQxM2Mx
OTI1MDA4YmNiYS4uOGE3ZjdmNjM3MDgzM2ViMDc2MmYyY2NlZTI1NmMxMWUxNzZmZWU2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgKQEAg
LTI3LDE0ICsyNywxNCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKICNpbmNs
dWRlICJNaWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2ssIHB1
YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soTWlj
cm90YXNrUXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90
YXNrKE1pY3JvdGFza1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2soKTsKIAogICAgIFJlc3VsdCBydW4oKSBvdmVycmlkZTsKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBiZSBhY2Nlc3NlZCB2aWEgdGhlIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHdoaWNoIHNob3VsZCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZWxldmVudAogICAg
IC8vIHF1ZXVlLgogICAgIE1pY3JvdGFza1F1ZXVlJiBtX3F1ZXVlOwotICAgIE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3Rhc2s7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAppbmRleCBkYTU4ZTAwOTJmODU2MDA3MzZkMTIxNzVjNTY0MThlNTk2
Nzc0OGMxLi5jYjJlNmU4ZDQwZmNlYzIyNDkwMzE4ZmFmMWFjMmI5ZGQ4NTMwODY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMzLDggKzMzLDgg
QEAKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29s
ZVR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2Ny
aXB0VmFsdWU7CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAg
ICAgICBlbnVtIENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6
OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgTm9u
Y29weWFibGVGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+
Ojp0eXBlPgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6
aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKFQgdGFzaykKICAgICAgICAgICAg
IDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhm
YWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgVGFzayhOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAgICAgICAgVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiYgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9KQogICAgICAgICAgICAgLCBtX2lz
Q2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19jb252ZXJ0aWJsZTxULCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxU
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46
OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFzaykKICAgICAgICAgICAg
IDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0
cnVlKQpAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0NsZWFudXBU
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiBtX3Rhc2s7CisgICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA0YWU2
YzgwY2UzNGU3OTRlNWVjNjJkNzgyYzU4MTI4ZjE3NmQyZWE0Li45YTkzYTFiYjVmYTMxNTU1Y2Jh
NjI2MzkyNjhiYmE3MTIwZmY0Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0Zp
bGVTdHJlYW0uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5o
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjQsMTIgKzY0LDEyIEBAIGlubGluZSBBc3luY0ZpbGVTdHJlYW06
OkludGVybmFsczo6SW50ZXJuYWxzKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKICNlbmRpZgog
fQogCi1zdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChmdW5jdGlvbik7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1
ZXVlPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+PiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZvaWQgKCk+Pj4gcXVldWU7CiAKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgY3JlYXRlRmlsZVRocmVhZE9uY2U7CiAgICAgc3RkOjpj
YWxsX29uY2UoY3JlYXRlRmlsZVRocmVhZE9uY2UsIFtdIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3Rh
dGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShm
dW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFt
OjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpAQCAtMTE0LDcgKzEx
NCw3IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5jRmlsZVN0cmVhbSgpCiAgICAgfSk7CiB9CiAK
LXZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKE5vbmNvcHlhYmxlRnVuY3Rpb248c3RkOjpm
dW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJhdGlv
bikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1bmN0aW9uPHN0ZDo6ZnVuY3Rpb248
dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7CiAg
ICAgYXV0byYgaW50ZXJuYWxzID0gKm1faW50ZXJuYWxzOwogICAgIGNhbGxPbkZpbGVUaHJlYWQo
WyZpbnRlcm5hbHMsIG9wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKV0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggMDg4YmIzNzc0NmY0NzU5ODJkNDcw
ODRkZjUwNjFmMTk3NmM2OTJlMS4uMzVlODVhN2ExNWRlMzM5NzdjNzdlNzQ2YWJhZDMwOGExOWNl
YmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBwZXJmb3JtKE5v
bmNvcHlhYmxlRnVuY3Rpb248c3RkOjpmdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4o
RmlsZVN0cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0oRnVuY3Rpb248c3RkOjpmdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVj
dCBJbnRlcm5hbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYTMxMWRiMGVkYzRlNmIxZDVkNTUyNmRj
ZThiZTZmNWFhMDliYmEwMS4uNmVkNjhkZjAxMzlhOWIzNGQ5YjUxOWM3ZjA3MzI4OTllZTQ3YTVj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzE0MSw3ICszMTQxLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OmZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgIHVw
ZGF0ZUVtYmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnF1
ZXVlUG9zdExheW91dENhbGxiYWNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxi
YWNrKQordm9pZCBGcmFtZVZpZXc6OnF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3Bvc3RMYXlvdXRDYWxsYmFja1F1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6Zmx1c2hQb3N0TGF5b3V0VGFza3NRdWV1ZSgpCiAgICAgaWYgKCFtX3Bvc3RMYXlvdXRD
YWxsYmFja1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE5vbmNv
cHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gcXVldWUgPSBXVEZNb3ZlKG1fcG9zdExheW91dENhbGxi
YWNrUXVldWUpOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBxdWV1ZSA9IFdURk1vdmUo
bV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZSk7CiAgICAgZm9yIChhdXRvJiB0YXNrIDogcXVldWUp
CiAgICAgICAgIHRhc2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGY0NDQ5ZTUz
NDhlNTg3MzIyMjA5YmNhNjY2ZDQxYjZjMjgzMGRlMjkuLjg2MTEzODE4NzZjMzQ2N2IzMDdlYTQ4
NWE4MzVmZDlhOTIyODU1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzUsOSArMzUs
OSBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzY2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgdm9pZCBzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0
cmVlKFJlbmRlckVsZW1lbnQmKTsKICAgICB2b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwotICAg
IHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soRnVuY3Rpb248dm9pZCgpPiYm
KTsKICAgICBib29sIGxheW91dFBlbmRpbmcoKSBjb25zdDsKICAgICBib29sIGlzSW5MYXlvdXQo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dFBoYXNlICE9IE91dHNpZGVMYXlvdXQ7IH0KICAgICBi
b29sIGlzSW5SZW5kZXJUcmVlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRQaGFzZSA9
PSBJblJlbmRlclRyZWVMYXlvdXQ7IH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKIAogICAgIElu
dFJlY3QqIG1fY2FjaGVkV2luZG93Q2xpcFJlY3QgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKKyAg
ICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKIH07
CiAKIGlubGluZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eUNoYXJh
Y3RlckNvdW50KHVuc2lnbmVkIGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggNTc2MDc4M2RiOGNlMDAzNWM4ZWU0MDc4
YTU0NWY3MDVmZjYxMmRmNS4uNzMwYzBhNmJkOTNmNDU3OGQxZWRiZjlhY2UxY2Q4NjU2NmU2Yzk4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRU
aHJlYWQoKQogICAgIHJldHVybiB0aHJlYWRJZGVudGlmaWVyICYmIGN1cnJlbnRUaHJlYWQoKSA9
PSB0aHJlYWRJZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2go
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0
byYgc2Nyb2xsaW5nVGhyZWFkID0gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKTsKICAgICBz
Y3JvbGxpbmdUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKICAgICBzY3JvbGxpbmdUaHJlYWQud2FrZVVwUnVuTG9vcCgpOwogfQog
Ci12b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEJh
cnJpZXIoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBkaXNwYXRjaChbZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAg
ICAgQVNTRVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+PiBmdW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+
PiBmdW5jdGlvbnM7CiAgICAgCiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX2Z1bmN0aW9uc011dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmgKaW5kZXggMDM3Zjk1YjkwYjYzYTlkZWIxMzFjMzgxYmQ5ZDMy
NDk5N2I1NDFlZC4uMjhkNTc1NWQ3ZGEyZDA5MzlhNDE5NTMyZmRjYTU0YzBjNThlZDI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAg
LTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Db25k
aXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OCwxMSArNDgsMTEgQEAg
Y2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKIAogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQ3Vy
cmVudFRocmVhZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoKE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICAvLyBXaWxsIGRpc3Bh
dGNoIHRoZSBnaXZlbiBmdW5jdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQgb25jZSBhbGwgcGVuZGlu
ZyBmdW5jdGlvbnMKICAgICAvLyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBoYXZlIGZpbmlzaGVk
IGV4ZWN1dGluZy4gVXNlZCBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFycmllcihOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmFy
cmllcihGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJE
ZXN0cm95ZWQ8U2Nyb2xsaW5nVGhyZWFkPjsKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BNdXRleDsKIAogICAgIExvY2sgbV9mdW5jdGlvbnNN
dXRleDsKLSAgICBWZWN0b3I8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPj4gbV9mdW5jdGlv
bnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uczsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxv
b3AgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNr
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAK
aW5kZXggMGM2YzI0M2I4ZTA4Y2ExMmI4OTY2ZDlmYWFjY2RlNDIyMmY5MDEwNS4uMWFhN2UxYjg3
NjNmZjFiNDdkZmI4ZTIxMzk0MDc2NDVlYjc1NWViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgVGFza0Rpc3BhdGNo
ZXI8VGltZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CiAKLXZvaWQgVGFza0Rpc3BhdGNoZXI8
VGltZXI+Ojpwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
K3ZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24p
KTsKICAgICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobV93ZWFrUHRyRmFjdG9yeS5jcmVh
dGVXZWFrUHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJp
Y1Rhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5o
CmluZGV4IDRkODVjOWEwYjIxODQ5OGM2OTUxNDYxOTEwNmQzOGQwNzk5OTFhYmMuLmY1MGEzNjEz
OWYyZjc2ZTA0NTY3N2I2OTg1NWMwNWY1NWU0MmM2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
RnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQoKT4mJiBmKQorICAgIHZvaWQgcG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGYpCiAgICAg
ewogICAgICAgICBtX2NvbnRleHQucG9zdFRhc2soV1RGTW92ZShmKSk7CiAgICAgfQpAQCAtNTMs
NyArNTMsNyBAQCB0ZW1wbGF0ZTw+CiBjbGFzcyBUYXNrRGlzcGF0Y2hlcjxUaW1lcj4gewogcHVi
bGljOgogICAgIFRhc2tEaXNwYXRjaGVyKCk7Ci0gICAgdm9pZCBwb3N0VGFzayhOb25jb3B5YWJs
ZUZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKQEAgLTYz
LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoT25lVGFzaygpOwogCiAgICAg
V2Vha1B0ckZhY3Rvcnk8VGFza0Rpc3BhdGNoZXI+IG1fd2Vha1B0ckZhY3Rvcnk7Ci0gICAgRGVx
dWU8Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBEZXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKIH07CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5
cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkKCk+IFRhc2tGdW5jdGlvbjsKKyAgICB0eXBl
ZGVmIEZ1bmN0aW9uPHZvaWQoKT4gVGFza0Z1bmN0aW9uOwogCiAgICAgdm9pZCBlbnF1ZXVlVGFz
ayhUYXNrRnVuY3Rpb24mJiB0YXNrKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5k
ZXggODY5YTY4ZTk4ODZiMmQwYmY1OThiZTMwYTkyZGRmNjQ1ZGU5Mzc2OC4uMjBjOTQ2MDY1ODkx
ZjE1YTAwNTMyNTZmMDg1NTE2Yzk2MTUzMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgK
QEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrcygp
OwogICAgIHZvaWQgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVE
ZWZlcnJlZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAgICB2b2lkIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCiAgICAgZW51bSBEaXNw
bGF5TW9kZSB7CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXgg
ODRjN2Q2MjMyNGY2NDcxMWUxNjVlNTI0M2RmODhmMjFhNTBlZDdlOS4uYWJmNDM3ZDM3MTY1ZmZl
ZTM2ZWIwN2QyY2FjNGZjZGI0ZDg1ZmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpA
QCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTCiAgICAgbV9wbGF5ZXIt
Pm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1Ro
aXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVByaXZhdGUuY3BwCmluZGV4IGQ0OWQxNTEyMTM5NjM4ODY0OWRlMTU3YzMwNDcxNzQ5M2Vi
ZmNjYmMuLjE4NzJjZDJjOGJjMzI5NTU4MzI2Y2ZmZjFkOTZmYTdlZDc1YTgyMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRl
Ojp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKICAgICB9KTsKIH0KIAotdm9p
ZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzY2hl
ZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFT
U0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBjcmVhdGVX
ZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgK
aW5kZXggOTIzMDRlZmJkNjM0OWFjZjE5Njk3NTRmZjgyOGEwNmZhNDRjMGQzZi4uYWJmY2FiNmMw
MWViOTFhYWVjMTU4M2YxZDI5OGM1Mjc3OGE2ZDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTM5
LDkgKzM5LDkgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQWN0aXZlVmlkZW9UcmFj
aygpOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9p
ZCAoKT4mJik7CiAKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVN0cmVhbVByaXZhdGU+IG1fd2Vh
a1B0ckZhY3Rvcnk7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGY0NzRhZWI5YjdjNzNjYmM0YzgzNGMyZjFlYzkyYjU4
OWMxNDVjNjQuLjc0ZDdmZmMxZjI0ZjA4MTkzMjQwZmNlMDYzMTc4NWJkNjQ1ZjZlYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiR2Vu
ZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQq
KTsKICAgICB2b2lkIHNldEF1ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9E
YXRhT3V0cHV0Kik7CiAKLSAgICB2b2lkIHNjaGVkdWxlRGVmZXJyZWRUYXNrKE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVycmVkVGFzayhGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVk
aWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDc2YWZkOWJiZTVhMDdlOWE3NThhYTQ1
YjhlN2M3ZTY1MWNiY2IzM2IuLmMyZDkyOGRlYjNlNmI1MDg5ODgyNTZiYzUzMzc1NzljZDlhZmM3
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2
b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFW
Q2FwdHVyZUF1ZGlvRGF0YU91dHB1dAogICAgIFthdWRpb091dHB1dCBzZXRTYW1wbGVCdWZmZXJE
ZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYUF1ZGlvQ2FwdHVyZVNlcmlh
bFF1ZXVlKCldOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVy
cmVkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIEFW
TWVkaWFDYXB0dXJlU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgp
PiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5j
dGlvbildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eS5oCmluZGV4IDI3OTU3OWNmYmViYWFkMTVhZmIwNjM4ZTA5ZTJmNjRjMGE1N2ExZjYuLmUyMjVm
ZWM3NTQ5MDYwZWQxZDRjOTNlMTE2MjBkOWU5ZDM2NDJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzIsNyArMzIsNyBAQAogCiAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwCmluZGV4IDY4MDYwMzU0ZTdlNTBlYmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjgu
LmE2N2ZhY2Y3NWUwZmVjMjFkODRjMTZjYWY0YjY0ODI4YjZjMjBhZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAt
MjUyLDcgKzI1Miw3IEBAIHN0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcgewogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1
ZmZlcnM7CiB9OwogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBWZWN0
b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRpbmc7CiAgICAgZm9yIChhdXRvJiB1
cmwgOiBibG9iVVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCA0NThjMDY1MDNhN2U2M2U5MjI2MTg4MTA4MWUzNDkw
MmE0YzdhYTU5Li4yMDM5N2U5ZWM5ZjQ0MTBmMTA4NTdjYTRiMjliNjUxMWViZTZjMjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJs
b2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggNzBhMWZhZWM1MmRm
YTgyOGJlYWU1OWNiYjNhZGQwNDU3MjNhNjZkNS4uMGMxOWM2MjBmMTRhNTQyMGNkOTU2YmNiYWUy
NWU3ZjRkNGM3YTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcApAQCAtNTMyLDEzICs1MzIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJl
c29sdmVyOjpyZXNvbHZlKENoYW5nZSBjaGFuZ2UpCiAgICAgcmV0dXJuIFdURk1vdmUobV91cGRh
dGUpOwogfQogCi1zdGF0aWMgVmVjdG9yPE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4+JiBw
b3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKQorc3RhdGljIFZlY3RvcjxGdW5jdGlvbjx2b2lk
ICgpPj4mIHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tRdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFZlY3RvcjxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+Pj4gdmVjdG9yOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RnVuY3Rpb248dm9pZCAoKT4+PiB2ZWN0
b3I7CiAgICAgcmV0dXJuIHZlY3RvcjsKIH0KIAotdm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2Fs
bGJhY2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBxdWV1
ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBwb3N0UmVzb2x1dGlvbkNhbGxiYWNrUXVldWUoKS5hcHBlbmQoV1RGTW92ZShjYWxsYmFj
aykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggM2Nl
NzA0NjI2NzQ1YTkzNmViNGNkYjViOThiYTc0MDc2MDhjMTUxNi4uZjc0NjZkMTQxNjg4ZWI0NjYw
OTI1N2VlMzNjYjcxYzdkY2U0ZGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5oCkBAIC0zMiw5ICszMiw4IEBACiAjaW5jbHVkZSAiU3R5bGVDaGFuZ2UuaCIKICNp
bmNsdWRlICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgi
Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAs
NyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBtX3VwZGF0
ZTsKIH07CiAKLXZvaWQgcXVldWVQb3N0UmVzb2x1dGlvbkNhbGxiYWNrKE5vbmNvcHlhYmxlRnVu
Y3Rpb248dm9pZCAoKT4mJik7Cit2b2lkIHF1ZXVlUG9zdFJlc29sdXRpb25DYWxsYmFjayhGdW5j
dGlvbjx2b2lkICgpPiYmKTsKIGJvb2wgcG9zdFJlc29sdXRpb25DYWxsYmFja3NBcmVTdXNwZW5k
ZWQoKTsKIAogYm9vbCBpc1BsYWNlaG9sZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggZTFhNGEx
NWRkZDdmMzQ3MTYxZTQ0NDMzNzFmYzQ3YjcyMjY4Zjk5NC4uZWRjOWViMzNjNTAzNTUyMGFjNTQy
ZDM1ZDBhNWJjYTIyZjljNzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdl
cjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIK
ICAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVu
dGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAotdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6
OmRpc3BhdGNoKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQg
U3RvcmFnZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAppbmRleCA3NWE0ODZi
NjIwYzJiYjMxMmFlOGNkZjlkNTA2NGI0MDI2YmExZWM1Li44OWU2YjQzM2E1MWU2M2RlZTM5ZDc4
OWQxZDhlNWJhNWIzYjJkNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VTeW5j
TWFuYWdlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VT
eW5jTWFuYWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgflN0b3JhZ2VTeW5j
TWFuYWdlcigpOwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYpOworICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAgICAgdm9p
ZCBjbG9zZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwCmluZGV4IDI5NjZlMDQwNmUxNzA0ZjIyMGM1MWMyNmRlNzhkMDgyMTQyNmM2MDkuLjBiNmVk
MDc2ZmZmNTVhMTFkOTE2YmRlNTk5ZGNkNWJjMDFlOGUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCB2b2lkIFN0b3JhZ2VUaHJl
YWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogICAgIH0KIH0KIAotdm9pZCBTdG9yYWdlVGhyZWFkOjpk
aXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIFN0
b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkg
JiYgbV90aHJlYWRJRCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxOb25j
b3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVl
dWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVu
Y3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJl
YWRJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAg
ICAgIHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgd2FpdEZvclRocmVhZENvbXBs
ZXRpb24obV90aHJlYWRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRl
eCA0NzUyZDViMTllMWIwNmNhYTllN2VlZDg4NDRiNDlkNWYzZmNiZmEyLi4zZjFiODg0NWI2ZjNm
ZDdjZmU4NzE4MDJjZWE0N2QxMGNiMTQwODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmgKQEAgLTI2LDEwICsyNiw5IEBACiAjaWZuZGVmIFN0b3JhZ2VUaHJlYWRfaAogI2Rl
ZmluZSBTdG9yYWdlVGhyZWFkX2gKIAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TWVzc2FnZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHRlcm1pbmF0ZSgp
OwogCi0gICAgdm9pZCBkaXNwYXRjaChOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYpOwor
ICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICBzdGF0aWMgdm9p
ZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIApAQCAtNTksNyAr
NTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgpOwogCiAgICAgVGhy
ZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxOb25jb3B5YWJsZUZ1
bmN0aW9uPHZvaWQgKCk+PiBtX3F1ZXVlOworICAgIE1lc3NhZ2VRdWV1ZTxGdW5jdGlvbjx2b2lk
ICgpPj4gbV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IGQzNGQ4NDIwNTk1ZGQ1OWViYWUyZGY3YjY4MTYwMWNiZDA3MTZi
YTAuLjhkY2YxYmUzY2NkZmQ1MDhjMWJmNGQ5ZWE2YjIxNzVmYTE2ZDM5NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9i
UmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0
aW9uCiAgICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKaW5kZXggYTIwMTY5YTkxYmJlZWNkNDZkY2I4NzZiZDA5YjJmODQ3MGRmZGQ4OS4u
NzQwNmEzY2I1ZTY3N2UyZjNmZmJhYTc0YjgzMGY2NmQyZmE0YWYwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKQEAgLTI3LDEwICsyNyw5IEBACiAjZGVmaW5lIE5ldHdvcmtCbG9iUmVnaXN0cnlf
aAogCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpA
QCAtNTUsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyos
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHVpbnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IGRiYTJj
ODhkOTFhMmNkYjQwMGEwNDg2MDJjMmEwY2QwOTNlZGFlMjUuLmQ1NDZkOTE0ZmZlMzUyYmMxNDcx
Nzk2MzhlNzNhMjIyZGI3NzM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjMs
OSArNjMsOSBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ewogICAgIFJlamVjdFByb3RlY3Rpb25TcGFjZQogfTsKICAgICAKLXR5cGVkZWYgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyOwotdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKLXR5cGVkZWYgTm9uY29weWFibGVGdW5j
dGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik+IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYpPiBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZChX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogCiBjbGFz
cyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGI0Mjg4ZjVlMDdjNDNmMTZh
YWQyNDI5ZjU2NzI0NDRiZjczYWRlMmYuLmI4NzE4MTBhOTdkYjlkMGY3NWRhMDQ4MGM1OTA3Y2Mx
OWU1NTY1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFNlc3Np
b25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRi
b3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHN0YXRpYyB1aW50NjRfdCBsYXN0UmVxdWVzdElEOwogCkBAIC0zMDgsNyArMzA4LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQ
cm9jZXNzRm9yQmxvYnModWludDY0X3QKICAgICAgICAgaGFuZGxlcigpOwogfQogCi1zdGF0aWMg
dm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CitzdGF0aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248
dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGlmIChOZXR3b3JrQ2FjaGU6OnNpbmds
ZXRvbigpLmlzRW5hYmxlZCgpKSB7CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgZmV0
Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENh
bGxiYWNrQWdncmVnYXRvcihOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9y
KEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAg
ICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgewogICAgICAgICB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGEKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgTm9uY29weWFi
bGVGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAg
ICAgIEZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAg
ICAgICAgV2Vic2l0ZURhdGEgbV93ZWJzaXRlRGF0YTsKICAgICB9OwogCkBAIC00MTIsNyArNDEy
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
fQogCi1zdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBp
ZiAoTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggY2I4MDA5ZWQ0NzY0
NDNlMGI3NGNiYTFhOTJjMGQ0ZDJmZWQ0OWMwZC4uZjIxODEyNzM3M2U0YzdkZTFhYWE1OTY0MjBh
YzY5ODY3N2ExZTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklE
KTsKIAotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiBwcml2
YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1l
bnRzOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgp
Pj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJs
b2JzQ29tcGxldGlvbkhhbmRsZXJzOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBhOTMwYTcwNjBjZDAwNGNlYzQ0YzEw
MjY4ZjQ5YmMxZjY5YmQzMDRiLi4yZjQ4MTM0YTY0ZTgwOGE0ZjdjNzM5NmNjMzc5YTgzYmFkMzNk
M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1l
SQogICAgIH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0
YSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBDYWNoZTo6cmVtb3ZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZW1vdmUobWFrZUNhY2hlS2V5KHJlcXVl
c3QpKTsKIH0KIAotdm9pZCBDYWNoZTo6dHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKK3ZvaWQgQ2FjaGU6
OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVy
c2VIYW5kbGVyKQogewogICAgIEFTU0VSVChpc0VuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggNThmMGM2
ZDYzN2U1ZDNmMGJlNjJlMmY3ZDRkNGMwNGZlMDhkNjMyOC4uMzlkNzYwODk3MWM1OTkxZjdmYWNk
ZTRjZDE0ZDRiMTUwMzgxMzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDYsNyArMTA2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29tcGxldGlvbiBoYW5kbGVyIG1heSBnZXQgY2FsbGVk
IGJhY2sgc3luY2hyb25vdXNseSBvbiBmYWlsdXJlLgogICAgIHZvaWQgcmV0cmlldmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+JiYpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoTWFwcGVkQm9keSYpPiYmKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkIChNYXBwZWRCb2R5Jik+JiYpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZh
bGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IEVudHJ5JiBlbnRyeTsKICAgICAgICAgY29uc3QgU3RvcmFnZTo6UmVjb3JkSW5mbyYg
cmVjb3JkSW5mbzsKICAgICB9OwotICAgIHZvaWQgdHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmKTsKKyAgICB2b2lkIHRyYXZlcnNlKEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3Zl
KGNvbnN0IEtleSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmluZGV4IDhjOTFjOWVj
Njc1ODgyMmM2YjMwZjVmYjQwYjgyYzFjNjQ4ZDRlZjEuLjg0Yjk0OTc5NmY0N2UxNWIzY2JmZTRl
MjkwMzY4NzcxMmQxZDc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIFJlZjxJT0NoYW5uZWw+IElPQ2hhbm5lbDo6b3Blbihjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUgdHlwZSkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJT0NoYW5uZWwoZmlsZVBhdGgsIHR5cGUpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk
IHJ1blRhc2tJblF1ZXVlKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrLCBXb3Jr
UXVldWUqIHF1ZXVlKQorc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVlKEZ1bmN0aW9u
PHZvaWQgKCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKIHsKICAgICBpZiAocXVldWUpIHsK
ICAgICAgICAgcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CmluZGV4IDgzYmE2Yzc1YmFmOGEyZjJmMDBhZjdkMDJmOGY2YWU3YWNjMTViM2YuLjE0NWY4OTY3
OWMxNGY0YWFlZTRmNDFjODIyNTY2NTY0MjExMjdjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAg
LTM0LDggKzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Jsb29tRmlsdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxib29sIChzdGQ6OnVu
aXF1ZV9wdHI8UmVjb3JkPik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgdm9pZCBy
ZXRyaWV2ZShjb25zdCBLZXkmLCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlciYmKTsKIAotICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25z
dCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CisgICAgdHlwZWRlZiBGdW5j
dGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT4gTWFwcGVkQm9keUhhbmRsZXI7CiAg
ICAgdm9pZCBzdG9yZShjb25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYmKTsKIAogICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNoYXJlQ291bnQgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRy
YXZlcnNlRmxhZ3M7Ci0gICAgdHlwZWRlZiBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFJlY29yZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJhdmVyc2VIYW5kbGVyOworICAgIHR5cGVk
ZWYgRnVuY3Rpb248dm9pZCAoY29uc3QgUmVjb3JkKiwgY29uc3QgUmVjb3JkSW5mbyYpPiBUcmF2
ZXJzZUhhbmRsZXI7CiAgICAgLy8gTnVsbCByZWNvcmQgc2lnbmFscyBlbmQuCiAgICAgdm9pZCB0
cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNlRmxhZ3MsIFRyYXZlcnNlSGFuZGxl
ciYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggOTBmOTQwYTc1NzJjNDEwYmMyOWYwMjkyZDg1YzA0
N2VkYTVmOWMxMC4uZWQwNDBlNWVkZWI1Nzk1YWRkNzVlYWM5ZmU2N2U2ZmNlZDc3NzI1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVn
aXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNp
emU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgTm9uY29weWFibGVGdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
LmgKaW5kZXggNThkM2FiZGVlYTVlMjNhNmYyMmY2NmE5OTAyZmE3ZGQxNWI2ZDc3My4uODM1M2Zh
NzgyOWU0ZWVmNTkxNGFhMjhhN2JhY2YyZTc0OWRiZmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxv
YlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlh
YmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJp
ZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDNjODNhNDczMzgz
YWE1ZDkyZjY3N2I0ODU2OThkOWQ5NDc5Zjc3YjIuLjhmNzdhYmI2YmVmMDY5MjQzY2VlZDMxNTFl
NjQzYzIzNzE0YjNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04NSw3ICs4
NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzdGF0aWMgdWludDY0X3Qgd3Jp
dGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9
ICsrd3JpdGVCbG9iVG9GaWxlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCA3N2I1NGRhNGJkMTAyZTlkNTBkNDM5MzUxMDg5YTI3NWM0OTM5YTRiLi5lZjhlMGZiYWU0OWY3
MmEwNzllY2Y0OGZlYTlkZTQxYTJmMWFjM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsg
cHJvY2Vzcy4KICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik+PiBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRpb25IYW5kbGVyczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPj4g
bV93cml0ZUJsb2JUb0ZpbGVDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>
<flag name="review"
          id="305828"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>