<?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>199652</bug_id>
          
          <creation_ts>2019-07-09 19:42:12 -0700</creation_ts>
          <short_desc>Stop using GenericTaskQueue from multiple threads</short_desc>
          <delta_ts>2019-07-10 16:08:37 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>199639</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1551577</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-09 19:42:12 -0700</bug_when>
    <thetext>Stop using GenericTaskQueue from multiple threads as its implementation is not thread-safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551578</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-09 19:45:58 -0700</bug_when>
    <thetext>Thread 7 Crashed:: Dispatch queue: WebCoreAVFLoaderDelegate queue
0   com.apple.JavaScriptCore      	0x0000000411b68cfe WTFCrash + 14 (Assertions.cpp:305)
1   com.apple.WebCore             	0x00000003f9f2c92b WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebCore             	0x00000003fa2033ae WTF::WeakPtrFactory&lt;WebCore::GenericTaskQueue&lt;WebCore::Timer, std::__1::atomic&lt;unsigned int&gt; &gt; &gt;::createWeakPtr(WebCore::GenericTaskQueue&lt;WebCore::Timer, std::__1::atomic&lt;unsigned int&gt; &gt;&amp;) const + 142 (WeakPtr.h:132)
3   com.apple.WebCore             	0x00000003fa203293 WTF::WeakPtr&lt;WebCore::GenericTaskQueue&lt;WebCore::Timer, std::__1::atomic&lt;unsigned int&gt; &gt; &gt; WTF::makeWeakPtr&lt;WebCore::GenericTaskQueue&lt;WebCore::Timer, std::__1::atomic&lt;unsigned int&gt; &gt; &gt;(WebCore::GenericTaskQueue&lt;WebCore::Timer, std::__1::atomic&lt;unsigned int&gt; &gt;&amp;) + 51 (WeakPtr.h:207)
4   com.apple.WebCore             	0x00000003fa1de75a WebCore::GenericTaskQueue&lt;WebCore::Timer, std::__1::atomic&lt;unsigned int&gt; &gt;::enqueueTask(WTF::Function&lt;void ()&gt;&amp;&amp;) + 90 (GenericTaskQueue.h:101)
5   com.apple.WebCore             	0x00000003fa1df030 -[WebCoreAVFLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:] + 144 (MediaPlayerPrivateAVFoundationObjC.mm:3449)
6   com.apple.CoreFoundation      	0x00007fff301dea0c __invoking___ + 140
7   com.apple.CoreFoundation      	0x00007fff301de8c4 -[NSInvocation invoke] + 273
8   com.apple.avfoundation        	0x00007fff2bd7dff7 __104-[AVAssetResourceLoader _performDelegateSelector:withObject:representingNewRequest:key:fallbackHandler:]_block_invoke + 403
9   com.apple.avfoundation        	0x00007fff2bd7dc77 -[AVAssetResourceLoader _performDelegateCallbackSynchronouslyIfCurrentDelegateQueueIsQueue:delegateCallbackBlock:] + 301
10  libdispatch.dylib             	0x00007fff67802683 _dispatch_call_block_and_release + 12
11  libdispatch.dylib             	0x00007fff6780360e _dispatch_client_callout + 8
12  libdispatch.dylib             	0x00007fff67808bd2 _dispatch_lane_serial_drain + 597
13  libdispatch.dylib             	0x00007fff67809556 _dispatch_lane_invoke + 363
14  libdispatch.dylib             	0x00007fff67812bc5 _dispatch_workloop_worker_thread + 582
15  libsystem_pthread.dylib       	0x00007fff67a5c860 _pthread_wqthread + 336
16  libsystem_pthread.dylib       	0x00007fff67a5c69b start_wqthread + 15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551579</commentid>
    <comment_count>2</comment_count>
      <attachid>373812</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-09 19:49:33 -0700</bug_when>
    <thetext>Created attachment 373812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551588</commentid>
    <comment_count>3</comment_count>
      <attachid>373812</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-07-09 20:50:04 -0700</bug_when>
    <thetext>Comment on attachment 373812
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551592</commentid>
    <comment_count>4</comment_count>
      <attachid>373812</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-09 21:19:54 -0700</bug_when>
    <thetext>Comment on attachment 373812
Patch

Clearing flags on attachment: 373812

Committed r247292: &lt;https://trac.webkit.org/changeset/247292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551593</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-09 21:19:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551594</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-09 21:24:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/52871301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551733</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-10 11:01:13 -0700</bug_when>
    <thetext>This change caused TestWebKitAPI.CloseWebViewDuringEnterFullscreen.VideoFullscreen to time out on Mojave bots:
https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK2%20(Tests)/builds/5227

The test is still passing on High Sierra, so EWS didn&apos;t catch it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551745</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-10 11:30:24 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #7)
&gt; This change caused
&gt; TestWebKitAPI.CloseWebViewDuringEnterFullscreen.VideoFullscreen to time out
&gt; on Mojave bots:
&gt; https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK2%20(Tests)/
&gt; builds/5227
&gt; 
&gt; The test is still passing on High Sierra, so EWS didn&apos;t catch it.

Ok, looking now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551750</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-10 11:42:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Ryan Haddad from comment #7)
&gt; &gt; This change caused
&gt; &gt; TestWebKitAPI.CloseWebViewDuringEnterFullscreen.VideoFullscreen to time out
&gt; &gt; on Mojave bots:
&gt; &gt; https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK2%20(Tests)/
&gt; &gt; builds/5227
&gt; &gt; 
&gt; &gt; The test is still passing on High Sierra, so EWS didn&apos;t catch it.
&gt; 
&gt; Ok, looking now.

Does not reproduce for me locally on Catalina, odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551798</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-10 13:13:33 -0700</bug_when>
    <thetext>Reverted r247292 for reason:

Caused CloseWebViewDuringEnterFullscreen.VideoFullscreen API test to time out on Mojave bots

Committed r247323: &lt;https://trac.webkit.org/changeset/247323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551809</commentid>
    <comment_count>11</comment_count>
      <attachid>373862</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-10 13:32:24 -0700</bug_when>
    <thetext>Created attachment 373862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551812</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-10 13:36:30 -0700</bug_when>
    <thetext>Attachment 373862 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3391:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3392:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3394:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3395:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3396:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3398:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3399:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3401:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3402:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3415:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 10 in 3 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>1551841</commentid>
    <comment_count>13</comment_count>
      <attachid>373862</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-07-10 14:43:00 -0700</bug_when>
    <thetext>Comment on attachment 373862
Patch

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

r=me with a couple of minor nits

&gt; Source/WebCore/ChangeLog:16
&gt; +        Stop last template parameter which was used exclusively by WebCoreAVFLoaderDelegate to try and

Nit: s/Stop/Remove/

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3391
&gt; +    #if ENABLE(WIRELESS_PLAYBACK_TARGET)

Nit: indentation

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3395
&gt; +    #if ENABLE(LEGACY_ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA)

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3401
&gt; +    #if !RELEASE_LOG_DISABLED

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551856</commentid>
    <comment_count>14</comment_count>
      <attachid>373868</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-10 15:07:35 -0700</bug_when>
    <thetext>Created attachment 373868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551857</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-10 15:08:09 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #13)
&gt; Comment on attachment 373862 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373862&amp;action=review
&gt; 
&gt; r=me with a couple of minor nits
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        Stop last template parameter which was used exclusively by WebCoreAVFLoaderDelegate to try and
&gt; 
&gt; Nit: s/Stop/Remove/
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3391
&gt; &gt; +    #if ENABLE(WIRELESS_PLAYBACK_TARGET)
&gt; 
&gt; Nit: indentation
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3395
&gt; &gt; +    #if ENABLE(LEGACY_ENCRYPTED_MEDIA) || ENABLE(ENCRYPTED_MEDIA)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3401
&gt; &gt; +    #if !RELEASE_LOG_DISABLED
&gt; 
&gt; Ditto.

Thanks Eric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551872</commentid>
    <comment_count>16</comment_count>
      <attachid>373868</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-10 16:08:35 -0700</bug_when>
    <thetext>Comment on attachment 373868
Patch

Clearing flags on attachment: 373868

Committed r247331: &lt;https://trac.webkit.org/changeset/247331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551873</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-10 16:08:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373812</attachid>
            <date>2019-07-09 19:49:33 -0700</date>
            <delta_ts>2019-07-10 13:32:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199652-20190709194927.patch</filename>
            <type>text/plain</type>
            <size>6843</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwNDUzMmY0MjI4OGJi
MTAyNmNmOWE1MTVkODljODNjOWZkZWRjYS4uOTE0NGM2OTg1OGI1YjQxODIxNzQyNzkwNjI4YThl
M2Y1NmY5ZjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBHZW5lcmlj
VGFza1F1ZXVlIGZyb20gbXVsdGlwbGUgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHdhcyBjYWxs
aW5nIEdlbmVyaWNUYXNrUXVldWU6OmVucXVldWVUYXNrKCkgZnJvbSBhIGJhY2tncm91bmQgdGhy
ZWFkLAorICAgICAgICB3aGljaCBpcyBub3Qgc2FmZSBiZWNhdXNlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBlbnF1ZXVlVGFzaygpIGNhbGxzIG1ha2VXZWFrUHRyKCkgb24gdGhlCisgICAgICAgIEdl
bmVyaWNUYXNrUXVldWUgKGEgbWFpbiB0aHJlYWQgb2JqZWN0KS4KKworICAgICAgICBVcGRhdGUg
V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHRvIHVzZSBjYWxsT25NYWluVGhyZWFkKCkgaW5zdGVh
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaDoKKyAgICAgICAgU3Rv
cCBsYXN0IHRlbXBsYXRlIHBhcmFtZXRlciB3aGljaCB3YXMgdXNlZCBleGNsdXNpdmVseSBieSBX
ZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgdG8gdHJ5IGFuZAorICAgICAgICBtYWtlIEdlbmVyaWNU
YXNrUXVldWUgdGhyZWFkLXNhZmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBtZXRhZGF0YUxvYWRlZF0pOgorICAgICAg
ICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBkaWRFbmQ6XSk6CisgICAgICAgICgtW1dlYkNv
cmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdl
OmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGxlZ2libGVP
dXRwdXQ6ZGlkT3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6bmF0aXZlU2FtcGxlQnVmZmVyczpmb3JJ
dGVtVGltZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb3V0cHV0U2Vx
dWVuY2VXYXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUg
cmVzb3VyY2VMb2FkZXI6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOl0p
OgorICAgICAgICAoLVtXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgcmVzb3VyY2VMb2FkZXI6ZGlk
Q2FuY2VsTG9hZGluZ1JlcXVlc3Q6XSk6CisKIDIwMTktMDctMDkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYnVpbGQgYWZ0ZXIgcjI0
NzI3OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCmluZGV4IGEw
Y2UzMDJmYjFmZDRlYWM4YjFmMTg0NjM0NDFkZDk0OTE4YjZjNjEuLjQzYWU1OTNlYzhiZTk1OWU2
NzhjMjU0YTU0MWU5YmYwNTBjM2ZiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5l
cmljVGFza1F1ZXVlLmgKQEAgLTcxLDggKzcxLDggQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1Rhc2tzOwogfTsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEMgPSB1bnNpZ25lZD4KLWNsYXNzIEdlbmVyaWNUYXNrUXVldWUgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8R2VuZXJpY1Rhc2tRdWV1ZTxULCBDPj4gewordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBHZW5lcmljVGFza1F1ZXVlIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPEdlbmVyaWNUYXNrUXVldWU8VD4+IHsKIHB1YmxpYzoKICAgICBHZW5lcmljVGFza1F1ZXVl
KCkKICAgICAgICAgOiBtX2Rpc3BhdGNoZXIoKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBUYXNrRGlzcGF0Y2hlcjxUPiBtX2Rpc3BhdGNoZXI7Ci0gICAgQyBt
X3BlbmRpbmdUYXNrcyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3BlbmRpbmdUYXNrcyB7IDAgfTsK
ICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggNGRhODViMjVjZGNhZWY5NmFmYThkMGY4ZmJiNWU5ZmJhOWQ4ODc1Yy4uMGQ0NGQ4
M2RiNTcyMmNlNzFiNzNhYjFlZGY4NmRhMTE0ZDA4M2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0xNjksNyArMTY5LDYgQEAgZW51bSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2Vy
dmF0aW9uQ29udGV4dCB7CiBAaW50ZXJmYWNlIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIDogTlNP
YmplY3QgPEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRQdXNoRGVsZWdhdGU+CiB7CiAgICAgV2Vh
a1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiBtX3BsYXllcjsKLSAgICBH
ZW5lcmljVGFza1F1ZXVlPFRpbWVyLCBzdGQ6OmF0b21pYzx1bnNpZ25lZD4+IG1fdGFza1F1ZXVl
OwogICAgIGludCBtX2RlbGF5Q2FsbGJhY2tzOwogfQogLShpZClpbml0V2l0aFBsYXllcjooV2Vh
a1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKWNhbGxiYWNrOwpAQCAt
MTg0LDcgKzE4Myw2IEBAIEBlbmQKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdB
VEUpCiBAaW50ZXJmYWNlIFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWQXNz
ZXRSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDPiBtX3BsYXllcjsKLSAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVy
LCBzdGQ6OmF0b21pYzx1bnNpZ25lZD4+IG1fdGFza1F1ZXVlOwogfQogLSAoaWQpaW5pdFdpdGhQ
bGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5
ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNv
dXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7CkBAIC0zMjg3LDcgKzMy
ODUsNyBAQCAtICh2b2lkKWRpc2Nvbm5lY3QKIAogLSAodm9pZCltZXRhZGF0YUxvYWRlZAogewot
ICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0geworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3BsYXllciA9IG1fcGxheWVyXSB7CiAgICAgICAgIGlmIChwbGF5ZXIp
CiAgICAgICAgICAgICBwbGF5ZXItPm1ldGFkYXRhTG9hZGVkKCk7CiAgICAgfSk7CkBAIC0zMjk2
LDcgKzMyOTQsNyBAQCAtICh2b2lkKW1ldGFkYXRhTG9hZGVkCiAtICh2b2lkKWRpZEVuZDooTlNO
b3RpZmljYXRpb24gKil1bnVzZWROb3RpZmljYXRpb24KIHsKICAgICBVTlVTRURfUEFSQU0odW51
c2VkTm90aWZpY2F0aW9uKTsKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0g
bV9wbGF5ZXJdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllcl0gewog
ICAgICAgICBpZiAocGxheWVyKQogICAgICAgICAgICAgcGxheWVyLT5kaWRFbmQoKTsKICAgICB9
KTsKQEAgLTMzMDQsNyArMzMwMiw3IEBAIC0gKHZvaWQpZGlkRW5kOihOU05vdGlmaWNhdGlvbiAq
KXVudXNlZE5vdGlmaWNhdGlvbgogCiAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5
UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNv
bnRleHQ6KE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0KWNvbnRleHQK
IHsKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIGtleVBh
dGggPSByZXRhaW5QdHIoa2V5UGF0aCksIGNoYW5nZSA9IHJldGFpblB0cihjaGFuZ2UpLCBvYmpl
Y3QgPSByZXRhaW5QdHIob2JqZWN0KSwgY29udGV4dF0geworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3BsYXllciA9IG1fcGxheWVyLCBrZXlQYXRoID0gcmV0YWluUHRyKGtleVBhdGgpLCBjaGFuZ2Ug
PSByZXRhaW5QdHIoY2hhbmdlKSwgb2JqZWN0ID0gcmV0YWluUHRyKG9iamVjdCksIGNvbnRleHRd
IHsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlk
IG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsK
QEAgLTM0MDcsNyArMzQwNSw3IEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0IGRp
ZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuCiB7CiAgICAgVU5V
U0VEX1BBUkFNKG91dHB1dCk7CiAKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVy
ID0gbV9wbGF5ZXIsIHN0cmluZ3MgPSByZXRhaW5QdHIoc3RyaW5ncyksIG5hdGl2ZVNhbXBsZXMg
PSByZXRhaW5QdHIobmF0aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSB7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbcGxheWVyID0gbV9wbGF5ZXIsIHN0cmluZ3MgPSByZXRhaW5QdHIoc3RyaW5ncyksIG5h
dGl2ZVNhbXBsZXMgPSByZXRhaW5QdHIobmF0aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSB7CiAgICAg
ICAgIGlmICghcGxheWVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBNZWRpYVRpbWUg
dGltZSA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6Onpl
cm9UaW1lKCkpOwpAQCAtMzQxOSw3ICszNDE3LDcgQEAgLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdh
c0ZsdXNoZWQ6KGlkKW91dHB1dAogewogICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOwogCi0gICAg
bV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyXSB7CisgICAgY2FsbE9u
TWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXJdIHsKICAgICAgICAgaWYgKHBsYXllcikKICAg
ICAgICAgICAgIHBsYXllci0+Zmx1c2hDdWVzKCk7CiAgICAgfSk7CkBAIC0zNDQ2LDcgKzM0NDQs
NyBAQCAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNv
dXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZAogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAg
IHJldHVybiBOTzsKIAotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3Bs
YXllciwgbG9hZGluZ1JlcXVlc3QgPSByZXRhaW5QdHIobG9hZGluZ1JlcXVlc3QpXSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcGxheWVyID0gbV9wbGF5ZXIsIGxvYWRpbmdSZXF1ZXN0ID0gcmV0
YWluUHRyKGxvYWRpbmdSZXF1ZXN0KV0gewogICAgICAgICBpZiAoIXBsYXllcikgewogICAgICAg
ICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM0NzAsNyArMzQ2OCw3IEBAIC0gKEJPT0wpcmVzb3VyY2VMb2Fk
ZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIHNob3VsZFdhaXRGb3JS
ZXNwCiAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNv
dXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDooQVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdAogewogICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZUxv
YWRlcik7Ci0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBs
b2FkaW5nUmVxdWVzdCA9IHJldGFpblB0cihsb2FkaW5nUmVxdWVzdCldIHsKKyAgICBjYWxsT25N
YWluVGhyZWFkKFtwbGF5ZXIgPSBtX3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSByZXRhaW5QdHIo
bG9hZGluZ1JlcXVlc3QpXSB7CiAgICAgICAgIGlmIChwbGF5ZXIpCiAgICAgICAgICAgICBwbGF5
ZXItPmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KGxvYWRpbmdSZXF1ZXN0LmdldCgpKTsKICAgICB9
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373862</attachid>
            <date>2019-07-10 13:32:24 -0700</date>
            <delta_ts>2019-07-10 15:07:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199652-20190710133224.patch</filename>
            <type>text/plain</type>
            <size>20945</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkMDdlYmVlYWU2ZWRl
ZmU3NTA3ZDJiODdkYWM4ODIyNjU0YTc1My4uNWE5MWQ3NjE5MTRlMjAxMDE0NzNkMDQ4Yzc4ZjE0
NWQ3ZjBiYjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA3LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBHZW5lcmlj
VGFza1F1ZXVlIGZyb20gbXVsdGlwbGUgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCisKKyAgICAgICAgV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHdhcyBjYWxs
aW5nIEdlbmVyaWNUYXNrUXVldWU6OmVucXVldWVUYXNrKCkgZnJvbSBhIGJhY2tncm91bmQgdGhy
ZWFkLAorICAgICAgICB3aGljaCBpcyBub3Qgc2FmZSBiZWNhdXNlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBlbnF1ZXVlVGFzaygpIGNhbGxzIG1ha2VXZWFrUHRyKCkgb24gdGhlCisgICAgICAgIEdl
bmVyaWNUYXNrUXVldWUgKGEgbWFpbiB0aHJlYWQgb2JqZWN0KS4KKworICAgICAgICBVcGRhdGUg
V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHRvIG1ha2Ugc3VyZSBpdCBpcyBvbiB0aGUgbWFpbiB0
aHJlYWQgYmVmb3JlIGl0IGNhbGxzCisgICAgICAgIEdlbmVyaWNUYXNrUXVldWU6OmVucXVldWVU
YXNrKCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAg
IFN0b3AgbGFzdCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2hpY2ggd2FzIHVzZWQgZXhjbHVzaXZlbHkg
YnkgV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHRvIHRyeSBhbmQKKyAgICAgICAgbWFrZSBHZW5l
cmljVGFza1F1ZXVlIHRocmVhZC1zYWZlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbWV0YWRhdGFMb2FkZWRdKToKKyAg
ICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgZGlkRW5kOl0pOgorICAgICAgICAoLVtX
ZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNo
YW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBsZWdp
YmxlT3V0cHV0OmRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdzOm5hdGl2ZVNhbXBsZUJ1ZmZlcnM6
Zm9ySXRlbVRpbWU6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG91dHB1
dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVn
YXRlIHJlc291cmNlTG9hZGVyOnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJj
ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIHJlc291cmNlTG9hZGVy
OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0Ol0pOgorCiAyMDE5LTA3LTEwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0
NzI5Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAppbmRleCBh
MGNlMzAyZmIxZmQ0ZWFjOGIxZjE4NDYzNDQxZGQ5NDkxOGI2YzYxLi40M2FlNTkzZWM4YmU5NTll
Njc4YzI1NGE1NDFlOWJmMDUwYzNmYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2Vu
ZXJpY1Rhc2tRdWV1ZS5oCkBAIC03MSw4ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8V1RG
OjpGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKIH07CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDID0gdW5zaWduZWQ+Ci1jbGFzcyBHZW5lcmljVGFza1F1ZXVlIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPEdlbmVyaWNUYXNrUXVldWU8VCwgQz4+IHsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorY2xhc3MgR2VuZXJpY1Rhc2tRdWV1ZSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxHZW5lcmljVGFza1F1ZXVlPFQ+PiB7CiBwdWJsaWM6CiAgICAgR2VuZXJpY1Rhc2tRdWV1
ZSgpCiAgICAgICAgIDogbV9kaXNwYXRjaGVyKCkKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgVGFza0Rpc3BhdGNoZXI8VD4gbV9kaXNwYXRjaGVyOwotICAgIEMg
bV9wZW5kaW5nVGFza3MgeyAwIH07CisgICAgdW5zaWduZWQgbV9wZW5kaW5nVGFza3MgeyAwIH07
CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDRkYTg1YjI1Y2RjYWVmOTZhZmE4ZDBmOGZiYjVlOWZiYTlkODg3NWMuLjY0ZWRj
OWUzM2E1NzNhMGMyNzJmMWQ1YTcxNWQxNDM3OTdiYjZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY2LDEwICsxNjYsMTggQEAgZW51bSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9i
c2VydmF0aW9uQ29udGV4dCB7CiAgICAgTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHRBVlBsYXllckxheWVyLAogfTsKIAorc3RhdGljIHZvaWQgZW5zdXJlT25NYWluVGhy
ZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmKQoreworICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAg
ICAgICAgZigpOworICAgIGVsc2UKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGYp
KTsKK30KKwogQGludGVyZmFjZSBXZWJDb3JlQVZGTW92aWVPYnNlcnZlciA6IE5TT2JqZWN0IDxB
VlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UHVzaERlbGVnYXRlPgogewogICAgIFdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9wbGF5ZXI7Ci0gICAgR2VuZXJpY1Rh
c2tRdWV1ZTxUaW1lciwgc3RkOjphdG9taWM8dW5zaWduZWQ+PiBtX3Rhc2tRdWV1ZTsKKyAgICBH
ZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1ZTsKICAgICBpbnQgbV9kZWxheUNhbGxi
YWNrczsKIH0KIC0oaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQz4mJiljYWxsYmFjazsKQEAgLTE4NCw3ICsxOTIsNyBAQCBAZW5kCiAj
aWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogQGludGVyZmFjZSBXZWJDb3Jl
QVZGTG9hZGVyRGVsZWdhdGUgOiBOU09iamVjdDxBVkFzc2V0UmVzb3VyY2VMb2FkZXJEZWxlZ2F0
ZT4gewogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9w
bGF5ZXI7Ci0gICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lciwgc3RkOjphdG9taWM8dW5zaWduZWQ+
PiBtX3Rhc2tRdWV1ZTsKKyAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1ZTsK
IH0KIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJl
c291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1
ZXN0OwpAQCAtMzI4NywxMTkgKzMyOTUsMTI1IEBAIC0gKHZvaWQpZGlzY29ubmVjdAogCiAtICh2
b2lkKW1ldGFkYXRhTG9hZGVkCiB7Ci0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXll
ciA9IG1fcGxheWVyXSB7Ci0gICAgICAgIGlmIChwbGF5ZXIpCi0gICAgICAgICAgICBwbGF5ZXIt
Pm1ldGFkYXRhTG9hZGVkKCk7CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNr
KFtwbGF5ZXIgPSBtX3BsYXllcl0geworICAgICAgICAgICAgaWYgKHBsYXllcikKKyAgICAgICAg
ICAgICAgICBwbGF5ZXItPm1ldGFkYXRhTG9hZGVkKCk7CisgICAgICAgIH0pOwogICAgIH0pOwog
fQogCiAtICh2b2lkKWRpZEVuZDooTlNOb3RpZmljYXRpb24gKil1bnVzZWROb3RpZmljYXRpb24K
IHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9uKTsKLSAgICBtX3Rhc2tRdWV1
ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXJdIHsKLSAgICAgICAgaWYgKHBsYXllcikK
LSAgICAgICAgICAgIHBsYXllci0+ZGlkRW5kKCk7CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtz
ZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAgICAgIG1fdGFza1F1ZXVl
LmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0geworICAgICAgICAgICAgaWYgKHBsYXll
cikKKyAgICAgICAgICAgICAgICBwbGF5ZXItPmRpZEVuZCgpOworICAgICAgICB9KTsKICAgICB9
KTsKIH0KIAogLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBs
YXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dCljb250ZXh0CiB7Ci0gICAgbV90YXNr
UXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBrZXlQYXRoID0gcmV0YWluUHRy
KGtleVBhdGgpLCBjaGFuZ2UgPSByZXRhaW5QdHIoY2hhbmdlKSwgb2JqZWN0ID0gcmV0YWluUHRy
KG9iamVjdCksIGNvbnRleHRdIHsKLSAgICAgICAgaWYgKCFwbGF5ZXIpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZh
bHVlQ2hhbmdlTmV3S2V5XTsKLSAgICAgICAgYm9vbCB3aWxsQ2hhbmdlID0gW1tjaGFuZ2UgdmFs
dWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJvb2xWYWx1
ZV07Ci0gICAgICAgIGJvb2wgc2hvdWxkTG9nVmFsdWUgPSAhd2lsbENoYW5nZTsKKyAgICBlbnN1
cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGtleVBh
dGggPSByZXRhaW5QdHIoa2V5UGF0aCksIGNoYW5nZSA9IHJldGFpblB0cihjaGFuZ2UpLCBvYmpl
Y3QgPSByZXRhaW5QdHIob2JqZWN0KSwgY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV90
YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBrZXlQYXRoID0gV1RGTW92
ZShrZXlQYXRoKSwgY2hhbmdlID0gV1RGTW92ZShjaGFuZ2UpLCBvYmplY3QgPSBXVEZNb3ZlKG9i
amVjdCksIGNvbnRleHRdIHsKKyAgICAgICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktl
eTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICAgICAgICAgIGJvb2wgd2lsbENoYW5nZSA9
IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9y
S2V5XSBib29sVmFsdWVdOworICAgICAgICAgICAgYm9vbCBzaG91bGRMb2dWYWx1ZSA9ICF3aWxs
Q2hhbmdlOwogCi0gICAgICAgIGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9u
T2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXllcikgewotICAgICAgICAgICAgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAInJlYWR5Rm9yRGlzcGxheSJdKQotICAgICAgICAgICAgICAg
IHBsYXllci0+Zmlyc3RGcmFtZUF2YWlsYWJsZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVl
XSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZG
b3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXllcikgeworICAgICAgICAgICAg
ICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3BsYXkiXSkKKyAg
ICAgICAgICAgICAgICAgICAgcGxheWVyLT5maXJzdEZyYW1lQXZhaWxhYmxlRGlkQ2hhbmdlKFtu
ZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAoY29udGV4
dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllckl0ZW1U
cmFjaykgewotICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVuYWJs
ZWQiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnRyYWNrRW5hYmxlZERpZENoYW5nZShbbmV3
VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250ZXh0ID09
IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbVRyYWNr
KSB7CisgICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVuYWJs
ZWQiXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT50cmFja0VuYWJsZWREaWRDaGFuZ2Uo
W25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250
ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRl
bSAmJiB3aWxsQ2hhbmdlKSB7Ci0gICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAicGxheWJhY2tMaWtlbHlUb0tlZXBVcCJdKQotICAgICAgICAgICAgICAgIHBsYXllci0+
cGxheWJhY2tMaWtlbHlUb0tlZXBVcFdpbGxDaGFuZ2UoKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNrQnVmZmVyRW1wdHkiXSkKLSAgICAg
ICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrQnVmZmVyRW1wdHlXaWxsQ2hhbmdlKCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZl
ckZ1bGwiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrQnVmZmVyRnVsbFdpbGxD
aGFuZ2UoKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5
ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJJdGVtICYmIHdpbGxDaGFuZ2Up
IHsKKyAgICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJh
Y2tMaWtlbHlUb0tlZXBVcCJdKQorICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNr
TGlrZWx5VG9LZWVwVXBXaWxsQ2hhbmdlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tl
eVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJFbXB0eSJdKQorICAgICAgICAg
ICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrQnVmZmVyRW1wdHlXaWxsQ2hhbmdlKCk7CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tC
dWZmZXJGdWxsIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJG
dWxsV2lsbENoYW5nZSgpOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250ZXh0ID09
IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbSAmJiAh
d2lsbENoYW5nZSkgewotICAgICAgICAgICAgLy8gQSB2YWx1ZSBjaGFuZ2VkIGZvciBhbiBBVlBs
YXllckl0ZW0KLSAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0
dXMiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXllckl0ZW1TdGF0dXNEaWRDaGFuZ2Uo
W25ld1ZhbHVlIGludFZhbHVlXSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJwbGF5YmFja0xpa2VseVRvS2VlcFVwIl0pCi0gICAgICAgICAgICAgICAg
cGxheWVyLT5wbGF5YmFja0xpa2VseVRvS2VlcFVwRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFs
dWVdKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBs
YXliYWNrQnVmZmVyRW1wdHkiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrQnVm
ZmVyRW1wdHlEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICAgICAgZWxz
ZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCi0g
ICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja0J1ZmZlckZ1bGxEaWRDaGFuZ2UoW25ld1Zh
bHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAiYXNzZXQiXSkgewotICAgICAgICAgICAgICAgIHBsYXllci0+c2V0QXNzZXQoUmV0
YWluUHRyPGlkPihuZXdWYWx1ZSkpOwotICAgICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0g
ZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpA
ImxvYWRlZFRpbWVSYW5nZXMiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPmxvYWRlZFRpbWVS
YW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMi
XSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnNlZWthYmxlVGltZVJhbmdlc0RpZENoYW5nZShS
ZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAInRyYWNrcyJdKSB7Ci0gICAgICAgICAgICAgICAgcGxheWVy
LT50cmFja3NEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkTG9nVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiaGFzRW5hYmxlZEF1ZGlvIl0pCi0gICAgICAgICAg
ICAgICAgcGxheWVyLT5oYXNFbmFibGVkQXVkaW9EaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1
ZV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicHJl
c2VudGF0aW9uU2l6ZSJdKQotICAgICAgICAgICAgICAgIHBsYXllci0+cHJlc2VudGF0aW9uU2l6
ZURpZENoYW5nZShGbG9hdFNpemUoW25ld1ZhbHVlIHNpemVWYWx1ZV0pKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImR1cmF0aW9uIl0pCi0gICAgICAg
ICAgICAgICAgcGxheWVyLT5kdXJhdGlvbkRpZENoYW5nZShQQUw6OnRvTWVkaWFUaW1lKFtuZXdW
YWx1ZSBDTVRpbWVWYWx1ZV0pKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1
YWxUb1N0cmluZzpAInRpbWVkTWV0YWRhdGEiXSAmJiBuZXdWYWx1ZSkgewotICAgICAgICAgICAg
ICAgIE1lZGlhVGltZSBub3c7Ci0gICAgICAgICAgICAgICAgQ01UaW1lIGl0ZW1UaW1lID0gWyhB
VlBsYXllckl0ZW0gKilvYmplY3QuZ2V0KCkgY3VycmVudFRpbWVdOwotICAgICAgICAgICAgICAg
IGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVtVGltZSkpCi0gICAgICAgICAgICAgICAgICAgIG5v
dyA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6Onplcm9U
aW1lKCkpOwotICAgICAgICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFEaWRBcnJpdmUoUmV0YWlu
UHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSwgbm93KTsKLSAgICAgICAgICAgICAgICBzaG91bGRMb2dW
YWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCJjYW5QbGF5RmFzdFJldmVyc2UiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPmNh
blBsYXlGYXN0UmV2ZXJzZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFzdEZvcndh
cmQiXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPmNhblBsYXlGYXN0Rm9yd2FyZERpZENoYW5n
ZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250
ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRl
bSAmJiAhd2lsbENoYW5nZSkgeworICAgICAgICAgICAgICAgIC8vIEEgdmFsdWUgY2hhbmdlZCBm
b3IgYW4gQVZQbGF5ZXJJdGVtCisgICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAInN0YXR1cyJdKQorICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXllckl0
ZW1TdGF0dXNEaWRDaGFuZ2UoW25ld1ZhbHVlIGludFZhbHVlXSk7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tMaWtlbHlUb0tlZXBV
cCJdKQorICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrTGlrZWx5VG9LZWVwVXBE
aWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNrQnVmZmVyRW1wdHkiXSkKKyAgICAg
ICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja0J1ZmZlckVtcHR5RGlkQ2hhbmdlKFtuZXdW
YWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZlckZ1bGwiXSkKKyAgICAgICAgICAgICAgICAgICAg
cGxheWVyLT5wbGF5YmFja0J1ZmZlckZ1bGxEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0p
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImFz
c2V0Il0pIHsKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5zZXRBc3NldChSZXRhaW5QdHI8
aWQ+KG5ld1ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJsb2FkZWRUaW1lUmFuZ2VzIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9hZGVk
VGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRp
bWVSYW5nZXMiXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5zZWVrYWJsZVRpbWVSYW5n
ZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAidHJhY2tzIl0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgcGxheWVyLT50cmFja3NEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+
KG5ld1ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJo
YXNFbmFibGVkQXVkaW8iXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5oYXNFbmFibGVk
QXVkaW9EaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInByZXNlbnRhdGlvblNpemUiXSkKKyAg
ICAgICAgICAgICAgICAgICAgcGxheWVyLT5wcmVzZW50YXRpb25TaXplRGlkQ2hhbmdlKEZsb2F0
U2l6ZShbbmV3VmFsdWUgc2l6ZVZhbHVlXSkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImR1cmF0aW9uIl0pCisgICAgICAgICAgICAgICAgICAg
IHBsYXllci0+ZHVyYXRpb25EaWRDaGFuZ2UoUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01U
aW1lVmFsdWVdKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAidGltZWRNZXRhZGF0YSJdICYmIG5ld1ZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIE1lZGlhVGltZSBub3c7CisgICAgICAgICAgICAgICAgICAgIENNVGltZSBpdGVtVGltZSA9
IFsoQVZQbGF5ZXJJdGVtICopb2JqZWN0LmdldCgpIGN1cnJlbnRUaW1lXTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKENNVElNRV9JU19OVU1FUklDKGl0ZW1UaW1lKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5vdyA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRp
YVRpbWU6Onplcm9UaW1lKCkpOworICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPm1ldGFkYXRh
RGlkQXJyaXZlKFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSksIG5vdyk7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFzdFJldmVyc2UiXSkKKyAg
ICAgICAgICAgICAgICAgICAgcGxheWVyLT5jYW5QbGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UoW25l
d1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0Rm9yd2FyZCJdKQorICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPmNhblBsYXlGYXN0Rm9yd2FyZERpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVl
XSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJB
VkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXIgJiYgIXdpbGxDaGFuZ2UpIHsKLSAg
ICAgICAgICAgIC8vIEEgdmFsdWUgY2hhbmdlZCBmb3IgYW4gQVZQbGF5ZXIuCi0gICAgICAgICAg
ICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQotICAgICAgICAgICAgICAg
IHBsYXllci0+cmF0ZURpZENoYW5nZShbbmV3VmFsdWUgZG91YmxlVmFsdWVdKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInRpbWVDb250cm9sU3RhdHVz
Il0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT50aW1lQ29udHJvbFN0YXR1c0RpZENoYW5nZShb
bmV3VmFsdWUgaW50VmFsdWVdKTsKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQotICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXh0ZXJu
YWxQbGF5YmFja0FjdGl2ZSJdIHx8IFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImFsbG93c0V4
dGVybmFsUGxheWJhY2siXSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzc0RpZENoYW5nZSgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgICAgICAgICBlbHNlIGlm
IChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNp
ZW50RXh0ZXJuYWxQcm90ZWN0aW9uIl0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5vdXRwdXRP
YnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChbbmV3VmFs
dWUgYm9vbFZhbHVlXSk7Ci0jZW5kaWYKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRl
eHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXIgJiYg
IXdpbGxDaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAvLyBBIHZhbHVlIGNoYW5nZWQgZm9yIGFu
IEFWUGxheWVyLgorICAgICAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJyYXRlIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+cmF0ZURpZENoYW5nZShbbmV3
VmFsdWUgZG91YmxlVmFsdWVdKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJ0aW1lQ29udHJvbFN0YXR1cyJdKQorICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPnRpbWVDb250cm9sU3RhdHVzRGlkQ2hhbmdlKFtuZXdWYWx1ZSBpbnRWYWx1ZV0p
OworICAgICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsUGxheWJhY2tB
Y3RpdmUiXSB8fCBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJhbGxvd3NFeHRlcm5hbFBsYXli
YWNrIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzRGlkQ2hhbmdlKCk7CisgICAgI2VuZGlmCisgICAgI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgICAgICAgICAgICAgIGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAIm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1
ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb24iXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVy
LT5vdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdl
ZChbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgI2VuZGlmCisgICAgICAgICAgICB9CiAKLSNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgaWYgKHBsYXllci0+bG9nZ2VyKCkud2ls
bExvZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKSAmJiAhKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKLSAgICAgICAgICAgIGF1dG8g
aWRlbnRpZmllciA9IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbiIsICJvYnNlcnZlVmFsdWVGb3JLZXlQYXRoIiwgcGxheWVyLT5sb2dJZGVu
dGlmaWVyKCkpOwotCi0gICAgICAgICAgICBpZiAoc2hvdWxkTG9nVmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZHVyYXRpb24iXSkKLSAgICAg
ICAgICAgICAgICAgICAgcGxheWVyLT5sb2dnZXIoKS5kZWJ1ZyhwbGF5ZXItPmxvZ0NoYW5uZWwo
KSwgaWRlbnRpZmllciwgImRpZCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0
byAiLCBQQUw6OnRvTWVkaWFUaW1lKFtuZXdWYWx1ZSBDTVRpbWVWYWx1ZV0pKTsKLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB2
YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIl
QCIsIG5ld1ZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVi
dWcocGxheWVyLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5
UGF0aCBVVEY4U3RyaW5nXSwgIicgdG8gIiwgW3ZhbHVlU3RyaW5nLmdldCgpIFVURjhTdHJpbmdd
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVy
LCB3aWxsQ2hhbmdlID8gIndpbGwiIDogImRpZCIsICIgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4
U3RyaW5nXSwgIiciKTsKLSAgICAgICAgfQotI2VuZGlmCisgICAgI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgICAgICAgICAgaWYgKHBsYXllci0+bG9nZ2VyKCkud2lsbExvZyhwbGF5ZXIt
PmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKSAmJiAhKFtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24iLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCIsIHBsYXllci0+bG9nSWRlbnRpZmllcigp
KTsKKworICAgICAgICAgICAgICAgIGlmIChzaG91bGRMb2dWYWx1ZSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZHVyYXRpb24iXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVidWcocGxheWVyLT5sb2dDaGFu
bmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4U3RyaW5nXSwg
IicgdG8gIiwgUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhGb3JtYXQ6QCIlQCIsIG5ld1ZhbHVlXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGF5
ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVyLCAiZGlk
IGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRvICIsIFt2YWx1ZVN0cmluZy5n
ZXQoKSBVVEY4U3RyaW5nXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5sb2dnZXIoKS5kZWJ1ZyhwbGF5
ZXItPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5nZSA/ICJ3aWxsIiA6ICJkaWQi
LCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIik7CisgICAgICAgICAgICB9
CisgICAgI2VuZGlmCisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zNDA3LDExICszNDIx
LDEzIEBAIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0IGRpZE91dHB1dEF0dHJpYnV0
ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuCiB7CiAgICAgVU5VU0VEX1BBUkFNKG91dHB1
dCk7CiAKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIHN0
cmluZ3MgPSByZXRhaW5QdHIoc3RyaW5ncyksIG5hdGl2ZVNhbXBsZXMgPSByZXRhaW5QdHIobmF0
aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSB7Ci0gICAgICAgIGlmICghcGxheWVyKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBNZWRpYVRpbWUgdGltZSA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRp
YVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwotICAgICAgICBwbGF5ZXIt
PnByb2Nlc3NDdWUoc3RyaW5ncy5nZXQoKSwgbmF0aXZlU2FtcGxlcy5nZXQoKSwgdGltZSk7Cisg
ICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBzdHJpbmdzID0gcmV0YWluUHRyKHN0cmluZ3MpLCBuYXRpdmVTYW1wbGVzID0gcmV0YWluUHRy
KG5hdGl2ZVNhbXBsZXMpLCBpdGVtVGltZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV90YXNrUXVl
dWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBzdHJpbmdzID0gV1RGTW92ZShzdHJp
bmdzKSwgbmF0aXZlU2FtcGxlcyA9IFdURk1vdmUobmF0aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSB7
CisgICAgICAgICAgICBpZiAoIXBsYXllcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBNZWRpYVRpbWUgdGltZSA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRp
bWUpLCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOworICAgICAgICAgICAgcGxheWVyLT5wcm9jZXNz
Q3VlKHN0cmluZ3MuZ2V0KCksIG5hdGl2ZVNhbXBsZXMuZ2V0KCksIHRpbWUpOworICAgICAgICB9
KTsKICAgICB9KTsKIH0KIApAQCAtMzQxOSw5ICszNDM1LDExIEBAIC0gKHZvaWQpb3V0cHV0U2Vx
dWVuY2VXYXNGbHVzaGVkOihpZClvdXRwdXQKIHsKICAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsK
IAotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0gewotICAg
ICAgICBpZiAocGxheWVyKQotICAgICAgICAgICAgcGxheWVyLT5mbHVzaEN1ZXMoKTsKKyAgICBl
bnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsK
KyAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyXSB7Cisg
ICAgICAgICAgICBpZiAocGxheWVyKQorICAgICAgICAgICAgICAgIHBsYXllci0+Zmx1c2hDdWVz
KCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zNDQ2LDE0ICszNDY0LDE2IEBAIC0g
KEJPT0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9h
ZGVyIHNob3VsZFdhaXRGb3JMb2FkCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJu
IE5POwogCi0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBs
b2FkaW5nUmVxdWVzdCA9IHJldGFpblB0cihsb2FkaW5nUmVxdWVzdCldIHsKLSAgICAgICAgaWYg
KCFwbGF5ZXIpIHsKLSAgICAgICAgICAgIFtsb2FkaW5nUmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0
aEVycm9yOm5pbF07Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBlbnN1cmVP
bk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGxvYWRpbmdS
ZXF1ZXN0ID0gcmV0YWluUHRyKGxvYWRpbmdSZXF1ZXN0KV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
bV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVz
dCA9IFdURk1vdmUobG9hZGluZ1JlcXVlc3QpXSB7CisgICAgICAgICAgICBpZiAoIXBsYXllcikg
eworICAgICAgICAgICAgICAgIFtsb2FkaW5nUmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9y
Om5pbF07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0gICAgICAg
IGlmICghcGxheWVyLT5zaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UobG9hZGluZ1JlcXVl
c3QuZ2V0KCkpKQotICAgICAgICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRo
RXJyb3I6bmlsXTsKKyAgICAgICAgICAgIGlmICghcGxheWVyLT5zaG91bGRXYWl0Rm9yTG9hZGlu
Z09mUmVzb3VyY2UobG9hZGluZ1JlcXVlc3QuZ2V0KCkpKQorICAgICAgICAgICAgICAgIFtsb2Fk
aW5nUmVxdWVzdCBmaW5pc2hMb2FkaW5nV2l0aEVycm9yOm5pbF07CisgICAgICAgIH0pOwogICAg
IH0pOwogCiAgICAgcmV0dXJuIFlFUzsKQEAgLTM0NzAsOSArMzQ5MCwxMSBAQCAtIChCT09MKXJl
c291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91
bGRXYWl0Rm9yUmVzcAogLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9h
ZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Q6KEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3QKIHsKICAgICBVTlVTRURfUEFSQU0o
cmVzb3VyY2VMb2FkZXIpOwotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBt
X3BsYXllciwgbG9hZGluZ1JlcXVlc3QgPSByZXRhaW5QdHIobG9hZGluZ1JlcXVlc3QpXSB7Ci0g
ICAgICAgIGlmIChwbGF5ZXIpCi0gICAgICAgICAgICBwbGF5ZXItPmRpZENhbmNlbExvYWRpbmdS
ZXF1ZXN0KGxvYWRpbmdSZXF1ZXN0LmdldCgpKTsKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3Nl
bGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGxvYWRpbmdSZXF1ZXN0ID0gcmV0YWlu
UHRyKGxvYWRpbmdSZXF1ZXN0KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV90YXNrUXVldWUuZW5x
dWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVzdCA9IFdURk1vdmUobG9h
ZGluZ1JlcXVlc3QpXSB7CisgICAgICAgICAgICBpZiAocGxheWVyKQorICAgICAgICAgICAgICAg
IHBsYXllci0+ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QobG9hZGluZ1JlcXVlc3QuZ2V0KCkpOwor
ICAgICAgICB9KTsKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373868</attachid>
            <date>2019-07-10 15:07:35 -0700</date>
            <delta_ts>2019-07-10 16:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199652-20190710150734.patch</filename>
            <type>text/plain</type>
            <size>20788</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkMDdlYmVlYWU2ZWRl
ZmU3NTA3ZDJiODdkYWM4ODIyNjU0YTc1My4uZGJjOTMwZmIzNWJiMjcwYWZjZTkzZDk3YzE2OGMy
MWQyNzdlY2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA3LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBHZW5lcmlj
VGFza1F1ZXVlIGZyb20gbXVsdGlwbGUgdGhyZWFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uIGFuZCBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBXZWJDb3JlQVZGTG9hZGVy
RGVsZWdhdGUgd2FzIGNhbGxpbmcgR2VuZXJpY1Rhc2tRdWV1ZTo6ZW5xdWV1ZVRhc2soKSBmcm9t
IGEgYmFja2dyb3VuZCB0aHJlYWQsCisgICAgICAgIHdoaWNoIGlzIG5vdCBzYWZlIGJlY2F1c2Ug
dGhlIGltcGxlbWVudGF0aW9uIG9mIGVucXVldWVUYXNrKCkgY2FsbHMgbWFrZVdlYWtQdHIoKSBv
biB0aGUKKyAgICAgICAgR2VuZXJpY1Rhc2tRdWV1ZSAoYSBtYWluIHRocmVhZCBvYmplY3QpLgor
CisgICAgICAgIFVwZGF0ZSBXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGUgdG8gbWFrZSBzdXJlIGl0
IGlzIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgaXQgY2FsbHMKKyAgICAgICAgR2VuZXJpY1Rh
c2tRdWV1ZTo6ZW5xdWV1ZVRhc2soKS4KKworICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNUYXNr
UXVldWUuaDoKKyAgICAgICAgUmVtb3ZlIGxhc3QgdGVtcGxhdGUgcGFyYW1ldGVyIHdoaWNoIHdh
cyB1c2VkIGV4Y2x1c2l2ZWx5IGJ5IFdlYkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSB0byB0cnkgYW5k
CisgICAgICAgIG1ha2UgR2VuZXJpY1Rhc2tRdWV1ZSB0aHJlYWQtc2FmZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG1l
dGFkYXRhTG9hZGVkXSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGRpZEVu
ZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFW
Rk1vdmllT2JzZXJ2ZXIgbGVnaWJsZU91dHB1dDpkaWRPdXRwdXRBdHRyaWJ1dGVkU3RyaW5nczpu
YXRpdmVTYW1wbGVCdWZmZXJzOmZvckl0ZW1UaW1lOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZG
TW92aWVPYnNlcnZlciBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6XSk6CisgICAgICAgICgtW1dl
YkNvcmVBVkZMb2FkZXJEZWxlZ2F0ZSByZXNvdXJjZUxvYWRlcjpzaG91bGRXYWl0Rm9yTG9hZGlu
Z09mUmVxdWVzdGVkUmVzb3VyY2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZMb2FkZXJEZWxl
Z2F0ZSByZXNvdXJjZUxvYWRlcjpkaWRDYW5jZWxMb2FkaW5nUmVxdWVzdDpdKToKKwogMjAxOS0w
Ny0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNDcyOTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmlj
VGFza1F1ZXVlLmgKaW5kZXggYTBjZTMwMmZiMWZkNGVhYzhiMWYxODQ2MzQ0MWRkOTQ5MThiNmM2
MS4uNDNhZTU5M2VjOGJlOTU5ZTY3OGMyNTRhNTQxZTliZjA1MGMzZmI2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaApAQCAtNzEsOCArNzEsOCBAQCBwcml2
YXRlOgogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVGFza3M7CiB9
OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQyA9IHVuc2lnbmVkPgotY2xhc3Mg
R2VuZXJpY1Rhc2tRdWV1ZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxHZW5lcmljVGFza1F1ZXVl
PFQsIEM+PiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEdlbmVyaWNUYXNrUXVldWUg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R2VuZXJpY1Rhc2tRdWV1ZTxUPj4gewogcHVibGljOgog
ICAgIEdlbmVyaWNUYXNrUXVldWUoKQogICAgICAgICA6IG1fZGlzcGF0Y2hlcigpCkBAIC0xMjQs
NyArMTI0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFRhc2tEaXNwYXRjaGVyPFQ+IG1f
ZGlzcGF0Y2hlcjsKLSAgICBDIG1fcGVuZGluZ1Rhc2tzIHsgMCB9OworICAgIHVuc2lnbmVkIG1f
cGVuZGluZ1Rhc2tzIHsgMCB9OwogICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA0ZGE4NWIyNWNkY2FlZjk2YWZhOGQwZjhmYmI1
ZTlmYmE5ZDg4NzVjLi5jNjU5MGJkZWU2N2I0ZTIwOTg4OGU5NmEyYzMzMGYyZmUyMzM4Njk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE2NiwxMCArMTY2LDE4IEBAIGVudW0gTWVkaWFQ
bGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHQgewogICAgIE1lZGlhUGxheWVyQVZG
b3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXllciwKIH07CiAKK3N0YXRpYyB2
b2lkIGVuc3VyZU9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZikKK3sKKyAgICBpZiAo
aXNNYWluVGhyZWFkKCkpCisgICAgICAgIGYoKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoV1RGTW92ZShmKSk7Cit9CisKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRk1vdmllT2Jz
ZXJ2ZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFB1c2hEZWxlZ2F0ZT4K
IHsKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGxh
eWVyOwotICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXIsIHN0ZDo6YXRvbWljPHVuc2lnbmVkPj4g
bV90YXNrUXVldWU7CisgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiAg
ICAgaW50IG1fZGVsYXlDYWxsYmFja3M7CiB9CiAtKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpY2FsbGJhY2s7CkBAIC0xODQs
NyArMTkyLDcgQEAgQGVuZAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkK
IEBpbnRlcmZhY2UgV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlIDogTlNPYmplY3Q8QVZBc3NldFJl
c291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM+IG1fcGxheWVyOwotICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXIsIHN0
ZDo6YXRvbWljPHVuc2lnbmVkPj4gbV90YXNrUXVldWU7CisgICAgR2VuZXJpY1Rhc2tRdWV1ZTxU
aW1lcj4gbV90YXNrUXVldWU7CiB9CiAtIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKIC0gKEJPT0wpcmVzb3Vy
Y2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9hZGVyIHNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZTooQVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3QgKilsb2FkaW5nUmVxdWVzdDsKQEAgLTMyODcsMTE5ICszMjk1LDEyNSBAQCAtICh2b2lk
KWRpc2Nvbm5lY3QKIAogLSAodm9pZCltZXRhZGF0YUxvYWRlZAogewotICAgIG1fdGFza1F1ZXVl
LmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllcl0gewotICAgICAgICBpZiAocGxheWVyKQot
ICAgICAgICAgICAgcGxheWVyLT5tZXRhZGF0YUxvYWRlZCgpOworICAgIGVuc3VyZU9uTWFpblRo
cmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAgICBtX3Rh
c2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXJdIHsKKyAgICAgICAgICAgIGlm
IChwbGF5ZXIpCisgICAgICAgICAgICAgICAgcGxheWVyLT5tZXRhZGF0YUxvYWRlZCgpOworICAg
ICAgICB9KTsKICAgICB9KTsKIH0KIAogLSAodm9pZClkaWRFbmQ6KE5TTm90aWZpY2F0aW9uICop
dW51c2VkTm90aWZpY2F0aW9uCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlmaWNhdGlv
bik7Ci0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1fcGxheWVyXSB7Ci0g
ICAgICAgIGlmIChwbGF5ZXIpCi0gICAgICAgICAgICBwbGF5ZXItPmRpZEVuZCgpOworICAgIGVu
c3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewor
ICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXJdIHsKKyAg
ICAgICAgICAgIGlmIChwbGF5ZXIpCisgICAgICAgICAgICAgICAgcGxheWVyLT5kaWRFbmQoKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFu
Z2UgY29udGV4dDooTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHQpY29u
dGV4dAogewotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllciwg
a2V5UGF0aCA9IHJldGFpblB0cihrZXlQYXRoKSwgY2hhbmdlID0gcmV0YWluUHRyKGNoYW5nZSks
IG9iamVjdCA9IHJldGFpblB0cihvYmplY3QpLCBjb250ZXh0XSB7Ci0gICAgICAgIGlmICghcGxh
eWVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2Ug
dmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgIGJvb2wgd2lsbENo
YW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25J
c1ByaW9yS2V5XSBib29sVmFsdWVdOwotICAgICAgICBib29sIHNob3VsZExvZ1ZhbHVlID0gIXdp
bGxDaGFuZ2U7CisgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBrZXlQYXRoID0gcmV0YWluUHRyKGtleVBhdGgpLCBjaGFuZ2UgPSByZXRh
aW5QdHIoY2hhbmdlKSwgb2JqZWN0ID0gcmV0YWluUHRyKG9iamVjdCksIGNvbnRleHRdKCkgbXV0
YWJsZSB7CisgICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXll
ciwga2V5UGF0aCA9IFdURk1vdmUoa2V5UGF0aCksIGNoYW5nZSA9IFdURk1vdmUoY2hhbmdlKSwg
b2JqZWN0ID0gV1RGTW92ZShvYmplY3QpLCBjb250ZXh0XSB7CisgICAgICAgICAgICBpZiAoIXBs
YXllcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZCBuZXdWYWx1ZSA9
IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgICAgICAg
ICBib29sIHdpbGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdl
Tm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKKyAgICAgICAgICAgIGJvb2wgc2hv
dWxkTG9nVmFsdWUgPSAhd2lsbENoYW5nZTsKIAotICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRp
YVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxheWVyTGF5ZXIpIHsKLSAg
ICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFkeUZvckRpc3BsYXki
XSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPmZpcnN0RnJhbWVBdmFpbGFibGVEaWRDaGFuZ2Uo
W25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29udGV4
dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxheWVyTGF5
ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmVh
ZHlGb3JEaXNwbGF5Il0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+Zmlyc3RGcmFtZUF2
YWlsYWJsZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgICAgICB9CiAK
LSAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHRQbGF5ZXJJdGVtVHJhY2spIHsKLSAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJlbmFibGVkIl0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT50cmFja0Vu
YWJsZWREaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29u
dGV4dFBsYXllckl0ZW1UcmFjaykgeworICAgICAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJlbmFibGVkIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+dHJh
Y2tFbmFibGVkRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgICAgIH0K
IAotICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0
aW9uQ29udGV4dFBsYXllckl0ZW0gJiYgd2lsbENoYW5nZSkgewotICAgICAgICAgICAgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNrTGlrZWx5VG9LZWVwVXAiXSkKLSAgICAg
ICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrTGlrZWx5VG9LZWVwVXBXaWxsQ2hhbmdlKCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1
ZmZlckVtcHR5Il0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja0J1ZmZlckVtcHR5
V2lsbENoYW5nZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5
YmFja0J1ZmZlckZ1bGxXaWxsQ2hhbmdlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChj
b250ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVy
SXRlbSAmJiB3aWxsQ2hhbmdlKSB7CisgICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1
YWxUb1N0cmluZzpAInBsYXliYWNrTGlrZWx5VG9LZWVwVXAiXSkKKyAgICAgICAgICAgICAgICAg
ICAgcGxheWVyLT5wbGF5YmFja0xpa2VseVRvS2VlcFVwV2lsbENoYW5nZSgpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNrQnVmZmVy
RW1wdHkiXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja0J1ZmZlckVtcHR5
V2lsbENoYW5nZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAInBsYXliYWNrQnVmZmVyRnVsbCJdKQorICAgICAgICAgICAgICAgICAgICBwbGF5
ZXItPnBsYXliYWNrQnVmZmVyRnVsbFdpbGxDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29u
dGV4dFBsYXllckl0ZW0gJiYgIXdpbGxDaGFuZ2UpIHsKLSAgICAgICAgICAgIC8vIEEgdmFsdWUg
Y2hhbmdlZCBmb3IgYW4gQVZQbGF5ZXJJdGVtCi0gICAgICAgICAgICBpZiAoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAic3RhdHVzIl0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5ZXJJ
dGVtU3RhdHVzRGlkQ2hhbmdlKFtuZXdWYWx1ZSBpbnRWYWx1ZV0pOwotICAgICAgICAgICAgZWxz
ZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tMaWtlbHlUb0tlZXBVcCJd
KQotICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tMaWtlbHlUb0tlZXBVcERpZENoYW5n
ZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZlckVtcHR5Il0pCi0gICAgICAgICAgICAgICAg
cGxheWVyLT5wbGF5YmFja0J1ZmZlckVtcHR5RGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVd
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXli
YWNrQnVmZmVyRnVsbCJdKQotICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJG
dWxsRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImFzc2V0Il0pIHsKLSAgICAgICAgICAgICAgICBw
bGF5ZXItPnNldEFzc2V0KFJldGFpblB0cjxpZD4obmV3VmFsdWUpKTsKLSAgICAgICAgICAgICAg
ICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJsb2FkZWRUaW1lUmFuZ2VzIl0pCi0gICAgICAgICAgICAgICAg
cGxheWVyLT5sb2FkZWRUaW1lUmFuZ2VzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0FycmF5PihuZXdW
YWx1ZSkpOwotICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
c2Vla2FibGVUaW1lUmFuZ2VzIl0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5zZWVrYWJsZVRp
bWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0cmFja3MiXSkgewotICAg
ICAgICAgICAgICAgIHBsYXllci0+dHJhY2tzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0FycmF5Pihu
ZXdWYWx1ZSkpOwotICAgICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImhhc0VuYWJsZWRB
dWRpbyJdKQotICAgICAgICAgICAgICAgIHBsYXllci0+aGFzRW5hYmxlZEF1ZGlvRGlkQ2hhbmdl
KFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAInByZXNlbnRhdGlvblNpemUiXSkKLSAgICAgICAgICAgICAgICBwbGF5
ZXItPnByZXNlbnRhdGlvblNpemVEaWRDaGFuZ2UoRmxvYXRTaXplKFtuZXdWYWx1ZSBzaXplVmFs
dWVdKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJk
dXJhdGlvbiJdKQotICAgICAgICAgICAgICAgIHBsYXllci0+ZHVyYXRpb25EaWRDaGFuZ2UoUEFM
Ojp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0aW1lZE1ldGFkYXRhIl0gJiYgbmV3VmFs
dWUpIHsKLSAgICAgICAgICAgICAgICBNZWRpYVRpbWUgbm93OwotICAgICAgICAgICAgICAgIENN
VGltZSBpdGVtVGltZSA9IFsoQVZQbGF5ZXJJdGVtICopb2JqZWN0LmdldCgpIGN1cnJlbnRUaW1l
XTsKLSAgICAgICAgICAgICAgICBpZiAoQ01USU1FX0lTX05VTUVSSUMoaXRlbVRpbWUpKQotICAg
ICAgICAgICAgICAgICAgICBub3cgPSBzdGQ6Om1heChQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1l
KSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKLSAgICAgICAgICAgICAgICBwbGF5ZXItPm1ldGFk
YXRhRGlkQXJyaXZlKFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSksIG5vdyk7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkTG9nVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RSZXZlcnNlIl0pCi0gICAgICAg
ICAgICAgICAgcGxheWVyLT5jYW5QbGF5RmFzdFJldmVyc2VEaWRDaGFuZ2UoW25ld1ZhbHVlIGJv
b2xWYWx1ZV0pOwotICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAiY2FuUGxheUZhc3RGb3J3YXJkIl0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5jYW5QbGF5
RmFzdEZvcndhcmREaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0
aW9uQ29udGV4dFBsYXllckl0ZW0gJiYgIXdpbGxDaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAv
LyBBIHZhbHVlIGNoYW5nZWQgZm9yIGFuIEFWUGxheWVySXRlbQorICAgICAgICAgICAgICAgIGlm
IChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkKKyAgICAgICAgICAgICAgICAg
ICAgcGxheWVyLT5wbGF5ZXJJdGVtU3RhdHVzRGlkQ2hhbmdlKFtuZXdWYWx1ZSBpbnRWYWx1ZV0p
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBs
YXliYWNrTGlrZWx5VG9LZWVwVXAiXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5
YmFja0xpa2VseVRvS2VlcFVwRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1
ZmZlckVtcHR5Il0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJF
bXB0eURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCisg
ICAgICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJGdWxsRGlkQ2hhbmdlKFtu
ZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJhc3NldCJdKSB7CisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+
c2V0QXNzZXQoUmV0YWluUHRyPGlkPihuZXdWYWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGRMb2dWYWx1ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAibG9hZGVkVGltZVJhbmdlcyJdKQorICAgICAgICAgICAgICAg
ICAgICBwbGF5ZXItPmxvYWRlZFRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+
KG5ld1ZhbHVlKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXll
ci0+c2Vla2FibGVUaW1lUmFuZ2VzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1
ZSkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpA
InRyYWNrcyJdKSB7CisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+dHJhY2tzRGlkQ2hhbmdl
KFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBzaG91
bGRMb2dWYWx1ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiaGFzRW5hYmxlZEF1ZGlvIl0pCisgICAgICAgICAgICAgICAgICAg
IHBsYXllci0+aGFzRW5hYmxlZEF1ZGlvRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwcmVz
ZW50YXRpb25TaXplIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+cHJlc2VudGF0aW9u
U2l6ZURpZENoYW5nZShGbG9hdFNpemUoW25ld1ZhbHVlIHNpemVWYWx1ZV0pKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJkdXJhdGlvbiJdKQor
ICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPmR1cmF0aW9uRGlkQ2hhbmdlKFBBTDo6dG9NZWRp
YVRpbWUoW25ld1ZhbHVlIENNVGltZVZhbHVlXSkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInRpbWVkTWV0YWRhdGEiXSAmJiBuZXdWYWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICBNZWRpYVRpbWUgbm93OworICAgICAgICAgICAgICAgICAg
ICBDTVRpbWUgaXRlbVRpbWUgPSBbKEFWUGxheWVySXRlbSAqKW9iamVjdC5nZXQoKSBjdXJyZW50
VGltZV07CisgICAgICAgICAgICAgICAgICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVtVGlt
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBub3cgPSBzdGQ6Om1heChQQUw6OnRvTWVkaWFU
aW1lKGl0ZW1UaW1lKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcGxheWVyLT5tZXRhZGF0YURpZEFycml2ZShSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUp
LCBub3cpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxh
eUZhc3RSZXZlcnNlIl0pCisgICAgICAgICAgICAgICAgICAgIHBsYXllci0+Y2FuUGxheUZhc3RS
ZXZlcnNlRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFzdEZvcndhcmQiXSkK
KyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5jYW5QbGF5RmFzdEZvcndhcmREaWRDaGFuZ2Uo
W25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250
ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyICYm
ICF3aWxsQ2hhbmdlKSB7Ci0gICAgICAgICAgICAvLyBBIHZhbHVlIGNoYW5nZWQgZm9yIGFuIEFW
UGxheWVyLgotICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUi
XSkKLSAgICAgICAgICAgICAgICBwbGF5ZXItPnJhdGVEaWRDaGFuZ2UoW25ld1ZhbHVlIGRvdWJs
ZVZhbHVlXSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJ0aW1lQ29udHJvbFN0YXR1cyJdKQotICAgICAgICAgICAgICAgIHBsYXllci0+dGltZUNvbnRy
b2xTdGF0dXNEaWRDaGFuZ2UoW25ld1ZhbHVlIGludFZhbHVlXSk7CisgICAgICAgICAgICBpZiAo
Y29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXll
ciAmJiAhd2lsbENoYW5nZSkgeworICAgICAgICAgICAgICAgIC8vIEEgdmFsdWUgY2hhbmdlZCBm
b3IgYW4gQVZQbGF5ZXIuCisgICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0
cmluZzpAInJhdGUiXSkKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5yYXRlRGlkQ2hhbmdl
KFtuZXdWYWx1ZSBkb3VibGVWYWx1ZV0pOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAInRpbWVDb250cm9sU3RhdHVzIl0pCisgICAgICAgICAgICAg
ICAgICAgIHBsYXllci0+dGltZUNvbnRyb2xTdGF0dXNEaWRDaGFuZ2UoW25ld1ZhbHVlIGludFZh
bHVlXSk7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICAgICAgICAg
IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsUGxheWJhY2tBY3Rp
dmUiXSB8fCBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJhbGxvd3NFeHRlcm5hbFBsYXliYWNr
Il0pCi0gICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRD
aGFuZ2UoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIl0gfHwgW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAiYWxsb3dzRXh0ZXJuYWxQbGF5YmFjayJdKQorICAgICAgICAgICAgICAgICAgICBwbGF5ZXIt
PnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSgpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAg
ICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJvdXRwdXRPYnNjdXJl
ZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uIl0pCi0gICAgICAgICAgICAgICAg
cGxheWVyLT5vdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9u
Q2hhbmdlZChbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVu
dEV4dGVybmFsUHJvdGVjdGlvbiJdKQorICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPm91dHB1
dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKFtuZXdW
YWx1ZSBib29sVmFsdWVdKTsKICNlbmRpZgotICAgICAgICB9CisgICAgICAgICAgICB9CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgaWYgKHBsYXllci0+bG9nZ2VyKCkud2ls
bExvZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKSAmJiAhKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKLSAgICAgICAgICAgIGF1dG8g
aWRlbnRpZmllciA9IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbiIsICJvYnNlcnZlVmFsdWVGb3JLZXlQYXRoIiwgcGxheWVyLT5sb2dJZGVu
dGlmaWVyKCkpOwotCi0gICAgICAgICAgICBpZiAoc2hvdWxkTG9nVmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZHVyYXRpb24iXSkKLSAgICAg
ICAgICAgICAgICAgICAgcGxheWVyLT5sb2dnZXIoKS5kZWJ1ZyhwbGF5ZXItPmxvZ0NoYW5uZWwo
KSwgaWRlbnRpZmllciwgImRpZCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0
byAiLCBQQUw6OnRvTWVkaWFUaW1lKFtuZXdWYWx1ZSBDTVRpbWVWYWx1ZV0pKTsKLSAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB2
YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIl
QCIsIG5ld1ZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVi
dWcocGxheWVyLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5
UGF0aCBVVEY4U3RyaW5nXSwgIicgdG8gIiwgW3ZhbHVlU3RyaW5nLmdldCgpIFVURjhTdHJpbmdd
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVy
LCB3aWxsQ2hhbmdlID8gIndpbGwiIDogImRpZCIsICIgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4
U3RyaW5nXSwgIiciKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBsYXllci0+bG9nZ2Vy
KCkud2lsbExvZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKSAmJiAh
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24iLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCIsIHBsYXll
ci0+bG9nSWRlbnRpZmllcigpKTsKKworICAgICAgICAgICAgICAgIGlmIChzaG91bGRMb2dWYWx1
ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
ZHVyYXRpb24iXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVi
dWcocGxheWVyLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5
UGF0aCBVVEY4U3RyaW5nXSwgIicgdG8gIiwgUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01U
aW1lVmFsdWVdKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCIsIG5ld1ZhbHVlXSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgp
LCBpZGVudGlmaWVyLCAiZGlkIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRv
ICIsIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5s
b2dnZXIoKS5kZWJ1ZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5n
ZSA/ICJ3aWxsIiA6ICJkaWQiLCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICIn
Iik7CisgICAgICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAg
LTM0MDcsMTEgKzM0MjEsMTMgQEAgLSAodm9pZClsZWdpYmxlT3V0cHV0OihpZClvdXRwdXQgZGlk
T3V0cHV0QXR0cmlidXRlZFN0cmluZ3M6KE5TQXJyYXkgKilzdHJpbmdzIG4KIHsKICAgICBVTlVT
RURfUEFSQU0ob3V0cHV0KTsKIAotICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIg
PSBtX3BsYXllciwgc3RyaW5ncyA9IHJldGFpblB0cihzdHJpbmdzKSwgbmF0aXZlU2FtcGxlcyA9
IHJldGFpblB0cihuYXRpdmVTYW1wbGVzKSwgaXRlbVRpbWVdIHsKLSAgICAgICAgaWYgKCFwbGF5
ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIE1lZGlhVGltZSB0aW1lID0gc3RkOjpt
YXgoUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIE1lZGlhVGltZTo6emVyb1RpbWUoKSk7Ci0g
ICAgICAgIHBsYXllci0+cHJvY2Vzc0N1ZShzdHJpbmdzLmdldCgpLCBuYXRpdmVTYW1wbGVzLmdl
dCgpLCB0aW1lKTsKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSBy
ZXRhaW5QdHIoc2VsZiksIHN0cmluZ3MgPSByZXRhaW5QdHIoc3RyaW5ncyksIG5hdGl2ZVNhbXBs
ZXMgPSByZXRhaW5QdHIobmF0aXZlU2FtcGxlcyksIGl0ZW1UaW1lXSgpIG11dGFibGUgeworICAg
ICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIHN0cmluZ3Mg
PSBXVEZNb3ZlKHN0cmluZ3MpLCBuYXRpdmVTYW1wbGVzID0gV1RGTW92ZShuYXRpdmVTYW1wbGVz
KSwgaXRlbVRpbWVdIHsKKyAgICAgICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIE1lZGlhVGltZSB0aW1lID0gc3RkOjptYXgoUEFMOjp0b01l
ZGlhVGltZShpdGVtVGltZSksIE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CisgICAgICAgICAgICBw
bGF5ZXItPnByb2Nlc3NDdWUoc3RyaW5ncy5nZXQoKSwgbmF0aXZlU2FtcGxlcy5nZXQoKSwgdGlt
ZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zNDE5LDkgKzM0MzUsMTEgQEAgLSAo
dm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KGlkKW91dHB1dAogewogICAgIFVOVVNFRF9Q
QVJBTShvdXRwdXQpOwogCi0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1f
cGxheWVyXSB7Ci0gICAgICAgIGlmIChwbGF5ZXIpCi0gICAgICAgICAgICBwbGF5ZXItPmZsdXNo
Q3VlcygpOworICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFp
blB0cihzZWxmKV0geworICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0g
bV9wbGF5ZXJdIHsKKyAgICAgICAgICAgIGlmIChwbGF5ZXIpCisgICAgICAgICAgICAgICAgcGxh
eWVyLT5mbHVzaEN1ZXMoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0NDYsMTQg
KzM0NjQsMTYgQEAgLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVy
ICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWQKICAgICBpZiAoIW1fcGxheWVyKQog
ICAgICAgICByZXR1cm4gTk87CiAKLSAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVy
ID0gbV9wbGF5ZXIsIGxvYWRpbmdSZXF1ZXN0ID0gcmV0YWluUHRyKGxvYWRpbmdSZXF1ZXN0KV0g
ewotICAgICAgICBpZiAoIXBsYXllcikgewotICAgICAgICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZp
bmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihz
ZWxmKSwgbG9hZGluZ1JlcXVlc3QgPSByZXRhaW5QdHIobG9hZGluZ1JlcXVlc3QpXSgpIG11dGFi
bGUgeworICAgICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIs
IGxvYWRpbmdSZXF1ZXN0ID0gV1RGTW92ZShsb2FkaW5nUmVxdWVzdCldIHsKKyAgICAgICAgICAg
IGlmICghcGxheWVyKSB7CisgICAgICAgICAgICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZpbmlzaExv
YWRpbmdXaXRoRXJyb3I6bmlsXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCFwbGF5ZXItPnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJj
ZShsb2FkaW5nUmVxdWVzdC5nZXQoKSkpCi0gICAgICAgICAgICBbbG9hZGluZ1JlcXVlc3QgZmlu
aXNoTG9hZGluZ1dpdGhFcnJvcjpuaWxdOworICAgICAgICAgICAgaWYgKCFwbGF5ZXItPnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShsb2FkaW5nUmVxdWVzdC5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgW2xvYWRpbmdSZXF1ZXN0IGZpbmlzaExvYWRpbmdXaXRoRXJyb3I6bmlsXTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gWUVTOwpAQCAtMzQ3MCw5ICszNDkwLDEx
IEBAIC0gKEJPT0wpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291
cmNlTG9hZGVyIHNob3VsZFdhaXRGb3JSZXNwCiAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFz
c2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUmVxdWVz
dDooQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKilsb2FkaW5nUmVxdWVzdAogewogICAg
IFVOVVNFRF9QQVJBTShyZXNvdXJjZUxvYWRlcik7Ci0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRh
c2soW3BsYXllciA9IG1fcGxheWVyLCBsb2FkaW5nUmVxdWVzdCA9IHJldGFpblB0cihsb2FkaW5n
UmVxdWVzdCldIHsKLSAgICAgICAgaWYgKHBsYXllcikKLSAgICAgICAgICAgIHBsYXllci0+ZGlk
Q2FuY2VsTG9hZGluZ1JlcXVlc3QobG9hZGluZ1JlcXVlc3QuZ2V0KCkpOworICAgIGVuc3VyZU9u
TWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgbG9hZGluZ1Jl
cXVlc3QgPSByZXRhaW5QdHIobG9hZGluZ1JlcXVlc3QpXSgpIG11dGFibGUgeworICAgICAgICBt
X3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIGxvYWRpbmdSZXF1ZXN0
ID0gV1RGTW92ZShsb2FkaW5nUmVxdWVzdCldIHsKKyAgICAgICAgICAgIGlmIChwbGF5ZXIpCisg
ICAgICAgICAgICAgICAgcGxheWVyLT5kaWRDYW5jZWxMb2FkaW5nUmVxdWVzdChsb2FkaW5nUmVx
dWVzdC5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>